> **Источник:** https://python-all.ru/3/whatsnew/changelog.html
>
> «Документация Python на русском» – неофициальный перевод официальной документации Python: версии от 2.6 до 3.16, полнотекстовый поиск, английский оригинал рядом с переводом. Эта Markdown-версия страницы предназначена для работы с LLM: вставьте её в ChatGPT, Claude или Cursor.

---

# Список изменений

## Python next

*Дата выпуска: XXXX-XX-XX*

### Windows

- [gh-140146](https://python-all.ru/3/whatsnew/changelog.html): Предотвращает зависание [`tkinter`](https://python-all.ru/3/library/tkinter.html#module-tkinter) в Windows, если stdin перенаправлен в канал в интерактивном сеансе. Это полезно для тестирования интерактивного использования tkinter из скрипта, например, в составе набора тестов cpython.

### Тесты

- [gh-151626](https://python-all.ru/3/whatsnew/changelog.html): Исправлено несколько тестов в `test.test_inspect`, `test.test_import`, `test.test_importlib`, `test.test_py_compile` и `test.test_compileall`, которые не проходили при запуске набора тестов с установленным [`PYTHONPYCACHEPREFIX`](https://python-all.ru/3/using/cmdline.html#envvar-PYTHONPYCACHEPREFIX). Теперь эти тесты нейтрализуют префикс pycache, там, где они предполагают расположение байт-кода `__pycache__` по умолчанию.
- [gh-151096](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка `test_embed`, возникавшая при сборке CPython с разделённым префиксом исполняемых файлов (`--exec-prefix` отличается от `--prefix`).
- [gh-148853](https://python-all.ru/3/whatsnew/changelog.html): Исправлены тесты, не проходившие на FreeBSD в функции in\_systemd\_nspawn\_sync\_suppressed() из модуля test.support, из-за недоступного для чтения каталога /run.

### Безопасность

- [gh-153030](https://python-all.ru/3/whatsnew/changelog.html): Исправлена квадратичная сложность при инкрементальном разборе длинных незавершённых конструкций (например, тегов или комментариев) в [`html.parser.HTMLParser`](https://python-all.ru/3/library/html.parser.html#html.parser.HTMLParser), что могло быть использовано для отказа в обслуживании.
- [gh-151987](https://python-all.ru/3/whatsnew/changelog.html): Метод [`tarfile.TarFile.extract()`](https://python-all.ru/3/library/tarfile.html#tarfile.TarFile.extract) теперь применяет заданный фильтр при извлечении цели ссылки из архива в качестве запасного варианта.
- [gh-151981](https://python-all.ru/3/whatsnew/changelog.html): В [`tarfile`](https://python-all.ru/3/library/tarfile.html#module-tarfile) поиск в потоке теперь останавливается при достижении конца потока.
- [gh-151544](https://python-all.ru/3/whatsnew/changelog.html): `Modules/Setup.local` больше не используется как метка для определения того, работает ли Python из дерева исходного кода, так как это могло потенциально повлиять на реальные установки. Файл `pybuilddir.txt` теперь является единственным индикатором работы из дерева исходного кода.
- [gh-151558](https://python-all.ru/3/whatsnew/changelog.html): Исправлена уязвимость в фильтрах извлечения [`tarfile`](https://python-all.ru/3/library/tarfile.html#module-tarfile) `data` и `tar`, где специально созданные архивы могли создать символическую ссылку, указывающую за пределы целевого каталога. Это был обход [**CVE 2025-4330**](https://python-all.ru/3/whatsnew/changelog.html).
- [gh-150743](https://python-all.ru/3/whatsnew/changelog.html): Теперь [`http.client`](https://python-all.ru/3/library/http.client.html#module-http.client) ограничивает количество строк трейлеров фрагментированного ответа, которые он будет читать, до 100, а количество промежуточных (1xx) ответов, которые он пропустит, до 100. Ранее вредоносный или неисправный сервер мог бесконечно передавать строки трейлеров или ответы `100 Continue`, зависая клиент, даже если был установлен тайм-аут сокета. Сообщено `@YLChen-007` через GHSA-w4q2-g22w-6fr4.
- [gh-143927](https://python-all.ru/3/whatsnew/changelog.html): Нормализовать все концевые строки (CR, CRLF и LF) в LF+TAB при записи многострочных значений configparser.
- [gh-143921](https://python-all.ru/3/whatsnew/changelog.html): Отклонять символы NUL, CR и LF в командах IMAP. Другие управляющие символы разрешены и отправляются в кавычках.

### Библиотека

- [gh-153210](https://python-all.ru/3/whatsnew/changelog.html): Исправлен сбой при импорте [`array`](https://python-all.ru/3/library/array.html#module-array) при нехватке памяти.
- [gh-153200](https://python-all.ru/3/whatsnew/changelog.html): Исправлено [`math.isqrt()`](https://python-all.ru/3/library/math.html#math.isqrt), возвращавшее неверный результат для аргументов не меньше 2\*\*64, которые являются экземплярами подкласса [`int`](https://python-all.ru/3/library/functions.html#int) с переопределённым оператором сравнения.
- [gh-153068](https://python-all.ru/3/whatsnew/changelog.html): Исправлено `cProfile.Profile.enable()`, чтобы больше не перезаписывать ошибки из [`sys.monitoring`](https://python-all.ru/3/library/sys.monitoring.html#module-sys.monitoring).
- [gh-135661](https://python-all.ru/3/whatsnew/changelog.html): Исправлено [`html.parser.HTMLParser`](https://python-all.ru/3/library/html.parser.html#html.parser.HTMLParser): внезапно закрытый пустой комментарий (`<!-->` или `<!--->`) больше не распространяется до более позднего `-->` в том же вызове [`feed()`](https://python-all.ru/3/library/html.parser.html#html.parser.HTMLParser.feed).
- [gh-152851](https://python-all.ru/3/whatsnew/changelog.html): Предотвращение сбоя при сбое выделения памяти во время копирования объекта [`BLAKE-2s/2b`](https://python-all.ru/3/library/hashlib.html#hashlib.blake2b). Патч от Bénédikt Tran.
- [gh-54930](https://python-all.ru/3/whatsnew/changelog.html): Ответы об ошибках [`http.server.BaseHTTPRequestHandler`](https://python-all.ru/3/library/http.server.html#http.server.BaseHTTPRequestHandler) на некорректные строки запроса теперь включают строку состояния и заголовки вместо того, чтобы отправляться в стиле HTTP/0.9. Только корректный запрос HTTP/0.9 (строка запроса из двух слов `GET`) теперь получает ответ в стиле HTTP/0.9.
- [gh-152951](https://python-all.ru/3/whatsnew/changelog.html): [`collections.deque`](https://python-all.ru/3/library/collections.html#collections.deque) предотвращает редкий сбой при вызове `extend` в условиях высокой загрузки памяти.
- [gh-150880](https://python-all.ru/3/whatsnew/changelog.html): Нормализует нерасширенные пути Windows перед добавлением шаблона, используемого `os.listdir()` и `os.scandir()`, обеспечивая согласованное поведение путей с замыкающими пробелами с другими API файловой системы.
- [gh-152849](https://python-all.ru/3/whatsnew/changelog.html): Выходящие за диапазон метки времени с плавающей точкой и целочисленные теперь вызывают [`OverflowError`](https://python-all.ru/3/library/exceptions.html#OverflowError) с тем же сообщением. Исправление от tonghuaroot.
- [gh-152847](https://python-all.ru/3/whatsnew/changelog.html): Отклоняет правило перехода POSIX TZ с нецифровыми символами в поле дня года в парсере [`zoneinfo`](https://python-all.ru/3/library/zoneinfo.html#module-zoneinfo) на чистом Python. Исправление от tonghuaroot.
- [gh-108280](https://python-all.ru/3/whatsnew/changelog.html): Подключение [`imaplib`](https://python-all.ru/3/library/imaplib.html#module-imaplib) к серверу, который не отправляет допустимое приветствие IMAP4 (например, сервер POP3, отвечающий на IMAP-порту), теперь вызывает ошибку с сообщением о ответе сервера вместо `imaplib.IMAP4.error: None`.
- [gh-63121](https://python-all.ru/3/whatsnew/changelog.html): [`imaplib`](https://python-all.ru/3/library/imaplib.html#module-imaplib) теперь обновляет кешированный список возможностей после успешного [`login()`](https://python-all.ru/3/library/imaplib.html#imaplib.IMAP4.login) или [`authenticate()`](https://python-all.ru/3/library/imaplib.html#imaplib.IMAP4.authenticate), используя ответ `CAPABILITY`, отправленный сервером, или, если ответ не был отправлен, запрашивая его, так что возможности, становящиеся доступными только после аутентификации (например, `ENABLE` на Gmail), распознаются. Возможности, объявленные в приветствии сервера, теперь также используются, избегая избыточной команды `CAPABILITY`.
- [gh-88574](https://python-all.ru/3/whatsnew/changelog.html): [`imaplib`](https://python-all.ru/3/library/imaplib.html#module-imaplib) больше не завершается ошибкой, когда сервер отправляет лишнюю пустую строку после подсчитанных данных литерала. Теперь такая пустая строка пропускается.
- [gh-152502](https://python-all.ru/3/whatsnew/changelog.html): Обнаруживает мышиный интерфейс [`curses`](https://python-all.ru/3/library/curses.html#module-curses) ([`getmouse()`](https://python-all.ru/3/library/curses.html#curses.getmouse), константы `BUTTON*` и другие) с помощью зондирования возможностей configure или макросов библиотеки вместо привязки к макросам, специфичным для ncurses. Теперь он также доступен в других реализациях curses, которые его предоставляют, таких как NetBSD curses и PDCurses (последний лежит в основе `windows-curses`).
- [gh-151842](https://python-all.ru/3/whatsnew/changelog.html): Исправлен сбой в `_interpreters.capture_exception()` при возникновении [`MemoryError`](https://python-all.ru/3/library/exceptions.html#MemoryError). Исправление от Amrutha Modela.
- [gh-40038](https://python-all.ru/3/whatsnew/changelog.html): [`imaplib`](https://python-all.ru/3/library/imaplib.html#module-imaplib) now again quotes command arguments when necessary, for example mailbox names containing a space. Such quoting was inadvertently disabled when the module was ported to Python 3, and the arguments are now quoted according to the [**RFC 3501**](https://python-all.ru/3/whatsnew/changelog.html) grammar. For backward compatibility, an argument already enclosed in double quotes is left unchanged, so code that quotes arguments itself keeps working.
- [gh-50966](https://python-all.ru/3/whatsnew/changelog.html): Исправлена неограниченная рекурсия в [`turtle`](https://python-all.ru/3/library/turtle.html#module-turtle), когда обработчик событий мыши, перемещающий черепаху, вызывается повторно во время перерисовки экрана, например, с `screen.ondrag(turtle.goto)`. Ранее это могло привести к сбою интерпретатора.
- [gh-152569](https://python-all.ru/3/whatsnew/changelog.html): Исправлена утечка ожидающих задач в [`asyncio.wait()`](https://python-all.ru/3/library/asyncio-task.html#asyncio.wait) через graph ожидания при гонке с future, которая никогда не завершается. Теперь ожидающая задача удаляется из набора `awaited_by` каждого future, как только `wait()` возвращает результат, даже для ожидающих future.
- [gh-78335](https://python-all.ru/3/whatsnew/changelog.html): Обновлены докстринги классов виджетов [`tkinter`](https://python-all.ru/3/library/tkinter.html#module-tkinter) и [`tkinter.ttk`](https://python-all.ru/3/library/tkinter.ttk.html#module-tkinter.ttk) для перечисления всех поддерживаемых опций виджетов, включая опции, добавленные в Tk 9.0 и 9.1. `tkinter.Menubutton` и `tkinter.Message` ранее вообще не имели списка опций.
- [gh-151126](https://python-all.ru/3/whatsnew/changelog.html): Исправлены два сбоя при инициализации модулей [`tkinter`](https://python-all.ru/3/library/tkinter.html#module-tkinter) и [`socket`](https://python-all.ru/3/library/socket.html#module-socket) в условиях нехватки памяти. Устанавливает отсутствующий [`MemoryError`](https://python-all.ru/3/library/exceptions.html#MemoryError).
- [gh-133031](https://python-all.ru/3/whatsnew/changelog.html): [`curses.textpad.Textbox`](https://python-all.ru/3/library/curses.html#curses.textpad.Textbox) теперь вводит и считывает обратно не-ASCII символы 8-битной кодировки локали, вместо их искажения 7-битной маской.
- [gh-71880](https://python-all.ru/3/whatsnew/changelog.html): [`curses.textpad.Textbox`](https://python-all.ru/3/library/curses.html#curses.textpad.Textbox) теперь позволяет редактировать нижнюю правую ячейку окна. Запись с помощью [`addch()`](https://python-all.ru/3/library/curses.html#curses.window.addch) перемещала бы курсор за пределы окна, вызывая ошибку и прокрутку прокручиваемого окна, поэтому теперь она записывается с помощью [`insch()`](https://python-all.ru/3/library/curses.html#curses.window.insch), который оставляет курсор на месте.
- [gh-83274](https://python-all.ru/3/whatsnew/changelog.html): Освобождение приложения [`tkinter`](https://python-all.ru/3/library/tkinter.html#module-tkinter) из потока, отличного от того, в котором оно было создано, больше не вызывает сбой интерпретатора. Вместо этого происходит утечка базового интерпретатора Tcl, и выводится сообщение [`RuntimeWarning`](https://python-all.ru/3/library/exceptions.html#RuntimeWarning).
- [gh-152305](https://python-all.ru/3/whatsnew/changelog.html): Исправлена реализация [`datetime.time.strftime()`](https://python-all.ru/3/library/datetime.html#datetime.time.strftime) на чистом Python, вызывавшая [`AttributeError`](https://python-all.ru/3/library/exceptions.html#AttributeError) для директив года. Исправление от tonghuaroot.
- [gh-88758](https://python-all.ru/3/whatsnew/changelog.html): `tkinter.Misc.focus_get()`, `focus_displayof()`, `focus_lastfor()` и `winfo_containing()` теперь возвращают `None` вместо вызова [`KeyError`](https://python-all.ru/3/library/exceptions.html#KeyError), когда виджет не был создан с помощью [`tkinter`](https://python-all.ru/3/library/tkinter.html#module-tkinter) (например, оторванное меню).
- [gh-38464](https://python-all.ru/3/whatsnew/changelog.html): `tkinter.Misc.nametowidget()` теперь преобразует автоматически сгенерированные имена клонированных меню (меню, используемое как панель меню или каскадное) обратно в исходный виджет.
- [gh-152248](https://python-all.ru/3/whatsnew/changelog.html): Парсеры [`zoneinfo`](https://python-all.ru/3/library/zoneinfo.html#module-zoneinfo) на C и чистом Python теперь проверяют аббревиатуры POSIX TZ согласованно, отвергая некавыченные аббревиатуры с небуквенными символами и пустые аббревиатуры в кавычках. Исправление от tonghuaroot.
- [gh-80937](https://python-all.ru/3/whatsnew/changelog.html): Исправлена утечка памяти в [`tkinter`](https://python-all.ru/3/library/tkinter.html#module-tkinter), когда команда Tcl, созданная с помощью `createcommand`, не была явно удалена до удаления интерпретатора. Команда больше не удерживает интерпретатор через цикл ссылок.
- [gh-152246](https://python-all.ru/3/whatsnew/changelog.html): Исправлен парсер [`zoneinfo`](https://python-all.ru/3/library/zoneinfo.html#module-zoneinfo) на чистом Python, принимавший недопустимое правило перехода POSIX TZ с разделителем, не являющимся точкой. Исправление от tonghuaroot.
- [gh-139816](https://python-all.ru/3/whatsnew/changelog.html): Исправлено зависание в [`tkinter`](https://python-all.ru/3/library/tkinter.html#module-tkinter) на интерактивном Python, собранном без [`readline`](https://python-all.ru/3/library/readline.html#module-readline). Исключение, вызванное в колбэке, больше не приводит к остановке цикла событий и ожиданию нажатия пользователем Enter; ожидающие колбэки теперь продолжают выполняться, пока на stdin не появится данные.
- [gh-139145](https://python-all.ru/3/whatsnew/changelog.html): Исправлен бесконечный цикл в [`tkinter`](https://python-all.ru/3/library/tkinter.html#module-tkinter) на интерактивном Python. Когда команда Tcl, запускающая свой собственный цикл событий (например, `vwait` или `wait_variable()`), была активна и на stdin поступали данные, цикл событий продолжал крутиться с загрузкой ЦП 100%. Обработчик файлового дескриптора stdin теперь удаляется, как только появляются входные данные. Основано на исправлении Michiel de Hoon.
- [gh-152212](https://python-all.ru/3/whatsnew/changelog.html): Исправлен парсер [`zoneinfo`](https://python-all.ru/3/library/zoneinfo.html#module-zoneinfo) на чистом Python, принимавший строку POSIX TZ с аббревиатурой `std`, но без смещения. Это недопустимо по стандарту POSIX, и теперь вызывает [`ValueError`](https://python-all.ru/3/library/exceptions.html#ValueError), что соответствует ускорителю на C. Исправление от tonghuaroot.
- [gh-152156](https://python-all.ru/3/whatsnew/changelog.html): Исправлен возможный сбой в [`concurrent.interpreters.create()`](https://python-all.ru/3/library/concurrent.interpreters.html#concurrent.interpreters.create) в условиях ограниченной памяти.
- [gh-151763](https://python-all.ru/3/whatsnew/changelog.html): Исправлен сбой в `_interpqueues.create()`, когда [`MemoryError`](https://python-all.ru/3/library/exceptions.html#MemoryError) происходит при создании очереди.
- [gh-105895](https://python-all.ru/3/whatsnew/changelog.html): Добавлены [`match`](https://python-all.ru/3/reference/compound_stmts.html#match) и [`case`](https://python-all.ru/3/reference/compound_stmts.html#case) в список поддерживаемых тем для [`help()`](https://python-all.ru/3/library/functions.html#help).
- [gh-152079](https://python-all.ru/3/whatsnew/changelog.html): Исправлено [`datetime.datetime.fromisoformat()`](https://python-all.ru/3/library/datetime.html#datetime.datetime.fromisoformat) в реализации на C, отбрасывавшее субсекундную часть смещения UTC, у которого целая часть секунд равна нулю, что теперь соответствует реализации на чистом Python.
- [gh-152052](https://python-all.ru/3/whatsnew/changelog.html): Ускоритель [`json`](https://python-all.ru/3/library/json.html#module-json) на C теперь корректно сообщает о незавершённой строке для escape-последовательности `\uXXXX` в конце входных данных.
- [gh-152060](https://python-all.ru/3/whatsnew/changelog.html): Исправлено [`datetime.datetime.fromisoformat()`](https://python-all.ru/3/library/datetime.html#datetime.datetime.fromisoformat), вызывавшее [`AssertionError`](https://python-all.ru/3/library/exceptions.html#AssertionError) вместо [`ValueError`](https://python-all.ru/3/library/exceptions.html#ValueError) для некоторых некорректных строк в реализации на чистом Python, что теперь соответствует реализации на C.
- [gh-126219](https://python-all.ru/3/whatsnew/changelog.html): Исправлен сбой в [`tkinter.Tk`](https://python-all.ru/3/library/tkinter.html#tkinter.Tk), когда *className* содержит символ, не входящий в BMP, а tkinter собран с Tcl/Tk 8.x. Такое имя теперь отклоняется с [`ValueError`](https://python-all.ru/3/library/exceptions.html#ValueError).
- [gh-86165](https://python-all.ru/3/whatsnew/changelog.html): Исправлено [`imaplib.Time2Internaldate()`](https://python-all.ru/3/library/imaplib.html#imaplib.Time2Internaldate) для использования локального смещения часового пояса для значений `time.struct_time` с `tm_gmtoff`, установленным в `None`, как возвращается `datetime.datetime.timetuple()`. Автор: Xiao Yuan.
- [gh-151814](https://python-all.ru/3/whatsnew/changelog.html): Исправлен неограниченный рост памяти в [`io.TextIOWrapper`](https://python-all.ru/3/library/io.html#io.TextIOWrapper) при многократной записи пустой строки.
- [gh-151770](https://python-all.ru/3/whatsnew/changelog.html): Исправлено [`datetime.datetime.fromisoformat()`](https://python-all.ru/3/library/datetime.html#datetime.datetime.fromisoformat), который возбуждал [`AssertionError`](https://python-all.ru/3/library/exceptions.html#AssertionError) вместо [`ValueError`](https://python-all.ru/3/library/exceptions.html#ValueError) для месяца вне допустимого диапазона в сочетании с временем `24:00`.
- [gh-151665](https://python-all.ru/3/whatsnew/changelog.html): [`inspect.signature()`](https://python-all.ru/3/library/inspect.html#inspect.signature) теперь работает с ленивыми вычислителями псевдонимов типов и параметров типов вместо возбуждения [`ValueError`](https://python-all.ru/3/library/exceptions.html#ValueError).
- [gh-151695](https://python-all.ru/3/whatsnew/changelog.html): Исправлено использование после освобождения в модуле [`curses`](https://python-all.ru/3/library/curses.html#module-curses). Кодировка начального экрана, используемая [`curses.unctrl()`](https://python-all.ru/3/library/curses.html#curses.unctrl) и [`curses.ungetch()`](https://python-all.ru/3/library/curses.html#curses.ungetch) для кодирования символов, не входящих в ASCII, теперь хранится в виде приватной копии, а не заимствованного указателя на объект окна, который может быть освобождён.
- [gh-151596](https://python-all.ru/3/whatsnew/changelog.html): Добавлен отсутствующий позиционный аргумент `size` в реализацию на чистом Python функции [`io.TextIOBase.readline()`](https://python-all.ru/3/library/io.html#io.TextIOBase.readline).
- [gh-148660](https://python-all.ru/3/whatsnew/changelog.html): Исправлен сбой в `collections.OrderedDict.copy()`, когда `__eq__` ключа или метод подкласса мутирует словарь во время копирования. Теперь вместо этого возбуждается [`RuntimeError`](https://python-all.ru/3/library/exceptions.html#RuntimeError), как и при итерации.
- [gh-151497](https://python-all.ru/3/whatsnew/changelog.html): Открытие архива [`tarfile`](https://python-all.ru/3/library/tarfile.html#module-tarfile) больше не пытается предварительно выделить огромный буфер, если поддельный или усечённый член архива содержит заголовок расширенного размера (длинное имя/ссылку GNU или заголовок pax). Расширенный заголовок теперь читается ограниченными блоками, поэтому его поле размера больше не может вызвать исчерпание памяти.
- [gh-151403](https://python-all.ru/3/whatsnew/changelog.html): Исправлен сбой в [`subprocess.Popen`](https://python-all.ru/3/library/subprocess.html#subprocess.Popen) (и `_posixsubprocess.fork_exec`), когда `argv` элемент [`__fspath__()`](https://python-all.ru/3/library/os.html#os.PathLike.__fspath__) одновременно мутирует последовательность `args`, которая преобразуется.
- [gh-151390](https://python-all.ru/3/whatsnew/changelog.html): Цветовая подсветка `match` в [REPL](https://python-all.ru/3/glossary.html#term-REPL), когда за ним следует унарный оператор `+` или `-`. Автор: Bartosz Sławecki.
- [gh-151126](https://python-all.ru/3/whatsnew/changelog.html): Исправлен сбой при неустановленном [`MemoryError`](https://python-all.ru/3/library/exceptions.html#MemoryError) при сбое выделения памяти в [`ctypes.get_errno()`](https://python-all.ru/3/library/ctypes.html#ctypes.get_errno).
- [gh-151416](https://python-all.ru/3/whatsnew/changelog.html): Исправлен сбой в [`os.spawnv()`](https://python-all.ru/3/library/os.html#os.spawnv) и [`os.spawnve()`](https://python-all.ru/3/library/os.html#os.spawnve), когда метод [`__fspath__()`](https://python-all.ru/3/library/os.html#os.PathLike.__fspath__) элемента *argv* мутирует список *argv* во время преобразования аргументов. Ошибки преобразования аргументов `os.spawnv()`, отличные от [`TypeError`](https://python-all.ru/3/library/exceptions.html#TypeError), такие как [`ValueError`](https://python-all.ru/3/library/exceptions.html#ValueError) для встроенного нуля, больше не заменяются общим `TypeError`.
- [gh-151337](https://python-all.ru/3/whatsnew/changelog.html): Устранена возможная утечка памяти в `tkinter.c` в Windows.
- [gh-151126](https://python-all.ru/3/whatsnew/changelog.html): Исправлен сбой, когда [`MemoryError`](https://python-all.ru/3/library/exceptions.html#MemoryError) в `os._path_splitroot()` был неправильно установлен.
- [gh-151126](https://python-all.ru/3/whatsnew/changelog.html): Исправлен сбой, когда на устройстве не осталось памяти, который происходил в модуле `_interpchannels`.

  Теперь возбуждаются корректные ошибки [`MemoryError`](https://python-all.ru/3/library/exceptions.html#MemoryError).
- [gh-151295](https://python-all.ru/3/whatsnew/changelog.html): Исправлен сбой (использование после освобождения) в [`bytes.join()`](https://python-all.ru/3/library/stdtypes.html#bytes.join) и [`bytearray.join()`](https://python-all.ru/3/library/stdtypes.html#bytearray.join), который мог возникнуть, если [`__buffer__()`](https://python-all.ru/3/reference/datamodel.html#object.__buffer__) элемента одновременно мутирует объединяемую последовательность. Мутация теперь сообщается как [`RuntimeError`](https://python-all.ru/3/library/exceptions.html#RuntimeError).
- [gh-109940](https://python-all.ru/3/whatsnew/changelog.html): Исправлена активация [`venv`](https://python-all.ru/3/library/venv.html#module-venv) в Windows в `cmd.exe`, чтобы учитывать `VIRTUAL_ENV_DISABLE_PROMPT`.
- [gh-150641](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка, при которой [`typing.evaluate_forward_ref()`](https://python-all.ru/3/library/typing.html#typing.evaluate_forward_ref) с форматом `STRING` мог утекать внутренние имена, используемые механизмом аннотаций.
- [gh-150484](https://python-all.ru/3/whatsnew/changelog.html): Исправлено возбуждение `TypeError` при использовании [`contextlib.ExitStack`](https://python-all.ru/3/library/contextlib.html#contextlib.ExitStack) с [`unittest.mock.mock_open()`](https://python-all.ru/3/library/unittest.mock.html#unittest.mock.mock_open) `__exit__`.
- [gh-143988](https://python-all.ru/3/whatsnew/changelog.html): Исправлены сбои в [`socket.socket.sendmsg()`](https://python-all.ru/3/library/socket.html#socket.socket.sendmsg) и [`socket.socket.recvmsg_into()`](https://python-all.ru/3/library/socket.html#socket.socket.recvmsg_into), которые могли возникать при одновременной мутации буферных последовательностей.
- [gh-130796](https://python-all.ru/3/whatsnew/changelog.html): Отменено устаревание функции [`locale.getdefaultlocale()`](https://python-all.ru/3/library/locale.html#locale.getdefaultlocale). Патч Виктора Стиннера.
- [gh-115634](https://python-all.ru/3/whatsnew/changelog.html): Исправлена взаимоблокировка в [`concurrent.futures.ProcessPoolExecutor`](https://python-all.ru/3/library/concurrent.futures.html#concurrent.futures.ProcessPoolExecutor) при использовании `max_tasks_per_child`, присутствовавшая с момента появления этой возможности в Python 3.11. Исполнитель переставал планировать поставленные в очередь задачи после того, как рабочий процесс завершался по достижении лимита задач. Основано на исправлении, предложенном Tabrez Mohammed.
- [gh-79638](https://python-all.ru/3/whatsnew/changelog.html): Запрещён любой доступ к [`urllib.robotparser`](https://python-all.ru/3/library/urllib.robotparser.html#module-urllib.robotparser), если файл `robots.txt` недоступен из-за ошибок сервера или сети.
- [gh-120665](https://python-all.ru/3/whatsnew/changelog.html): Исправлена проблема, при которой загрузчики `unittest` загружали и создавали экземпляры подклассов, производных от [`unittest.TestCase`](https://python-all.ru/3/library/unittest.html#unittest.TestCase), которые также являются абстрактными базовыми классами, а такие экземпляры создать невозможно.
- [gh-105708](https://python-all.ru/3/whatsnew/changelog.html): Принимать префикс V в верхнем регистре в адресах IPvFuture в [`urllib.parse.urlsplit()`](https://python-all.ru/3/library/urllib.parse.html#urllib.parse.urlsplit).
- [gh-101267](https://python-all.ru/3/whatsnew/changelog.html): Когда рабочий процесс завершается неожиданно, [`concurrent.futures.ProcessPoolExecutor`](https://python-all.ru/3/library/concurrent.futures.html#concurrent.futures.ProcessPoolExecutor) теперь устанавливает отдельное исключение [`BrokenProcessPool`](https://python-all.ru/3/library/concurrent.futures.html#concurrent.futures.process.BrokenProcessPool) для каждой ожидающей задачи (future) вместо того, чтобы разделять один экземпляр между всеми ними. Совместное использование одного исключения приводило к некорректным трассировкам: каждый вызов [`Future.result()`](https://python-all.ru/3/library/concurrent.futures.html#concurrent.futures.Future.result) повторно возбуждал тот же объект, добавляя к нему ещё одну копию трассировки.

### IDLE

- [gh-82183](https://python-all.ru/3/whatsnew/changelog.html): Когда оболочка занята выполнением кода, использование «Run… Customized» с отключенным «Restart shell» теперь сообщает, что оболочка выполняется, вместо того чтобы в любом случае перезапускать её.
- [gh-83653](https://python-all.ru/3/whatsnew/changelog.html): Очистка целочисленного поля в диалоговом окне настроек IDLE, например «Auto squeeze min lines», больше не сохраняет пустую строку как недопустимое значение конфигурации.
- [gh-65339](https://python-all.ru/3/whatsnew/changelog.html): Сохранение оболочки IDLE или окна вывода теперь по умолчанию использует расширение `.txt` и перечисляет текстовые файлы перед файлами Python, так как их содержимое не является исходным кодом Python.
- [gh-80504](https://python-all.ru/3/whatsnew/changelog.html): Поле «In files:» диалога поиска в файлах IDLE теперь всегда содержит полный путь к каталогу, даже для несохраненного редактора или оболочки. Это показывает в выводе grep, какой каталог был просканирован.
- [gh-134300](https://python-all.ru/3/whatsnew/changelog.html): Не добавлять каталог `idlelib` в путь пользовательского процесса IDLE. Пользовательский код, запущенный в IDLE, больше не может импортировать подмодули `idlelib` как модули верхнего уровня, например `import help`.
- [gh-89360](https://python-all.ru/3/whatsnew/changelog.html): Исправлен редкий сбой в редакторе IDLE при закрытии окна автодополнения: удаление привязки клавиш для последовательности, не привязанной к виртуальному событию, теперь игнорируется вместо возбуждения `ValueError`.
- [gh-71956](https://python-all.ru/3/whatsnew/changelog.html): Исправлена функция Replace All в диалоге замены редактора IDLE, когда направление поиска – «Вверх» и «Зацикливание» выключено: теперь заменяются все совпадения выше текущей позиции, а не только первое.
- [gh-152728](https://python-all.ru/3/whatsnew/changelog.html): Переместить функции run.fix\_scaling, editor.fixwordbreaks (как fix\_word\_breaks) и pyshell.fix\_x11\_paste в idlelib.util.
- [gh-66331](https://python-all.ru/3/whatsnew/changelog.html): Установить свойство окна `WM_CLASS` окон IDLE в `Idle` на X11, чтобы оконные менеджеры группировали и подписывали их правильно вместо использования значения по умолчанию `Toplevel`.
- [gh-85320](https://python-all.ru/3/whatsnew/changelog.html): IDLE теперь читает и записывает свои конфигурационные файлы и файл точек останова с использованием UTF-8 вместо кодировки локали. Это предотвращает повреждение не-ASCII данных (таких как пути с не-ASCII символами) и делает файлы переносимыми между различными окружениями.
- [gh-94523](https://python-all.ru/3/whatsnew/changelog.html): Обнаруживать, если файл изменён на локальном диске, и предлагать обновить. Патч от Shixian Li.
- [gh-139551](https://python-all.ru/3/whatsnew/changelog.html): Поддержка отображения [`BaseExceptionGroup`](https://python-all.ru/3/library/exceptions.html#BaseExceptionGroup) в IDLE.
- [gh-89520](https://python-all.ru/3/whatsnew/changelog.html): Настроить конфигурацию расширений IDLE на использование пользовательских конфигурационных файлов, что позволяет устанавливаемым пользователем расширениям иметь настройки и привязки клавиш, определённые в ~/.idlerc.

### Документация

- [gh-86726](https://python-all.ru/3/whatsnew/changelog.html): Значительно расширена документация [`tkinter`](https://python-all.ru/3/library/tkinter.html#module-tkinter), чтобы охватить полный публичный API пакета и его подмодулей. Описания ориентированы на Python, а не на Tcl/Tk, с исправленными типами возврата и информацией о `versionadded`/`versionchanged`.

### Ядро и встроенные модули

- [gh-153205](https://python-all.ru/3/whatsnew/changelog.html): Исправлена потенциальная [`SystemError`](https://python-all.ru/3/library/exceptions.html#SystemError) при векторных вызовах, когда выделение памяти завершается неудачей. Теперь вместо этого возбуждается [`MemoryError`](https://python-all.ru/3/library/exceptions.html#MemoryError).
- [gh-152682](https://python-all.ru/3/whatsnew/changelog.html): Исправлено разыменование нулевого указателя в [`compile()`](https://python-all.ru/3/library/functions.html#compile), когда зарезервированное имя (например `__classdict__`) используется как имя параметра типа и выделение памяти завершается неудачей при форматировании сообщения об ошибке.
- [gh-152635](https://python-all.ru/3/whatsnew/changelog.html): Исправлен сбой, вызванный нехваткой памяти при создании канала `_interpchannels`. Теперь корректно возбуждается [`MemoryError`](https://python-all.ru/3/library/exceptions.html#MemoryError).
- [gh-152375](https://python-all.ru/3/whatsnew/changelog.html): Исправлено неопределённое поведение, когда колбэк [`sys.monitoring`](https://python-all.ru/3/library/sys.monitoring.html#module-sys.monitoring) возбуждал исключение, в то время как программа следовала по ветке или циклу.
- [gh-152235](https://python-all.ru/3/whatsnew/changelog.html): Отложить отслеживание GC для [`set.intersection()`](https://python-all.ru/3/library/stdtypes.html#set.intersection), [`set.difference()`](https://python-all.ru/3/library/stdtypes.html#set.difference), [`set.symmetric_difference()`](https://python-all.ru/3/library/stdtypes.html#set.symmetric_difference), [`set.union()`](https://python-all.ru/3/library/stdtypes.html#set.union) и `set.__sub__`. Патч от Donghee Na.
- [gh-152235](https://python-all.ru/3/whatsnew/changelog.html): Отложить отслеживание GC для [`set`](https://python-all.ru/3/library/stdtypes.html#set) или [`frozenset`](https://python-all.ru/3/library/stdtypes.html#frozenset) до завершения его конструирования из итерируемого объекта. Патч от Donghee Na.
- [gh-152228](https://python-all.ru/3/whatsnew/changelog.html): Исправлен отказ утверждения при сборке Python в режиме отладки, который происходил в [`str.replace()`](https://python-all.ru/3/library/stdtypes.html#str.replace) в условиях ограниченной памяти.
- [gh-151763](https://python-all.ru/3/whatsnew/changelog.html): Исправляет возможный сбой при освобождении [`types.CodeType`](https://python-all.ru/3/library/types.html#types.CodeType).
- [gh-152020](https://python-all.ru/3/whatsnew/changelog.html): В сборке со свободными потоками [`asyncio.all_tasks()`](https://python-all.ru/3/library/asyncio-task.html#asyncio.all_tasks) больше не теряет задачи, запущенные с eager-стартом, при вызове из потока, отличного от того, который выполняет цикл событий.
- [gh-151763](https://python-all.ru/3/whatsnew/changelog.html): Исправлен потенциальный сбой в [`compile()`](https://python-all.ru/3/library/functions.html#compile), [`exec()`](https://python-all.ru/3/library/functions.html#exec), [`eval()`](https://python-all.ru/3/library/functions.html#eval) и [`ast.parse()`](https://python-all.ru/3/library/ast.html#ast.parse) при неудаче выделения памяти: парсер или компилятор мог вернуться без установки исключения.
- [gh-151905](https://python-all.ru/3/whatsnew/changelog.html): Исправлена обработка ошибки нехватки памяти в [`PyFrame_GetBack()`](https://python-all.ru/3/c-api/frame.html#c.PyFrame_GetBack) для распространения исключений вместо их маскирования как None.
- [gh-151773](https://python-all.ru/3/whatsnew/changelog.html): Исправлен сбой в [`contextvars.ContextVar.set()`](https://python-all.ru/3/library/contextvars.html#contextvars.ContextVar.set) при неудаче выделения памяти.
- [gh-151126](https://python-all.ru/3/whatsnew/changelog.html): Исправлен сбой при совместном использовании объектов [`memoryview`](https://python-all.ru/3/library/stdtypes.html#memoryview) между интерпретаторами из-за нехватки памяти. Теперь возбуждается соответствующее [`MemoryError`](https://python-all.ru/3/library/exceptions.html#MemoryError).
- [gh-151126](https://python-all.ru/3/whatsnew/changelog.html): Предотвращение возможного сбоя в `_winapi.c`, когда у устройства не осталось памяти. Теперь корректно возбуждается [`MemoryError`](https://python-all.ru/3/library/exceptions.html#MemoryError). Патч от Ivy Xu.
- [gh-151546](https://python-all.ru/3/whatsnew/changelog.html): Исправлена проверка предела стека, если Python слинкован с musl (например, Alpine Linux). Использовать размер стека, заданный компоновщиком, для вычисления пределов стека. Патч от Victor Stinner.
- [gh-151461](https://python-all.ru/3/whatsnew/changelog.html): Исправлено прямое выполнение файлов с недопустимыми кодировками исходного кода, чтобы сообщать об ошибке поиска кодека или декодирования, а не об общем сообщении `SyntaxError: encoding problem`. Патч от Bartosz Sławecki.
- [gh-151218](https://python-all.ru/3/whatsnew/changelog.html): [`PyConfig_Set()`](https://python-all.ru/3/c-api/init_config.html#c.PyConfig_Set) и [`sys.set_int_max_str_digits()`](https://python-all.ru/3/library/sys.html#sys.set_int_max_str_digits) теперь заменяют [`sys.flags`](https://python-all.ru/3/library/sys.html#sys.flags) (создают новый объект) вместо изменения `sys.flags` на месте. Патч от Victor Stinner.
- [gh-151253](https://python-all.ru/3/whatsnew/changelog.html): Если `import encodings` (первый импорт) не удаётся при запуске Python, вывести конфигурацию путей Python, чтобы помочь пользователям отладить свою конфигурацию. Патч от Victor Stinner.
- [gh-151238](https://python-all.ru/3/whatsnew/changelog.html): Исправлен сбой при компиляции конкатенированной f-строки или t-строки, если ошибка возникает при обработке одной из её частей.
- [gh-151126](https://python-all.ru/3/whatsnew/changelog.html): Исправлен сбой, возникавший при нехватке памяти на устройстве в модуле `_interpchannels`.

  Теперь в этих случаях выбрасываются корректные исключения [`MemoryError`](https://python-all.ru/3/library/exceptions.html#MemoryError).
- [gh-150902](https://python-all.ru/3/whatsnew/changelog.html): Применение существующей оптимизации PyCriticalSection (один мьютекс) к PyCriticalSection2: избегается захват тех же блокировок, которые уже захвачены текущей критической секцией.
- [gh-151065](https://python-all.ru/3/whatsnew/changelog.html): Исправлена утечка памяти при использовании [аллокатора mimalloc](https://python-all.ru/3/c-api/memory.html#mimalloc).
- [gh-151029](https://python-all.ru/3/whatsnew/changelog.html): В Linux исправлена ситуация, когда [`sys.remote_exec()`](https://python-all.ru/3/library/sys.html#sys.remote_exec) не мог найти удалённую память для записи после замены `libpython` на диске.
- [gh-150988](https://python-all.ru/3/whatsnew/changelog.html): Исправлена утечка ссылок в [`OSError`](https://python-all.ru/3/library/exceptions.html#OSError), когда атрибуты устанавливаются до `super().__init__()`.
- [gh-149689](https://python-all.ru/3/whatsnew/changelog.html): Исправлено отсутствие распространения ошибки во вспомогательных функциях синтаксического анализатора при сбое выделения памяти. Патч от Thomas Kowalski.

### C API

- [gh-123619](https://python-all.ru/3/whatsnew/changelog.html): [`PyUnstable_Object_EnableDeferredRefcount()`](https://python-all.ru/3/c-api/object.html#c.PyUnstable_Object_EnableDeferredRefcount) теперь возвращает `0`, если объект не отслеживается сборщиком мусора: если [`gc.is_tracked()`](https://python-all.ru/3/library/gc.html#gc.is_tracked) равен false. Патч от Victor Stinner.

### Сборка

- [gh-152502](https://python-all.ru/3/whatsnew/changelog.html): Модуль [`curses`](https://python-all.ru/3/library/curses.html#module-curses) теперь обнаруживает `set_escdelay()`, `set_tabsize()` и переменные `ESCDELAY` и `TABSIZE` с помощью проверок возможностей **configure** вместо специфичного для ncurses макроса `NCURSES_EXT_FUNCS`, поэтому они доступны при сборке с другими реализациями curses, такими как NetBSD curses, которые их предоставляют.
- [gh-148260](https://python-all.ru/3/whatsnew/changelog.html): В Linux, когда Python слинкован с библиотекой C musl, использовать размер стека потока не менее 1 МиБ вместо значения по умолчанию musl (128 КиБ). Патч от Victor Stinner.

## Python 3.14.6 финальный

*Дата выпуска: 2026-06-10*

### Безопасность

- [gh-151159](https://python-all.ru/3/whatsnew/changelog.html): Обновление установщиков Android и iOS для использования OpenSSL 3.5.7.
- [gh-150599](https://python-all.ru/3/whatsnew/changelog.html): Исправлено возможное переполнение буфера стека в [`bz2`](https://python-all.ru/3/library/bz2.html#module-bz2), когда [`bz2.BZ2Decompressor`](https://python-all.ru/3/library/bz2.html#bz2.BZ2Decompressor) повторно используется после ошибки декомпрессии. Теперь декомпрессор становится непригодным после того, как libbz2 сообщит об ошибке.
- [gh-149835](https://python-all.ru/3/whatsnew/changelog.html): [`shutil.move()`](https://python-all.ru/3/library/shutil.html#shutil.move) теперь разрешает символические ссылки через [`os.path.realpath()`](https://python-all.ru/3/library/os.path.html#os.path.realpath) при проверке, находится ли целевой каталог внутри исходного, предотвращая обход этой защиты через символические ссылки.
- [gh-149698](https://python-all.ru/3/whatsnew/changelog.html): Обновление встроенной [libexpat](https://python-all.ru/3/whatsnew/changelog.html) до версии 2.8.1 для исправления [**CVE-2026-45186**](https://python-all.ru/3/whatsnew/changelog.html).
- [gh-87451](https://python-all.ru/3/whatsnew/changelog.html): Незадокументированная функция `ftpcp` модуля [`ftplib`](https://python-all.ru/3/library/ftplib.html#module-ftplib) больше не доверяет значению IPv4-адреса, возвращаемому исходным сервером в ответ на команду `PASV` по умолчанию, завершая исправление CVE-2021-4189. Как и в случае с [`ftplib.FTP`](https://python-all.ru/3/library/ftplib.html#ftplib.FTP), прежнее поведение можно включить, установив атрибут `trust_server_pasv_ipv4_address` на экземпляре исходного `ftplib.FTP` в значение `True`. Спасибо Ци Дэну из Aurascape AI за сообщение.
- [gh-149486](https://python-all.ru/3/whatsnew/changelog.html): [`tarfile.data_filter()`](https://python-all.ru/3/library/tarfile.html#tarfile.data_filter) теперь проверяет цели ссылок, используя то же нормализованное значение, которое записывается на диск, удаляет конечные разделители из имени элемента при разрешении каталога символической ссылки и отклоняет элементы-ссылки, которые могут заменить сам целевой каталог. Это закрывает несколько обходов проверки пути, обходящих фильтр извлечения `data`.
- [gh-149079](https://python-all.ru/3/whatsnew/changelog.html): Исправлена потенциальная уязвимость типа «отказ в обслуживании» в [`unicodedata.normalize()`](https://python-all.ru/3/library/unicodedata.html#unicodedata.normalize). Этап канонического упорядочивания при нормализации Юникода использовал сортировку вставками с квадратичным временем для переупорядочивания комбинирующих символов, что могло быть использовано с помощью специально подготовленного ввода, содержащего много комбинирующих символов в неканоническом порядке. Заменено на сортировку подсчётом с линейным временем для длинных последовательностей.
- [gh-149018](https://python-all.ru/3/whatsnew/changelog.html): Улучшена защита от хэш-флуд-атак на XML в [`xml.parsers.expat`](https://python-all.ru/3/library/pyexpat.html#module-xml.parsers.expat) и [`xml.etree.ElementTree`](https://python-all.ru/3/library/xml.etree.elementtree.html#module-xml.etree.ElementTree), когда Python скомпилирован с libExpat 2.8.0 или новее.

### Ядро и встроенные объекты

- [gh-151112](https://python-all.ru/3/whatsnew/changelog.html): Исправлен сбой в компиляторе, который мог возникнуть при нехватке памяти.
- [gh-151126](https://python-all.ru/3/whatsnew/changelog.html): Исправлен сбой при нехватке памяти на устройстве, который возникал в:

  - компиляция кода - `_winapi.CreateProcess()`

  Теперь в этих местах выбрасываются корректные исключения [`MemoryError`](https://python-all.ru/3/library/exceptions.html#MemoryError).
- [gh-150700](https://python-all.ru/3/whatsnew/changelog.html): Исправлена [`SystemError`](https://python-all.ru/3/library/exceptions.html#SystemError) при компиляции включения (comprehension) в области видимости класса, содержащего `lambda`, который ссылается на `__class__`, `__classdict__` или `__conditional_annotations__`. Патч от Bartosz Sławecki.
- [gh-150633](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка, из-за которой замороженный импортёр принимал имена модулей с встроенными нулевыми байтами, что позволяло обходить кеш [`sys.modules`](https://python-all.ru/3/library/sys.html#sys.modules) и создавать дубликаты объектов модулей.
- [gh-148613](https://python-all.ru/3/whatsnew/changelog.html): Исправлено состояние гонки в сборке со свободными потоками между [`gc.set_threshold()`](https://python-all.ru/3/library/gc.html#gc.set_threshold) и планированием сборки мусора при выделении объектов.
- [gh-149156](https://python-all.ru/3/whatsnew/changelog.html): Исправлен периодический сбой после [`os.fork()`](https://python-all.ru/3/library/os.html#os.fork), когда включена профилировка с помощью трамплина perf и дочерний процесс возвращается через кадры трамплина, унаследованные от родительского процесса.
- [gh-149449](https://python-all.ru/3/whatsnew/changelog.html): Исправлен сбой, вызываемый обращением к освобождённой памяти, происходивший при удалении модуля [`unicodedata`](https://python-all.ru/3/library/unicodedata.html#module-unicodedata) из [`sys.modules`](https://python-all.ru/3/library/sys.html#sys.modules) и его сборке сборщиком мусора между вызовами, которые декодируют escape-последовательности `\N{...}` или используют обработчик ошибок кодека `namereplace`.
- [gh-150207](https://python-all.ru/3/whatsnew/changelog.html): Исправлен сбой, возникавший при неудачном выделении памяти во время инициализации токенизатора. Теперь вместо этого возбуждается соответствующее исключение [`MemoryError`](https://python-all.ru/3/library/exceptions.html#MemoryError).
- [gh-150107](https://python-all.ru/3/whatsnew/changelog.html): [`asyncio`](https://python-all.ru/3/library/asyncio.html#module-asyncio): методы цикла событий `sendfile()` и `sock_sendfile()` теперь вызывают `file.seek(offset)`, если у *file* есть метод `seek()`, даже если *offset* равен `0` (значение по умолчанию).
- [gh-150146](https://python-all.ru/3/whatsnew/changelog.html): Исправлен сбой при подстановке переменной сложного типа.

  `from typing import TypeVar; memoryview[TypeVar("")][*typing.Mapping[..., ...]]` ранее завершался ошибкой из-за отсутствия проверки `NULL` при вызове C-функции `_unpack_args`.
- [gh-149590](https://python-all.ru/3/whatsnew/changelog.html): Исправлен сбой при многократном импорте модуля faulthandler.
- [gh-149816](https://python-all.ru/3/whatsnew/changelog.html): Исправлено состояние гонки в `_PyBytes_FromList` в режиме free-threading.
- [gh-149816](https://python-all.ru/3/whatsnew/changelog.html): Исправлено состояние гонки в [`memoryview`](https://python-all.ru/3/library/stdtypes.html#memoryview) при использовании free-threading.
- [gh-149805](https://python-all.ru/3/whatsnew/changelog.html): Исправлена [`SystemError`](https://python-all.ru/3/library/exceptions.html#SystemError) при компиляции аннотации класса `__classdict__`. Обнаружено OSS-Fuzz в [#512907042](https://python-all.ru/3/whatsnew/changelog.html).
- [gh-149738](https://python-all.ru/3/whatsnew/changelog.html): [`sqlite3`](https://python-all.ru/3/library/sqlite3.html#module-sqlite3): запрещено удаление атрибутов `row_factory` и `text_factory` соединения для предотвращения сбоя при запросе.
- [gh-139808](https://python-all.ru/3/whatsnew/changelog.html): Добавлена защита ветвлений для AArch64 (BTI/PAC) в ассемблерном коде, используемом [`-X perf_jit`](https://python-all.ru/3/using/cmdline.html#cmdoption-X) (интеграция с профилировщиком perf в Linux).
- [gh-148450](https://python-all.ru/3/whatsnew/changelog.html): Исправлен `abc.register()`, чтобы он аннулировал теги версий типов для зарегистрированных классов.

### Библиотека

- [gh-151039](https://python-all.ru/3/whatsnew/changelog.html): Исправлен сбой, когда статические типы [`datetime`](https://python-all.ru/3/library/datetime.html#module-datetime) переживают модуль `_datetime`.
- [gh-150913](https://python-all.ru/3/whatsnew/changelog.html): Исправлено присваивание срезу [`sqlite3.Blob`](https://python-all.ru/3/library/sqlite3.html#sqlite3.Blob), чтобы возбуждались исключения [`TypeError`](https://python-all.ru/3/library/exceptions.html#TypeError) и [`IndexError`](https://python-all.ru/3/library/exceptions.html#IndexError) при несовпадении типа и размера соответственно, даже если целевой срез пуст.
- [gh-143008](https://python-all.ru/3/whatsnew/changelog.html): Исправлены состояния гонки при повторной инициализации объекта [`io.TextIOWrapper`](https://python-all.ru/3/library/io.html#io.TextIOWrapper).
- [gh-150750](https://python-all.ru/3/whatsnew/changelog.html): Исправлено состояние гонки в [`collections.deque.index()`](https://python-all.ru/3/library/collections.html#collections.deque.index) при использовании free-threading.
- [gh-150685](https://python-all.ru/3/whatsnew/changelog.html): Обновлён встроенный pip до версии 26.1.2.
- [gh-150406](https://python-all.ru/3/whatsnew/changelog.html): Исправлен возможный сбой, возникающий во время инициализации модуля [`socket`](https://python-all.ru/3/library/socket.html#module-socket) при нехватке памяти на платформах без реентерабельного `gethostbyname`.
- [gh-150372](https://python-all.ru/3/whatsnew/changelog.html): [`readline`](https://python-all.ru/3/library/readline.html#module-readline): Исправлен потенциальный сбой при автодополнении по табуляции, вызванный ошибкой нехватки памяти во время инициализации модуля.
- [gh-150157](https://python-all.ru/3/whatsnew/changelog.html): Исправлен сбой в сборках со свободной многопоточностью, возникающий при сериализации по имени объектов без атрибута `__module__`, в то время как [`sys.modules`](https://python-all.ru/3/library/sys.html#sys.modules) одновременно изменяется.
- [gh-150175](https://python-all.ru/3/whatsnew/changelog.html): Исправлено состояние гонки в [`unittest.mock.ThreadingMock`](https://python-all.ru/3/library/unittest.mock.html#unittest.mock.ThreadingMock), при котором параллельные вызовы могли терять приращения `call_count` и других атрибутов из-за отсутствия блокировки в `_increment_mock_call`.
- [gh-84353](https://python-all.ru/3/whatsnew/changelog.html): Сохранение имён файлов, закодированных не в UTF-8, при добавлении в [`zipfile.ZipFile`](https://python-all.ru/3/library/zipfile.html#zipfile.ZipFile). Ранее имена, не содержащие ASCII, хранящиеся в устаревшей кодировке (без установленного флага UTF-8), могли повреждаться при перезаписи центрального каталога: они декодировались как cp437, а затем сохранялись заново как UTF-8.
- [gh-149816](https://python-all.ru/3/whatsnew/changelog.html): Исправлено состояние гонки в [`ssl.SSLContext.sni_callback`](https://python-all.ru/3/library/ssl.html#ssl.SSLContext.sni_callback).
- [gh-149995](https://python-all.ru/3/whatsnew/changelog.html): Обновлены различные докстринги в [`typing`](https://python-all.ru/3/library/typing.html#module-typing).
- [gh-88726](https://python-all.ru/3/whatsnew/changelog.html): Пакет [`email`](https://python-all.ru/3/library/email.html#module-email) теперь использует стандартные имена кодировок MIME «gb2312» и «big5» вместо нестандартных «eucgb2312\_cn» и «big5\_tw».
- [gh-149571](https://python-all.ru/3/whatsnew/changelog.html): Исправлена C-реализация [`xml.etree.ElementTree.Element.itertext()`](https://python-all.ru/3/library/xml.etree.elementtree.html#xml.etree.ElementTree.Element.itertext): теперь она не выводит текст для комментариев и инструкций обработки.
- [gh-149921](https://python-all.ru/3/whatsnew/changelog.html): Исправлены утечки ссылок в ошибочных путях модулей расширения `_interpchannels` и `_interpqueues`.
- [gh-149816](https://python-all.ru/3/whatsnew/changelog.html): Исправлено состояние гонки в методе `_random.Random.__init__` в режиме free-threading.
- [gh-149801](https://python-all.ru/3/whatsnew/changelog.html): Добавлены зарегистрированные в IANA имена и псевдонимы с ведущими нулями перед номером (например, IBM00858, CP00858, IBM01140, CP01140) для соответствующих кодеков.
- [gh-149701](https://python-all.ru/3/whatsnew/changelog.html): Исправлен некорректный код возврата из Lib/venv/bin/activate, если хеширование отключено.
- [gh-112821](https://python-all.ru/3/whatsnew/changelog.html): В REPL автодополнение могло выполнять произвольный код в геттере дескриптора. Если этот геттер вызывал исключение, автодополнение не показывало никаких вариантов для всего объекта. Теперь автодополнение для таких объектов работает как ожидается.
- [gh-149489](https://python-all.ru/3/whatsnew/changelog.html): Исправлена [`ElementTree`](https://python-all.ru/3/library/xml.etree.elementtree.html#module-xml.etree.ElementTree) сериализация в HTML. Содержимое элементов «xmp», «iframe», «noembed», «noframes» и «plaintext» больше не экранируется. У элемента «plaintext» больше нет закрывающего тега.
- [gh-149231](https://python-all.ru/3/whatsnew/changelog.html): В [`tomllib`](https://python-all.ru/3/library/tomllib.html#module-tomllib) теперь ограничено количество частей в TOML-ключах.
- [gh-149046](https://python-all.ru/3/whatsnew/changelog.html): [`io`](https://python-all.ru/3/library/io.html#module-io): Исправлена [`io.StringIO`](https://python-all.ru/3/library/io.html#io.StringIO) сериализация: больше не вызывается `str(obj)` для подклассов [`str`](https://python-all.ru/3/library/stdtypes.html#str). Патч от Томаса Ковальски (Thomas Kowalski).
- [gh-148954](https://python-all.ru/3/whatsnew/changelog.html): Исправлена уязвимость внедрения XML в [`xmlrpc.client.dumps()`](https://python-all.ru/3/library/xmlrpc.client.html#xmlrpc.client.dumps), где `methodname` не экранировался перед подстановкой в тело XML.
- [gh-148441](https://python-all.ru/3/whatsnew/changelog.html): [`xml.parsers.expat`](https://python-all.ru/3/library/pyexpat.html#module-xml.parsers.expat): предотвращено падение в [`CharacterDataHandler()`](https://python-all.ru/3/library/pyexpat.html#xml.parsers.expat.xmlparser.CharacterDataHandler), когда размер символьных данных превышает [`buffer size`](https://python-all.ru/3/library/pyexpat.html#xml.parsers.expat.xmlparser.buffer_size) парсера.
- [gh-146452](https://python-all.ru/3/whatsnew/changelog.html): Исправлен segfault в [`pickle`](https://python-all.ru/3/library/pickle.html#module-pickle) при сериализации словаря, одновременно изменяемого другим потоком в сборке со свободными потоками.
- [gh-142831](https://python-all.ru/3/whatsnew/changelog.html): Исправлено падение в модуле [`json`](https://python-all.ru/3/library/json.html#module-json), где могло возникнуть использование после освобождения, если объект, который кодируется, изменяется во время сериализации.
- [gh-90949](https://python-all.ru/3/whatsnew/changelog.html): Добавлены [`SetBillionLaughsAttackProtectionActivationThreshold()`](https://python-all.ru/3/library/pyexpat.html#xml.parsers.expat.xmlparser.SetBillionLaughsAttackProtectionActivationThreshold) и [`SetBillionLaughsAttackProtectionMaximumAmplification()`](https://python-all.ru/3/library/pyexpat.html#xml.parsers.expat.xmlparser.SetBillionLaughsAttackProtectionMaximumAmplification) в объекты [xmlparser](https://python-all.ru/3/library/pyexpat.html#xmlparser-objects) для настройки защиты от атак [billion laughs](https://python-all.ru/3/whatsnew/changelog.html). Патч от Bénédikt Tran.
- [gh-134261](https://python-all.ru/3/whatsnew/changelog.html): zip: при воспроизводимых сборках ZipFile использует UTC вместо локального времени при записи дат файлов, чтобы избежать отрицательных значений.
- [gh-128110](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка в разборе заголовков адресов [`email`](https://python-all.ru/3/library/email.html#module-email), которая могла приводить к лишним пробелам в декодированном тексте при использовании современной почтовой политики. Пробел между парами соседних [**RFC 2047**](https://python-all.ru/3/whatsnew/changelog.html) закодированных слов теперь игнорируется, согласно разделу 6.2 (и в соответствии с существующим разбором неструктурированных заголовков, таких как *Subject*).
- [gh-107398](https://python-all.ru/3/whatsnew/changelog.html): Исправлено исключение в потоковом режиме [`tarfile`](https://python-all.ru/3/library/tarfile.html#module-tarfile) при обработке файла с дополнительным полем gzip.
- [gh-123853](https://python-all.ru/3/whatsnew/changelog.html): Таблица идентификаторов языковых кодов Windows (LCID), используемая [`locale.getdefaultlocale()`](https://python-all.ru/3/library/locale.html#locale.getdefaultlocale), обновлена до версии протокола 16.0 (2024-04-23).
- [gh-91099](https://python-all.ru/3/whatsnew/changelog.html): [`imaplib.IMAP4.login()`](https://python-all.ru/3/library/imaplib.html#imaplib.IMAP4.login) теперь вызывает исключения через [`str`](https://python-all.ru/3/library/stdtypes.html#str) вместо [`bytes`](https://python-all.ru/3/library/stdtypes.html#bytes). Патч от Флориана Беста (Florian Best).

### Документация

- [gh-150319](https://python-all.ru/3/whatsnew/changelog.html): Встроенные и стандартные библиотечные типы теперь документируют значение своих параметров типа.
- [gh-109503](https://python-all.ru/3/whatsnew/changelog.html): Исправлена документация для [`shutil.move()`](https://python-all.ru/3/library/shutil.html#shutil.move) по использованию [`os.rename()`](https://python-all.ru/3/library/os.html#os.rename), так как неатомарное перемещение может использоваться, даже если файлы находятся в одной файловой системе. Патч от Fang Li.

### Тесты

- [gh-151130](https://python-all.ru/3/whatsnew/changelog.html): Добавлены дополнительные тесты для C API `PyWeakref_*`.
- [gh-149776](https://python-all.ru/3/whatsnew/changelog.html): Исправлен test\_socket на ядре Linux 7.1 и новее: пропущены тесты UDP Lite, если они не поддерживаются. Патч от Виктора Стиннера (Victor Stinner).

### Сборка

- [gh-148294](https://python-all.ru/3/whatsnew/changelog.html): Исправлено использование `AC_PATH_TOOL` в `configure.ac`, чтобы компилятор C++ мог быть найден на `PATH`.

### Windows

- [gh-151159](https://python-all.ru/3/whatsnew/changelog.html): Обновлена встроенная версия OpenSSL до 3.5.7.

### macOS

- [gh-151159](https://python-all.ru/3/whatsnew/changelog.html): Обновлён установщик macOS для использования OpenSSL 3.5.7.
- [gh-150644](https://python-all.ru/3/whatsnew/changelog.html): Если ведение системного журнала включено (с `config.use_system_logger`, сообщения теперь помечаются как общедоступные. Это позволяет системному регистратору macOS 26 просматривать сообщения без специальной настройки.
- [gh-115119](https://python-all.ru/3/whatsnew/changelog.html): Обновлён установщик macOS для использования libmpdecimal 4.0.1.

### IDLE

- [bpo-6699](https://python-all.ru/3/whatsnew/changelog.html): Предупреждение пользователя, если при сохранении файл будет перезаписан.

### C API

- [gh-150907](https://python-all.ru/3/whatsnew/changelog.html): Исправлен заголовочный файл `dynamic_annotations.h` при сборке с C++ и Valgrind: добавлен `extern "C++" scope` для шаблона C++. Патч от Виктора Стиннера (Victor Stinner).
- [gh-145235](https://python-all.ru/3/whatsnew/changelog.html): Made [`PyDict_AddWatcher()`](https://python-all.ru/3/c-api/dict.html#c.PyDict_AddWatcher), [`PyDict_ClearWatcher()`](https://python-all.ru/3/c-api/dict.html#c.PyDict_ClearWatcher), [`PyDict_Watch()`](https://python-all.ru/3/c-api/dict.html#c.PyDict_Watch), and [`PyDict_Unwatch()`](https://python-all.ru/3/c-api/dict.html#c.PyDict_Unwatch) thread-safe on the [free threaded](https://python-all.ru/3/glossary.html#term-free-threading) build.

## Python 3.14.5 финальный

*Дата выпуска: 2026-05-10*

### Безопасность

- [gh-148178](https://python-all.ru/3/whatsnew/changelog.html): Усилена защита `_remote_debugging` за счет проверки таблиц смещений удаленной отладки перед их использованием для определения размера операций чтения памяти или интерпретации удаленных структур.

### Ядро и встроенные модули

- [gh-146270](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка последовательной согласованности в `structmember.c`.
- [gh-137293](https://python-all.ru/3/whatsnew/changelog.html): Исправлена [`SystemError`](https://python-all.ru/3/library/exceptions.html#SystemError) при поиске ELF-файлов в [`sys.remote_exec()`](https://python-all.ru/3/library/sys.html#sys.remote_exec).

### Библиотека

- [gh-149388](https://python-all.ru/3/whatsnew/changelog.html): Закрытие `asyncio.windows_utils.PipeHandle` сделано идемпотентным.
- [gh-149377](https://python-all.ru/3/whatsnew/changelog.html): Обновлён встроенный pip до версии 26.1.1
- [gh-138907](https://python-all.ru/3/whatsnew/changelog.html): Поддержка [**RFC 9309**](https://python-all.ru/3/whatsnew/changelog.html) в [`urllib.robotparser`](https://python-all.ru/3/library/urllib.robotparser.html#module-urllib.robotparser).
- [gh-148615](https://python-all.ru/3/whatsnew/changelog.html): Исправлена [`pdb`](https://python-all.ru/3/library/pdb.html#module-pdb): теперь принимает стандартный разделитель конца опций –. Сообщил haampie, исправил Shrey Naithani.
- [gh-130750](https://python-all.ru/3/whatsnew/changelog.html): Восстановлено экранирование вариантов выбора в сообщениях об ошибках [`argparse`](https://python-all.ru/3/library/argparse.html#module-argparse) для улучшения читаемости и согласованности с документацией.
- [gh-141449](https://python-all.ru/3/whatsnew/changelog.html): Улучшены тесты и документация для вызываемых объектов, не являющихся функциями, в качестве [функций аннотации](https://python-all.ru/3/glossary.html#term-annotate-function).

### Тесты

- [gh-149425](https://python-all.ru/3/whatsnew/changelog.html): Увеличен временной интервал в `test.test_zipfile.test_core.OtherTests.test_write_without_source_date_epoch`
- [gh-145736](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка обратного портирования тестового сценария test\_configure\_values в test\_tkinter для Tk 9.

### macOS

- [gh-142295](https://python-all.ru/3/whatsnew/changelog.html): Для сборок фреймворка Python под macOS обновлены файлы Info.plist для лучшего соответствия текущим рекомендациям Apple. Оригинальный патч предоставлен Martinus Verburg.
- [gh-124111](https://python-all.ru/3/whatsnew/changelog.html): Обновлён установщик macOS для использования Tcl/Tk 9.0.3.

## Python 3.14.5 релиз-кандидат 1

*Дата выпуска: 2026-05-04*

### Безопасность

- [gh-149254](https://python-all.ru/3/whatsnew/changelog.html): Обновлены установщики Android и iOS: используется OpenSSL 3.0.20.
- [gh-149017](https://python-all.ru/3/whatsnew/changelog.html): Обновлён встроенный [libexpat](https://python-all.ru/3/whatsnew/changelog.html) до версии 2.8.0.
- [gh-90309](https://python-all.ru/3/whatsnew/changelog.html): Кодировать значения в Base64 при встраивании cookies в JavaScript с помощью метода [`http.cookies.BaseCookie.js_output()`](https://python-all.ru/3/library/http.cookies.html#http.cookies.BaseCookie.js_output), чтобы избежать инъекций и экранирования.
- [gh-148808](https://python-all.ru/3/whatsnew/changelog.html): Добавлена проверка границ буфера при использовании параметра `nbytes` с `asyncio.AbstractEventLoop.sock_recvfrom_into()`. Актуально только для Windows и [`asyncio.ProactorEventLoop`](https://python-all.ru/3/library/asyncio-eventloop.html#asyncio.ProactorEventLoop).
- [gh-148395](https://python-all.ru/3/whatsnew/changelog.html): Исправлена висячая ссылка на входной указатель в [`lzma.LZMADecompressor`](https://python-all.ru/3/library/lzma.html#lzma.LZMADecompressor), [`bz2.BZ2Decompressor`](https://python-all.ru/3/library/bz2.html#bz2.BZ2Decompressor) и внутреннем `zlib._ZlibDecompressor` при сбое выделения памяти с [`MemoryError`](https://python-all.ru/3/library/exceptions.html#MemoryError), что могло позволить последующему вызову `decompress()` читать или записывать через устаревший указатель на уже освобождённый буфер вызывающего.
- [gh-148169](https://python-all.ru/3/whatsnew/changelog.html): Обход в [`webbrowser`](https://python-all.ru/3/library/webbrowser.html#module-webbrowser) позволял URL с префиксом `%action` проходить проверку безопасности дефисного префикса.
- [gh-146581](https://python-all.ru/3/whatsnew/changelog.html): Исправлена уязвимость в [`shutil.unpack_archive()`](https://python-all.ru/3/library/shutil.html#shutil.unpack_archive) для ZIP-файлов в Windows, которая позволяла записывать файлы за пределы целевого дерева каталогов, если путь в архиве содержит префикс диска Windows. Теперь такие недопустимые пути пропускаются. Файлы, содержащие «..» в имени (например, «foo..bar»), больше не пропускаются.
- [gh-146333](https://python-all.ru/3/whatsnew/changelog.html): Исправлено квадратичное возвратное отслеживание в регулярных выражениях разбора опций [`configparser.RawConfigParser`](https://python-all.ru/3/library/configparser.html#configparser.RawConfigParser) (`OPTCRE` и `OPTCRE_NV`). Специально сформированная строка конфигурации с большим количеством пробелов могла привести к чрезмерной загрузке CPU.
- [gh-146211](https://python-all.ru/3/whatsnew/changelog.html): Отклонять символы CR/LF в заголовках туннельного запроса для метода HTTPConnection.set\_tunnel().

### Ядро и встроенные объекты

- [gh-149122](https://python-all.ru/3/whatsnew/changelog.html): Исправлен сбой в оптимизированных вызовах [`all()`](https://python-all.ru/3/library/functions.html#all), [`any()`](https://python-all.ru/3/library/functions.html#any), [`tuple()`](https://python-all.ru/3/library/stdtypes.html#tuple), [`list()`](https://python-all.ru/3/library/stdtypes.html#list) и [`set()`](https://python-all.ru/3/library/stdtypes.html#set) с аргументом-выражением асинхронного генератора (например, `tuple(await x for x in y)`). Теперь эти вызовы корректно возбуждают `TypeError` вместо сбоя.
- [gh-113956](https://python-all.ru/3/whatsnew/changelog.html): Исправлена гонка данных в [`sys.intern()`](https://python-all.ru/3/library/sys.html#sys.intern) в сборке со свободной многопоточностью при интернировании строки, принадлежащей другому потоку. Вместо этого используется интернированная копия текущего потока, когда небезопасно делать оригинал бессмертным.
- [gh-148820](https://python-all.ru/3/whatsnew/changelog.html): Исправлена гонка в `_PyRawMutex` в сборке со свободной многопоточностью, где возврат `Py_PARK_INTR` из `_PySemaphore_Wait` мог позволить ожидающему потоку уничтожить свой семафор до завершения `_PySemaphore_Wakeup` разблокирующего потока, вызывая фатальную ошибку `ReleaseSemaphore`.
- [gh-148653](https://python-all.ru/3/whatsnew/changelog.html): Запрещены [`marshalling`](https://python-all.ru/3/library/marshal.html#module-marshal) рекурсивные объекты кода и объекты [`slice`](https://python-all.ru/3/library/functions.html#slice), которые не могут быть корректно демаршалированы.
- [gh-142516](https://python-all.ru/3/whatsnew/changelog.html): Перенесён поколенческий сборщик циклического мусора в сборку 3.14 по умолчанию, заменяя инкрементный сборщик, оставляя сборщик свободной многопоточности без изменений.
- [gh-148390](https://python-all.ru/3/whatsnew/changelog.html): Исправлено неопределённое поведение в [`memoryview`](https://python-all.ru/3/library/stdtypes.html#memoryview) при использовании нативного булева формата (`?`) в [`cast()`](https://python-all.ru/3/library/stdtypes.html#memoryview.cast). Ранее на некоторых распространённых платформах вызов `memoryview(b).cast("?").tolist()` некорректно возвращал `[False]` вместо `[True]` для любого чётного байта *b*. Исправление от Bénédikt Tran.
- [gh-148418](https://python-all.ru/3/whatsnew/changelog.html): Исправлена возможная утечка ссылки в повреждённом потоке маршалинга `TYPE_CODE`.
- [gh-148393](https://python-all.ru/3/whatsnew/changelog.html): Исправлены гонки данных между [`PyDict_Watch()`](https://python-all.ru/3/c-api/dict.html#c.PyDict_Watch) / [`PyDict_Unwatch()`](https://python-all.ru/3/c-api/dict.html#c.PyDict_Unwatch) и конкурентным изменением словаря в [сборке со свободной многопоточностью](https://python-all.ru/3/glossary.html#term-free-threaded-build).
- [gh-148284](https://python-all.ru/3/whatsnew/changelog.html): Исправлено большое потребление стека в цикле интерпретатора Python на Clang 22 установкой ограничений функций для встраивания при сборке с вычисляемыми переходами.
- [gh-148037](https://python-all.ru/3/whatsnew/changelog.html): Удалена критическая секция из `PyCode_Addr2Line()` в сборке со свободной многопоточностью.
- [gh-148222](https://python-all.ru/3/whatsnew/changelog.html): Исправлена поддержка vectorcall в [`types.GenericAlias`](https://python-all.ru/3/library/types.html#types.GenericAlias), когда базовый тип не поддерживает протокол vectorcall. Исправлены возможные утечки в `types.GenericAlias` и [`types.UnionType`](https://python-all.ru/3/library/types.html#types.UnionType) при ошибке памяти.
- [gh-148208](https://python-all.ru/3/whatsnew/changelog.html): Исправлена утечка глубины рекурсии в [`PyObject_Print()`](https://python-all.ru/3/c-api/object.html#c.PyObject_Print).
- [gh-137814](https://python-all.ru/3/whatsnew/changelog.html): Исправлен атрибут `__qualname__` функций `__annotate__` для функций.
- [gh-147998](https://python-all.ru/3/whatsnew/changelog.html): Исправлена утечка памяти в вызовах вспомогательных функций интерпретатора, чтобы очистка работала при пересечении границ интерпретаторов. Исправление от Maurycy Pawłowski-Wieroński.
- [gh-146455](https://python-all.ru/3/whatsnew/changelog.html): Исправлена регрессия времени компиляции O(N²) в свёртке констант после её переноса из AST в оптимизатор CFG.

### Библиотека

- [gh-149221](https://python-all.ru/3/whatsnew/changelog.html): Обрабатывается редкая ошибка математической области для [`random.binomialvariate()`](https://python-all.ru/3/library/random.html#random.binomialvariate).
- [gh-149117](https://python-all.ru/3/whatsnew/changelog.html): Исправлены [`runpy.run_module()`](https://python-all.ru/3/library/runpy.html#runpy.run_module) и [`runpy.run_path()`](https://python-all.ru/3/library/runpy.html#runpy.run_path), чтобы устанавливать атрибут [`name`](https://python-all.ru/3/library/exceptions.html#ImportError.name) на возбуждаемом ими [`ImportError`](https://python-all.ru/3/library/exceptions.html#ImportError).
- [gh-149148](https://python-all.ru/3/whatsnew/changelog.html): [`ensurepip`](https://python-all.ru/3/library/ensurepip.html#module-ensurepip): Обновлён встроенный pip до 26.1. Эта версия исправляет уязвимость [**CVE 2026-3219**](https://python-all.ru/3/whatsnew/changelog.html). Исправление от Victor Stinner.
- [gh-148093](https://python-all.ru/3/whatsnew/changelog.html): Исправлено чтение одного байта за пределами границ в [`binascii.a2b_uu()`](https://python-all.ru/3/library/binascii.html#binascii.a2b_uu). Возбуждается [`binascii.Error`](https://python-all.ru/3/library/binascii.html#binascii.Error) вместо чтения за концом буфера.
- [gh-148914](https://python-all.ru/3/whatsnew/changelog.html): Исправлена мемоизация встроенного [`PickleBuffer`](https://python-all.ru/3/library/pickle.html#pickle.PickleBuffer) в реализации [`pickle`](https://python-all.ru/3/library/pickle.html#module-pickle) на Python. Ранее идентичные `PickleBuffer` не сохраняли идентичность, и пустой изменяемый `PickleBuffer` мемоизировал пустой объект bytearray вместо `b''`, поэтому последующие ссылки на `b''` десериализовались как пустой объект bytearray.
- [gh-148947](https://python-all.ru/3/whatsnew/changelog.html): Исправлен сбой в [`@dataclasses.dataclass`](https://python-all.ru/3/library/dataclasses.html#dataclasses.dataclass) с `slots=True`, который возникал, когда функция, найденная внутри класса, имела пустую ячейку `__class__`.
- [gh-148680](https://python-all.ru/3/whatsnew/changelog.html): Объекты `ForwardRef`, содержащие внутренние имена для представления известных объектов, теперь при вычислении как строк показывают `type_repr` известного объекта, а не внутреннее имя `__annotationlib_name_x__`.
- [gh-148801](https://python-all.ru/3/whatsnew/changelog.html): [`xml.etree.ElementTree`](https://python-all.ru/3/library/xml.etree.elementtree.html#module-xml.etree.ElementTree): Исправлен сбой в [`Element.__deepcopy__`](https://python-all.ru/3/library/copy.html#object.__deepcopy__) на глубоко вложенных деревьях.
- [gh-148735](https://python-all.ru/3/whatsnew/changelog.html): [`xml.etree.ElementTree`](https://python-all.ru/3/library/xml.etree.elementtree.html#module-xml.etree.ElementTree): Исправлено использование после освобождения в [`Element.findtext`](https://python-all.ru/3/library/xml.etree.elementtree.html#xml.etree.ElementTree.Element.findtext) при конкурентном изменении дерева элементов во время поиска.
- [gh-148740](https://python-all.ru/3/whatsnew/changelog.html): Исправлено использование интерфейса командной строки [`uuid`](https://python-all.ru/3/library/uuid.html#module-uuid) для поддержки указания пользовательского пространства имён для uuid3 и uuid5.
- [gh-148651](https://python-all.ru/3/whatsnew/changelog.html): Исправлена утечка ссылки в [`compression.zstd.ZstdDecompressor`](https://python-all.ru/3/library/compression.zstd.html#compression.zstd.ZstdDecompressor) при передаче неверного ключа опции.
- [gh-146553](https://python-all.ru/3/whatsnew/changelog.html): Исправлен бесконечный цикл в [`typing.get_type_hints()`](https://python-all.ru/3/library/typing.html#typing.get_type_hints), когда `__wrapped__` образует цикл. Исправление от Shamil Abdulaev.
- [gh-148508](https://python-all.ru/3/whatsnew/changelog.html): Устранена перемежающаяся ошибка синхронизации при запуске SSL-тестов на iOS.
- [gh-148518](https://python-all.ru/3/whatsnew/changelog.html): Если сообщение электронной почты, содержащее заголовок адреса, заканчивающийся открытой двойной кавычкой, разбиралось с политикой, отличной от `compat32`, то доступ к атрибуту `username` почтового ящика через этот объект заголовка приводил к `IndexError`. Теперь это корректно возвращает пустую строку.
- [gh-148464](https://python-all.ru/3/whatsnew/changelog.html): Добавлены отсутствующие атрибуты `__ctype_le/be__` для [`c_float_complex`](https://python-all.ru/3/library/ctypes.html#ctypes.c_float_complex) и [`c_double_complex`](https://python-all.ru/3/library/ctypes.html#ctypes.c_double_complex). Исправление от Sergey B Kirpichev.
- [gh-148370](https://python-all.ru/3/whatsnew/changelog.html): [`configparser`](https://python-all.ru/3/library/configparser.html#module-configparser): предотвращает квадратичное поведение, когда [`ParsingError`](https://python-all.ru/3/library/configparser.html#configparser.ParsingError) возникает после того, как парсеру не удалось разобрать несколько строк. Вклад Бенедикта Трана.
- [gh-148254](https://python-all.ru/3/whatsnew/changelog.html): Используйте единственное число «sec» вместо «secs» в подробном выводе [`timeit`](https://python-all.ru/3/library/timeit.html#module-timeit) для согласованности с другими единицами времени.
- [gh-148192](https://python-all.ru/3/whatsnew/changelog.html): `email.generator.Generator._make_boundary` мог не обнаружить дублирующуюся граничную строку, если linesep не был n. Теперь он корректно обнаруживает граничные строки, когда linesep равен rn.
- [gh-146313](https://python-all.ru/3/whatsnew/changelog.html): Исправлена взаимоблокировка в отслеживателе ресурсов [`multiprocessing`](https://python-all.ru/3/library/multiprocessing.html#module-multiprocessing) , при которой родительский процесс мог бесконечно зависать в [`os.waitpid()`](https://python-all.ru/3/library/os.html#os.waitpid) во время завершения интерпретатора, если дочерний процесс, созданный через [`os.fork()`](https://python-all.ru/3/library/os.html#os.fork), всё ещё удерживал открытым канал отслеживателя ресурсов.
- [gh-145831](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка `email.quoprimime.decode()`, при которой оставался лишний `\r` при `eol='\r\n'`, путём удаления всей строки *eol* вместо одного символа.
- [gh-145105](https://python-all.ru/3/whatsnew/changelog.html): Исправлен крах в читателе [`csv`](https://python-all.ru/3/library/csv.html#module-csv) при итерации с повторно входящим итератором, который вызывает [`next()`](https://python-all.ru/3/library/functions.html#next) того же читателя изнутри `__next__`.
- [gh-105936](https://python-all.ru/3/whatsnew/changelog.html): Попытка изменить не-полевые атрибуты [`dataclasses`](https://python-all.ru/3/library/dataclasses.html#module-dataclasses) , когда оба *frozen* и *slots* равны `True`, теперь вызывает [`FrozenInstanceError`](https://python-all.ru/3/library/dataclasses.html#dataclasses.FrozenInstanceError) вместо [`TypeError`](https://python-all.ru/3/library/exceptions.html#TypeError). Их подклассы, не являющиеся dataclass, теперь могут свободно изменять не-полевые атрибуты, а исходный класс без slots может быть собран сборщиком мусора.
- [gh-140287](https://python-all.ru/3/whatsnew/changelog.html): REPL [`asyncio`](https://python-all.ru/3/library/asyncio.html#module-asyncio) теперь обрабатывает исключения при выполнении [`PYTHONSTARTUP`](https://python-all.ru/3/using/cmdline.html#envvar-PYTHONSTARTUP) скриптов. Вклад Бартоша Славецкого.
- [gh-132631](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка «I/O operation on closed file» при разборе JSON Lines файла с помощью [`JSON CLI`](https://python-all.ru/3/library/json.html#module-json.tool).
- [gh-70039](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка, при которой [`smtplib.SMTP.starttls()`](https://python-all.ru/3/library/smtplib.html#smtplib.SMTP.starttls) могла завершиться неудачей, если [`smtplib.SMTP.connect()`](https://python-all.ru/3/library/smtplib.html#smtplib.SMTP.connect) вызывался явно, а не неявно.
- [gh-83281](https://python-all.ru/3/whatsnew/changelog.html): [`email`](https://python-all.ru/3/library/email.html#module-email): улучшена обработка завершающего мусора в списках адресов чтобы избежать возникновения AttributeError в определённых граничных случаях.

### Документация

- [gh-148663](https://python-all.ru/3/whatsnew/changelog.html): Документировано, что [`calendar.IllegalMonthError`](https://python-all.ru/3/library/calendar.html#calendar.IllegalMonthError) является подклассом как [`ValueError`](https://python-all.ru/3/library/exceptions.html#ValueError), так и [`IndexError`](https://python-all.ru/3/library/exceptions.html#IndexError), начиная с Python 3.12.
- [gh-146646](https://python-all.ru/3/whatsnew/changelog.html): Документировано, что [`glob.glob()`](https://python-all.ru/3/library/glob.html#glob.glob), [`glob.iglob()`](https://python-all.ru/3/library/glob.html#glob.iglob), [`pathlib.Path.glob()`](https://python-all.ru/3/library/pathlib.html#pathlib.Path.glob) и [`pathlib.Path.rglob()`](https://python-all.ru/3/library/pathlib.html#pathlib.Path.rglob) молча подавляют исключения [`OSError`](https://python-all.ru/3/library/exceptions.html#OSError), возникающие при сканировании файловой системы.

### Сборка

- [gh-149351](https://python-all.ru/3/whatsnew/changelog.html): Избегается возможное повреждение имён установки macOS framework, если DESTDIR задан во время сборки.
- [gh-146475](https://python-all.ru/3/whatsnew/changelog.html): Запрещено использовать Apple Clang для сборки JIT, поскольку он поставляется без необходимых инструментов LLVM.
- [gh-148535](https://python-all.ru/3/whatsnew/changelog.html): Флаг `gcc -fprofile-update=atomic` больше не используется на i686. Флаг был добавлен для исправления случайной внутренней ошибки GCC при PGO сборке ([gh-145801](https://python-all.ru/3/whatsnew/changelog.html)), вызванной повреждением данных профилирования (.gcda-файлов). Проблема в том, что он делает PGO сборку намного медленнее (до 47 раз) на i686. Поскольку внутренняя ошибка GCC до сих пор не наблюдалась на i686, не используйте `-fprofile-update=atomic` на i686 больше. Вклад Виктора Стиннера.
- [gh-146264](https://python-all.ru/3/whatsnew/changelog.html): Исправлены сборки статических модулей на не-WASI платформах путём связывания зависимостей HACL в виде статических библиотек, когда `MODULE_BUILDTYPE=static`, что предотвращает ошибки дублирования символов `_Py_LibHacl_*` на этапе компоновки.

### Windows

- [gh-149254](https://python-all.ru/3/whatsnew/changelog.html): Обновлена встроенная версия OpenSSL до 3.0.20.
- [gh-146458](https://python-all.ru/3/whatsnew/changelog.html): Исправлено некорректное отслеживание высоты и ширины REPL при изменении размера окна консоли в Windows.

### macOS

- [gh-149254](https://python-all.ru/3/whatsnew/changelog.html): Обновлён установщик macOS для использования OpenSSL 3.0.20.

## Python 3.14.4 финальная

*Дата выпуска: 2026-04-07*

### Безопасность

- [gh-145986](https://python-all.ru/3/whatsnew/changelog.html): [`xml.parsers.expat`](https://python-all.ru/3/library/pyexpat.html#module-xml.parsers.expat): Исправлен сбой, вызванный неограниченной рекурсией C при преобразовании глубоко вложенных моделей содержимого XML с помощью [`ElementDeclHandler()`](https://python-all.ru/3/library/pyexpat.html#xml.parsers.expat.xmlparser.ElementDeclHandler). Это решает [**CVE 2026-4224**](https://python-all.ru/3/whatsnew/changelog.html).
- [gh-145599](https://python-all.ru/3/whatsnew/changelog.html): Управляющие символы отклоняются в [`http.cookies.Morsel`](https://python-all.ru/3/library/http.cookies.html#http.cookies.Morsel) [`update()`](https://python-all.ru/3/library/http.cookies.html#http.cookies.Morsel.update) и [`js_output()`](https://python-all.ru/3/library/http.cookies.html#http.cookies.BaseCookie.js_output). Это решает [**CVE 2026-3644**](https://python-all.ru/3/whatsnew/changelog.html).
- [gh-145506](https://python-all.ru/3/whatsnew/changelog.html): Исправляет [**CVE 2026-2297**](https://python-all.ru/3/whatsnew/changelog.html), гарантируя, что `SourcelessFileLoader` использует [`io.open_code()`](https://python-all.ru/3/library/io.html#io.open_code) при открытии `.pyc` файлов.
- [gh-144370](https://python-all.ru/3/whatsnew/changelog.html): Запрещено использование управляющих символов в status в [`wsgiref.handlers`](https://python-all.ru/3/library/wsgiref.html#module-wsgiref.handlers) для предотвращения инъекций HTTP-заголовков. Вклад Бенедикта Йоханнеса.
- [gh-143930](https://python-all.ru/3/whatsnew/changelog.html): Отклоняются начальные дефисы в URL, передаваемых в [`webbrowser.open()`](https://python-all.ru/3/library/webbrowser.html#webbrowser.open).

### Ядро и встроенные модули

- [gh-148157](https://python-all.ru/3/whatsnew/changelog.html): Исправлена маловероятная ошибка, приводящая к аварийному завершению при разборе некорректных комментариев типа для параметров функции. Обнаружено с помощью OSS Fuzz в [#492782951](https://python-all.ru/3/whatsnew/changelog.html).
- [gh-148144](https://python-all.ru/3/whatsnew/changelog.html): Инициализировать `_PyInterpreterFrame.visited` при копировании фреймов интерпретатора, чтобы инкрементальный сборщик мусора не читал неинициализированный байт из копий генераторов и объектов фреймов.
- [gh-146615](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка, приводящая к аварийному завершению в [`__get__()`](https://python-all.ru/3/reference/datamodel.html#object.__get__) для дескрипторов [METH\_METHOD](https://python-all.ru/3/c-api/structures.html#c.METH_METHOD), когда в качестве второго аргумента передаётся некорректный (не являющийся типом) объект. Патч от Steven Sun.
- [gh-146308](https://python-all.ru/3/whatsnew/changelog.html): Исправлено несколько проблем обработки ошибок в модуле `_remote_debugging`, включая более безопасную проверку удалённых объектов `int`, более понятные сообщения об ошибках в цепочках задач asyncio и исправления очистки кэша, предотвращающие утечку или двойное освобождение метаданных при сбое выделения памяти. Патч от Pablo Galindo.
- [gh-146128](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка, которая могла приводить к частичному повреждению константных значений в JIT-коде для AArch64. Эта проблема носит теоретический характер и не наблюдалась в немодифицированных интерпретаторах Python.
- [gh-146250](https://python-all.ru/3/whatsnew/changelog.html): Исправлена утечка памяти в [`SyntaxError`](https://python-all.ru/3/library/exceptions.html#SyntaxError) при его повторной инициализации.
- [gh-146245](https://python-all.ru/3/whatsnew/changelog.html): Исправлены утечки ссылок в [`socket`](https://python-all.ru/3/library/socket.html#module-socket), когда аудит-хуки вызывают исключения в [`socket.getaddrinfo()`](https://python-all.ru/3/library/socket.html#socket.getaddrinfo) и `socket.sendto()`.
- [gh-146196](https://python-all.ru/3/whatsnew/changelog.html): Исправлено потенциальное неопределённое поведение в [`PyUnicodeWriter_WriteASCII()`](https://python-all.ru/3/c-api/unicode.html#c.PyUnicodeWriter_WriteASCII) путём добавления проверки на нулевую длину. Патч от Shamil Abdulaev.
- [gh-146227](https://python-all.ru/3/whatsnew/changelog.html): Исправлен неверный тип в `_Py_atomic_load_uint16` в бэкенде атомарных операций C11 (`pyatomic_std.h`), который использовал 32-битную атомарную загрузку вместо 16-битной. Обнаружено Mohammed Zuhaib.
- [gh-146056](https://python-all.ru/3/whatsnew/changelog.html): Исправлен [`repr()`](https://python-all.ru/3/library/functions.html#repr) для списков и кортежей, содержащих `NULL`.
- [gh-146092](https://python-all.ru/3/whatsnew/changelog.html): Корректная обработка сбоев выделения памяти в опкодах str и float. Патч от Victor Stinner.
- [gh-146041](https://python-all.ru/3/whatsnew/changelog.html): Исправлено узкое место масштабирования в режиме свободной многопоточности в [`sys.intern()`](https://python-all.ru/3/library/sys.html#sys.intern) и [`PyObject_SetAttr()`](https://python-all.ru/3/c-api/object.html#c.PyObject_SetAttr) путём предотвращения использования глобальной блокировки интерпретатора, когда строка уже интернирована и бессмертна.
- [gh-145990](https://python-all.ru/3/whatsnew/changelog.html): Разделы `python --help-env` теперь отсортированы по имени переменной окружения.
- [gh-145990](https://python-all.ru/3/whatsnew/changelog.html): `python --help-xoptions` теперь отсортирован по имени опции `-X`.
- [gh-145376](https://python-all.ru/3/whatsnew/changelog.html): Исправлено отслеживание GC в `structseq.__replace__()`.
- [gh-145792](https://python-all.ru/3/whatsnew/changelog.html): Исправлен выход за границы при вызове faulthandler в сборке CPython, скомпилированной без поддержки VLA.
- [gh-142183](https://python-all.ru/3/whatsnew/changelog.html): Устранён патологический случай, когда повторные вызовы на определённой глубине стека могли быть значительно медленнее.
- [gh-145779](https://python-all.ru/3/whatsnew/changelog.html): Улучшено масштабирование вызовов [`classmethod()`](https://python-all.ru/3/library/functions.html#classmethod) и [`staticmethod()`](https://python-all.ru/3/library/functions.html#staticmethod) в сборке со свободной многопоточностью за счёт предотвращения вызова дескриптора `__get__`.
- [gh-145783](https://python-all.ru/3/whatsnew/changelog.html): Исправлена маловероятная ошибка, приводящая к аварийному завершению в парсере, когда некоторые ошибки ошибочно не распространялись. Обнаружено с помощью OSS Fuzz в [#491369109](https://python-all.ru/3/whatsnew/changelog.html).
- [gh-145685](https://python-all.ru/3/whatsnew/changelog.html): Улучшено масштабирование поиска атрибутов типов в [сборке со свободной многопоточностью](https://python-all.ru/3/glossary.html#term-free-threaded-build) за счёт предотвращения конкуренции за внутреннюю блокировку типа.
- [gh-145701](https://python-all.ru/3/whatsnew/changelog.html): Исправлен [`SystemError`](https://python-all.ru/3/library/exceptions.html#SystemError), когда `__classdict__` или `__conditional_annotations__` находится в области видимости класса во встроенном генераторе списков. Обнаружено с помощью OSS Fuzz в [#491105000](https://python-all.ru/3/whatsnew/changelog.html).
- [gh-145713](https://python-all.ru/3/whatsnew/changelog.html): Сделать [`bytearray.resize()`](https://python-all.ru/3/library/stdtypes.html#bytearray.resize) потокобезопасным в сборке со свободной многопоточностью за счёт использования критической секции и вызова варианта функции изменения размера с удержанием блокировки.
- [gh-145615](https://python-all.ru/3/whatsnew/changelog.html): Исправлена утечка памяти в [сборке со свободной многопоточностью](https://python-all.ru/3/glossary.html#term-free-threaded-build), где страницы mimalloc могли становиться постоянно недоступными для возврата до выхода владеющего потока.
- [gh-145566](https://python-all.ru/3/whatsnew/changelog.html): В сборке со свободной многопоточностью пропускать паузу остановки мира при переназначении `__class__` для только что созданного объекта.
- [gh-145335](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка, приводящая к аварийному завершению в [`os.pathconf()`](https://python-all.ru/3/library/os.html#os.pathconf) при вызове с `-1` в качестве аргумента пути.
- [gh-145036](https://python-all.ru/3/whatsnew/changelog.html): В сборке со свободной многопоточностью исправлено состояние гонки при вызове `__sizeof__()` на [`list`](https://python-all.ru/3/library/stdtypes.html#list)
- [gh-145376](https://python-all.ru/3/whatsnew/changelog.html): Исправлены утечки ссылок в различных необычных сценариях ошибок.
- [gh-145234](https://python-all.ru/3/whatsnew/changelog.html): Исправлен `SystemError` в парсере, когда кодировка cookie (например, UTF-7) декодируется в символы возврата каретки (`\r`). Теперь символы новой строки нормализуются после декодирования в токенизаторе строк.

  Патч от Pablo Galindo.
- [gh-130555](https://python-all.ru/3/whatsnew/changelog.html): Исправлено использование после освобождения в [`dict.clear()`](https://python-all.ru/3/library/stdtypes.html#dict.clear), когда значения словаря встроены в объект, а деструктор вызывает реентерабельное изменение словаря.
- [gh-145187](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка утверждения компилятора, когда граница параметра типа содержит некорректное выражение в условном блоке.
- [gh-145142](https://python-all.ru/3/whatsnew/changelog.html): Исправлен сбой в сборке со свободной блокировкой, возникавший при одновременном изменении аргумента-словаря функции [`str.maketrans()`](https://python-all.ru/3/library/stdtypes.html#str.maketrans).
- [gh-144872](https://python-all.ru/3/whatsnew/changelog.html): Исправлено переполнение буфера кучи в парсере, обнаруженное OSS-Fuzz.
- [gh-144766](https://python-all.ru/3/whatsnew/changelog.html): Исправлен сбой в дочернем процессе fork при включённой поддержке perf.
- [gh-144759](https://python-all.ru/3/whatsnew/changelog.html): Исправлено неопределённое поведение в лексере, когда указатели `start` и `multi_line_start` находятся в `NULL` для `_PyLexer_remember_fstring_buffers()` и `_PyLexer_restore_fstring_buffers()`. Арифметика указателей `NULL` (`NULL - valid_pointer`) теперь защищена явными проверками `NULL`.
- [gh-144563](https://python-all.ru/3/whatsnew/changelog.html): Исправлено взаимодействие профилировщика Tachyon и [`ctypes`](https://python-all.ru/3/library/ctypes.html#module-ctypes), а также других модулей, загружающих общую библиотеку Python (если она есть) в независимую карту памяти, что вызывало путаницу в механизме загрузки бинарной информации. Исправление от Pablo Galindo.
- [gh-144601](https://python-all.ru/3/whatsnew/changelog.html): Исправлен сбой при импорте модуля, функция `PyInit` которого вызывает исключение из подинтерпретатора.
- [gh-144438](https://python-all.ru/3/whatsnew/changelog.html): Выполнено выравнивание массива состояний потоков QSBR по границе 64-байтовой кеш-линии для предотвращения ложного разделения в [сборке со свободной блокировкой](https://python-all.ru/3/glossary.html#term-free-threaded-build).
- [gh-144513](https://python-all.ru/3/whatsnew/changelog.html): Исправлена потенциальная взаимная блокировка при использовании критических секций во время пауз «остановка мира» в сборке со свободной блокировкой.
- [gh-144446](https://python-all.ru/3/whatsnew/changelog.html): Исправлены состояния гонки в сборке со свободной блокировкой при чтении атрибутов объекта фрейма во время выполнения фрейма другим потоком.
- [gh-143636](https://python-all.ru/3/whatsnew/changelog.html): Исправлен сбой при вызове [`SimpleNamespace.__replace__()`](https://python-all.ru/3/library/types.html#types.SimpleNamespace) для экземпляров, не являющихся пространствами имён. Исправление от Bénédikt Tran.
- [gh-143650](https://python-all.ru/3/whatsnew/changelog.html): Исправлено состояние гонки в [`importlib`](https://python-all.ru/3/library/importlib.html#module-importlib), при котором поток мог получить устаревшую ссылку на модуль, если импорт в другом потоке завершился неудачей.
- [gh-141732](https://python-all.ru/3/whatsnew/changelog.html): Обеспечено, что [`__repr__()`](https://python-all.ru/3/reference/datamodel.html#object.__repr__) для [`ExceptionGroup`](https://python-all.ru/3/library/exceptions.html#ExceptionGroup) и [`BaseExceptionGroup`](https://python-all.ru/3/library/exceptions.html#BaseExceptionGroup) не изменяется при последующей мутации последовательности исключений, изначально переданной в его конструктор.
- [gh-140594](https://python-all.ru/3/whatsnew/changelog.html): Исправлено чтение за пределами границ при считывании одного нулевого символа (NUL) из стандартного ввода. Исправление от Shamil Abdulaev.
- [gh-91636](https://python-all.ru/3/whatsnew/changelog.html): При выполнении сборки мусора теперь очищаются слабые ссылки на недостижимые объекты, созданные во время выполнения финализаторов. Если такие слабые ссылки не очищать, они могут указывать на недостижимые объекты.
- [gh-130327](https://python-all.ru/3/whatsnew/changelog.html): Исправлено ошибочное очищение [`__dict__`](https://python-all.ru/3/reference/datamodel.html#object.__dict__) объекта при его перезаписи во время выполнения.
- [gh-80667](https://python-all.ru/3/whatsnew/changelog.html): Литералы с использованием синтаксиса экранирования `\N{name}` теперь могут конструировать иероглифы CJK и слоги хангыль по именам без учёта регистра.

### Библиотека

- [gh-144503](https://python-all.ru/3/whatsnew/changelog.html): Исправлена регрессия, возникшая в 3.14.3 и 3.13.12, при которой метод запуска [`multiprocessing`](https://python-all.ru/3/library/multiprocessing.html#module-multiprocessing) `forkserver` приводил к [`BrokenPipeError`](https://python-all.ru/3/library/exceptions.html#BrokenPipeError), если родительский процесс имел очень большой [`sys.argv`](https://python-all.ru/3/library/sys.html#sys.argv). Теперь argv передаётся forkserver в виде отдельных аргументов командной строки, а не встраивается в команду `-c`, что позволяет обойти ограничение операционной системы на длину аргумента.
- [gh-146613](https://python-all.ru/3/whatsnew/changelog.html): [`itertools`](https://python-all.ru/3/library/itertools.html#module-itertools): Исправлен сбой в [`itertools.groupby()`](https://python-all.ru/3/library/itertools.html#itertools.groupby) при одновременном изменении итератора группера.
- [gh-146080](https://python-all.ru/3/whatsnew/changelog.html): [`ssl`](https://python-all.ru/3/library/ssl.html#module-ssl): исправлен сбой, когда колбэк SNI пытается использовать объект SSL, уже собранный сборщиком мусора. Исправление от Bénédikt Tran.
- [gh-146556](https://python-all.ru/3/whatsnew/changelog.html): Исправлено зависание [`annotationlib.get_annotations()`](https://python-all.ru/3/library/annotationlib.html#annotationlib.get_annotations) при вызове с `eval_str=True` для вызываемого объекта с циклической цепочкой `__wrapped__` (например, `f.__wrapped__ = f`). Теперь обнаружение циклов с использованием множества посещённых элементов на основе id останавливает обход и возвращается к найденным на данный момент глобалам, повторяя подход [`inspect.unwrap()`](https://python-all.ru/3/library/inspect.html#inspect.unwrap).
- [gh-146090](https://python-all.ru/3/whatsnew/changelog.html): [`sqlite3`](https://python-all.ru/3/library/sqlite3.html#module-sqlite3): исправлен сбой при ошибке [`sqlite3.Connection.create_collation()`](https://python-all.ru/3/library/sqlite3.html#sqlite3.Connection.create_collation) с кодом [SQLITE\_BUSY](https://python-all.ru/3/whatsnew/changelog.html). Исправление от Bénédikt Tran.
- [gh-146090](https://python-all.ru/3/whatsnew/changelog.html): [`sqlite3`](https://python-all.ru/3/library/sqlite3.html#module-sqlite3): корректно вызывать [`MemoryError`](https://python-all.ru/3/library/exceptions.html#MemoryError) вместо [`SystemError`](https://python-all.ru/3/library/exceptions.html#SystemError), когда не удаётся выделить память для контекстного колбэка. Исправление от Bénédikt Tran.
- [gh-145633](https://python-all.ru/3/whatsnew/changelog.html): Исправлен `struct.pack('f', float)`: используйте [`PyFloat_Pack4()`](https://python-all.ru/3/c-api/float.html#c.PyFloat_Pack4) для возбуждения [`OverflowError`](https://python-all.ru/3/library/exceptions.html#OverflowError). Исправление от Sergey B Kirpichev и Victor Stinner.
- [gh-146310](https://python-all.ru/3/whatsnew/changelog.html): Модуль [`ensurepip`](https://python-all.ru/3/library/ensurepip.html#module-ensurepip) больше не ищет пакеты wheel `pip-*.whl` в текущем каталоге.
- [gh-146083](https://python-all.ru/3/whatsnew/changelog.html): Обновлена встроенная библиотека [libexpat](https://python-all.ru/3/whatsnew/changelog.html) до версии 2.7.5.
- [gh-146076](https://python-all.ru/3/whatsnew/changelog.html): [`zoneinfo`](https://python-all.ru/3/library/zoneinfo.html#module-zoneinfo): исправлены сбои при удалении `_weak_cache` из подкласса [`zoneinfo.ZoneInfo`](https://python-all.ru/3/library/zoneinfo.html#zoneinfo.ZoneInfo).
- [gh-146054](https://python-all.ru/3/whatsnew/changelog.html): Ограничен размер кеша [`encodings.search_function()`](https://python-all.ru/3/library/codecs.html#encodings.search_function). Обнаружено OSS Fuzz в [#493449985](https://python-all.ru/3/whatsnew/changelog.html).
- [gh-146004](https://python-all.ru/3/whatsnew/changelog.html): Все параметры [`-X`](https://python-all.ru/3/using/cmdline.html#cmdoption-X) командной строки Python теперь передаются дочерним процессам, порождённым [`multiprocessing`](https://python-all.ru/3/library/multiprocessing.html#module-multiprocessing), а не только жёстко заданный набор. Ранее не передавались следующие параметры: `context_aware_warnings`, `cpu_count`, `disable-remote-debug`, `int_max_str_digits`, `lazy_imports`, `no_debug_ranges`, `pathconfig_warnings`, `perf`, `perf_jit`, `presite`, `pycache_prefix`, `thread_inherit_context` и `warn_default_encoding`.
- [gh-145883](https://python-all.ru/3/whatsnew/changelog.html): [`zoneinfo`](https://python-all.ru/3/library/zoneinfo.html#module-zoneinfo): Исправлено чтение за пределами буфера кучи из некорректных данных TZif. Обнаружено OSS Fuzz, задачи [#492245058](https://python-all.ru/3/whatsnew/changelog.html) и [#492230068](https://python-all.ru/3/whatsnew/changelog.html).
- [gh-145754](https://python-all.ru/3/whatsnew/changelog.html): Запрос сигнатуры при автоматической спецификации моков с форматом аннотации `FORWARDREF`. Это предотвращает ошибки времени выполнения, когда аннотация использует имя, не определённое во время выполнения.
- [gh-145750](https://python-all.ru/3/whatsnew/changelog.html): Предотвращение неопределённого поведения из-за переполнения знакового целого при разборе форматных строк в модуле [`struct`](https://python-all.ru/3/library/struct.html#module-struct). Обнаружено OSS Fuzz в [#488466741](https://python-all.ru/3/whatsnew/changelog.html).
- [gh-145492](https://python-all.ru/3/whatsnew/changelog.html): Исправлена бесконечная рекурсия в [`collections.defaultdict`](https://python-all.ru/3/library/collections.html#collections.defaultdict) `__repr__`, когда `defaultdict` содержит саму себя. На основе анализа от KowalskiThomas в [gh-145492](https://python-all.ru/3/whatsnew/changelog.html).
- [gh-145623](https://python-all.ru/3/whatsnew/changelog.html): Исправлено падение в [`struct`](https://python-all.ru/3/library/struct.html#module-struct) при вызове [`repr()`](https://python-all.ru/3/library/functions.html#repr) или `__sizeof__()` на неинициализированном объекте [`struct.Struct`](https://python-all.ru/3/library/struct.html#struct.Struct), созданном через `Struct.__new__()` без вызова `__init__()`.
- [gh-145616](https://python-all.ru/3/whatsnew/changelog.html): Корректное определение ABI системного конфига Android на 32-битной ARM Android на 64-битном ядре ARM
- [gh-145551](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка InvalidStateError при отмене процесса, созданного с помощью [`asyncio.create_subprocess_exec()`](https://python-all.ru/3/library/asyncio-subprocess.html#asyncio.create_subprocess_exec) или [`asyncio.create_subprocess_shell()`](https://python-all.ru/3/library/asyncio-subprocess.html#asyncio.create_subprocess_shell). Патч от Daan De Meyer.
- [gh-145446](https://python-all.ru/3/whatsnew/changelog.html): Теперь [`functools`](https://python-all.ru/3/library/functools.html#module-functools) безопаснее в сборке со свободными потоками при использовании ключевых слов в [`functools.partial()`](https://python-all.ru/3/library/functools.html#functools.partial)
- [gh-145417](https://python-all.ru/3/whatsnew/changelog.html): [`venv`](https://python-all.ru/3/library/venv.html#module-venv): Предотвращено некорректное сохранение контекста SELinux при копировании скрипта `Activate.ps1`. Скрипт наследовал контекст безопасности SELinux системного каталога шаблонов, а не каталога целевого проекта.
- [gh-145376](https://python-all.ru/3/whatsnew/changelog.html): Исправлены двойное освобождение и разыменование нулевого указателя в нестандартных сценариях ошибок в модулях [`hashlib`](https://python-all.ru/3/library/hashlib.html#module-hashlib) и [`hmac`](https://python-all.ru/3/library/hmac.html#module-hmac).
- [gh-145301](https://python-all.ru/3/whatsnew/changelog.html): [`hmac`](https://python-all.ru/3/library/hmac.html#module-hmac): исправлено падение при сбое инициализации базового расширения на C.
- [gh-145301](https://python-all.ru/3/whatsnew/changelog.html): [`hashlib`](https://python-all.ru/3/library/hashlib.html#module-hashlib): исправлено падение при сбое инициализации базового расширения на C.
- [gh-145264](https://python-all.ru/3/whatsnew/changelog.html): Base64 decoder (see [`binascii.a2b_base64()`](https://python-all.ru/3/library/binascii.html#binascii.a2b_base64), [`base64.b64decode()`](https://python-all.ru/3/library/base64.html#base64.b64decode), etc) no longer ignores excess data after the first padded quad in non-strict (default) mode. Instead, in conformance with [**RFC 4648**](https://python-all.ru/3/whatsnew/changelog.html), section 3.3, it now ignores the pad character, “=”, if it is present before the end of the encoded data.
- [gh-145158](https://python-all.ru/3/whatsnew/changelog.html): Устранено неопределённое поведение из-за переполнения знакового целого при разборе строк формата в модуле [`struct`](https://python-all.ru/3/library/struct.html#module-struct).
- [gh-144984](https://python-all.ru/3/whatsnew/changelog.html): Исправлено падение в [`xml.parsers.expat.xmlparser.ExternalEntityParserCreate()`](https://python-all.ru/3/library/pyexpat.html#xml.parsers.expat.xmlparser.ExternalEntityParserCreate) при сбое выделения памяти. В путях обработки ошибок происходило разыменование NULL `handlers` и двойное уменьшение счётчика ссылок родительского анализатора.
- [gh-88091](https://python-all.ru/3/whatsnew/changelog.html): Исправлен [`unicodedata.decomposition()`](https://python-all.ru/3/library/unicodedata.html#unicodedata.decomposition) для символов хангыля.
- [gh-144986](https://python-all.ru/3/whatsnew/changelog.html): Исправлена утечка памяти в [`atexit.register()`](https://python-all.ru/3/library/atexit.html#atexit.register). Патч от Shamil Abdulaev.
- [gh-144777](https://python-all.ru/3/whatsnew/changelog.html): Исправлены гонки данных в [`io.IncrementalNewlineDecoder`](https://python-all.ru/3/library/io.html#io.IncrementalNewlineDecoder) в [сборке со свободными потоками](https://python-all.ru/3/glossary.html#term-free-threaded-build).
- [gh-144809](https://python-all.ru/3/whatsnew/changelog.html): Сделано копирование [`collections.deque`](https://python-all.ru/3/library/collections.html#collections.deque) атомарным в [сборке со свободными потоками](https://python-all.ru/3/glossary.html#term-free-threaded-build).
- [gh-144835](https://python-all.ru/3/whatsnew/changelog.html): Добавлены недостающие пояснения к некоторым параметрам в [`glob.glob()`](https://python-all.ru/3/library/glob.html#glob.glob) и [`glob.iglob()`](https://python-all.ru/3/library/glob.html#glob.iglob).
- [gh-144833](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка использования после освобождения в [`ssl`](https://python-all.ru/3/library/ssl.html#module-ssl), когда `SSL_new()` возвращает NULL в `newPySSLSocket()`. Ошибка проявлялась через висячий указатель после того, как объект уже был освобождён.
- [gh-144782](https://python-all.ru/3/whatsnew/changelog.html): Исправлен [`argparse.ArgumentParser`](https://python-all.ru/3/library/argparse.html#argparse.ArgumentParser), чтобы он был [`pickleable`](https://python-all.ru/3/library/pickle.html#module-pickle).
- [gh-144259](https://python-all.ru/3/whatsnew/changelog.html): Исправлено некорректное отображение длинного многострочного вставленного содержимого в REPL.
- [gh-144156](https://python-all.ru/3/whatsnew/changelog.html): Fix the folding of headers by the [`email`](https://python-all.ru/3/library/email.html#module-email) library when [**RFC 2047**](https://python-all.ru/3/whatsnew/changelog.html) encoded words are used. Now whitespace is correctly preserved and also correctly added between adjacent encoded words. The latter property was broken by the fix for [gh-92081](https://python-all.ru/3/whatsnew/changelog.html), which mostly fixed previous failures to preserve whitespace.
- [gh-66305](https://python-all.ru/3/whatsnew/changelog.html): Исправлено зависание в Windows в модуле [`tempfile`](https://python-all.ru/3/library/tempfile.html#module-tempfile) при попытке создать временный файл или подкаталог в каталоге, недоступном для записи.
- [gh-140814](https://python-all.ru/3/whatsnew/changelog.html): [`multiprocessing.freeze_support()`](https://python-all.ru/3/library/multiprocessing.html#multiprocessing.freeze_support) больше не устанавливает метод запуска по умолчанию как побочный эффект, из-за чего последующий вызов [`multiprocessing.set_start_method()`](https://python-all.ru/3/library/multiprocessing.html#multiprocessing.set_start_method) вызывал [`RuntimeError`](https://python-all.ru/3/library/exceptions.html#RuntimeError).
- [gh-144475](https://python-all.ru/3/whatsnew/changelog.html): Вызов [`repr()`](https://python-all.ru/3/library/functions.html#repr) на [`functools.partial()`](https://python-all.ru/3/library/functools.html#functools.partial) теперь безопаснее, когда внутренние атрибуты частичного объекта заменяются во время генерации строкового представления.
- [gh-144538](https://python-all.ru/3/whatsnew/changelog.html): Обновлена версия pip, входящего в состав ensurepip, до версии 26.0.1
- [gh-144494](https://python-all.ru/3/whatsnew/changelog.html): Исправлена регрессия производительности в [`asyncio.all_tasks()`](https://python-all.ru/3/library/asyncio-task.html#asyncio.all_tasks) на [сборках со свободными потоками](https://python-all.ru/3/glossary.html#term-free-threaded-build). Патч от Kumar Aditya.
- [gh-144316](https://python-all.ru/3/whatsnew/changelog.html): Исправлено падение в `_remote_debugging`, из-за которого `test_external_inspection` периодически завершалось с ошибкой. Патч от Taegyun Kim.
- [gh-144363](https://python-all.ru/3/whatsnew/changelog.html): Обновлена входящая в состав [libexpat](https://python-all.ru/3/whatsnew/changelog.html) до 2.7.4
- [gh-143637](https://python-all.ru/3/whatsnew/changelog.html): Исправлено падение в socket.sendmsg(), которое могло произойти, если вспомогательные данные реентерабельно изменяются во время разбора аргументов.
- [gh-143543](https://python-all.ru/3/whatsnew/changelog.html): Исправлено падение в itertools.groupby, которое могло произойти, когда пользовательский метод [`__eq__()`](https://python-all.ru/3/reference/datamodel.html#object.__eq__) реентерабельно входит в итератор во время сравнения ключей.
- [gh-140652](https://python-all.ru/3/whatsnew/changelog.html): Исправлено падение в `_interpchannels.list_all()` после закрытия канала.
- [gh-143698](https://python-all.ru/3/whatsnew/changelog.html): Аргументы *scheduler* и *setpgroup* теперь можно явно передавать как [`None`](https://python-all.ru/3/library/constants.html#None) при вызове [`os.posix_spawn()`](https://python-all.ru/3/library/os.html#os.posix_spawn) или [`os.posix_spawnp()`](https://python-all.ru/3/library/os.html#os.posix_spawnp). Патч от Bénédikt Tran.
- [gh-143698](https://python-all.ru/3/whatsnew/changelog.html): Возвращается [`TypeError`](https://python-all.ru/3/library/exceptions.html#TypeError) вместо [`SystemError`](https://python-all.ru/3/library/exceptions.html#SystemError), если *планировщик* в [`os.posix_spawn()`](https://python-all.ru/3/library/os.html#os.posix_spawn) или [`os.posix_spawnp()`](https://python-all.ru/3/library/os.html#os.posix_spawnp) не является кортежем. Исправление от Bénédikt Tran.
- [gh-142516](https://python-all.ru/3/whatsnew/changelog.html): [`ssl`](https://python-all.ru/3/library/ssl.html#module-ssl): исправлены утечки ссылок в объектах [`ssl.SSLContext`](https://python-all.ru/3/library/ssl.html#ssl.SSLContext). Исправление от Bénédikt Tran.
- [gh-143304](https://python-all.ru/3/whatsnew/changelog.html): Исправлен [`ctypes.CDLL`](https://python-all.ru/3/library/ctypes.html#ctypes.CDLL) для корректного учёта параметра `handle` на системах POSIX.
- [gh-142781](https://python-all.ru/3/whatsnew/changelog.html): [`zoneinfo`](https://python-all.ru/3/library/zoneinfo.html#module-zoneinfo): исправлен сбой при создании объектов [`ZoneInfo`](https://python-all.ru/3/library/zoneinfo.html#zoneinfo.ZoneInfo), для которых внутренний кеш на уровне класса несогласован.
- [gh-142763](https://python-all.ru/3/whatsnew/changelog.html): Исправлена проблема гонки между созданием [`zoneinfo.ZoneInfo`](https://python-all.ru/3/library/zoneinfo.html#zoneinfo.ZoneInfo) и [`zoneinfo.ZoneInfo.clear_cache()`](https://python-all.ru/3/library/zoneinfo.html#zoneinfo.ZoneInfo.clear_cache), которая могла вызывать [`KeyError`](https://python-all.ru/3/library/exceptions.html#KeyError).
- [gh-142787](https://python-all.ru/3/whatsnew/changelog.html): Исправлен сбой утверждения в [`sqlite3`](https://python-all.ru/3/library/sqlite3.html#module-sqlite3) blob subscript при срезе по индексам, которые дают пустой срез.
- [gh-142352](https://python-all.ru/3/whatsnew/changelog.html): Исправлен [`asyncio.StreamWriter.start_tls()`](https://python-all.ru/3/library/asyncio-stream.html#asyncio.StreamWriter.start_tls) для передачи буферизованных данных из [`StreamReader`](https://python-all.ru/3/library/asyncio-stream.html#asyncio.StreamReader) на уровень SSL, что предотвращает потерю данных при обновлении соединения до TLS в середине потока (например, при реализации поддержки протокола PROXY).
- [gh-141707](https://python-all.ru/3/whatsnew/changelog.html): Тип [`tarfile.TarInfo`](https://python-all.ru/3/library/tarfile.html#tarfile.TarInfo) не меняется с `AREGTYPE` на `DIRTYPE` при разборе длинных имён GNU или заголовков ссылок.
- [gh-139933](https://python-all.ru/3/whatsnew/changelog.html): Улучшены подсказки [`AttributeError`](https://python-all.ru/3/library/exceptions.html#AttributeError) для классов с пользовательским методом [`__dir__()`](https://python-all.ru/3/reference/datamodel.html#object.__dir__), возвращающим список неупорядочиваемых значений. Исправление от Bénédikt Tran.
- [gh-137335](https://python-all.ru/3/whatsnew/changelog.html): Устранена любая возможность конфликта имён для именованных каналов в [`multiprocessing`](https://python-all.ru/3/library/multiprocessing.html#module-multiprocessing) и [`asyncio`](https://python-all.ru/3/library/asyncio.html#module-asyncio) на Windows, какой бы маловероятной она ни была.
- [gh-80667](https://python-all.ru/3/whatsnew/changelog.html): Поддержка поиска тангутских идеограмм в [`unicodedata`](https://python-all.ru/3/library/unicodedata.html#module-unicodedata).
- [bpo-40243](https://python-all.ru/3/whatsnew/changelog.html): Исправлен `unicodedata.ucd_3_2_0.numeric()` для недесятичных значений.

### Документация

- [gh-126676](https://python-all.ru/3/whatsnew/changelog.html): Расширена документация [`argparse`](https://python-all.ru/3/library/argparse.html#module-argparse) для `type=bool` с демонстрацией неожиданного поведения и ссылками на распространённые альтернативы.
- [gh-145649](https://python-all.ru/3/whatsnew/changelog.html): Исправлены переносы и форматирование описаний опций `-X` в man-странице *[python(1)](https://python-all.ru/3/whatsnew/changelog.html)* с использованием корректной разметки roff.
- [gh-145450](https://python-all.ru/3/whatsnew/changelog.html): Документированы отсутствующие публичные методы-getter [`wave.Wave_write`](https://python-all.ru/3/library/wave.html#wave.Wave_write).
- [gh-136246](https://python-all.ru/3/whatsnew/changelog.html): На левой боковой панели документации появилась новая ссылка «Улучшить эту страницу», позволяющая создавать вопросы на GitHub, сообщения на форумах или пул-реквесты.

### Тесты

- [gh-144418](https://python-all.ru/3/whatsnew/changelog.html): Оперативная память эмулятора Android testbed увеличена с 2 ГБ do 4 ГБ.
- [gh-146202](https://python-all.ru/3/whatsnew/changelog.html): Исправлена проблема гонки в regrtest: теперь гарантируется, что временный каталог создаётся в рабочем процессе. Ранее temp\_cwd() могла завершаться ошибкой на Windows, если каталог «build» не был создан. Исправление от Victor Stinner.
- [gh-144739](https://python-all.ru/3/whatsnew/changelog.html): Если Python скомпилирован с системным expat старше 2.7.2, но тесты выполняются с более новым expat, то `test.test_pyexpat.MemoryProtectionTest` всё равно пропускается.

### Сборка

- [gh-146541](https://python-all.ru/3/whatsnew/changelog.html): Android testbed теперь можно собрать для 32-битных ARM и x86 целей.
- [gh-146498](https://python-all.ru/3/whatsnew/changelog.html): Сценарий сборки iOS XCframework теперь гарантирует, что libpython не включается в содержимое установленного приложения, и стал более надёжным в определении dвоичного содержимого стандартной библиотеки, требующего обработки.
- [gh-146450](https://python-all.ru/3/whatsnew/changelog.html): Сценарий сборки Android изменён для улучшения совместимости с сценариями сборки других платформ.
- [gh-146446](https://python-all.ru/3/whatsnew/changelog.html): Цель clean для сценария сборки Apple/iOS XCframework теперь более избирательна при нацеливании на одну архитектуру.
- [gh-145801](https://python-all.ru/3/whatsnew/changelog.html): При оптимизации сборки Python с помощью GCC с использованием PGO используется опция `-fprofile-update=atomic` для атомарных операций при обновлении информации профилирования. Эта опция снижает риск повреждения файлов данных gcov (.gcda), что может вызывать случайные сбои GCC. Исправление от Victor Stinner.

### Windows

- [gh-145307](https://python-all.ru/3/whatsnew/changelog.html): Загрузка модуля `psapi.dll` откладывается до его использования [`ctypes.util.dllist()`](https://python-all.ru/3/library/ctypes.html#ctypes.util.dllist).
- [gh-144551](https://python-all.ru/3/whatsnew/changelog.html): Обновлена встроенная версия OpenSSL до 3.0.19.
- [gh-140131](https://python-all.ru/3/whatsnew/changelog.html): Исправлено положение курсора REPL на Windows, когда строка подсказки завершения модуля достигает ширины консоли.

### macOS

- [gh-144551](https://python-all.ru/3/whatsnew/changelog.html): Обновлён установщик macOS для использования OpenSSL 3.0.19.
- [gh-137586](https://python-all.ru/3/whatsnew/changelog.html): Вызов **osascript** с абсолютным путём в [`webbrowser`](https://python-all.ru/3/library/webbrowser.html#module-webbrowser) и `turtledemo`.

### C API

- [gh-146056](https://python-all.ru/3/whatsnew/changelog.html): [`PyUnicodeWriter_WriteRepr()`](https://python-all.ru/3/c-api/unicode.html#c.PyUnicodeWriter_WriteRepr) теперь поддерживает аргумент `NULL` .
- [gh-145010](https://python-all.ru/3/whatsnew/changelog.html): Для встраиваемого ассемблера в `object.h` теперь используются альтернативы диалекта GCC, чтобы заголовочные файлы Python корректно компилировались с `-masm=intel`.
- [gh-144981](https://python-all.ru/3/whatsnew/changelog.html): Сделаны [`PyUnstable_Code_SetExtra()`](https://python-all.ru/3/c-api/code.html#c.PyUnstable_Code_SetExtra), [`PyUnstable_Code_GetExtra()`](https://python-all.ru/3/c-api/code.html#c.PyUnstable_Code_GetExtra) и [`PyUnstable_Eval_RequestCodeExtraIndex()`](https://python-all.ru/3/c-api/code.html#c.PyUnstable_Eval_RequestCodeExtraIndex) потокобезопасными в сборке [free threaded](https://python-all.ru/3/glossary.html#term-free-threading).

## Python 3.14.3 final

*Дата выпуска: 2026-02-03*

### Windows

- [gh-128067](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка в PyREPL на Windows, при которой вывод без завершающего перевода строки перезаписывался следующим приглашением.

### Tools/Demos

- [gh-142095](https://python-all.ru/3/whatsnew/changelog.html): Команда gdb ‘py-bt’ теперь использует фрейм из локального состояния потока, когда это возможно. Исправление от Sam Gross и Victor Stinner.

### Tests

- [gh-144415](https://python-all.ru/3/whatsnew/changelog.html): Тестовая среда Android теперь различает сообщения stdout/stderr, вызванные переводом строки, и те, что вызваны явным вызовом `flush`. Это исправляет журналирование индикаторов прогресса и подобного содержимого.
- [gh-143460](https://python-all.ru/3/whatsnew/changelog.html): Пропускаются тесты, основанные на бесконечной рекурсии, если размер стека неограничен.
- [gh-65784](https://python-all.ru/3/whatsnew/changelog.html): Добавлена поддержка параметризованного ресурса `wantobjects` в regrtests, что позволяет запускать тесты Tkinter с указанным значением `tkinter.wantobjects`, например `-u wantobjects=0`.
- [gh-143553](https://python-all.ru/3/whatsnew/changelog.html): Добавлена поддержка параметризованных ресурсов, таких как `-u xpickle=2.7`.
- [gh-142836](https://python-all.ru/3/whatsnew/changelog.html): Учтена Solaris в `test_pdb.test_script_target_anonymous_pipe`.
- [bpo-31391](https://python-all.ru/3/whatsnew/changelog.html): Перенесён тест xpickle из Python 2 в Python 3, и ресурс возвращён в командную строку теста.

### Security

- [gh-144125](https://python-all.ru/3/whatsnew/changelog.html): [`BytesGenerator`](https://python-all.ru/3/library/email.generator.html#email.generator.BytesGenerator) теперь отказывается сериализовать (записывать) заголовки, которые небезопасно свёрнуты или разделены; см. [`verify_generated_headers`](https://python-all.ru/3/library/email.policy.html#email.policy.Policy.verify_generated_headers). (Вклад Bas Bloemsaat и Petr Viktorin в [gh-121650](https://python-all.ru/3/whatsnew/changelog.html)).
- [gh-143935](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка в свёртке комментариев при упрощении email-сообщения с использованием современной политики email. Комментарии, состоящие из очень длинной последовательности не сворачиваемых символов, могли вызвать принудительный перенос строки, который пропускал требуемый начальный пробел в строке продолжения, из-за чего остаток комментария интерпретировался как новое поле заголовка. Это позволяло внедрение заголовков при тщательно подготовленных входных данных.
- [gh-143925](https://python-all.ru/3/whatsnew/changelog.html): Отклонять управляющие символы в типах медиа `data:` URL.
- [gh-143919](https://python-all.ru/3/whatsnew/changelog.html): Отклонять управляющие символы в полях и значениях [`http.cookies.Morsel`](https://python-all.ru/3/library/http.cookies.html#http.cookies.Morsel) .
- [gh-143916](https://python-all.ru/3/whatsnew/changelog.html): Отклонять управляющие символы C0 в полях, значениях и параметрах wsgiref.headers.Headers .

### Library

- [gh-144380](https://python-all.ru/3/whatsnew/changelog.html): Улучшена производительность итерации по строкам [`io.BufferedReader`](https://python-all.ru/3/library/io.html#io.BufferedReader) примерно на 49%.
- [gh-144169](https://python-all.ru/3/whatsnew/changelog.html): Исправлены три сбоя при передаче нестроковых именованных аргументов объектам в модуле [`ast`](https://python-all.ru/3/library/ast.html#module-ast).
- [gh-144100](https://python-all.ru/3/whatsnew/changelog.html): Исправлен сбой в ctypes при использовании устаревшего типа `POINTER(str)` в `argtypes`. Вместо аварийного завершения ctypes теперь вызывает соответствующее исключение Python, если целевой тип указателя не разрешён.
- [gh-144050](https://python-all.ru/3/whatsnew/changelog.html): Исправлена [`stat.filemode()`](https://python-all.ru/3/library/stat.html#stat.filemode) в чисто-Python реализации, чтобы избежать ошибочной классификации недопустимых значений режима как блочных устройств.
- [gh-144023](https://python-all.ru/3/whatsnew/changelog.html): Исправлена проверка файлового дескриптора 0 в posix-функциях при использовании с параметром follow\_symlinks.
- [gh-143999](https://python-all.ru/3/whatsnew/changelog.html): Исправлена проблема, при которой [`inspect.getgeneratorstate()`](https://python-all.ru/3/library/inspect.html#inspect.getgeneratorstate) и [`inspect.getcoroutinestate()`](https://python-all.ru/3/library/inspect.html#inspect.getcoroutinestate) могли завершаться ошибкой для генераторов, обёрнутых в [`types.coroutine()`](https://python-all.ru/3/library/types.html#types.coroutine) в приостановленном состоянии.
- [gh-143831](https://python-all.ru/3/whatsnew/changelog.html): объекты [`annotationlib.ForwardRef`](https://python-all.ru/3/library/annotationlib.html#annotationlib.ForwardRef) теперь хешируются, если созданы из областей аннотаций с замыканиями. Ранее хеширование таких объектов вызывало исключение. Исправление от Bartosz Sławecki.
- [gh-143874](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка в [`pdb`](https://python-all.ru/3/library/pdb.html#module-pdb), из-за которой результаты выражений не отправлялись обратно удалённому клиенту.
- [gh-143880](https://python-all.ru/3/whatsnew/changelog.html): Исправлено состояние гонки в [`functools.partial()`](https://python-all.ru/3/library/functools.html#functools.partial) в сборке [free threading](https://python-all.ru/3/glossary.html#term-free-threading).
- [gh-143706](https://python-all.ru/3/whatsnew/changelog.html): Исправлен forkserver [`multiprocessing`](https://python-all.ru/3/library/multiprocessing.html#module-multiprocessing) так, чтобы [`sys.argv`](https://python-all.ru/3/library/sys.html#sys.argv) корректно устанавливался перед загрузкой `__main__`. Ранее `sys.argv` был пуст при импорте главного модуля в дочерних процессах forkserver. Это исправляет регрессию, внесённую в версиях 3.13.8 и 3.14.1. Причину установил Aaron Wieczorek, тест предоставил Thomas Watson, спасибо!
- [gh-143638](https://python-all.ru/3/whatsnew/changelog.html): Запрещены повторные вызовы методов [`pickle.Pickler`](https://python-all.ru/3/library/pickle.html#pickle.Pickler) и [`pickle.Unpickler`](https://python-all.ru/3/library/pickle.html#pickle.Unpickler) для реализации на C. Ранее это могло привести к аварийному завершению или повреждению данных, теперь одновременные вызовы методов одного и того же объекта вызывают [`RuntimeError`](https://python-all.ru/3/library/exceptions.html#RuntimeError).
- [gh-78724](https://python-all.ru/3/whatsnew/changelog.html): Вызывать [`RuntimeError`](https://python-all.ru/3/library/exceptions.html#RuntimeError), когда пользователь пытается вызвать методы на наполовину инициализированных объектах [`Struct`](https://python-all.ru/3/library/struct.html#struct.Struct), например, созданных с помощью `Struct.__new__(Struct)`. Исправление от Sergey B Kirpichev.
- [gh-143196](https://python-all.ru/3/whatsnew/changelog.html): Исправлен сбой, когда внутренний объект кодировщика, возвращаемый недокументированной функцией `json.encoder.c_make_encoder()`, вызывался с ненулевым вторым аргументом (*\_current\_indent\_level*).
- [gh-143191](https://python-all.ru/3/whatsnew/changelog.html): [`_thread.stack_size()`](https://python-all.ru/3/library/_thread.html#thread.stack_size) теперь вызывает [`ValueError`](https://python-all.ru/3/library/exceptions.html#ValueError), если размер стека слишком мал. Исправление от Victor Stinner.
- [gh-143602](https://python-all.ru/3/whatsnew/changelog.html): Исправлена проблема несогласованности в [`write()`](https://python-all.ru/3/library/io.html#io.RawIOBase.write), которая приводила к неожиданной перезаписи буфера за счёт дедупликации экспортов буфера.
- [gh-143547](https://python-all.ru/3/whatsnew/changelog.html): Исправлен [`sys.unraisablehook()`](https://python-all.ru/3/library/sys.html#sys.unraisablehook), когда хук вызывает исключение и изменяет `sys.unraisablehook()`: удерживать сильную ссылку на старый хук. Исправление от Victor Stinner.
- [gh-143517](https://python-all.ru/3/whatsnew/changelog.html): [`annotationlib.get_annotations()`](https://python-all.ru/3/library/annotationlib.html#annotationlib.get_annotations) больше не вызывает [`SyntaxError`](https://python-all.ru/3/library/exceptions.html#SyntaxError) при вычислении строковой аннотации со звёздочкой, начинающейся с одного или более пробельных символов, за которыми следует `*`. Исправление от Bartosz Sławecki.
- [gh-143378](https://python-all.ru/3/whatsnew/changelog.html): Исправлены сбои из-за использования после освобождения, когда объект [`BytesIO`](https://python-all.ru/3/library/io.html#io.BytesIO) одновременно изменяется во время [`write()`](https://python-all.ru/3/library/io.html#io.RawIOBase.write) или [`writelines()`](https://python-all.ru/3/library/io.html#io.IOBase.writelines).
- [gh-143346](https://python-all.ru/3/whatsnew/changelog.html): Исправлено некорректное сворачивание данных Base64 в `plistlib._PlistWriter`, когда отступ содержит смесь табуляции и пробелов.
- [gh-143310](https://python-all.ru/3/whatsnew/changelog.html): [`tkinter`](https://python-all.ru/3/library/tkinter.html#module-tkinter): исправлен сбой, когда Python [`list`](https://python-all.ru/3/library/stdtypes.html#list) изменяется во время преобразования в объект Tcl (например, при установке переменной Tcl). Исправление от Bénédikt Tran.
- [gh-143309](https://python-all.ru/3/whatsnew/changelog.html): Исправлен сбой в [`os.execve()`](https://python-all.ru/3/library/os.html#os.execve) на платформах, отличных от Windows, при передаче пользовательского отображения окружения, которое затем изменяется во время разбора. Исправление от Bénédikt Tran.
- [gh-143308](https://python-all.ru/3/whatsnew/changelog.html): [`pickle`](https://python-all.ru/3/library/pickle.html#module-pickle): исправлены сбои из-за использования после освобождения, когда [`PickleBuffer`](https://python-all.ru/3/library/pickle.html#pickle.PickleBuffer) одновременно изменяется пользовательским колбэком буфера во время сериализации. Исправление от Bénédikt Tran и Aaron Wieczorek.
- [gh-143237](https://python-all.ru/3/whatsnew/changelog.html): Исправлена поддержка именованных каналов во вращающихся обработчиках [`logging`](https://python-all.ru/3/library/logging.html#module-logging).
- [gh-143249](https://python-all.ru/3/whatsnew/changelog.html): Исправлены возможные утечки буфера в асинхронном вводе-выводе Windows при обработке ошибок.
- [gh-143241](https://python-all.ru/3/whatsnew/changelog.html): [`zoneinfo`](https://python-all.ru/3/library/zoneinfo.html#module-zoneinfo): исправлен бесконечный цикл в [`ZoneInfo.from_file`](https://python-all.ru/3/library/zoneinfo.html#zoneinfo.ZoneInfo.from_file) при разборе повреждённого файла TZif. Исправление от Fatih Celik.
- [gh-142830](https://python-all.ru/3/whatsnew/changelog.html): [`sqlite3`](https://python-all.ru/3/library/sqlite3.html#module-sqlite3): исправлены сбои из-за использования после освобождения, когда колбэки соединения изменяются во время выполнения колбэка. Исправление от Bénédikt Tran.
- [gh-143200](https://python-all.ru/3/whatsnew/changelog.html): [`xml.etree.ElementTree`](https://python-all.ru/3/library/xml.etree.elementtree.html#module-xml.etree.ElementTree): исправлены сбои из-за использования после освобождения в методах [`__getitem__()`](https://python-all.ru/3/reference/datamodel.html#object.__getitem__) и [`__setitem__()`](https://python-all.ru/3/reference/datamodel.html#object.__setitem__) класса [`Element`](https://python-all.ru/3/library/xml.etree.elementtree.html#xml.etree.ElementTree.Element), когда элемент одновременно изменяется. Исправление от Bénédikt Tran.
- [gh-142195](https://python-all.ru/3/whatsnew/changelog.html): Обновлена логика вычисления таймаута в [`subprocess`](https://python-all.ru/3/library/subprocess.html#module-subprocess) для совместимости с детерминированными средами, такими как Shadow, где время движется точно по запросу.
- [gh-142164](https://python-all.ru/3/whatsnew/changelog.html): Исправлено сообщение об ошибке переполнения битового поля в ctypes, чтобы оно сообщало корректное смещение и размер.
- [gh-143145](https://python-all.ru/3/whatsnew/changelog.html): Исправлена возможная утечка ссылок в ctypes при построении результатов с несколькими выходными параметрами в случае ошибки.
- [gh-122431](https://python-all.ru/3/whatsnew/changelog.html): Исправлено сообщение об ошибке в [`readline.append_history_file()`](https://python-all.ru/3/library/readline.html#readline.append_history_file), чтобы в нём говорилось, что `nelements` должен быть неотрицательным, а не положительным.
- [gh-143004](https://python-all.ru/3/whatsnew/changelog.html): Исправлен потенциальный use-after-free в [`collections.Counter.update()`](https://python-all.ru/3/library/collections.html#collections.Counter.update), когда пользовательский код изменяет Counter во время обновления.
- [gh-143046](https://python-all.ru/3/whatsnew/changelog.html): REPL [`asyncio`](https://python-all.ru/3/library/asyncio.html#module-asyncio) больше не выводит сообщения об авторских правах и версии в тихом режиме ([`-q`](https://python-all.ru/3/using/cmdline.html#cmdoption-q)). Исправление от Bartosz Sławecki.
- [gh-140648](https://python-all.ru/3/whatsnew/changelog.html): REPL [`asyncio`](https://python-all.ru/3/library/asyncio.html#module-asyncio) теперь учитывает флаг [`-I`](https://python-all.ru/3/using/cmdline.html#cmdoption-I) (изолированный режим). Ранее он загружал и выполнял [`PYTHONSTARTUP`](https://python-all.ru/3/using/cmdline.html#envvar-PYTHONSTARTUP), даже если флаг был установлен. Предоставлено Bartosz Sławecki.
- [gh-142991](https://python-all.ru/3/whatsnew/changelog.html): Исправлены операции с сокетами, такие как recvfrom() и sendto(), для сокета divert(4) FreeBSD.
- [gh-143010](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка в [`mailbox`](https://python-all.ru/3/library/mailbox.html#module-mailbox), из-за которой точное время внешнего события могло привести к тому, что библиотека открывала существующий файл вместо файла, который ожидалось создать.
- [gh-142881](https://python-all.ru/3/whatsnew/changelog.html): Исправлены одновременные и повторные вызовы [`atexit.unregister()`](https://python-all.ru/3/library/atexit.html#atexit.unregister).
- [gh-112127](https://python-all.ru/3/whatsnew/changelog.html): Исправлен возможный use-after-free в [`atexit.unregister()`](https://python-all.ru/3/library/atexit.html#atexit.unregister), когда колбэк отменяется во время сравнения.
- [gh-142783](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка use-after-free в zoneinfo с дескриптором \_weak\_cache. Дескриптор как \_weak\_cache мог вызывать аварийные завершения при создании объекта. Исправление обеспечивает правильный подсчёт ссылок для объектов, предоставленных дескриптором.
- [gh-142754](https://python-all.ru/3/whatsnew/changelog.html): Добавлен атрибут *ownerDocument* для [`xml.dom.minidom`](https://python-all.ru/3/library/xml.dom.minidom.html#module-xml.dom.minidom) элементов и атрибутов, созданных путём прямого инстанцирования класса `Element` или `Attr`. Обратите внимание, что такой способ создания узлов не поддерживается; вместо него следует использовать функции-создатели, такие как [`xml.dom.Document.documentElement()`](https://python-all.ru/3/library/xml.dom.html#xml.dom.Document.documentElement).
- [gh-142784](https://python-all.ru/3/whatsnew/changelog.html): [`asyncio`](https://python-all.ru/3/library/asyncio.html#module-asyncio) REPL теперь корректно закрывает цикл при завершении интерактивного сеанса. Ранее это могло вызывать неожиданные предупреждения. Автор: Bartosz Sławecki.
- [gh-142555](https://python-all.ru/3/whatsnew/changelog.html): [`array`](https://python-all.ru/3/library/array.html#module-array): исправлен сбой в `a[i] = v` при преобразовании *i* в индекс через [`i.__index__`](https://python-all.ru/3/reference/datamodel.html#object.__index__) или [`i.__float__`](https://python-all.ru/3/reference/datamodel.html#object.__float__), изменяющий массив.
- [gh-142594](https://python-all.ru/3/whatsnew/changelog.html): Исправлен сбой в `TextIOWrapper.close()`, когда свойство `closed` базового буфера вызывает [`detach()`](https://python-all.ru/3/library/io.html#io.TextIOBase.detach).
- [gh-142451](https://python-all.ru/3/whatsnew/changelog.html): [`hmac`](https://python-all.ru/3/library/hmac.html#module-hmac): Обеспечено корректное копирование атрибута [`HMAC.block_size`](https://python-all.ru/3/library/hmac.html#hmac.HMAC.block_size) функцией [`HMAC.copy`](https://python-all.ru/3/library/hmac.html#hmac.HMAC.copy). Патч от Bénédikt Tran.
- [gh-142495](https://python-all.ru/3/whatsnew/changelog.html): [`collections.defaultdict`](https://python-all.ru/3/library/collections.html#collections.defaultdict) теперь отдаёт приоритет [`__setitem__()`](https://python-all.ru/3/reference/datamodel.html#object.__setitem__) при вставке значений по умолчанию из `default_factory`. Это предотвращает состояния гонки, при которых значение по умолчанию перезаписывало бы значение, установленное до возврата `default_factory`.
- [gh-142651](https://python-all.ru/3/whatsnew/changelog.html): [`unittest.mock`](https://python-all.ru/3/library/unittest.mock.html#module-unittest.mock): исправлена проблема потокобезопасности, из-за которой [`Mock.call_count`](https://python-all.ru/3/library/unittest.mock.html#unittest.mock.Mock.call_count) мог возвращать неточные значения при одновременном вызове мока из нескольких потоков.
- [gh-142595](https://python-all.ru/3/whatsnew/changelog.html): Добавлена проверка типа при инициализации модуля [`decimal`](https://python-all.ru/3/library/decimal.html#module-decimal) для предотвращения сбоя в случае повреждённой стандартной библиотеки. Патч от Sergey B Kirpichev.
- [gh-142556](https://python-all.ru/3/whatsnew/changelog.html): Исправлен сбой при повторной регистрации задачи во время финализации в [`asyncio`](https://python-all.ru/3/library/asyncio.html#module-asyncio). Патч от Kumar Aditya.
- [gh-123241](https://python-all.ru/3/whatsnew/changelog.html): Избегание операций подсчёта ссылок при сборке мусора объектов [`ctypes`](https://python-all.ru/3/library/ctypes.html#module-ctypes).
- [gh-142517](https://python-all.ru/3/whatsnew/changelog.html): Политики `compat32`, отличные от [`email`](https://python-all.ru/3/library/email.html#module-email), теперь корректно обрабатывают переформатирование закодированных слов, содержащих байты, которые не могут быть декодированы в указанной кодировке. Ранее это приводило к исключению кодирования при форматировании.
- [gh-112527](https://python-all.ru/3/whatsnew/changelog.html): Текст справки для обязательных опций в [`argparse`](https://python-all.ru/3/library/argparse.html#module-argparse) больше не дополняется строкой « (default: None)».
- [gh-142346](https://python-all.ru/3/whatsnew/changelog.html): Исправлено форматирование использования для взаимоисключающих групп в [`argparse`](https://python-all.ru/3/library/argparse.html#module-argparse), когда им предшествуют позиционные аргументы или они следуют за другими опциональными аргументами или перемешаны с ними.
- [gh-142315](https://python-all.ru/3/whatsnew/changelog.html): Pdb теперь может выполнять скрипты из анонимных каналов, используемых в подстановке процессов. Патч от Bartosz Sławecki.
- [gh-142332](https://python-all.ru/3/whatsnew/changelog.html): Исправлено форматирование использования для позиционных аргументов во взаимоисключающих группах в [`argparse`](https://python-all.ru/3/library/argparse.html#module-argparse). в `argparse`.
- [gh-142282](https://python-all.ru/3/whatsnew/changelog.html): Исправлено [`winreg.QueryValueEx()`](https://python-all.ru/3/library/winreg.html#winreg.QueryValueEx), чтобы случайно не читать мусорный буфер при состоянии гонки.
- [gh-75949](https://python-all.ru/3/whatsnew/changelog.html): Исправлено [`argparse`](https://python-all.ru/3/library/argparse.html#module-argparse), чтобы сохранять разделители `|` во взаимоисключающих группах, когда строка использования переносится из-за длины.
- [gh-142267](https://python-all.ru/3/whatsnew/changelog.html): Улучшена производительность [`argparse`](https://python-all.ru/3/library/argparse.html#module-argparse) за счёт кеширования форматтера, используемого для проверки аргументов.
- [gh-68552](https://python-all.ru/3/whatsnew/changelog.html): Дефекты `MisplacedEnvelopeHeaderDefect` и `Missing header name` теперь корректно передаются методу `handle_defect` объекта `policy` в [`FeedParser`](https://python-all.ru/3/library/email.parser.html#email.parser.FeedParser).
- [gh-142006](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка в алгоритме сворачивания [`email.policy.default`](https://python-all.ru/3/library/email.policy.html#email.policy.default), которая приводила к удвоению символа новой строки, когда строка, заканчивающаяся ровно на max\_line\_length, сопровождалась токеном, который нельзя развернуть.
- [gh-105836](https://python-all.ru/3/whatsnew/changelog.html): Исправлено [`asyncio.run_coroutine_threadsafe()`](https://python-all.ru/3/library/asyncio-task.html#asyncio.run_coroutine_threadsafe), оставляющее базовую отменённую задачу asyncio работающей.
- [gh-139971](https://python-all.ru/3/whatsnew/changelog.html): [`pydoc`](https://python-all.ru/3/library/pydoc.html#module-pydoc): Обеспечена корректность ссылки на онлайн-документацию модуля [stdlib](https://python-all.ru/3/glossary.html#term-stdlib).
- [gh-139262](https://python-all.ru/3/whatsnew/changelog.html): Некоторые нажатия клавиш могут пропадать в новом `PyREPL` на Windows, особенно при использовании вместе с клавишей ALT. Исправление от Chris Eibl.
- [gh-138897](https://python-all.ru/3/whatsnew/changelog.html): Улучшено отображение [`license`](https://python-all.ru/3/library/constants.html#license)/[`copyright`](https://python-all.ru/3/library/constants.html#copyright)/[`credits`](https://python-all.ru/3/library/constants.html#credits) в [REPL](https://python-all.ru/3/glossary.html#term-REPL): теперь используется постраничный вывод.
- [gh-79986](https://python-all.ru/3/whatsnew/changelog.html): Добавлен разбор заголовков `References` и `In-Reply-To` в библиотеку [`email`](https://python-all.ru/3/library/email.html#module-email), который обрабатывает содержимое заголовка как списки токенов идентификаторов сообщений. Это предотвращает их некорректное сворачивание.
- [gh-136282](https://python-all.ru/3/whatsnew/changelog.html): Добавлена поддержка [`UNNAMED_SECTION`](https://python-all.ru/3/library/configparser.html#configparser.UNNAMED_SECTION) при создании раздела через доступ по протоколу отображения.
- [gh-109263](https://python-all.ru/3/whatsnew/changelog.html): Запуск процесса из контекста spawn в [`multiprocessing`](https://python-all.ru/3/library/multiprocessing.html#module-multiprocessing) больше не устанавливает метод запуска глобально.
- [gh-133253](https://python-all.ru/3/whatsnew/changelog.html): Исправлены проблемы потокобезопасности в [`linecache`](https://python-all.ru/3/library/linecache.html#module-linecache).
- [gh-132715](https://python-all.ru/3/whatsnew/changelog.html): Пропуск записи объектов во время маршалинга после возникновения ошибки.

### IDLE

- [gh-143774](https://python-all.ru/3/whatsnew/changelog.html): Улучшено объяснение работы Format / Format Paragraph.

### Документация

- [gh-140806](https://python-all.ru/3/whatsnew/changelog.html): Добавить документацию для [`enum.bin()`](https://python-all.ru/3/library/enum.html#enum.bin).

### Ядро и встроенные объекты

- [gh-144307](https://python-all.ru/3/whatsnew/changelog.html): Предотвращение утечки ссылок при завершении модуля во время финализации интерпретатора.
- [gh-144194](https://python-all.ru/3/whatsnew/changelog.html): Исправлена обработка ошибок в инициализации perf jitdump при сбое выделения памяти.
- [gh-144012](https://python-all.ru/3/whatsnew/changelog.html): Проверка, является ли результат `NULL` в опкоде `BINARY_OP_EXTENT`.
- [gh-141805](https://python-all.ru/3/whatsnew/changelog.html): Исправлен сбой в [`set`](https://python-all.ru/3/library/stdtypes.html#set) при одновременном добавлении во множество объектов с одинаковым хешем после удаления элемента с тем же хешем, когда множество всё ещё содержит элементы с таким же хешем.
- [gh-143670](https://python-all.ru/3/whatsnew/changelog.html): Исправлен сбой в функции `ga_repr_items_list`.
- [gh-143377](https://python-all.ru/3/whatsnew/changelog.html): Исправлен сбой в `_interpreters.capture_exception()`, когда исключение отформатировано некорректно. Патч от Bénédikt Tran.
- [gh-136924](https://python-all.ru/3/whatsnew/changelog.html): Интерактивный режим справки в [REPL](https://python-all.ru/3/glossary.html#term-REPL) больше некорректно подсвечивает ввод текста как код Python. Вклад от Olga Matoula.
- [gh-143189](https://python-all.ru/3/whatsnew/changelog.html): Исправлен сбой при вставке ключа, не являющегося [`str`](https://python-all.ru/3/library/stdtypes.html#str), в словарь с разделённой таблицей, когда ключ совпадает с существующим ключом в разделённой таблице, но не имеет соответствующего значения в словаре.
- [gh-143228](https://python-all.ru/3/whatsnew/changelog.html): Исправлено использование после освобождения в perf trampoline при переключении профилирования во время работы потоков или при завершении интерпретатора с активными потоками-демонами. Исправление использует подсчёт ссылок, чтобы гарантировать, что трамплины не будут освобождены, пока на них могут ссылаться какие-либо объекты кода. Патч от Pablo Galindo.
- [gh-142664](https://python-all.ru/3/whatsnew/changelog.html): Исправлен сбой из-за использования после освобождения в [`memoryview.__hash__`](https://python-all.ru/3/reference/datamodel.html#object.__hash__), когда метод `__hash__` ссылочного объекта изменяет этот объект или представление. Патч от Bénédikt Tran.
- [gh-142557](https://python-all.ru/3/whatsnew/changelog.html): Исправлен сбой из-за использования после освобождения в [bytearray.\_\_mod\_\_](https://python-all.ru/3/library/stdtypes.html#bytes-formatting), когда `bytearray` изменяется во время форматирования аргументов в стиле `%`. Патч от Bénédikt Tran.
- [gh-143195](https://python-all.ru/3/whatsnew/changelog.html): Исправлены сбои из-за использования после освобождения в [`bytearray.hex()`](https://python-all.ru/3/library/stdtypes.html#bytearray.hex) и [`memoryview.hex()`](https://python-all.ru/3/library/stdtypes.html#memoryview.hex), когда метод [`__len__()`](https://python-all.ru/3/reference/datamodel.html#object.__len__) разделителя изменяет исходный объект. Патч от Bénédikt Tran.
- [gh-142975](https://python-all.ru/3/whatsnew/changelog.html): Исправлен сбой после размораживания всех объектов, отслеживаемых сборщиком мусора, в сборке [free threaded](https://python-all.ru/3/glossary.html#term-free-threading).
- [gh-143135](https://python-all.ru/3/whatsnew/changelog.html): Установите [`sys.flags.inspect`](https://python-all.ru/3/library/sys.html#sys.flags.inspect) в `1`, когда [`PYTHONINSPECT`](https://python-all.ru/3/using/cmdline.html#envvar-PYTHONINSPECT) равен `0`. Ранее в этом случае устанавливалось значение `0`.
- [gh-143003](https://python-all.ru/3/whatsnew/changelog.html): Исправлено переполнение общего пустого буфера в [`bytearray.extend()`](https://python-all.ru/3/library/stdtypes.html#bytearray.extend), когда `__length_hint__()` возвращает 0 для непустого итератора.
- [gh-143006](https://python-all.ru/3/whatsnew/changelog.html): Исправлена возможная ошибка утверждения при сравнении отрицательных нецелочисленных `float` и `int` с одинаковым количеством бит в целой части.
- [gh-143057](https://python-all.ru/3/whatsnew/changelog.html): Избежание блокировок в [`PyTraceMalloc_Track()`](https://python-all.ru/3/c-api/memory.html#c.PyTraceMalloc_Track) и [`PyTraceMalloc_Untrack()`](https://python-all.ru/3/c-api/memory.html#c.PyTraceMalloc_Untrack), когда [`tracemalloc`](https://python-all.ru/3/library/tracemalloc.html#module-tracemalloc) не включён.
- [gh-142776](https://python-all.ru/3/whatsnew/changelog.html): Исправлена утечка файлового дескриптора в import.c.
- [gh-142829](https://python-all.ru/3/whatsnew/changelog.html): Исправлен сбой из-за использования после освобождения при сравнении [`contextvars.Context`](https://python-all.ru/3/library/contextvars.html#contextvars.Context), когда пользовательский метод `__eq__` изменяет контекст через [`set()`](https://python-all.ru/3/library/contextvars.html#contextvars.ContextVar.set).
- [gh-142766](https://python-all.ru/3/whatsnew/changelog.html): Очистка фрейма генератора при вызове [`generator.close()`](https://python-all.ru/3/reference/expressions.html#generator.close).
- [gh-142737](https://python-all.ru/3/whatsnew/changelog.html): Трассировки будут отображаться в резервном режиме, даже если [`io.open()`](https://python-all.ru/3/library/io.html#io.open) утерян. Ранее это приводило к сбою интерпретатора. Патч от Bartosz Sławecki.
- [gh-142554](https://python-all.ru/3/whatsnew/changelog.html): Исправлен сбой в [`divmod()`](https://python-all.ru/3/library/functions.html#divmod), когда `_pylong.int_divmod()` не возвращает кортеж ровно из двух элементов. Патч от Bénédikt Tran.
- [gh-142560](https://python-all.ru/3/whatsnew/changelog.html): Исправлено использование после освобождения в методах поиска, подобных [`bytearray`](https://python-all.ru/3/library/stdtypes.html#bytearray) ([`find()`](https://python-all.ru/3/library/stdtypes.html#bytearray.find), [`count()`](https://python-all.ru/3/library/stdtypes.html#bytearray.count), [`index()`](https://python-all.ru/3/library/stdtypes.html#bytearray.index), [`rindex()`](https://python-all.ru/3/library/stdtypes.html#bytearray.rindex) и [`rfind()`](https://python-all.ru/3/library/stdtypes.html#bytearray.rfind)), путём пометки хранилища как экспортируемого, что приводит к возникновению [`BufferError`](https://python-all.ru/3/library/exceptions.html#BufferError) при попытке перераспределения. Для [`contains()`](https://python-all.ru/3/library/operator.html#operator.contains), [`split()`](https://python-all.ru/3/library/stdtypes.html#bytearray.split) и [`rsplit()`](https://python-all.ru/3/library/stdtypes.html#bytearray.rsplit) для этого используется [протокол буфера](https://python-all.ru/3/c-api/buffer.html#bufferobjects).
- [gh-142531](https://python-all.ru/3/whatsnew/changelog.html): Исправлено снижение производительности сборщика мусора в свободно-поточной сборке. Если есть много неотслеживаемых кортежей, GC будет запускаться слишком часто, что приводит к низкой производительности. Исправление заключается во включении неотслеживаемых кортежей в счётчик «долгоживущих» объектов. Также теперь учитывается количество замороженных объектов, поскольку свободно-поточный GC должен сканировать и их.
- [gh-142402](https://python-all.ru/3/whatsnew/changelog.html): Исправлен подсчёт ссылок при слиянии соседних буквальных частей во время конструирования [`string.templatelib.Template`](https://python-all.ru/3/library/string.templatelib.html#string.templatelib.Template), что предотвращает утечку перемещённого строкового объекта.
- [gh-133932](https://python-all.ru/3/whatsnew/changelog.html): Исправлен сбой в сборке со свободной многопоточностью при очистке фреймов, содержащих целые числа с тегами.
- [gh-142343](https://python-all.ru/3/whatsnew/changelog.html): Исправлен сбой SIGILL на m68k из-за некорректного ограничения в ассемблерной вставке.
- [gh-100964](https://python-all.ru/3/whatsnew/changelog.html): Исправлена циклическая ссылка в фреймах исчерпанных генераторов. Патч от Savannah Ostrowski.
- [gh-69605](https://python-all.ru/3/whatsnew/changelog.html): Исправлены граничные случаи, связанные с уже импортированными модулями, при автодополнении импортов в [REPL](https://python-all.ru/3/glossary.html#term-REPL).
- [gh-138568](https://python-all.ru/3/whatsnew/changelog.html): Изменена встроенная функция [`help()`](https://python-all.ru/3/library/functions.html#help) так, что пустые вводы игнорируются в интерактивном режиме.
- [gh-137007](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка при сбое JIT-компиляции, из-за которой отладочные проверки сборщика мусора завершались сбоем.

### C API

- [gh-142589](https://python-all.ru/3/whatsnew/changelog.html): Исправлена [`PyUnstable_Object_IsUniqueReferencedTemporary()`](https://python-all.ru/3/c-api/object.html#c.PyUnstable_Object_IsUniqueReferencedTemporary) обработка тегированных целых чисел в стеке интерпретатора.
- [gh-142571](https://python-all.ru/3/whatsnew/changelog.html): `PyUnstable_CopyPerfMapFile()` теперь проверяет, что открытие файла прошло успешно, перед сбросом.

### Build

- [gh-142454](https://python-all.ru/3/whatsnew/changelog.html): При вычислении дайджеста входных данных JIT-шаблонов отсортировать хешированные файлы по именам перед добавлением их содержимого в хеш-функцию. Это обеспечивает детерминированный входной хеш и, следовательно, детерминированный хеш, независимый от порядка файловой системы.
- [gh-141808](https://python-all.ru/3/whatsnew/changelog.html): При запуске `make clean-retain-profile` сохранять сгенерированные JIT-шаблоны. Так шаблоны не будут генерироваться дважды при использовании профильно-ориентированной оптимизации (PGO). Это также позволяет дистрибьюторам предоставлять свои собственные предварительно собранные JIT-шаблоны.
- [gh-138061](https://python-all.ru/3/whatsnew/changelog.html): Обеспечение воспроизводимых сборок за счёт детерминированной генерации заголовков JIT-шаблонов.

## Python 3.14.2 final

*Дата выпуска: 2025-12-05*

### Безопасность

- [gh-142145](https://python-all.ru/3/whatsnew/changelog.html): Устранение квадратичного поведения при очистке кэша идентификаторов узлов в `xml.minidom`.
- [gh-119452](https://python-all.ru/3/whatsnew/changelog.html): Исправлена потенциальная возможность отказа в обслуживании по памяти в модуле [`http.server`](https://python-all.ru/3/library/http.server.html#module-http.server). Если злоумышленник подключен к CGI-серверу в Windows, это могло привести к выделению произвольного объёма памяти. Это могло вызывать такие симптомы, как [`MemoryError`](https://python-all.ru/3/library/exceptions.html#MemoryError), своппинг, завершение процессов или контейнеров из-за нехватки памяти (OOM) или даже сбои системы.

### Библиотека

- [gh-140797](https://python-all.ru/3/whatsnew/changelog.html): Откат изменений в недокументированном классе `re.Scanner`. Захватывающие группы по-прежнему разрешены для обратной совместимости, хотя их использование может привести к некорректному результату. В будущих версиях Python они будут запрещены.
- [gh-142206](https://python-all.ru/3/whatsnew/changelog.html): Отслеживатель ресурсов в модуле [`multiprocessing`](https://python-all.ru/3/library/multiprocessing.html#module-multiprocessing) теперь по умолчанию использует исходный протокол связи, как в Python 3.14.0 и ниже. Это позволяет избежать проблем при обновлении Python во время его работы. (Обратите внимание, что такие «горячие» обновления не тестируются.) Отслеживатель остаётся совместимым с подпроцессами, использующими новый протокол (то есть подпроцессами на Python 3.13.10, 3.14.1 и 3.15).
- [gh-142214](https://python-all.ru/3/whatsnew/changelog.html): Исправлено два регресса в [`dataclasses`](https://python-all.ru/3/library/dataclasses.html#module-dataclasses) в Python 3.14.1, связанных с аннотациями.

  - Исключение больше не возбуждается, если используется `slots=True`, а у метода `__init__` нет атрибута `__annotate__` (вероятно, потому что использовался `init=False`).
  - Исключение больше не возбуждается, если запрашиваются аннотации у метода `__init__`, а одно из полей отсутствует в аннотациях класса. Это может происходить в некоторых динамических сценариях.

  Патч от Jelle Zijlstra.

### Ядро и встроенные модули

- [gh-142218](https://python-all.ru/3/whatsnew/changelog.html): Исправлен сбой при вставке в раздвоенный словарь с ключом [`str`](https://python-all.ru/3/library/stdtypes.html#str), который совпадает с существующим ключом.

### Библиотека

- [gh-116738](https://python-all.ru/3/whatsnew/changelog.html): Исправлена гонка данных в [`cmath`](https://python-all.ru/3/library/cmath.html#module-cmath) при инициализации тригонометрических таблиц с помощью подинтерпретаторов.

## Python 3.14.1 final

*Дата выпуска: 2025-12-02*

### Windows

- [gh-139810](https://python-all.ru/3/whatsnew/changelog.html): Установка с помощью `py install 3[.x]-dev` теперь будет выбирать как финальные версии, так и предварительные выпуски.

### Инструменты/Демонстрации

- [gh-141692](https://python-all.ru/3/whatsnew/changelog.html): Каждый срез iOS XCframework теперь содержит папку `lib`, которая содержит символическую ссылку на libpython dylib. Это позволяет компилировать двоичные модули для iOS с использованием динамической компоновки библиотек, а не компоновки Framework.
- [gh-141442](https://python-all.ru/3/whatsnew/changelog.html): iOS-тестовый стенд теперь корректно обрабатывает аргументы тестов, содержащие пробелы.
- [gh-140702](https://python-all.ru/3/whatsnew/changelog.html): Приложение для тестирования на iOS теперь будет предоставлять переменную окружения `GITHUB_ACTIONS` тестируемым iOS-приложениям.
- [gh-137484](https://python-all.ru/3/whatsnew/changelog.html): `Tools/wasm/wasi` теперь помещает собираемый Python в каталог, названный в честь тройки цели сборки, вместо «build».
- [gh-137248](https://python-all.ru/3/whatsnew/changelog.html): Добавить опцию `--logdir` в `Tools/wasm/wasi` для указания места записи файлов журнала.
- [gh-137243](https://python-all.ru/3/whatsnew/changelog.html): Реализовать обнаружение установки WASI SDK в /opt при прямом извлечении из архива релиза в Tools/wasm/wasi.

### Тесты

- [gh-140482](https://python-all.ru/3/whatsnew/changelog.html): Сохранять и восстанавливать состояние `stty echo` как часть тестового окружения.
- [gh-140082](https://python-all.ru/3/whatsnew/changelog.html): Обновить `python -m test`, чтобы устанавливать `FORCE_COLOR=1` при запуске с включённым цветом, чтобы [`unittest`](https://python-all.ru/3/library/unittest.html#module-unittest), запускаемый им с перенаправленным выводом, выводил в цвете.
- [gh-139208](https://python-all.ru/3/whatsnew/changelog.html): Исправление regrtest `--fast-ci --verbose`: больше не игнорировать опцию `--verbose`. Патч от Victor Stinner.
- [gh-136442](https://python-all.ru/3/whatsnew/changelog.html): Использовать код возврата `1` вместо `5`, если [`unittest.TestCase.setUpClass()`](https://python-all.ru/3/library/unittest.html#unittest.TestCase.setUpClass) вызывает исключение.

### Безопасность

- [gh-139700](https://python-all.ru/3/whatsnew/changelog.html): Проверять согласованность записи конца центрального каталога zip64. Поддерживать записи с «расширяемыми данными zip64», если к ZIP-файлу не добавлены байты в начале.
- [gh-139283](https://python-all.ru/3/whatsnew/changelog.html): [`sqlite3`](https://python-all.ru/3/library/sqlite3.html#module-sqlite3): корректно обрабатывать максимальное количество строк для выборки в [`Cursor.fetchmany`](https://python-all.ru/3/library/sqlite3.html#sqlite3.Cursor.fetchmany) и отклонять отрицательные значения для [`Cursor.arraysize`](https://python-all.ru/3/library/sqlite3.html#sqlite3.Cursor.arraysize). Патч от Bénédikt Tran.
- [gh-137836](https://python-all.ru/3/whatsnew/changelog.html): Добавить поддержку элемента «plaintext», элементов RAWTEXT «xmp», «iframe», «noembed» и «noframes», и опционально элемента RAWTEXT «noscript» в [`html.parser.HTMLParser`](https://python-all.ru/3/library/html.parser.html#html.parser.HTMLParser).
- [gh-136063](https://python-all.ru/3/whatsnew/changelog.html): [`email.message`](https://python-all.ru/3/library/email.message.html#module-email.message): обеспечить линейную сложность для разбора устаревших параметров HTTP. Патч от Bénédikt Tran.
- [gh-136065](https://python-all.ru/3/whatsnew/changelog.html): Исправить квадратичную сложность в [`os.path.expandvars()`](https://python-all.ru/3/library/os.path.html#os.path.expandvars).
- [gh-119451](https://python-all.ru/3/whatsnew/changelog.html): Исправить потенциальный отказ в обслуживании по памяти в модуле [`http.client`](https://python-all.ru/3/library/http.client.html#module-http.client). При подключении к вредоносному серверу могло быть выделено произвольное количество памяти. Это могло привести к таким симптомам, как [`MemoryError`](https://python-all.ru/3/library/exceptions.html#MemoryError), подкачка, убийство процессов или контейнеров по нехватке памяти (OOM) или даже к краху системы.
- [gh-119342](https://python-all.ru/3/whatsnew/changelog.html): Исправить потенциальный отказ в обслуживании по памяти в модуле [`plistlib`](https://python-all.ru/3/library/plistlib.html#module-plistlib). При чтении Plist-файла из ненадёжного источника могло быть выделено произвольное количество памяти. Это могло привести к таким симптомам, как [`MemoryError`](https://python-all.ru/3/library/exceptions.html#MemoryError), подкачка, убийство процессов или контейнеров по нехватке памяти (OOM) или даже к краху системы.

### Библиотека

- [gh-74389](https://python-all.ru/3/whatsnew/changelog.html): Когда stdin, используемый экземпляром [`subprocess.Popen`](https://python-all.ru/3/library/subprocess.html#subprocess.Popen), закрывается, это теперь игнорируется в [`subprocess.Popen.communicate()`](https://python-all.ru/3/library/subprocess.html#subprocess.Popen.communicate) вместо того, чтобы оставлять класс в неконсистентном состоянии.
- [gh-87512](https://python-all.ru/3/whatsnew/changelog.html): Исправить обработку тайм-аута [`subprocess.Popen.communicate()`](https://python-all.ru/3/library/subprocess.html#subprocess.Popen.communicate) в Windows при записи большого объёма входных данных. Ранее тайм-аут игнорировался во время записи в stdin, что приводило к бесконечной блокировке метода, если дочерний процесс не потреблял входные данные достаточно быстро. Теперь запись в stdin выполняется в фоновом потоке, что позволяет корректно применять тайм-аут.
- [gh-141473](https://python-all.ru/3/whatsnew/changelog.html): Когда [`subprocess.Popen.communicate()`](https://python-all.ru/3/library/subprocess.html#subprocess.Popen.communicate) был вызван с *входными данными* и *тайм-аутом* и вызывается второй раз после исключения [`TimeoutExpired`](https://python-all.ru/3/library/subprocess.html#subprocess.TimeoutExpired) до завершения процесса, он больше не должен зависать.
- [gh-59000](https://python-all.ru/3/whatsnew/changelog.html): Исправить разрешение точек останова [`pdb`](https://python-all.ru/3/library/pdb.html#module-pdb) для методов классов, когда модуль, определяющий класс, не импортирован.
- [gh-141570](https://python-all.ru/3/whatsnew/changelog.html): Поддерживать [объект, подобный файлу](https://python-all.ru/3/glossary.html#term-file-like-object), вызывающий [`OSError`](https://python-all.ru/3/library/exceptions.html#OSError) из [`fileno()`](https://python-all.ru/3/library/io.html#io.IOBase.fileno) в определении цвета (`_colorize.can_colorize()`). Это может произойти, когда `sys.stdout` перенаправлен.
- [gh-141659](https://python-all.ru/3/whatsnew/changelog.html): Исправить ошибки неправильного файлового дескриптора от `_posixsubprocess` в AIX.
- [gh-141600](https://python-all.ru/3/whatsnew/changelog.html): Исправить определение версии musl в Void Linux.
- [gh-141497](https://python-all.ru/3/whatsnew/changelog.html): [`ipaddress`](https://python-all.ru/3/library/ipaddress.html#module-ipaddress): гарантировать, что методы [`IPv4Network.hosts()`](https://python-all.ru/3/library/ipaddress.html#ipaddress.IPv4Network.hosts) и [`IPv6Network.hosts()`](https://python-all.ru/3/library/ipaddress.html#ipaddress.IPv6Network.hosts) всегда возвращают итератор.
- [gh-140938](https://python-all.ru/3/whatsnew/changelog.html): Функции [`statistics.stdev()`](https://python-all.ru/3/library/statistics.html#statistics.stdev) и [`statistics.pstdev()`](https://python-all.ru/3/library/statistics.html#statistics.pstdev) теперь вызывают [`ValueError`](https://python-all.ru/3/library/exceptions.html#ValueError), если вход содержит бесконечность или NaN.
- [gh-124111](https://python-all.ru/3/whatsnew/changelog.html): Обновлена конфигурация потоков Tcl в [`_tkinter`](https://python-all.ru/3/library/tkinter.html#module-_tkinter): теперь предполагается, что потоки всегда доступны в Tcl 9 и новее.
- [gh-137109](https://python-all.ru/3/whatsnew/changelog.html): [`os.fork`](https://python-all.ru/3/library/os.html#os.fork) и связанные с ним API форкинга больше не будут выдавать предупреждение в обычном случае, когда API платформы Linux или macOS возвращают количество потоков в процессе и находят ответ равным 1, даже если колбэк [`os.register_at_fork()`](https://python-all.ru/3/library/os.html#os.register_at_fork) `after_in_parent=` (пере)запускает поток.
- [gh-141314](https://python-all.ru/3/whatsnew/changelog.html): Исправить ошибку утверждения в [`io.TextIOWrapper.tell()`](https://python-all.ru/3/library/io.html#io.TextIOWrapper.tell) при чтении файлов с одиночными возвратами каретки (`\r`) в качестве концов строк.
- [gh-141311](https://python-all.ru/3/whatsnew/changelog.html): Исправить ошибку утверждения в `io.BytesIO.readinto()` и неопределённое поведение, возникающее, когда позиция чтения превышает ёмкость в [`io.BytesIO`](https://python-all.ru/3/library/io.html#io.BytesIO).
- [gh-141141](https://python-all.ru/3/whatsnew/changelog.html): Исправить проблему потокобезопасности с [`base64.b85decode()`](https://python-all.ru/3/library/base64.html#base64.b85decode). Вклад от Benel Tayar.
- [gh-137969](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка, при которой [`annotationlib.ForwardRef.evaluate()`](https://python-all.ru/3/library/annotationlib.html#annotationlib.ForwardRef.evaluate) возвращал [`ForwardRef`](https://python-all.ru/3/library/annotationlib.html#annotationlib.ForwardRef) объекты, не обновляющиеся при новых глобальных переменных.
- [gh-140911](https://python-all.ru/3/whatsnew/changelog.html): [`collections`](https://python-all.ru/3/library/collections.html#module-collections): гарантирует, что методы `UserString.rindex()` и `UserString.index()` принимают экземпляры [`collections.UserString`](https://python-all.ru/3/library/collections.html#collections.UserString) в качестве аргумента sub.
- [gh-140797](https://python-all.ru/3/whatsnew/changelog.html): Недокументированный класс `re.Scanner` теперь запрещает регулярные выражения, содержащие захватывающие группы в своих лексиконных шаблонах. Ранее шаблоны с захватывающими группами могли приводить к аварийному завершению с ошибкой сегментации. Вместо этого используйте незахватывающие группы (?:…).
- [gh-125115](https://python-all.ru/3/whatsnew/changelog.html): Изменён алгоритм разбора [`pdb`](https://python-all.ru/3/library/pdb.html#module-pdb) таким образом, чтобы позиционные аргументы передавались интуитивно понятным образом.
- [gh-140815](https://python-all.ru/3/whatsnew/changelog.html): [`faulthandler`](https://python-all.ru/3/library/faulthandler.html#module-faulthandler) теперь определяет, является ли фрейм или объект кода недопустимым или освобождённым. Патч от Victor Stinner.
- [gh-100218](https://python-all.ru/3/whatsnew/changelog.html): Правильно устанавливается [`errno`](https://python-all.ru/3/library/exceptions.html#OSError.errno), когда [`socket.if_nametoindex()`](https://python-all.ru/3/library/socket.html#socket.if_nametoindex) или [`socket.if_indextoname()`](https://python-all.ru/3/library/socket.html#socket.if_indextoname) вызывают [`OSError`](https://python-all.ru/3/library/exceptions.html#OSError). Патч от Bénédikt Tran.
- [gh-140875](https://python-all.ru/3/whatsnew/changelog.html): Исправлена обработка незакрытых символьных ссылок (именованных и числовых), за которыми следует конец файла в [`html.parser.HTMLParser`](https://python-all.ru/3/library/html.parser.html#html.parser.HTMLParser) с `convert_charrefs=False`.
- [gh-140734](https://python-all.ru/3/whatsnew/changelog.html): [`multiprocessing`](https://python-all.ru/3/library/multiprocessing.html#module-multiprocessing): исправлена ошибка на единицу при проверке длины пути временного файла сокета. Патч от Bénédikt Tran.
- [gh-140874](https://python-all.ru/3/whatsnew/changelog.html): Версия pip, входящего в состав ensurepip, обновлена до 25.3
- [gh-140691](https://python-all.ru/3/whatsnew/changelog.html): В [`urllib.request`](https://python-all.ru/3/library/urllib.request.html#module-urllib.request), если открытие FTP-URL завершается неудачей из-за невозможности установить соединение для передачи данных, сокет управляющего соединения теперь закрывается, чтобы избежать [`ResourceWarning`](https://python-all.ru/3/library/exceptions.html#ResourceWarning).
- [gh-103847](https://python-all.ru/3/whatsnew/changelog.html): Исправлено зависание при отмене процесса, созданного с помощью [`asyncio.create_subprocess_exec()`](https://python-all.ru/3/library/asyncio-subprocess.html#asyncio.create_subprocess_exec) или [`asyncio.create_subprocess_shell()`](https://python-all.ru/3/library/asyncio-subprocess.html#asyncio.create_subprocess_shell). Патч от Kumar Aditya.
- [gh-120057](https://python-all.ru/3/whatsnew/changelog.html): Добавлен [`os.reload_environ()`](https://python-all.ru/3/library/os.html#os.reload_environ) в `os.__all__`.
- [gh-140228](https://python-all.ru/3/whatsnew/changelog.html): Избегайте ненужных вызовов файловой системы для замороженных модулей в [`linecache`](https://python-all.ru/3/library/linecache.html#module-linecache), если глобальный кеш модулей отсутствует.
- [gh-140590](https://python-all.ru/3/whatsnew/changelog.html): Исправлена проверка аргументов для `functools.partial.__setstate__()`, которая могла приводить к повреждению внутреннего состояния и аварийному завершению. Патч от Sergey Miryanov.
- [gh-125434](https://python-all.ru/3/whatsnew/changelog.html): Отображается имя потока в [`faulthandler`](https://python-all.ru/3/library/faulthandler.html#module-faulthandler) на Windows. Патч от Victor Stinner.
- [gh-140634](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка подсчёта ссылок в `os.sched_param.__reduce__()`.
- [gh-140633](https://python-all.ru/3/whatsnew/changelog.html): Игнорируется [`AttributeError`](https://python-all.ru/3/library/exceptions.html#AttributeError) при установке атрибута `__file__` модуля во время загрузки расширения, упакованного как Apple Framework.
- [gh-140593](https://python-all.ru/3/whatsnew/changelog.html): [`xml.parsers.expat`](https://python-all.ru/3/library/pyexpat.html#module-xml.parsers.expat): исправлена утечка памяти, которая могла затрагивать пользователей, у которых [`ElementDeclHandler()`](https://python-all.ru/3/library/pyexpat.html#xml.parsers.expat.xmlparser.ElementDeclHandler) установлен в пользовательский обработчик объявления элементов. Патч от Sebastian Pipping.
- [gh-140607](https://python-all.ru/3/whatsnew/changelog.html): Внутри [`io.RawIOBase.read()`](https://python-all.ru/3/library/io.html#io.RawIOBase.read) проверяется, что количество байтов, возвращённое [`io.RawIOBase.readinto()`](https://python-all.ru/3/library/io.html#io.RawIOBase.readinto), является допустимым (в пределах предоставленного буфера).
- [gh-138162](https://python-all.ru/3/whatsnew/changelog.html): Исправлен [`logging.LoggerAdapter`](https://python-all.ru/3/library/logging.html#logging.LoggerAdapter) с `merge_extra=True` и без аргумента *extra*.
- [gh-138774](https://python-all.ru/3/whatsnew/changelog.html): [`ast.unparse()`](https://python-all.ru/3/library/ast.html#ast.unparse) теперь генерирует полный исходный код при обработке узлов [`ast.Interpolation`](https://python-all.ru/3/library/ast.html#ast.Interpolation), не имеющих заданного источника.
- [gh-140474](https://python-all.ru/3/whatsnew/changelog.html): Исправлена утечка памяти в [`array.array`](https://python-all.ru/3/library/array.html#array.array) при создании массивов из пустого [`str`](https://python-all.ru/3/library/stdtypes.html#str) и кода типа `u`.
- [gh-137530](https://python-all.ru/3/whatsnew/changelog.html): [`dataclasses`](https://python-all.ru/3/library/dataclasses.html#module-dataclasses) Исправлены аннотации для сгенерированных методов `__init__` путём замены аннотаций, которые были встроенными в сгенерированном исходном коде, на функции `__annotate__`, прикреплённые к методам.
- [gh-140348](https://python-all.ru/3/whatsnew/changelog.html): Исправлен регресс в Python 3.14.0, при котором использование оператора `|` на объекте [`typing.Union`](https://python-all.ru/3/library/typing.html#typing.Union) в сочетании с объектом, не являющимся типом, вызывало ошибку.
- [gh-140272](https://python-all.ru/3/whatsnew/changelog.html): Исправлена утечка памяти в методе `clear()` базы данных [`dbm.gnu`](https://python-all.ru/3/library/dbm.html#module-dbm.gnu).
- [gh-140041](https://python-all.ru/3/whatsnew/changelog.html): Исправлен импорт [`ctypes`](https://python-all.ru/3/library/ctypes.html#module-ctypes) на Android и Cygwin при наличии ABI-флагов.
- [gh-140120](https://python-all.ru/3/whatsnew/changelog.html): Исправлена утечка памяти в [`hmac`](https://python-all.ru/3/library/hmac.html#module-hmac) при использовании бэкенда hacl-star. Обнаружено `@ashm-dev` с помощью AddressSanitizer.
- [gh-139905](https://python-all.ru/3/whatsnew/changelog.html): Добавлена подсказка в сообщение об ошибке для подклассов [`typing.Generic`](https://python-all.ru/3/library/typing.html#typing.Generic), когда `cls.__parameters__` отсутствует из-за того, что родительский класс не вызывает [`super().__init_subclass__()`](https://python-all.ru/3/reference/datamodel.html#object.__init_subclass__) в своём `__init_subclass__`.
- [gh-139894](https://python-all.ru/3/whatsnew/changelog.html): Исправлено некорректное разделение текущей задачи с дочерним процессом при форке в [`asyncio`](https://python-all.ru/3/library/asyncio.html#module-asyncio). Патч от Kumar Aditya.
- [gh-139845](https://python-all.ru/3/whatsnew/changelog.html): Исправлено, чтобы KeyboardInterrupt не выводился дважды в REPL asyncio по умолчанию.
- [gh-139783](https://python-all.ru/3/whatsnew/changelog.html): Исправлен [`inspect.getsourcelines()`](https://python-all.ru/3/library/inspect.html#inspect.getsourcelines) для случая, когда за декоратором следует комментарий или пустая строка.
- [gh-139809](https://python-all.ru/3/whatsnew/changelog.html): Предотвращение преждевременной раскраски подпарсера `prog` в [`argparse.ArgumentParser.add_subparsers()`](https://python-all.ru/3/library/argparse.html#argparse.ArgumentParser.add_subparsers), чтобы учитывать изменения переменных окружения, отвечающих за цвета, после создания парсера.
- [gh-139736](https://python-all.ru/3/whatsnew/changelog.html): Исправлена чрезмерная вложенность в стандартном [`argparse`](https://python-all.ru/3/library/argparse.html#module-argparse) `HelpFormatter`. Автор исправления: Alexander Edland.
- [gh-70765](https://python-all.ru/3/whatsnew/changelog.html): [`http.server`](https://python-all.ru/3/library/http.server.html#module-http.server): исправлена обработка HTTP/0.9 запросов в [`BaseHTTPRequestHandler`](https://python-all.ru/3/library/http.server.html#http.server.BaseHTTPRequestHandler). Ранее `BaseHTTPRequestHandler.parse_request()` некорректно ожидал заголовки в запросе, хотя они не поддерживаются в HTTP/0.9. Автор исправления: Bénédikt Tran.
- [gh-63161](https://python-all.ru/3/whatsnew/changelog.html): Исправлен [`tokenize.detect_encoding()`](https://python-all.ru/3/library/tokenize.html#tokenize.detect_encoding). Поддержка не-UTF-8 shebang и комментариев, если указана не-UTF-8 кодировка. Обнаружение ошибок декодирования для не-UTF-8 кодировки. Обнаружение нулевых байтов в исходном коде.
- [gh-139391](https://python-all.ru/3/whatsnew/changelog.html): Исправлена проблема, когда на платформах, отличных от Windows, было невозможно корректно завершить процесс `python -m asyncio`, приостановленный Ctrl+Z и затем возобновленный командой *[fg](https://python-all.ru/3/whatsnew/changelog.html)*, иначе как с помощью *[kill](https://python-all.ru/3/whatsnew/changelog.html)*.
- [gh-101828](https://python-all.ru/3/whatsnew/changelog.html): Исправлены кодеки `'shift_jisx0213'`, `'shift_jis_2004'`, `'euc_jisx0213'` и `'euc_jis_2004'`, которые обрезали нулевые символы, так как они рассматривались как часть многобайтовых последовательностей.
- [gh-139289](https://python-all.ru/3/whatsnew/changelog.html): Реализован настоящий ленивый импорт [`rlcompleter`](https://python-all.ru/3/library/rlcompleter.html#module-rlcompleter) в [`pdb`](https://python-all.ru/3/library/pdb.html#module-pdb) и восстановление существующего комплитера после импорта `rlcompleter`.
- [gh-139246](https://python-all.ru/3/whatsnew/changelog.html): исправление: вставка нулевой ширины в стандартной ширине REPL работает некорректно.
- [gh-90949](https://python-all.ru/3/whatsnew/changelog.html): Добавлены [`SetAllocTrackerActivationThreshold()`](https://python-all.ru/3/library/pyexpat.html#xml.parsers.expat.xmlparser.SetAllocTrackerActivationThreshold) и [`SetAllocTrackerMaximumAmplification()`](https://python-all.ru/3/library/pyexpat.html#xml.parsers.expat.xmlparser.SetAllocTrackerMaximumAmplification) в объекты [xmlparser](https://python-all.ru/3/library/pyexpat.html#xmlparser-objects) для настройки защиты от непропорционально большого использования динамической памяти внутри парсера Expat. Автор исправления: Bénédikt Tran.
- [gh-139210](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка use-after-free при сообщении о неизвестном событии в [`xml.etree.ElementTree.iterparse()`](https://python-all.ru/3/library/xml.etree.elementtree.html#xml.etree.ElementTree.iterparse). Автор исправления: Ken Jin.
- [gh-138860](https://python-all.ru/3/whatsnew/changelog.html): Ленивый импорт [`rlcompleter`](https://python-all.ru/3/library/rlcompleter.html#module-rlcompleter) в [`pdb`](https://python-all.ru/3/library/pdb.html#module-pdb) для предотвращения взаимоблокировки в подпроцессе.
- [gh-112729](https://python-all.ru/3/whatsnew/changelog.html): Исправлен сбой при вызове [`concurrent.interpreters.create()`](https://python-all.ru/3/library/concurrent.interpreters.html#concurrent.interpreters.create) при нехватке памяти процесса.
- [gh-135729](https://python-all.ru/3/whatsnew/changelog.html): Исправлено неперехватываемое исключение при финализации при использовании [`concurrent.interpreters`](https://python-all.ru/3/library/concurrent.interpreters.html#module-concurrent.interpreters) в REPL.
- [gh-139076](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка в модуле [`pydoc`](https://python-all.ru/3/library/pydoc.html#module-pydoc), которая скрывала функции в модуле Python, если они были реализованы в модуле расширения и у модуля отсутствовал `__all__`.
- [gh-139065](https://python-all.ru/3/whatsnew/changelog.html): Исправлен завершающий пробел перед перенесённым длинным словом, если длина строки равна точно *width* в [`textwrap`](https://python-all.ru/3/library/textwrap.html#module-textwrap).
- [gh-139001](https://python-all.ru/3/whatsnew/changelog.html): Исправлено состояние гонки в [`pathlib.Path`](https://python-all.ru/3/library/pathlib.html#pathlib.Path) на внутреннем поле `_raw_paths`.
- [gh-138813](https://python-all.ru/3/whatsnew/changelog.html): `multiprocessing.BaseProcess` по умолчанию устанавливает `kwargs` в `None` вместо общего словаря.
- [gh-138993](https://python-all.ru/3/whatsnew/changelog.html): Уменьшена вложенность текста [`credits`](https://python-all.ru/3/library/constants.html#credits).
- [gh-138891](https://python-all.ru/3/whatsnew/changelog.html): Исправлен `SyntaxError` при вызове `inspect.get_annotations(f, eval_str=True)` для функции с аннотацией [**PEP 646**](https://python-all.ru/3/whatsnew/changelog.html) `star_expression`
- [gh-130567](https://python-all.ru/3/whatsnew/changelog.html): Исправлен возможный сбой в [`locale.strxfrm()`](https://python-all.ru/3/library/locale.html#locale.strxfrm) из-за ошибки платформы в macOS.
- [gh-138859](https://python-all.ru/3/whatsnew/changelog.html): Исправлено параметризованное обобщение, которое вызывает [`TypeError`](https://python-all.ru/3/library/exceptions.html#TypeError) при пропуске `ParamSpec`, имеющего значение по умолчанию, не являющееся списком типов.
- [gh-138764](https://python-all.ru/3/whatsnew/changelog.html): Предотвращение вызова [`annotationlib.call_annotate_function()`](https://python-all.ru/3/library/annotationlib.html#annotationlib.call_annotate_function) функций `__annotate__`, не поддерживающих `VALUE_WITH_FAKE_GLOBALS`, в фиктивном пространстве имён globals с пустыми globals.

  Аннотации `FORWARDREF` и `STRING` теперь запасным вариантом используют аннотации `VALUE` в случае, если не поддерживаются ни их собственный формат, ни `VALUE_WITH_FAKE_GLOBALS`.
- [gh-138775](https://python-all.ru/3/whatsnew/changelog.html): Использование `python -m` с [`base64`](https://python-all.ru/3/library/base64.html#module-base64) исправлено: теперь оно обнаруживает ввод с терминала, чтобы корректно обрабатывать EOF.
- [gh-138779](https://python-all.ru/3/whatsnew/changelog.html): Поддержка номеров устройств, превышающих `2**63-1`, для поля [`st_rdev`](https://python-all.ru/3/library/os.html#os.stat_result.st_rdev) структуры [`os.stat_result`](https://python-all.ru/3/library/os.html#os.stat_result).
- [gh-137706](https://python-all.ru/3/whatsnew/changelog.html): Исправлено частичное вычисление аннотаций, использующих `typing.Annotated[T, x]`, где `T` является прямой ссылкой.
- [gh-88375](https://python-all.ru/3/whatsnew/changelog.html): Исправлена нормализация правил `robots.txt` и URL-адресов в модуле [`urllib.robotparser`](https://python-all.ru/3/library/urllib.robotparser.html#module-urllib.robotparser). Больше не игнорируется завершающий `?`. Различие между необработанными специальными символами `?`, `=` и `&` и процентно-кодированными.
- [gh-111788](https://python-all.ru/3/whatsnew/changelog.html): Исправлены ошибки парсинга в модуле [`urllib.robotparser`](https://python-all.ru/3/library/urllib.robotparser.html#module-urllib.robotparser). Больше не происходит сбой при попытке разобрать странные пути. Больше не происходит сбой при попытке декодировать не-UTF-8 файлы `robots.txt`.
- [gh-98896](https://python-all.ru/3/whatsnew/changelog.html): Исправлен сбой в multiprocessing resource\_tracker, когда имена SharedMemory содержат двоеточия. Автор исправления: Rani Pinchuk.
- [gh-138425](https://python-all.ru/3/whatsnew/changelog.html): Исправлено частичное вычисление объектов [`annotationlib.ForwardRef`](https://python-all.ru/3/library/annotationlib.html#annotationlib.ForwardRef), которые полагаются на имена, определённые как globals.
- [gh-138432](https://python-all.ru/3/whatsnew/changelog.html): [`zoneinfo.reset_tzpath()`](https://python-all.ru/3/library/zoneinfo.html#zoneinfo.reset_tzpath) теперь преобразует любые объекты [`os.PathLike`](https://python-all.ru/3/library/os.html#os.PathLike), которые он получает, в строки перед добавлением их в `TZPATH`. Он вызовет `TypeError`, если после этого преобразования будет найден не строковый объект. Если передан объект `os.PathLike`, представляющий относительный путь, теперь будет вызвано `ValueError` вместо `TypeError` с более информативным сообщением об ошибке.
- [gh-138008](https://python-all.ru/3/whatsnew/changelog.html): Исправлены ошибки сегментации в модуле [`ctypes`](https://python-all.ru/3/library/ctypes.html#module-ctypes) из-за некорректного [`argtypes`](https://python-all.ru/3/library/ctypes.html#ctypes._CFuncPtr.argtypes). Автор исправления: Dung Nguyen.
- [gh-60462](https://python-all.ru/3/whatsnew/changelog.html): Исправлен [`locale.strxfrm()`](https://python-all.ru/3/library/locale.html#locale.strxfrm) в Solaris (и, возможно, на других платформах).
- [gh-138239](https://python-all.ru/3/whatsnew/changelog.html): REPL теперь подсвечивает [`type`](https://python-all.ru/3/reference/simple_stmts.html#type) как мягкое ключевое слово в [инструкциях type](https://python-all.ru/3/reference/simple_stmts.html#type).
- [gh-138204](https://python-all.ru/3/whatsnew/changelog.html): Запрещено расширение общих анонимных [`memory maps`](https://python-all.ru/3/library/mmap.html#module-mmap) в Linux, которое приводило к ошибке шины.
- [gh-138010](https://python-all.ru/3/whatsnew/changelog.html): Исправлена проблема, когда при определении класса с базовым классом, декорированным [`@warnings.deprecated`](https://python-all.ru/3/library/warnings.html#warnings.deprecated), могла вызываться неправильная [`__init_subclass__()`](https://python-all.ru/3/reference/datamodel.html#object.__init_subclass__) в случаях множественного наследования. Исправление предоставлено Brian Schubert.
- [gh-138151](https://python-all.ru/3/whatsnew/changelog.html): В [`annotationlib`](https://python-all.ru/3/library/annotationlib.html#module-annotationlib) улучшена обработка прямых ссылок на нелокальные переменные, которые ещё не определены на момент первого вычисления аннотаций.
- [gh-137317](https://python-all.ru/3/whatsnew/changelog.html): [`inspect.signature()`](https://python-all.ru/3/library/inspect.html#inspect.signature) теперь корректно обрабатывает классы, которые используют дескриптор на обёрнутый `__init__()` или `__new__()` метод. Предложено Yongyu Yan.
- [gh-137754](https://python-all.ru/3/whatsnew/changelog.html): Исправлен импорт модуля [`zoneinfo`](https://python-all.ru/3/library/zoneinfo.html#module-zoneinfo), если отсутствует C-реализация модуля [`datetime`](https://python-all.ru/3/library/datetime.html#module-datetime).
- [gh-137490](https://python-all.ru/3/whatsnew/changelog.html): Обрабатывает [`ECANCELED`](https://python-all.ru/3/library/errno.html#errno.ECANCELED) так же, как [`EINTR`](https://python-all.ru/3/library/errno.html#errno.EINTR) в [`signal.sigwaitinfo()`](https://python-all.ru/3/library/signal.html#signal.sigwaitinfo) на NetBSD.
- [gh-137477](https://python-all.ru/3/whatsnew/changelog.html): Исправлены `inspect.getblock()`, [`inspect.getsourcelines()`](https://python-all.ru/3/library/inspect.html#inspect.getsourcelines) и [`inspect.getsource()`](https://python-all.ru/3/library/inspect.html#inspect.getsource) для генераторных выражений.
- [gh-137044](https://python-all.ru/3/whatsnew/changelog.html): Возвращает большие значения лимитов как положительные целые числа вместо отрицательных в [`resource.getrlimit()`](https://python-all.ru/3/library/resource.html#resource.getrlimit). Принимает большие значения и отклоняет отрицательные (кроме [`RLIM_INFINITY`](https://python-all.ru/3/library/resource.html#resource.RLIM_INFINITY)) для лимитов в [`resource.setrlimit()`](https://python-all.ru/3/library/resource.html#resource.setrlimit).
- [gh-75989](https://python-all.ru/3/whatsnew/changelog.html): [`tarfile.TarFile.extractall()`](https://python-all.ru/3/library/tarfile.html#tarfile.TarFile.extractall) и [`tarfile.TarFile.extract()`](https://python-all.ru/3/library/tarfile.html#tarfile.TarFile.extract) теперь перезаписывают симлинки при извлечении хардлинков. (Предложено Alexander Enrique Urieles Nieto в [gh-75989](https://python-all.ru/3/whatsnew/changelog.html).)
- [gh-137017](https://python-all.ru/3/whatsnew/changelog.html): Исправлен [`threading.Thread.is_alive`](https://python-all.ru/3/library/threading.html#threading.Thread.is_alive) для сохранения состояния `True` до полной очистки соответствующего системного потока. Это устраняет ложные отрицательные результаты в граничных случаях, связанных с мониторингом потоков или преждевременными вызовами `threading.Thread.is_alive`.
- [gh-137273](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка отладочного утверждения в [`locale.setlocale()`](https://python-all.ru/3/library/locale.html#locale.setlocale) на Windows.
- [gh-137239](https://python-all.ru/3/whatsnew/changelog.html): [`heapq`](https://python-all.ru/3/library/heapq.html#module-heapq): обновлён `heapq.__all__` с помощью `*_max` функций.
- [gh-81325](https://python-all.ru/3/whatsnew/changelog.html): [`tarfile.TarFile`](https://python-all.ru/3/library/tarfile.html#tarfile.TarFile) теперь принимает [путеподобный](https://python-all.ru/3/glossary.html#term-path-like-object) объект при работе с tar-архивом. (Предложено Alexander Enrique Urieles Nieto в [gh-81325](https://python-all.ru/3/whatsnew/changelog.html).)
- [gh-137185](https://python-all.ru/3/whatsnew/changelog.html): Исправлена потенциальная проблема с асинхронной сигнальной безопасностью в [`faulthandler`](https://python-all.ru/3/library/faulthandler.html#module-faulthandler) при печати стеков вызовов на C.
- [gh-136914](https://python-all.ru/3/whatsnew/changelog.html): Исправлено получение [`doctest.DocTest.lineno`](https://python-all.ru/3/library/doctest.html#doctest.DocTest.lineno) для объектов, декорированных [`functools.cache()`](https://python-all.ru/3/library/functools.html#functools.cache) или [`functools.cached_property`](https://python-all.ru/3/library/functools.html#functools.cached_property).
- [gh-136912](https://python-all.ru/3/whatsnew/changelog.html): [`hmac.digest()`](https://python-all.ru/3/library/hmac.html#hmac.digest) теперь корректно обрабатывает большие ключи и сообщения, при необходимости переключаясь на чистую реализацию Python. Исправление предоставлено Bénédikt Tran.
- [gh-83424](https://python-all.ru/3/whatsnew/changelog.html): Позволяет создавать [`ctypes.CDLL`](https://python-all.ru/3/library/ctypes.html#ctypes.CDLL) без имени при передаче хендла в качестве аргумента.
- [gh-136234](https://python-all.ru/3/whatsnew/changelog.html): Исправлен [`asyncio.WriteTransport.writelines()`](https://python-all.ru/3/library/asyncio-protocol.html#asyncio.WriteTransport.writelines) для устойчивости к ошибкам подключения, с использованием того же поведения, что и [`write()`](https://python-all.ru/3/library/asyncio-protocol.html#asyncio.WriteTransport.write).
- [gh-136507](https://python-all.ru/3/whatsnew/changelog.html): Исправлен CLI-режим mimetypes для обработки нескольких файловых параметров.
- [gh-136057](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка в [`pdb`](https://python-all.ru/3/library/pdb.html#module-pdb) и [`bdb`](https://python-all.ru/3/library/bdb.html#module-bdb), из-за которой `next` и `step` не могли перейти на следующую строку, если в строке существовал цикл.
- [gh-135386](https://python-all.ru/3/whatsnew/changelog.html): Исправлено открытие базы данных [`dbm.sqlite3`](https://python-all.ru/3/library/dbm.html#module-dbm.sqlite3) для чтения из файла или каталога, доступных только для чтения.
- [gh-135444](https://python-all.ru/3/whatsnew/changelog.html): Исправлен [`asyncio.DatagramTransport.sendto()`](https://python-all.ru/3/library/asyncio-protocol.html#asyncio.DatagramTransport.sendto) для учёта размера заголовка дейтаграммы, когда данные не могут быть отправлены.
- [gh-126631](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка в [`multiprocessing`](https://python-all.ru/3/library/multiprocessing.html#module-multiprocessing) `forkserver`, которая препятствовала предварительной загрузке `__main__`.
- [gh-135307](https://python-all.ru/3/whatsnew/changelog.html): [`email`](https://python-all.ru/3/library/email.html#module-email): Исправлено исключение в `set_content()` при кодировании текста, если max\_line\_length установлен в `0` или `None` (без ограничения).
- [gh-134453](https://python-all.ru/3/whatsnew/changelog.html): Исправлена [`subprocess.Popen.communicate()`](https://python-all.ru/3/library/subprocess.html#subprocess.Popen.communicate) `input=` обработка экземпляров [`memoryview`](https://python-all.ru/3/library/stdtypes.html#memoryview), не являющихся байтовыми, на POSIX- платформах. Теперь они правильно преобразуются в байтовое представление вместо усечения входных данных. В Windows этой ошибки не было.
- [gh-134698](https://python-all.ru/3/whatsnew/changelog.html): Исправлен сбой при вызове методов [`ssl.SSLContext`](https://python-all.ru/3/library/ssl.html#ssl.SSLContext) или [`ssl.SSLSocket`](https://python-all.ru/3/library/ssl.html#ssl.SSLSocket) из нескольких потоков.
- [gh-125996](https://python-all.ru/3/whatsnew/changelog.html): Исправлена потокобезопасность [`collections.OrderedDict`](https://python-all.ru/3/library/collections.html#collections.OrderedDict). Исправление предоставлено Kumar Aditya.
- [gh-133789](https://python-all.ru/3/whatsnew/changelog.html): Исправлена распаковка объектов [`pathlib`](https://python-all.ru/3/library/pathlib.html#module-pathlib), которые были упакованы в Python 3.13.
- [gh-127081](https://python-all.ru/3/whatsnew/changelog.html): Исправлены проблемы потокобезопасности libc с [`dbm`](https://python-all.ru/3/library/dbm.html#module-dbm) путём выполнения операций с состоянием в критических секциях.
- [gh-132551](https://python-all.ru/3/whatsnew/changelog.html): Сделать [`io.BytesIO`](https://python-all.ru/3/library/io.html#io.BytesIO) безопасной в [свободно-поточной](https://python-all.ru/3/glossary.html#term-free-threading) сборке.
- [gh-131788](https://python-all.ru/3/whatsnew/changelog.html): Сделать `ResourceTracker.send` из [`multiprocessing`](https://python-all.ru/3/library/multiprocessing.html#module-multiprocessing) реентерабельно-безопасным.
- [gh-118981](https://python-all.ru/3/whatsnew/changelog.html): Исправление потенциального зависания в `multiprocessing.popen_spawn_posix` которое может произойти при раннем завершении дочернего процесса путем немедленного закрытия его файловых дескрипторов.
- [gh-102431](https://python-all.ru/3/whatsnew/changelog.html): Уточнение ограничений для «логических» аргументов в методах [`decimal.Context`](https://python-all.ru/3/library/decimal.html#decimal.Context).
- [gh-78319](https://python-all.ru/3/whatsnew/changelog.html): Поддержка UTF-8 для команды IMAP APPEND сделана соответствующей RFC.
- [bpo-38735](https://python-all.ru/3/whatsnew/changelog.html): Исправление ошибки при импорте модуля из корневого каталога на unix-подобных платформах с установленным sys.pycache\_prefix.
- [bpo-41839](https://python-all.ru/3/whatsnew/changelog.html): Разрешение отрицательных значений приоритета из [`os.sched_get_priority_min()`](https://python-all.ru/3/library/os.html#os.sched_get_priority_min) и [`os.sched_get_priority_max()`](https://python-all.ru/3/library/os.html#os.sched_get_priority_max) функций.

### IDLE

- [gh-96491](https://python-all.ru/3/whatsnew/changelog.html): Удаление дубликата номера версии в заголовке окна IDLE shell после сохранения в файл.
- [gh-139742](https://python-all.ru/3/whatsnew/changelog.html): Раскраска префиксов t-строк для строк-шаблонов в IDLE, как это сделано для префиксов f-строк.

### Документация

- [gh-141994](https://python-all.ru/3/whatsnew/changelog.html): [`xml.sax.handler`](https://python-all.ru/3/library/xml.sax.handler.html#module-xml.sax.handler): Документация [`xml.sax.handler.feature_external_ges`](https://python-all.ru/3/library/xml.sax.handler.html#xml.sax.handler.feature_external_ges) предупреждает об открытии доступа к [атакам с использованием внешних сущностей](https://python-all.ru/3/whatsnew/changelog.html). Исправление от Sebastian Pipping.
- [gh-140578](https://python-all.ru/3/whatsnew/changelog.html): Удаление устаревшего предложения в документации для [`multiprocessing`](https://python-all.ru/3/library/multiprocessing.html#module-multiprocessing), которое подразумевало, что [`concurrent.futures.ThreadPoolExecutor`](https://python-all.ru/3/library/concurrent.futures.html#concurrent.futures.ThreadPoolExecutor) не существует.

### Ядро и встроенные модули

- [gh-142048](https://python-all.ru/3/whatsnew/changelog.html): Исправление квадратично возрастающих задержек сборки мусора в сборке со свободной потоковой обработкой (free-threaded).

### Библиотека

- [gh-116738](https://python-all.ru/3/whatsnew/changelog.html): Исправление проблемы потокобезопасности с объектами сканера [`re`](https://python-all.ru/3/library/re.html#module-re) в сборках со свободной потоковой обработкой (free-threaded).

### Ядро и встроенные модули

- [gh-141930](https://python-all.ru/3/whatsnew/changelog.html): При импорте модуля используется стандартный файловый объект Python, чтобы гарантировать, что записи в файлы `.pyc` завершены, или возбуждается соответствующая ошибка.
- [gh-120158](https://python-all.ru/3/whatsnew/changelog.html): Исправление несогласованного состояния при включении или отключении событий мониторинга слишком много раз.
- [gh-139653](https://python-all.ru/3/whatsnew/changelog.html): Возбуждать `RecursionError` или вызывать фатальную ошибку только в том случае, если указатель стека находится одновременно ниже предельного указателя *и* выше основания стека. Если вне этих границ, считается, что все в порядке. Это предотвращает ложные срабатывания при переключении стеков потоков пользовательского пространства.
- [gh-139103](https://python-all.ru/3/whatsnew/changelog.html): Улучшение масштабирования dataclasses в многопоточном режиме на сборке со свободной потоковой обработкой (free-threaded).
- [gh-141579](https://python-all.ru/3/whatsnew/changelog.html): Исправление [`sys.activate_stack_trampoline()`](https://python-all.ru/3/library/sys.html#sys.activate_stack_trampoline) для правильной поддержки бэкенда `perf_jit`. Исправление от Pablo Galindo.
- [gh-114203](https://python-all.ru/3/whatsnew/changelog.html): Пропуск блокировки, если объект уже заблокирован критической секцией с двумя мьютексами (two-mutex).
- [gh-141528](https://python-all.ru/3/whatsnew/changelog.html): Предлагать использовать [`concurrent.interpreters.Interpreter.close()`](https://python-all.ru/3/library/concurrent.interpreters.html#concurrent.interpreters.Interpreter.close) вместо частной функции `_interpreters.destroy` при предупреждении об оставшихся подынтерпретаторах. Исправление от Sergey Miryanov.
- [gh-141312](https://python-all.ru/3/whatsnew/changelog.html): Исправление ошибки утверждения (assertion failure) в методе `__setstate__` итератора range при передаче нецелочисленного аргумента. Исправление от Sergey Miryanov.

### Библиотека

- [gh-116738](https://python-all.ru/3/whatsnew/changelog.html): Сделать модуль csv потокобезопасным в сборке [со свободной потоковой обработкой (free threaded)](https://python-all.ru/3/glossary.html#term-free-threading).

### Ядро и встроенные модули

- [gh-140939](https://python-all.ru/3/whatsnew/changelog.html): Исправление утечки памяти, когда [`bytearray`](https://python-all.ru/3/library/stdtypes.html#bytearray) или [`bytes`](https://python-all.ru/3/library/stdtypes.html#bytes) форматируется с форматом `%*b` с большой шириной, что приводит к [`MemoryError`](https://python-all.ru/3/library/exceptions.html#MemoryError).

### Библиотека

- [gh-140260](https://python-all.ru/3/whatsnew/changelog.html): Исправление [`struct`](https://python-all.ru/3/library/struct.html#module-struct) состояния гонки данных в инициализации таблицы порядка байтов (endian) с подынтерпретаторами. Исправление от Shamil Abdulaev.

### Ядро и встроенные модули

- [gh-140530](https://python-all.ru/3/whatsnew/changelog.html): Исправление утечки ссылки (reference leak) при сбое `raise exc from cause`. Исправление от Bénédikt Tran.
- [gh-140373](https://python-all.ru/3/whatsnew/changelog.html): Корректно генерировать событие `PY_UNWIND` при закрытии объекта-генератора. Исправление от Михаила Ефимова.
- [gh-140576](https://python-all.ru/3/whatsnew/changelog.html): Исправлен сбой в [`tokenize.generate_tokens()`](https://python-all.ru/3/library/tokenize.html#tokenize.generate_tokens) при определённом некорректном вводе. Исправление от Михаила Ефимова.
- [gh-140551](https://python-all.ru/3/whatsnew/changelog.html): Исправлен сбой в [`dict`](https://python-all.ru/3/library/stdtypes.html#dict), если [`dict.clear()`](https://python-all.ru/3/library/stdtypes.html#dict.clear) вызывается на этапе поиска. Исправление от Михаила Ефимова и Инады Наоки.
- [gh-140517](https://python-all.ru/3/whatsnew/changelog.html): Исправлена утечка ссылок при итерации по результату [`map()`](https://python-all.ru/3/library/functions.html#map) с `strict=True`, когда входные итерируемые объекты имеют разную длину. Исправление от Михаила Ефимова.
- [gh-140471](https://python-all.ru/3/whatsnew/changelog.html): Исправление потенциального переполнения буфера при инициализации узла [`ast.AST`](https://python-all.ru/3/library/ast.html#ast.AST) при обнаружении некорректного [`_fields`](https://python-all.ru/3/library/ast.html#ast.AST._fields), содержащего не-[`str`](https://python-all.ru/3/library/stdtypes.html#str).
- [gh-140431](https://python-all.ru/3/whatsnew/changelog.html): Исправлен сбой в [сборщике мусора](https://python-all.ru/3/glossary.html#term-garbage-collection) Python из-за частично инициализированных объектов [корутины](https://python-all.ru/3/glossary.html#term-coroutine), когда включена глубина отслеживания происхождения корутины ([`sys.set_coroutine_origin_tracking_depth()`](https://python-all.ru/3/library/sys.html#sys.set_coroutine_origin_tracking_depth)).

### Библиотека

- [gh-140398](https://python-all.ru/3/whatsnew/changelog.html): Исправление утечек памяти в функциях [`readline`](https://python-all.ru/3/library/readline.html#module-readline) [`read_init_file()`](https://python-all.ru/3/library/readline.html#readline.read_init_file), [`read_history_file()`](https://python-all.ru/3/library/readline.html#readline.read_history_file), [`write_history_file()`](https://python-all.ru/3/library/readline.html#readline.write_history_file) и [`append_history_file()`](https://python-all.ru/3/library/readline.html#readline.append_history_file) при сбое [`PySys_Audit()`](https://python-all.ru/3/c-api/sys.html#c.PySys_Audit).

### Ядро и встроенные модули

- [gh-140406](https://python-all.ru/3/whatsnew/changelog.html): Исправление утечки памяти, когда метод [`__hash__()`](https://python-all.ru/3/reference/datamodel.html#object.__hash__) объекта возвращает объект, не являющийся [`int`](https://python-all.ru/3/library/functions.html#int).
- [gh-140358](https://python-all.ru/3/whatsnew/changelog.html): Восстановлено отображение затраченного времени и количества недостижимых объектов в отладочном выводе GC. Эти данные были случайно удалены при рефакторинге `gc.c`. Теперь журнал отладки снова сообщает о времени сборки и количестве недостижимых объектов. Вклад Пола Грёноса Дранге.
- [gh-140306](https://python-all.ru/3/whatsnew/changelog.html): Исправление утечек памяти в операциях с каналами между интерпретаторами и при обработке общего пространства имён.
- [gh-140301](https://python-all.ru/3/whatsnew/changelog.html): Исправление утечки памяти `PyConfig` в подынтерпретаторах.
- [gh-140257](https://python-all.ru/3/whatsnew/changelog.html): Исправление состояния гонки между interpreter\_clear() и take\_gil() на eval\_breaker во время финализации с потоками-демонами.
- [gh-139951](https://python-all.ru/3/whatsnew/changelog.html): Исправление регрессии производительности GC для растущей кучи, состоящей в основном из маленьких кортежей.

  - Подсчитывается количество фактически отслеживаемых объектов, а не отслеживаемых. Это гарантирует, что отмена отслеживания кортежей даёт желаемый эффект снижения накладных расходов GC.
  - Не отслеживает большинство неотслеживаемых кортежей во время создания. Это предотвращает чрезмерное количество сборок мусора из-за большого числа маленьких кортежей.
- [gh-140104](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка с обработкой исключений в JIT. Исправление от Кена Джина. Об ошибке сообщил Даниэль Динис.
- [gh-140061](https://python-all.ru/3/whatsnew/changelog.html): Исправление проверки того, является ли объект единственной ссылкой, для обеспечения совместимости со свободной потокостью. Исправление от Сергея Мирьянова.
- [gh-140067](https://python-all.ru/3/whatsnew/changelog.html): Исправление утечки памяти при создании подынтерпретатора.
- [gh-140000](https://python-all.ru/3/whatsnew/changelog.html): Исправление потенциальной утечки памяти при наличии цикла ссылок между экземпляром [`typing.TypeAliasType`](https://python-all.ru/3/library/typing.html#typing.TypeAliasType), [`typing.TypeVar`](https://python-all.ru/3/library/typing.html#typing.TypeVar), [`typing.ParamSpec`](https://python-all.ru/3/library/typing.html#typing.ParamSpec) или [`typing.TypeVarTuple`](https://python-all.ru/3/library/typing.html#typing.TypeVarTuple) и его атрибутом `__name__`. Исправление от Михаила Ефимова.
- [gh-139914](https://python-all.ru/3/whatsnew/changelog.html): Восстановлена поддержка HP PA-RISC, у которого стек растёт вверх.
- [gh-139988](https://python-all.ru/3/whatsnew/changelog.html): Исправление утечки памяти при неудачном создании типа [`Union`](https://python-all.ru/3/library/typing.html#typing.Union). Исправление от Бенедикта Трана.
- [gh-139748](https://python-all.ru/3/whatsnew/changelog.html): Исправление утечек ссылок в ветках ошибок функций, принимающих строки пути или байты, таких как [`compile()`](https://python-all.ru/3/library/functions.html#compile) и [`os.system()`](https://python-all.ru/3/library/os.html#os.system). Исправление от Бенедикта Трана.
- [gh-139516](https://python-all.ru/3/whatsnew/changelog.html): Исправление ошибочного начала спецификации формата с двоеточия лямбды в f-строке в токенизаторе.
- [gh-139640](https://python-all.ru/3/whatsnew/changelog.html): [`ast.parse()`](https://python-all.ru/3/library/ast.html#ast.parse) больше не выводит предупреждения о синтаксисе для `return`/`break`/`continue` в `finally` (см. [**PEP 765**](https://python-all.ru/3/whatsnew/changelog.html)) – они выводятся только во время компиляции.
- [gh-139640](https://python-all.ru/3/whatsnew/changelog.html): Исправление проглатывания некоторых синтаксических предупреждений в разных модулях, если они случайно имеют одинаковое сообщение и выводятся с одной и той же строки. Исправление дублирования предупреждений в блоке `finally`.
- [gh-63161](https://python-all.ru/3/whatsnew/changelog.html): Поддержка не-UTF-8 shebang и комментариев в исходных файлах Python, если указана не-UTF-8 кодировка. Обнаружение ошибки декодирования в комментариях для кодировки по умолчанию (UTF-8). Показ строки и позиции ошибки декодирования для кодировки по умолчанию в трассировке. Показ строки, содержащей coding cookie, когда она конфликтует с BOM, в трассировке.

### Библиотека

- [gh-116738](https://python-all.ru/3/whatsnew/changelog.html): Сделать [`mmap`](https://python-all.ru/3/library/mmap.html#module-mmap) потокобезопасным в [свободной потоковой](https://python-all.ru/3/glossary.html#term-free-threading) сборке.

### Ядро и встроенные модули

- [gh-138558](https://python-all.ru/3/whatsnew/changelog.html): Исправление обработки нестандартных t-string аннотаций в annotationlib. Исправление от Дэйва Пека.
- [gh-134466](https://python-all.ru/3/whatsnew/changelog.html): Не запускайте PyREPL в окружении с ограниченными возможностями, где установка атрибутов termios запрещена.
- [gh-138944](https://python-all.ru/3/whatsnew/changelog.html): Исправлено [`SyntaxError`](https://python-all.ru/3/library/exceptions.html#SyntaxError) сообщение, когда недопустимый синтаксис появляется в той же строке, что и допустимый оператор `import ... as ...` или `from ... import ... as ...`. Исправление от Brian Schubert.
- [gh-105487](https://python-all.ru/3/whatsnew/changelog.html): Удалены несуществующие [`__copy__()`](https://python-all.ru/3/library/copy.html#object.__copy__), [`__deepcopy__()`](https://python-all.ru/3/library/copy.html#object.__deepcopy__) и [`__bases__`](https://python-all.ru/3/reference/datamodel.html#type.__bases__) из записей [`__dir__()`](https://python-all.ru/3/reference/datamodel.html#object.__dir__) в [`types.GenericAlias`](https://python-all.ru/3/library/types.html#types.GenericAlias).
- [gh-69605](https://python-all.ru/3/whatsnew/changelog.html): Исправлено отсутствие некоторых подмодулей стандартной библиотеки в автодополнении импортов [REPL](https://python-all.ru/3/glossary.html#term-REPL).

### Библиотека

- [gh-116738](https://python-all.ru/3/whatsnew/changelog.html): Сделать [`cProfile`](https://python-all.ru/3/library/profile.html#module-cProfile) потокобезопасным в сборке [free threaded](https://python-all.ru/3/glossary.html#term-free-threading).
- [gh-138004](https://python-all.ru/3/whatsnew/changelog.html): На платформах Solaris/Illumos имена потоков теперь кодируются как ASCII, чтобы избежать ошибок в системах (например, OpenIndiana), которые не поддерживают не-ASCII имена.

### Ядро и встроенные модули

- [gh-137433](https://python-all.ru/3/whatsnew/changelog.html): Исправлена потенциальная взаимоблокировка в сборке [free threading](https://python-all.ru/3/glossary.html#term-free-threading), когда потоки-демоны включают или отключают профилирование или трассировку в то время, как главный поток завершает работу интерпретатора.
- [gh-137400](https://python-all.ru/3/whatsnew/changelog.html): Исправлено падение в сборке [free threading](https://python-all.ru/3/glossary.html#term-free-threading) при отключении профилирования или трассировки во всех потоках с помощью [`PyEval_SetProfileAllThreads()`](https://python-all.ru/3/c-api/profiling.html#c.PyEval_SetProfileAllThreads) или [`PyEval_SetTraceAllThreads()`](https://python-all.ru/3/c-api/profiling.html#c.PyEval_SetTraceAllThreads) или их эквивалентов на Python [`threading.settrace_all_threads()`](https://python-all.ru/3/library/threading.html#threading.settrace_all_threads) и [`threading.setprofile_all_threads()`](https://python-all.ru/3/library/threading.html#threading.setprofile_all_threads).
- [gh-58124](https://python-all.ru/3/whatsnew/changelog.html): Исправлено название кодировки Python в ошибках Unicode для кодировщика кодовой страницы: используйте “cp65000” и “cp65001” вместо “CP\_UTF7” и “CP\_UTF8”, которые не являются допустимыми именами кодировок Python. Исправление от Victor Stinner.
- [gh-132657](https://python-all.ru/3/whatsnew/changelog.html): Улучшена производительность [`frozenset`](https://python-all.ru/3/library/stdtypes.html#frozenset) за счёт удаления блокировок в сборке free-threading.
- [gh-133400](https://python-all.ru/3/whatsnew/changelog.html): Исправлено поведение Ctrl+D (^D) в модуле \_pyrepl для соответствия старому поведению REPL до версии 3.13.
- [gh-128640](https://python-all.ru/3/whatsnew/changelog.html): Исправлено падение при использовании потоков внутри подынтерпретатора.

### C API

- [gh-137422](https://python-all.ru/3/whatsnew/changelog.html): Исправлено состояние гонки в сборке [free threading](https://python-all.ru/3/glossary.html#term-free-threading) в [`PyImport_AddModuleRef()`](https://python-all.ru/3/c-api/import.html#c.PyImport_AddModuleRef). Ранее было возможно, что два вызова функции возвращали два разных объекта, только один из которых сохранялся в [`sys.modules`](https://python-all.ru/3/library/sys.html#sys.modules).
- [gh-140042](https://python-all.ru/3/whatsnew/changelog.html): Удалён вызов sqlite3\_shutdown, который мог вызывать закрытие соединений для sqlite при использовании с несколькими подынтерпретаторами.
- [gh-141042](https://python-all.ru/3/whatsnew/changelog.html): Обеспечить нулевую нагрузку qNaN в [`PyFloat_Pack2()`](https://python-all.ru/3/c-api/float.html#c.PyFloat_Pack2) и [`PyFloat_Pack4()`](https://python-all.ru/3/c-api/float.html#c.PyFloat_Pack4) при преобразовании к более узкому формату с плавающей точкой. Исправление от Sergey B Kirpichev.
- [gh-140487](https://python-all.ru/3/whatsnew/changelog.html): Исправлено [`Py_RETURN_NOTIMPLEMENTED`](https://python-all.ru/3/c-api/object.html#c.Py_RETURN_NOTIMPLEMENTED) в ограниченном C API 3.11 и более старых версиях: не рассматривать `Py_NotImplemented` как бессмертный. Исправление от Victor Stinner.
- [gh-140153](https://python-all.ru/3/whatsnew/changelog.html): Исправлено определение [`Py_REFCNT()`](https://python-all.ru/3/c-api/refcounting.html#c.Py_REFCNT) в ограниченном C API 3.11-3.13. Исправление от Victor Stinner.
- [gh-139653](https://python-all.ru/3/whatsnew/changelog.html): Добавлены функции [`PyUnstable_ThreadState_SetStackProtection()`](https://python-all.ru/3/c-api/threads.html#c.PyUnstable_ThreadState_SetStackProtection) и [`PyUnstable_ThreadState_ResetStackProtection()`](https://python-all.ru/3/c-api/threads.html#c.PyUnstable_ThreadState_ResetStackProtection) для установки базового адреса защиты стека и размера защиты стека состояния потока Python. Исправление от Victor Stinner.

### Сборка

- [gh-141808](https://python-all.ru/3/whatsnew/changelog.html): Не генерировать шаблоны JIT дважды в случае сборок PGO на Windows.
- [gh-141784](https://python-all.ru/3/whatsnew/changelog.html): Исправлена компиляция `_remote_debugging_module.c` на 32-разрядной Linux. Включайте Python.h перед системными заголовками, чтобы гарантировать, что `_remote_debugging_module.c` использует те же типы (ABI), что и Python. Исправление от Victor Stinner.
- [gh-140768](https://python-all.ru/3/whatsnew/changelog.html): Предупреждать, когда версия WASI SDK не соответствует поддерживаемой.
- [gh-140513](https://python-all.ru/3/whatsnew/changelog.html): Генерировать понятную ошибку компиляции, когда `_Py_TAIL_CALL_INTERP` включён, но `preserve_none` или `musttail` не поддерживается.
- [gh-140189](https://python-all.ru/3/whatsnew/changelog.html): Сборки для iOS были добавлены в CI.
- [gh-138489](https://python-all.ru/3/whatsnew/changelog.html): При кросс-компиляции для WASI с помощью `build_wasm` или `build_emscripten` шаг `build-details.json` теперь включён в процесс сборки, как и при нативной сборке.

  Это исправляет задачу `libinstall`, которая требует файл `build-details.json` в процессе.
- [gh-137618](https://python-all.ru/3/whatsnew/changelog.html): `PYTHON_FOR_REGEN` теперь требует Python 3.10–3.15. Исправление от Adam Turner.
- [gh-123681](https://python-all.ru/3/whatsnew/changelog.html): Проверять поведение `strftime()` во время выполнения, а не во время компиляции, для поддержки кросс-компиляции. Удалён внутренний макрос `_Py_NORMALIZE_CENTURY`.

## Python 3.14.0 финальный

*Дата выпуска: 2025-10-07*

### macOS

- [gh-124111](https://python-all.ru/3/whatsnew/changelog.html): Обновление установщика macOS для использования Tcl/Tk 8.6.17.
- [gh-139573](https://python-all.ru/3/whatsnew/changelog.html): Обновлена встроенная версия OpenSSL до 3.0.18.

### Windows

- [gh-139573](https://python-all.ru/3/whatsnew/changelog.html): Обновлена встроенная версия OpenSSL до 3.0.18.

### Tools/Demos

- [gh-139330](https://python-all.ru/3/whatsnew/changelog.html): Инструмент генерации SBOM не перекрёстно проверял версию и значения контрольных сумм со скриптом `Modules/expat/refresh.sh`, что приводило к устареванию значений при плановых обновлениях.
- [gh-132006](https://python-all.ru/3/whatsnew/changelog.html): XCframeworks теперь включают манифесты конфиденциальности для соблюдения требований App Store Apple.
- [gh-138171](https://python-all.ru/3/whatsnew/changelog.html): Добавлен скрипт для сборки iOS XCframework. В рамках этого изменения папка верхнего уровня `iOS` была перемещена и теперь является подпапкой `Apple`.

### Security

- [gh-139400](https://python-all.ru/3/whatsnew/changelog.html): [`xml.parsers.expat`](https://python-all.ru/3/library/pyexpat.html#module-xml.parsers.expat): Гарантировать, что родительские парсеры Expat собираются сборщиком мусора только после того, как на них больше нет ссылок из подпарсеров, созданных с помощью [`ExternalEntityParserCreate()`](https://python-all.ru/3/library/pyexpat.html#xml.parsers.expat.xmlparser.ExternalEntityParserCreate). Исправление от Sebastian Pipping.

### Library

- [gh-139312](https://python-all.ru/3/whatsnew/changelog.html): Обновление встроенной libexpat до 2.7.3

## Python 3.14.0 release candidate 3

*Дата выпуска: 2025-09-18*

### Windows

- [gh-138896](https://python-all.ru/3/whatsnew/changelog.html): Исправление ошибки установки C runtime на необновлённых машинах Windows

### Tools/Demos

- [gh-137873](https://python-all.ru/3/whatsnew/changelog.html): Тестовый раннер для iOS упрощён, что решило некоторые проблемы, обнаруженные при использовании раннера в тестовых средах GitHub Actions и Azure Pipelines.

### Security

- [gh-135661](https://python-all.ru/3/whatsnew/changelog.html): Исправлен парсинг секции CDATA в [`html.parser.HTMLParser`](https://python-all.ru/3/library/html.parser.html#html.parser.HTMLParser) в соответствии со стандартом HTML5: `] ]>` и `]] >` больше не завершают секцию CDATA. Добавлен приватный метод `_set_support_cdata()`, который можно использовать для указания способа парсинга `<[CDATA[` – как CDATA-секция в иностранном содержимом (SVG или MathML) или как ложный комментарий в пространстве имён HTML.

### Library

- [gh-138998](https://python-all.ru/3/whatsnew/changelog.html): Обновление встроенной libexpat до 2.7.2
- [gh-118803](https://python-all.ru/3/whatsnew/changelog.html): Возвращены [`collections.abc.ByteString`](https://python-all.ru/3/library/collections.abc.html#collections.abc.ByteString) и [`typing.ByteString`](https://python-all.ru/3/library/typing.html#typing.ByteString). Оба были удалены в предыдущих альфа-, бета- и кандидатах в релиз Python 3.14, но их удаление теперь отложено до Python 3.17.
- [gh-137226](https://python-all.ru/3/whatsnew/changelog.html): Исправлены вызовы [`typing.get_type_hints()`](https://python-all.ru/3/library/typing.html#typing.get_type_hints) для обобщённых классов [`typing.TypedDict`](https://python-all.ru/3/library/typing.html#typing.TypedDict), определённых с помощью строковых аннотаций.
- [gh-138804](https://python-all.ru/3/whatsnew/changelog.html): Возвращается [`TypeError`](https://python-all.ru/3/library/exceptions.html#TypeError) вместо [`AttributeError`](https://python-all.ru/3/library/exceptions.html#AttributeError), когда в [`shlex.quote()`](https://python-all.ru/3/library/shlex.html#shlex.quote) передан аргумент неверного типа. Это восстанавливает поведение функции до версии 3.14.
- [gh-128636](https://python-all.ru/3/whatsnew/changelog.html): Исправлен сбой в PyREPL при перезаписи os.environ недопустимым значением для mac
- [gh-138514](https://python-all.ru/3/whatsnew/changelog.html): Возвращается [`ValueError`](https://python-all.ru/3/library/exceptions.html#ValueError), когда в параметр *echo\_char* функции [`getpass.getpass()`](https://python-all.ru/3/library/getpass.html#getpass.getpass) передаётся строка из нескольких символов. Исправление от Benjamin Johnson.
- [gh-138515](https://python-all.ru/3/whatsnew/changelog.html): [`email`](https://python-all.ru/3/library/email.html#module-email) добавлен в сборку Emscripten.
- [gh-99948](https://python-all.ru/3/whatsnew/changelog.html): [`ctypes.util.find_library()`](https://python-all.ru/3/library/ctypes.html#ctypes.util.find_library) теперь работает в сборке Emscripten.
- [gh-138253](https://python-all.ru/3/whatsnew/changelog.html): Добавлен параметр *block* в методы `put()` и `get()` очередей [`concurrent.interpreters`](https://python-all.ru/3/library/concurrent.interpreters.html#module-concurrent.interpreters) для совместимости с интерфейсом [`queue.Queue`](https://python-all.ru/3/library/queue.html#queue.Queue).
- [gh-138133](https://python-all.ru/3/whatsnew/changelog.html): Предотвращение бесконечного цикла traceback при отправке Ctrl+C в Python через `strace`.
- [gh-134869](https://python-all.ru/3/whatsnew/changelog.html): Исправлена проблема, когда нажатие Ctrl+C во время автодополнения по Tab в REPL приводило к повреждению меню автодополнения.
- [gh-90548](https://python-all.ru/3/whatsnew/changelog.html): Исправлено обнаружение `musl` для [`platform.libc_ver()`](https://python-all.ru/3/library/platform.html#platform.libc_ver) на Alpine Linux при сборке с –strip-all.
- [gh-136134](https://python-all.ru/3/whatsnew/changelog.html): `SMTP.auth_cram_md5()` теперь вызывает [`SMTPException`](https://python-all.ru/3/library/smtplib.html#smtplib.SMTPException) вместо [`ValueError`](https://python-all.ru/3/library/exceptions.html#ValueError), если Python был собран без поддержки MD5. В частности, клиенты [`SMTP`](https://python-all.ru/3/library/smtplib.html#smtplib.SMTP) не будут пытаться использовать этот метод, даже если предполагается, что удалённый сервер его поддерживает. Исправление от Bénédikt Tran.
- [gh-136134](https://python-all.ru/3/whatsnew/changelog.html): [`IMAP4.login_cram_md5`](https://python-all.ru/3/library/imaplib.html#imaplib.IMAP4.login_cram_md5) теперь вызывает [`IMAP4.error`](https://python-all.ru/3/library/imaplib.html#imaplib.IMAP4.error), если аутентификация CRAM-MD5 не поддерживается. Исправление от Bénédikt Tran.
- [gh-134953](https://python-all.ru/3/whatsnew/changelog.html): Расширение темы `_colorize` с помощью `keyword_constant` и реализация в [REPL](https://python-all.ru/3/glossary.html#term-REPL).

### Ядро и встроенные объекты

- [gh-71810](https://python-all.ru/3/whatsnew/changelog.html): Вызывать [`OverflowError`](https://python-all.ru/3/library/exceptions.html#OverflowError) для `(-1).to_bytes()` при знаковых преобразованиях, когда количество байт равно нулю. Исправление от Sergey B Kirpichev.
- [gh-138192](https://python-all.ru/3/whatsnew/changelog.html): Fix [`contextvars`](https://python-all.ru/3/library/contextvars.html#module-contextvars) initialization so that all subinterpreters are assigned the [`MISSING`](https://python-all.ru/3/library/contextvars.html#contextvars.Token.MISSING) value.
- [gh-138479](https://python-all.ru/3/whatsnew/changelog.html): Исправлен сбой, когда `__typing_subst__` обобщённого объекта возвращает объект, не являющийся [`tuple`](https://python-all.ru/3/library/stdtypes.html#tuple).
- [gh-138372](https://python-all.ru/3/whatsnew/changelog.html): Исправлен [`SyntaxWarning`](https://python-all.ru/3/library/exceptions.html#SyntaxWarning), выдаваемый для ошибочных выражений индексации, включающих [шаблонные строковые литералы](https://python-all.ru/3/reference/lexical_analysis.html#t-strings). Исправление от Brian Schubert.
- [gh-138318](https://python-all.ru/3/whatsnew/changelog.html): Стандартный REPL теперь не подсвечивает встроенные имена (например, [`set`](https://python-all.ru/3/library/stdtypes.html#set) или [`format()`](https://python-all.ru/3/library/functions.html#format)), когда они используются как имена атрибутов (например, в `value.set` или `text.format`).
- [gh-138349](https://python-all.ru/3/whatsnew/changelog.html): Исправлен сбой в некоторых случаях, когда модуль содержит как аннотацию на уровне модуля, так и включение (comprehension).
- [gh-137384](https://python-all.ru/3/whatsnew/changelog.html): Исправлен сбой при использовании модуля [`warnings`](https://python-all.ru/3/library/warnings.html#module-warnings) в финализаторе во время завершения работы. Исправление от Kumar Aditya.
- [gh-137883](https://python-all.ru/3/whatsnew/changelog.html): Исправлена неконтролируемая рекурсия при вызове функции с именованными аргументами.
- [gh-137079](https://python-all.ru/3/whatsnew/changelog.html): Исправлено распознавание опечаток в ключевых словах при разборе файлов. Исправление от Pablo Galindo.
- [gh-137728](https://python-all.ru/3/whatsnew/changelog.html): Исправлена обработка JIT большого количества локальных переменных. Ранее это вызывало segfault.
- [gh-137576](https://python-all.ru/3/whatsnew/changelog.html): Исправление некорректного отображения исходного кода в трассировках из базового REPL при указании [`PYTHONSTARTUP`](https://python-all.ru/3/using/cmdline.html#envvar-PYTHONSTARTUP). Патч от Adam Hartz.

## Python 3.14.0 release candidate 2

*Дата выпуска: 2025-08-14*

### macOS

- [gh-137450](https://python-all.ru/3/whatsnew/changelog.html): Улучшения управления путями в оболочке установщика macOS: отделение `Shell profile updater` сценария postinstall установщика от `Update Shell Profile.command` для более надёжной обработки ошибок.
- [gh-137134](https://python-all.ru/3/whatsnew/changelog.html): Обновление установщика macOS для поставки с SQLite версии 3.50.4.

### Windows

- [gh-137134](https://python-all.ru/3/whatsnew/changelog.html): Обновление установщика Windows для поставки с SQLite 3.50.4.

### Библиотека

- [gh-137426](https://python-all.ru/3/whatsnew/changelog.html): Удаление кода, объявляющего `importlib.abc.ResourceLoader` устаревшим. Он задокументирован как устаревший, но оставлен для обратной совместимости с другими классами в `importlib.abc`.
- [gh-137282](https://python-all.ru/3/whatsnew/changelog.html): Исправлено автодополнение по Tab и [`dir()`](https://python-all.ru/3/library/functions.html#dir) на [`concurrent.futures`](https://python-all.ru/3/library/concurrent.futures.html#module-concurrent.futures).
- [gh-137257](https://python-all.ru/3/whatsnew/changelog.html): Обновление версии pip, входящей в ensurepip, до версии 25.2
- [gh-137226](https://python-all.ru/3/whatsnew/changelog.html): Исправлено поведение [`annotationlib.ForwardRef.evaluate()`](https://python-all.ru/3/library/annotationlib.html#annotationlib.ForwardRef.evaluate), когда передан параметр *type\_params*, а имя параметра типа также присутствует в обрамляющей области видимости.
- [gh-130522](https://python-all.ru/3/whatsnew/changelog.html): Исправлено не вызывающее исключение [`TypeError`](https://python-all.ru/3/library/exceptions.html#TypeError), возникшее во время [завершения работы интерпретатора](https://python-all.ru/3/glossary.html#term-interpreter-shutdown) в модуле [`threading`](https://python-all.ru/3/library/threading.html#module-threading).
- [gh-137059](https://python-all.ru/3/whatsnew/changelog.html): Исправлена обработка URL-адресов файлов с буквой диска Windows в авторитетной части URL с помощью [`urllib.request.url2pathname()`](https://python-all.ru/3/library/urllib.request.html#urllib.request.url2pathname). Это исправляет регрессию в более ранних предварительных выпусках Python 3.14.
- [gh-130577](https://python-all.ru/3/whatsnew/changelog.html): [`tarfile`](https://python-all.ru/3/library/tarfile.html#module-tarfile) теперь проверяет архивы, гарантируя, что смещения элементов неотрицательны. (Автор: Alexander Enrique Urieles Nieto в [gh-130577](https://python-all.ru/3/whatsnew/changelog.html).)
- [gh-135228](https://python-all.ru/3/whatsnew/changelog.html): Когда [`dataclasses`](https://python-all.ru/3/library/dataclasses.html#module-dataclasses) заменяет класс на slotted dataclass, исходный класс снова может быть собран сборщиком мусора. Более ранние изменения в Python 3.14 приводили к тому, что этот класс всегда оставался в памяти вместе с заменяющим классом, созданным `dataclasses`.

### Документация

- [gh-136155](https://python-all.ru/3/whatsnew/changelog.html): Теперь в CI проверяется наличие фатальных ошибок при сборках EPUB.

### Ядро и встроенные объекты

- [gh-137400](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка в сборке [free threading](https://python-all.ru/3/glossary.html#term-free-threading), возникавшая при отключении профилирования или трассировки во всех потоках с помощью [`PyEval_SetProfileAllThreads()`](https://python-all.ru/3/c-api/profiling.html#c.PyEval_SetProfileAllThreads) или [`PyEval_SetTraceAllThreads()`](https://python-all.ru/3/c-api/profiling.html#c.PyEval_SetTraceAllThreads) или их эквивалентов на Python [`threading.settrace_all_threads()`](https://python-all.ru/3/library/threading.html#threading.settrace_all_threads) и [`threading.setprofile_all_threads()`](https://python-all.ru/3/library/threading.html#threading.setprofile_all_threads).
- [gh-137314](https://python-all.ru/3/whatsnew/changelog.html): Исправлен регресс, из-за которого сырые f-строки неправильно интерпретировали escape-последовательности в спецификациях формата. Теперь сырые f-строки корректно сохраняют буквальные обратные слеши в спецификациях формата, как это было в Python 3.11. Например, `rf"{obj:\xFF}"` теперь правильно даёт `'\\xFF'` вместо `'ÿ'`. Исправление от Pablo Galindo.
- [gh-137308](https://python-all.ru/3/whatsnew/changelog.html): Отдельная docstring в теле узла оптимизируется в инструкцию [`pass`](https://python-all.ru/3/reference/simple_stmts.html#pass), чтобы тело узла никогда не было пустым. В противном случае возникала [`ValueError`](https://python-all.ru/3/library/exceptions.html#ValueError) в [`compile()`](https://python-all.ru/3/library/functions.html#compile).
- [gh-137288](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка, из-за которой некоторые инструкции байткода булева выражения не были связаны с правильным обработчиком исключений.
- [gh-134291](https://python-all.ru/3/whatsnew/changelog.html): Удалено использование некоторых новых API macOS из JIT-компилятора для восстановления совместимости с более старыми целевыми версиями OSX 10.15.
- [gh-131338](https://python-all.ru/3/whatsnew/changelog.html): Отключены проверки вычисляемого лимита стека на платформах Linux без glibc для исправления падений при глубокой рекурсии.
- [gh-136870](https://python-all.ru/3/whatsnew/changelog.html): Исправлены состояния гонки при деинструментировании байткода объектов кода, выполняющихся одновременно в потоках.

### C API

- [gh-137573](https://python-all.ru/3/whatsnew/changelog.html): Помечен `_PyOptimizer_Optimize` как [`Py_NO_INLINE`](https://python-all.ru/3/c-api/intro.html#c.Py_NO_INLINE) для предотвращения падений из-за переполнения стека на macOS.

### Сборка

- [gh-132339](https://python-all.ru/3/whatsnew/changelog.html): Добавлена поддержка OpenSSL 3.5.

## Python 3.14.0 release candidate 1

*Дата выпуска: 2025-07-22*

### Инструменты/Демонстрации

- [gh-136251](https://python-all.ru/3/whatsnew/changelog.html): Исправления и улучшения юзабилити для `Tools/wasm/emscripten/web_example`

### Безопасность

- [gh-135661](https://python-all.ru/3/whatsnew/changelog.html): Исправлен разбор атрибутов с пробелами вокруг разделителя `=` в [`html.parser.HTMLParser`](https://python-all.ru/3/library/html.parser.html#html.parser.HTMLParser) в соответствии со стандартом HTML5.
- [gh-118350](https://python-all.ru/3/whatsnew/changelog.html): Исправлена поддержка режима escapable raw text (элементы “textarea” и “title”) в [`html.parser.HTMLParser`](https://python-all.ru/3/library/html.parser.html#html.parser.HTMLParser).

### Библиотека

- [gh-136170](https://python-all.ru/3/whatsnew/changelog.html): Удалено невыпущенное свойство `zipfile.ZipFile.data_offset`, добавленное в 3.14.0a7, поскольку не было полной ясности, какое поведение оно должно иметь в некоторых ситуациях, и результат не всегда соответствовал ожиданиям пользователя.
- [gh-124621](https://python-all.ru/3/whatsnew/changelog.html): pyrepl теперь работает в Emscripten.
- [gh-136874](https://python-all.ru/3/whatsnew/changelog.html): Отбрасываются query-параметры и фрагмент URL в [`urllib.request.url2pathname()`](https://python-all.ru/3/library/urllib.request.html#urllib.request.url2pathname).
- [gh-130645](https://python-all.ru/3/whatsnew/changelog.html): Цветная справка включена по умолчанию в [`argparse`](https://python-all.ru/3/library/argparse.html#module-argparse).
- [gh-136549](https://python-all.ru/3/whatsnew/changelog.html): Исправлена сигнатура [`threading.excepthook()`](https://python-all.ru/3/library/threading.html#threading.excepthook).
- [gh-136523](https://python-all.ru/3/whatsnew/changelog.html): Исправлена проблема, из-за которой [`wave.Wave_write`](https://python-all.ru/3/library/wave.html#wave.Wave_write) генерировал unraisable, когда open вызывает исключение.
- [gh-52876](https://python-all.ru/3/whatsnew/changelog.html): Добавлен отсутствующий параметр `keepends` (по умолчанию `True`) в `codecs.StreamReaderWriter.readline()` и `codecs.StreamReaderWriter.readlines()`.
- [gh-136470](https://python-all.ru/3/whatsnew/changelog.html): Исправлено имя потока по умолчанию для [`concurrent.futures.InterpreterPoolExecutor`](https://python-all.ru/3/library/concurrent.futures.html#concurrent.futures.InterpreterPoolExecutor).
- [gh-136476](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка, из-за которой `get_async_stack_trace` функция пропускала некоторые фреймы в трассировке стека.
- [gh-136434](https://python-all.ru/3/whatsnew/changelog.html): Исправлена генерация документации для `UnboundItem` в [`concurrent.interpreters`](https://python-all.ru/3/library/concurrent.interpreters.html#module-concurrent.interpreters) при запуске с [`-OO`](https://python-all.ru/3/using/cmdline.html#cmdoption-OO).
- [gh-136380](https://python-all.ru/3/whatsnew/changelog.html): Возвращает [`AttributeError`](https://python-all.ru/3/library/exceptions.html#AttributeError) при доступе к [`concurrent.futures.InterpreterPoolExecutor`](https://python-all.ru/3/library/concurrent.futures.html#concurrent.futures.InterpreterPoolExecutor), если субинтерпретаторы недоступны.
- [gh-134759](https://python-all.ru/3/whatsnew/changelog.html): Исправлена [`UnboundLocalError`](https://python-all.ru/3/library/exceptions.html#UnboundLocalError) в [`email.message.Message.get_payload()`](https://python-all.ru/3/library/email.compat32-message.html#email.message.Message.get_payload), когда декодируемые данные являются объектом [`bytes`](https://python-all.ru/3/library/stdtypes.html#bytes). Патч от Климента Ламонова.
- [gh-134657](https://python-all.ru/3/whatsnew/changelog.html): [`asyncio`](https://python-all.ru/3/library/asyncio.html#module-asyncio): удалены некоторые закрытые имена из `asyncio.__all__`.

### Ядро и встроенные модули

- [gh-136801](https://python-all.ru/3/whatsnew/changelog.html): Исправлена подсветка синтаксиса PyREPL для match-выражений после многострочного case. Вклад Ольги Матулы.

### Библиотека

- [gh-136421](https://python-all.ru/3/whatsnew/changelog.html): Исправлен сбой при одновременной инициализации [`datetime`](https://python-all.ru/3/library/datetime.html#module-datetime).

### Ядро и встроенные модули

- [gh-136541](https://python-all.ru/3/whatsnew/changelog.html): Исправлены некоторые проблемы с перф-трамплинами на x86-64 и aarch64. Трамплины некорректно генерировались для некоторых случаев, что могло приводить к неправильной работе интеграции перфа. Патч от Пабло Галиндо.
- [gh-136517](https://python-all.ru/3/whatsnew/changelog.html): Исправлена опечатка, которая мешала выводу несобираемых объектов, когда был установлен режим [`gc.DEBUG_UNCOLLECTABLE`](https://python-all.ru/3/library/gc.html#gc.DEBUG_UNCOLLECTABLE).
- [gh-136525](https://python-all.ru/3/whatsnew/changelog.html): Исправлена проблема, из-за которой байткод для потока не инструментировался для вновь создаваемых потоков.
- [gh-132661](https://python-all.ru/3/whatsnew/changelog.html): `Interpolation.expression` теперь имеет значение по умолчанию – пустая строка.
- [gh-132661](https://python-all.ru/3/whatsnew/changelog.html): Отражает недавнее изменение [**PEP 750**](https://python-all.ru/3/whatsnew/changelog.html).

  Запрещена конкатенация `string.templatelib.Template` и [`str`](https://python-all.ru/3/library/stdtypes.html#str). Также запрещена неявная конкатенация t-строковых литералов с обычными строковыми или f-строковыми литералами.

### Библиотека

- [gh-116738](https://python-all.ru/3/whatsnew/changelog.html): Сделать функции в [`grp`](https://python-all.ru/3/library/grp.html#module-grp) потокобезопасными в сборке [free threaded](https://python-all.ru/3/glossary.html#term-free-threading).

### Ядро и встроенные модули

- [gh-135148](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка, из-за которой f-строковые отладочные выражения (с =) некорректно удаляли части строк, содержащих экранированные кавычки и символы #. Патч от Пабло Галиндо.
- [gh-133136](https://python-all.ru/3/whatsnew/changelog.html): Ограничение избыточного использования памяти в сборке [free threading](https://python-all.ru/3/glossary.html#term-free-threading) при изменении размера большого словаря или списка и доступе к нему из нескольких потоков.
- [gh-91153](https://python-all.ru/3/whatsnew/changelog.html): Исправлен сбой при одновременном изменении [`bytearray`](https://python-all.ru/3/library/stdtypes.html#bytearray) во время присваивания элемента.
- [gh-127971](https://python-all.ru/3/whatsnew/changelog.html): Исправлено чтение за пределами строки на один символ в поиске строки.

### C API

- [gh-112068](https://python-all.ru/3/whatsnew/changelog.html): Отмена поддержки nullable-аргументов в [`PyArg_Parse()`](https://python-all.ru/3/c-api/arg.html#c.PyArg_Parse).
- [gh-133296](https://python-all.ru/3/whatsnew/changelog.html): Новые варианты API критических секций, принимающие один или два указателя [`PyMutex`](https://python-all.ru/3/c-api/synchronization.html#c.PyMutex) вместо экземпляров [`PyObject`](https://python-all.ru/3/c-api/structures.html#c.PyObject), теперь доступны в неограниченном C API.
- [gh-134009](https://python-all.ru/3/whatsnew/changelog.html): [`PyMutex_IsLocked()`](https://python-all.ru/3/c-api/synchronization.html#c.PyMutex_IsLocked) теперь является частью публичного C API.

### Сборка

- [gh-135621](https://python-all.ru/3/whatsnew/changelog.html): PyREPL больше не зависит от стандартной библиотеки [`curses`](https://python-all.ru/3/library/curses.html#module-curses). Вклад Лукаша Ланги.

## Python 3.14.0 beta 4

*Дата выпуска: 2025-07-08*

### Инструменты/Демонстрации

- [gh-135968](https://python-all.ru/3/whatsnew/changelog.html): Заглушки для `strip` теперь предоставляются как часть установки iOS.
- [gh-133600](https://python-all.ru/3/whatsnew/changelog.html): Перенос реорганизации файлов для Tools/wasm/wasi.

  Это должно упростить перенос будущих изменений кода. Также упрощаются инструкции по сборке WASI в руководстве разработчика.

### Тесты

- [gh-135966](https://python-all.ru/3/whatsnew/changelog.html): Тестовое окружение iOS теперь обрабатывает папку `app_packages` как каталог сайта.
- [gh-135494](https://python-all.ru/3/whatsnew/changelog.html): Исправлен regrtest для поддержки исключения тестов из `--pgo` тестов. Исправление от Victor Stinner.

### Безопасность

- [gh-136053](https://python-all.ru/3/whatsnew/changelog.html): [`marshal`](https://python-all.ru/3/library/marshal.html#module-marshal): исправление возможного краха при десериализации объектов [`slice`](https://python-all.ru/3/library/functions.html#slice).
- [gh-135661](https://python-all.ru/3/whatsnew/changelog.html): Исправлен разбор начальных и конечных тегов в [`html.parser.HTMLParser`](https://python-all.ru/3/library/html.parser.html#html.parser.HTMLParser) в соответствии со стандартом HTML5.

  - Пробелы больше не принимаются между `</` и именем тега. Например, `</ script>` не завершает раздел скрипта.
  - Вертикальная табуляция (`\v`) и не-ASCII пробелы больше не распознаются как пробелы. Единственные пробелы – это `\t\n\r\f` и пробел.
  - Нулевой символ (U+0000) больше не завершает имя тега.
  - Атрибуты и косые черты после имени тега в конечных тегах теперь игнорируются, а не завершаются после первого `>` в значении атрибута в кавычках. Например, `</script/foo=">"/>`.
  - Множественные косые черты и пробелы между последним атрибутом и закрывающим `>` теперь игнорируются как в начальных, так и в конечных тегах. Например, `<a foo=bar/ //>`.
  - Множественные `=` между именем атрибута и значением больше не сжимаются. Например, `<a foo==bar>` создаёт атрибут “foo” со значением “=bar”.
  - Отменено в [gh-136927](https://python-all.ru/3/whatsnew/changelog.html): Пробелы между разделителем `=` и именем или значением атрибута больше не игнорируются. Например, `<a foo =bar>` создаёт два атрибута “foo” и “=bar”, оба со значением None; `<a foo= bar>` создаёт два атрибута: “foo” со значением “” и “bar” со значением None.
- [gh-102555](https://python-all.ru/3/whatsnew/changelog.html): Исправлен разбор комментариев в [`html.parser.HTMLParser`](https://python-all.ru/3/library/html.parser.html#html.parser.HTMLParser) в соответствии со стандартом HTML5. `--!>` теперь завершает комментарий. `-- >` больше не завершает комментарий. Поддержка аномально завершённых пустых комментариев `<-->` и `<--->`.

### Библиотека

- [gh-136286](https://python-all.ru/3/whatsnew/changelog.html): Исправлены ошибки pickling для протоколов 0 и 1 для многих объектов, связанных с подинтерпретаторами.
- [gh-136316](https://python-all.ru/3/whatsnew/changelog.html): Улучшена поддержка вычисления вложенных прямых ссылок в [`typing.evaluate_forward_ref()`](https://python-all.ru/3/library/typing.html#typing.evaluate_forward_ref).
- [gh-85702](https://python-all.ru/3/whatsnew/changelog.html): Если `zoneinfo._common.load_tzdata` передаётся пакет без ресурса, возбуждается [`zoneinfo.ZoneInfoNotFoundError`](https://python-all.ru/3/library/zoneinfo.html#zoneinfo.ZoneInfoNotFoundError), а не [`PermissionError`](https://python-all.ru/3/library/exceptions.html#PermissionError). Исправление от Victor Stinner.
- [gh-136028](https://python-all.ru/3/whatsnew/changelog.html): Исправлен разбор названий месяцев, содержащих “İ” (U+0130, LATIN CAPITAL LETTER I WITH DOT ABOVE) в [`time.strptime()`](https://python-all.ru/3/library/time.html#time.strptime). Это затрагивает локали az\_AZ, ber\_DZ, ber\_MA и crh\_UA.
- [gh-135995](https://python-all.ru/3/whatsnew/changelog.html): В кодировке palmos сделать так, чтобы байт `0x9b` декодировался в `›` (U+203A - SINGLE RIGHT-POINTING ANGLE QUOTATION MARK).
- [gh-53203](https://python-all.ru/3/whatsnew/changelog.html): Исправлен [`time.strptime()`](https://python-all.ru/3/library/time.html#time.strptime) для форматов `%c` и `%x` в локалях byn\_ER, wal\_ET и lzh\_TW, а также для формата `%X` в локалях ar\_SA, bg\_BG и lzh\_TW.
- [gh-91555](https://python-all.ru/3/whatsnew/changelog.html): Более раннее изменение, введённое в 3.14.0b2, было отменено. Оно отключало журналирование для регистратора во время обработки сообщений журнала для этого регистратора. После отмены поведение должно быть таким же, как до 3.14.0b2.
- [gh-135878](https://python-all.ru/3/whatsnew/changelog.html): Исправлен крах [`types.SimpleNamespace`](https://python-all.ru/3/library/types.html#types.SimpleNamespace) на [свободной многопоточности](https://python-all.ru/3/glossary.html#term-free-threading) сборках, когда несколько потоков одновременно вызывали его метод [`__repr__()`](https://python-all.ru/3/reference/datamodel.html#object.__repr__).
- [gh-135836](https://python-all.ru/3/whatsnew/changelog.html): Исправлен [`IndexError`](https://python-all.ru/3/library/exceptions.html#IndexError) в [`asyncio.loop.create_connection()`](https://python-all.ru/3/library/asyncio-eventloop.html#asyncio.loop.create_connection), который мог возникнуть, когда не-[`OSError`](https://python-all.ru/3/library/exceptions.html#OSError) исключение возбуждается во время соединения и `close()` сокета возбуждает `OSError`.
- [gh-135836](https://python-all.ru/3/whatsnew/changelog.html): Исправлен [`IndexError`](https://python-all.ru/3/library/exceptions.html#IndexError) в [`asyncio.loop.create_connection()`](https://python-all.ru/3/library/asyncio-eventloop.html#asyncio.loop.create_connection), который мог возникнуть, когда алгоритм Happy Eyeballs приводил к пустому списку исключений во время попыток соединения.
- [gh-135855](https://python-all.ru/3/whatsnew/changelog.html): Возбуждать [`TypeError`](https://python-all.ru/3/library/exceptions.html#TypeError) вместо [`SystemError`](https://python-all.ru/3/library/exceptions.html#SystemError), когда `_interpreters.set___main___attrs()` передаётся объект, не являющийся словарём. Исправление от Brian Schubert.
- [gh-135815](https://python-all.ru/3/whatsnew/changelog.html): [`netrc`](https://python-all.ru/3/library/netrc.html#module-netrc): пропускать проверки безопасности, если [`os.getuid()`](https://python-all.ru/3/library/os.html#os.getuid) отсутствует. Исправление от Bénédikt Tran.
- [gh-135640](https://python-all.ru/3/whatsnew/changelog.html): Исправление ошибки, когда можно было вызвать [`xml.etree.ElementTree.ElementTree.write()`](https://python-all.ru/3/library/xml.etree.elementtree.html#xml.etree.ElementTree.ElementTree.write) на объекте ElementTree с недопустимым корневым элементом. Такое поведение очищало файл, переданный в `write`, если он уже существовал.
- [gh-135645](https://python-all.ru/3/whatsnew/changelog.html): Добавлено поле `supports_isolated_interpreters` в [`sys.implementation`](https://python-all.ru/3/library/sys.html#sys.implementation).
- [gh-135646](https://python-all.ru/3/whatsnew/changelog.html): Возбуждать единообразные исключения [`NameError`](https://python-all.ru/3/library/exceptions.html#NameError) в [`annotationlib.ForwardRef.evaluate()`](https://python-all.ru/3/library/annotationlib.html#annotationlib.ForwardRef.evaluate)
- [gh-135557](https://python-all.ru/3/whatsnew/changelog.html): Исправлены состояния гонки при обновлениях [`heapq`](https://python-all.ru/3/library/heapq.html#module-heapq) и чтениях [`list`](https://python-all.ru/3/library/stdtypes.html#list) в сборке [со свободной многопоточностью](https://python-all.ru/3/glossary.html#term-free-threading).
- [gh-119180](https://python-all.ru/3/whatsnew/changelog.html): Получать глобальные и локальные переменные только при необходимости в [`annotationlib.get_annotations()`](https://python-all.ru/3/library/annotationlib.html#annotationlib.get_annotations)
- [gh-135561](https://python-all.ru/3/whatsnew/changelog.html): Исправлен сбой в отладочных сборках при сбое процедуры HACL\* HMAC. Патч от Bénédikt Tran.
- [gh-135487](https://python-all.ru/3/whatsnew/changelog.html): Исправлена `reprlib.Repr.repr_int()` при передаче целых чисел с более чем [`sys.get_int_max_str_digits()`](https://python-all.ru/3/library/sys.html#sys.get_int_max_str_digits) цифр. Патч от Bénédikt Tran.
- [gh-135335](https://python-all.ru/3/whatsnew/changelog.html): [`multiprocessing`](https://python-all.ru/3/library/multiprocessing.html#module-multiprocessing): Сбросить `stdout` и `stderr` после предварительной загрузки модулей в `forkserver`.
- [gh-135069](https://python-all.ru/3/whatsnew/changelog.html): Исправлено исключение «Invalid error handling» в `encodings.idna.IncrementalDecoder`, чтобы корректно заменять параметр ‘errors’.
- [gh-130662](https://python-all.ru/3/whatsnew/changelog.html): +Принимать ведущие нули в полях точности и ширины для +:class:[`Decimal`](https://python-all.ru/3/library/decimal.html#decimal.Decimal) форматирования, например `format(Decimal(1.25), '.016f')`.
- [gh-130662](https://python-all.ru/3/whatsnew/changelog.html): Принимать ведущие нули в полях точности и ширины для [`Fraction`](https://python-all.ru/3/library/fractions.html#fractions.Fraction) форматирования, например `format(Fraction(1, 3), '.016f')`.
- [gh-87790](https://python-all.ru/3/whatsnew/changelog.html): Поддержка символов подчёркивания и запятой в качестве разделителей разрядов в дробной части для форматирования [`Fraction`](https://python-all.ru/3/library/fractions.html#fractions.Fraction). Патч от Sergey B Kirpichev.
- [gh-87790](https://python-all.ru/3/whatsnew/changelog.html): Поддержка символов подчёркивания и запятой в качестве разделителей разрядов в дробной части для форматирования [`Decimal`](https://python-all.ru/3/library/decimal.html#decimal.Decimal). Патч от Sergey B Kirpichev.
- [gh-130664](https://python-all.ru/3/whatsnew/changelog.html): Обработка граничного случая для форматирования [`Fraction`](https://python-all.ru/3/library/fractions.html#fractions.Fraction): считать дополнение нулями (предшествующего полю ширины нуля (`'0'`) символа) эквивалентом символа заполнения `'0'` с типом выравнивания `'='`, так же, как в случае [`float`](https://python-all.ru/3/library/functions.html#float).

### Документация

- [gh-136155](https://python-all.ru/3/whatsnew/changelog.html): Исправлены сборки EPUB путём исключения тегов, несовместимых с XHTML.

### Ядро и встроенные объекты

- [gh-109700](https://python-all.ru/3/whatsnew/changelog.html): Исправлена обработка ошибок памяти в [`PyDict_SetDefault()`](https://python-all.ru/3/c-api/dict.html#c.PyDict_SetDefault).
- [gh-78465](https://python-all.ru/3/whatsnew/changelog.html): Исправлено сообщение об ошибке для `cls.__new__(cls, ...)`, когда `cls` не является инстанцируемым встроенным типом или типом расширения (с `tp_new`, установленным в `NULL`).
- [gh-129958](https://python-all.ru/3/whatsnew/changelog.html): Различать t-строки и f-строки в синтаксической ошибке для символов новой строки в спецификаторах формата однокавычных интерполированных строк.
- [gh-135871](https://python-all.ru/3/whatsnew/changelog.html): Попытки неблокирующей блокировки мьютекса теперь немедленно возвращаются, когда блокировка занята, вместо кратковременного ожидания в сборке [со свободной многопоточностью](https://python-all.ru/3/glossary.html#term-free-threading).
- [gh-135106](https://python-all.ru/3/whatsnew/changelog.html): Ограничить механизм trashcan объектами, обрабатываемыми GC, и отменить их отслеживание, пока они находятся в trashcan, чтобы предотвратить конфликт механизмов GC и trashcan.
- [gh-135607](https://python-all.ru/3/whatsnew/changelog.html): Исправлены потенциальные состояния гонки [`weakref`](https://python-all.ru/3/library/weakref.html#module-weakref) в деструкторе объекта в сборке [со свободной многопоточностью](https://python-all.ru/3/glossary.html#term-free-threading).
- [gh-135608](https://python-all.ru/3/whatsnew/changelog.html): Исправлен сбой в JIT, связанный с атрибутами модулей.
- [gh-135543](https://python-all.ru/3/whatsnew/changelog.html): Генерировать событие аудита `sys.remote_exec` при вызове [`sys.remote_exec()`](https://python-all.ru/3/library/sys.html#sys.remote_exec) и перенести `remote_debugger_script` в `cpython.remote_debugger_script`.
- [gh-134280](https://python-all.ru/3/whatsnew/changelog.html): Отключить свёртку констант для `~` с логическим аргументом. Это перемещает предупреждение об устаревании из времени компиляции в время выполнения.

### C API

- [gh-135906](https://python-all.ru/3/whatsnew/changelog.html): Исправлены ошибки компиляции при компиляции внутренних заголовочных файлов компилятором C++.

### Сборка

- [gh-134273](https://python-all.ru/3/whatsnew/changelog.html): Добавлена поддержка настройки флагов компилятора для JIT с помощью `CFLAGS_JIT`

## Python 3.14.0 бета 3

*Дата выпуска: 2025-06-17*

### Windows

- [gh-135099](https://python-all.ru/3/whatsnew/changelog.html): Исправлен сбой, который мог возникать в Windows, когда фоновый поток ожидает [`PyMutex`](https://python-all.ru/3/c-api/synchronization.html#c.PyMutex), в то время как основной поток завершает работу интерпретатора.

### Тесты

- [gh-132815](https://python-all.ru/3/whatsnew/changelog.html): Исправлен test\_\_opcode: добавлено `JUMP_BACKWARD` в статистику\\nспециализации.
- [gh-135489](https://python-all.ru/3/whatsnew/changelog.html): Показывать подробный вывод для падающих тестов на этапе профилирования PGO\\nс опцией --enable-optimizations.
- [gh-135120](https://python-all.ru/3/whatsnew/changelog.html): Добавлен `test.support.subTests()`.

### Безопасность

- [gh-135462](https://python-all.ru/3/whatsnew/changelog.html): Исправлена квадратичная сложность при обработке специально подготовленного ввода\\nв [`html.parser.HTMLParser`](https://python-all.ru/3/library/html.parser.html#html.parser.HTMLParser). Ошибки конца файла теперь обрабатываются\\nв соответствии со спецификациями HTML5: комментарии и декларации автоматически закрываются, теги игнорируются.
- [gh-135034](https://python-all.ru/3/whatsnew/changelog.html): Исправлены множественные проблемы, позволявшие обходить фильтры извлечения `tarfile`\\n(`filter="data"` и `filter="tar"`) с помощью\\nспециально созданных символьных и жёстких ссылок.

  Устранены [**CVE 2024-12718**](https://python-all.ru/3/whatsnew/changelog.html), [**CVE 2025-4138**](https://python-all.ru/3/whatsnew/changelog.html), [**CVE 2025-4330**](https://python-all.ru/3/whatsnew/changelog.html) и\\n[**CVE 2025-4517**](https://python-all.ru/3/whatsnew/changelog.html).

### Библиотека

- [gh-65697](https://python-all.ru/3/whatsnew/changelog.html): Сообщение об ошибке [`configparser`](https://python-all.ru/3/library/configparser.html#module-configparser) при попытке записи\\nнекорректного ключа теперь более информативно.
- [gh-135497](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка [`os.getlogin()`](https://python-all.ru/3/library/os.html#os.getlogin) для длинных имён пользователей на\\nплатформах на базе BSD.
- [gh-135429](https://python-all.ru/3/whatsnew/changelog.html): Исправлено несоответствие аргументов в `_lsprof` для события `PY_THROW`\\n.
- [gh-135368](https://python-all.ru/3/whatsnew/changelog.html): Исправлена генерация [`unittest.mock.Mock`](https://python-all.ru/3/library/unittest.mock.html#unittest.mock.Mock) для\\nобъектов [`dataclasses.dataclass()`](https://python-all.ru/3/library/dataclasses.html#dataclasses.dataclass). Теперь все специальные атрибуты устанавливаются\\nкак это было до [gh-124429](https://python-all.ru/3/whatsnew/changelog.html).
- [gh-133967](https://python-all.ru/3/whatsnew/changelog.html): Не нормализовать имя [`locale`](https://python-all.ru/3/library/locale.html#module-locale) 'C.UTF-8' до 'en\_US.UTF-8'.
- [gh-135321](https://python-all.ru/3/whatsnew/changelog.html): Вызывать корректное исключение для значений больше 0x7fffffff\\nдля опкода `BINSTRING` в C-реализации [`pickle`](https://python-all.ru/3/library/pickle.html#module-pickle).
- [gh-135276](https://python-all.ru/3/whatsnew/changelog.html): Перенесены исправления ошибок в zipfile.Path из zipp 3.23. Исправлены\\n`.name`, `.stem` и другие свойства на основе имени файла в Windows при\\nработе с zip-файлом на диске.
- [gh-135244](https://python-all.ru/3/whatsnew/changelog.html): [`uuid`](https://python-all.ru/3/library/uuid.html#module-uuid): если MAC-адрес не может быть определён, то\\n48-битный идентификатор узла теперь генерируется с помощью криптографически стойкого\\nгенератора псевдослучайных чисел (CSPRNG) в соответствии с [**RFC 9562, §6.10.3**](https://python-all.ru/3/whatsnew/changelog.html). Это затрагивает [`uuid1()`](https://python-all.ru/3/library/uuid.html#uuid.uuid1) и\\n[`uuid6()`](https://python-all.ru/3/library/uuid.html#uuid.uuid6).
- [gh-134970](https://python-all.ru/3/whatsnew/changelog.html): Исправлено исключение «unknown action» в\\n[`argparse.ArgumentParser.add_argument_group()`](https://python-all.ru/3/library/argparse.html#argparse.ArgumentParser.add_argument_group) для корректной замены\\nкласса действия.
- [gh-134718](https://python-all.ru/3/whatsnew/changelog.html): [`ast.dump()`](https://python-all.ru/3/library/ast.html#ast.dump) теперь опускает значения `None` и `[]` только если\\nони являются значениями по умолчанию.
- [gh-134939](https://python-all.ru/3/whatsnew/changelog.html): Добавлен модуль [`concurrent.interpreters`](https://python-all.ru/3/library/concurrent.interpreters.html#module-concurrent.interpreters). См. [**PEP 734**](https://python-all.ru/3/whatsnew/changelog.html).
- [gh-134885](https://python-all.ru/3/whatsnew/changelog.html): Исправлена возможная аварийная остановка в модуле [`compression.zstd`](https://python-all.ru/3/library/compression.zstd.html#module-compression.zstd),\\nсвязанная с установкой типов параметров. Патч от Jelle Zijlstra.
- [gh-134857](https://python-all.ru/3/whatsnew/changelog.html): Улучшено сообщение об ошибке для [`doctest`](https://python-all.ru/3/library/doctest.html#module-doctest), запущенных с\\n[`unittest`](https://python-all.ru/3/library/unittest.html#module-unittest). Удалены кадры модуля `doctest` из трассировок и\\nлишний символ новой строки из сообщения о сбое.
- [gh-128840](https://python-all.ru/3/whatsnew/changelog.html): Исправлен разбор длинных IPv6-адресов со встроенным IPv4-адресом.
- [gh-134637](https://python-all.ru/3/whatsnew/changelog.html): Исправлена регрессия производительности при вызове указателя на функцию [`ctypes`](https://python-all.ru/3/library/ctypes.html#module-ctypes)\\nв [свободной многопоточности](https://python-all.ru/3/glossary.html#term-free-threading).
- [gh-134696](https://python-all.ru/3/whatsnew/changelog.html): Встроенные реализации конструкторов хеш-функций HACL\* и OpenSSL теперь корректно принимают одни и те же *документированные* именованные аргументы. Например, [`md5()`](https://python-all.ru/3/library/hashlib.html#hashlib.md5) ранее мог вызываться как `md5(data=data)` или `md5(string=string)` в зависимости от реализации, но эти вызовы были несовместимы. Исправление от Bénédikt Tran.
- [gh-134151](https://python-all.ru/3/whatsnew/changelog.html): [`email`](https://python-all.ru/3/library/email.html#module-email): Исправлен [`TypeError`](https://python-all.ru/3/library/exceptions.html#TypeError) в\\n[`email.utils.decode_params()`](https://python-all.ru/3/library/email.utils.html#email.utils.decode_params) при сортировке продолжений [**RFC 2231**](https://python-all.ru/3/whatsnew/changelog.html),\\nсодержащих ненумерованный раздел.
- [gh-134210](https://python-all.ru/3/whatsnew/changelog.html): [`curses.window.getch()`](https://python-all.ru/3/library/curses.html#curses.window.getch) теперь корректно обрабатывает сигналы.\\nПатч от Bénédikt Tran.
- [gh-134152](https://python-all.ru/3/whatsnew/changelog.html): [`email`](https://python-all.ru/3/library/email.html#module-email): Исправлен разбор идентификатора email-сообщения с некорректным\\nдоменом.
- [gh-133489](https://python-all.ru/3/whatsnew/changelog.html): [`random.getrandbits()`](https://python-all.ru/3/library/random.html#random.getrandbits) теперь может генерировать более 231 бит. [`random.randbytes()`](https://python-all.ru/3/library/random.html#random.randbytes) теперь может генерировать более 256\\nМиБ.
- [gh-132813](https://python-all.ru/3/whatsnew/changelog.html): Улучшены сообщения об ошибках для некорректных типов и значений\\nатрибутов [`csv.Dialect`](https://python-all.ru/3/library/csv.html#csv.Dialect).
- [gh-132969](https://python-all.ru/3/whatsnew/changelog.html): Предотвращение попытки потока исполнителя [`ProcessPoolExecutor`](https://python-all.ru/3/library/concurrent.futures.html#concurrent.futures.ProcessPoolExecutor),\\nкоторый остаётся запущенным при [`shutdown(wait=False)`](https://python-all.ru/3/library/concurrent.futures.html#concurrent.futures.Executor.shutdown), изменить рабочие процессы пула после того,\\nкак состояние объекта уже было сброшено при завершении. Сочетание условий,\\nвключая аварийное завершение рабочего процесса, приводило к исключению и\\nпотенциальному зависанию, когда всё ещё работающий поток исполнителя пытался\\nзаменить мёртвые рабочие процессы в пуле.
- [gh-127081](https://python-all.ru/3/whatsnew/changelog.html): Исправлены проблемы потоковой безопасности libc с [`os`](https://python-all.ru/3/library/os.html#module-os) путём замены\\n`getlogin` на реентерабельную версию `getlogin_r`.
- [gh-131884](https://python-all.ru/3/whatsnew/changelog.html): Исправлены проблемы форматирования в [`json.dump()`](https://python-all.ru/3/library/json.html#json.dump) при одновременном использовании *indent* и *skipkeys*.
- [gh-130999](https://python-all.ru/3/whatsnew/changelog.html): Предотвращается выход из нового REPL и предлагаются подсказки, даже если среди кандидатов есть нестроковые, при возникновении ошибок.

### Документация

- [gh-135171](https://python-all.ru/3/whatsnew/changelog.html): Документировано, что [итератор](https://python-all.ru/3/glossary.html#term-iterator) для самого левого предложения `for` в генераторном выражении создаётся немедленно.
- [bpo-45210](https://python-all.ru/3/whatsnew/changelog.html): Документировано, что индикатор ошибки может быть установлен в tp\_dealloc, и как избежать его затирания.

### Ядро и встроенные модули

- [gh-135496](https://python-all.ru/3/whatsnew/changelog.html): Исправлена опечатка в сообщении об ошибке типа преобразования f-строки («exclamanation» -\> «exclamation»).
- [gh-135371](https://python-all.ru/3/whatsnew/changelog.html): Исправлены [`asyncio`](https://python-all.ru/3/library/asyncio.html#module-asyncio) средства отладки для корректного отображения внутренних стеков вызовов корутин вместе с внешними зависимостями задач. Команды `python -m asyncio ps` и `python -m asyncio pstree` теперь показывают полный контекст выполнения. Патч Пабло Галиндо.

### Библиотека

- [gh-127319](https://python-all.ru/3/whatsnew/changelog.html): Установлена переменная класса `allow_reuse_port` в `False` на серверах XMLRPC, logging и HTTP. Это соответствует поведению в предыдущих версиях Python, которое не разрешает повторное использование порта.

### Ядро и встроенные модули

- [gh-135171](https://python-all.ru/3/whatsnew/changelog.html): Возвращает поведение асинхронных генераторных выражений при создании с объектом без метода \_\_aiter\_\_ к поведению до версии 3.13 – возбуждение TypeError.
- [gh-130077](https://python-all.ru/3/whatsnew/changelog.html): Корректно возбуждаются пользовательские синтаксические ошибки при обнаружении неверного синтаксиса, содержащего имена, являющиеся префиксами мягких ключевых слов. Патч Пабло Галиндо.
- [gh-135171](https://python-all.ru/3/whatsnew/changelog.html): Возвращает поведение генераторных выражений при создании с неитерируемым объектом к поведению до версии 3.13 – возбуждение TypeError. Больше невозможно вызвать аварийное завершение в отладчике, изменяя локальные переменные генераторного выражения. Это достигается перемещением инструкции `GET_ITER` обратно в место создания генераторного выражения и добавлением дополнительной проверки в `FOR_ITER`.

### Библиотека

- [gh-116738](https://python-all.ru/3/whatsnew/changelog.html): Методы в [`heapq`](https://python-all.ru/3/library/heapq.html#module-heapq) сделаны потокобезопасными в сборке [со свободной потокостью](https://python-all.ru/3/glossary.html#term-free-threading).

### Ядро и встроенные модули

- [gh-134876](https://python-all.ru/3/whatsnew/changelog.html): Добавлена поддержка [**PEP 768**](https://python-all.ru/3/whatsnew/changelog.html) удалённой отладки для ядер Linux, в которых не настроен CONFIG\_CROSS\_MEMORY\_ATTACH.
- [gh-134889](https://python-all.ru/3/whatsnew/changelog.html): Исправлена обработка нескольких опкодов, оставляющих операнды на стеке при оптимизации `LOAD_FAST`.

### Библиотека

- [gh-134908](https://python-all.ru/3/whatsnew/changelog.html): Исправлен сбой при итерации по строкам в текстовом файле в сборке [со свободной потокостью](https://python-all.ru/3/glossary.html#term-free-threading).

### Ядро и встроенные модули

- [gh-132617](https://python-all.ru/3/whatsnew/changelog.html): Исправлена проверка изменения [`dict.update()`](https://python-all.ru/3/library/stdtypes.html#dict.update), которая могла некорректно возбуждать ошибку «dict mutated during update», когда изменялся другой словарь, случайно разделяющий тот же базовый объект ключей.
- [gh-134679](https://python-all.ru/3/whatsnew/changelog.html): Исправлен сбой в коде QSBR сборки [со свободной потокостью](https://python-all.ru/3/glossary.html#term-free-threading), который мог возникать при изменении атрибута `__dict__` объекта.
- [gh-127682](https://python-all.ru/3/whatsnew/changelog.html): Больше не вызывается `__iter__` дважды в списковых включениях. Это приводит поведение списковых включений в соответствие с другими формами итерации.
- [gh-133912](https://python-all.ru/3/whatsnew/changelog.html): Исправлена C API функция `PyObject_GenericSetDict` для обработки классов расширения с встроенными значениями.

### C API

- [gh-134989](https://python-all.ru/3/whatsnew/changelog.html): Исправлены макросы `Py_RETURN_NONE`, `Py_RETURN_TRUE` и `Py_RETURN_FALSE` в ограниченном C API 3.11 и старше: не рассматривать `Py_None`, `Py_True` и `Py_False` как бессмертные. Патч Виктора Стиннера.
- [gh-134989](https://python-all.ru/3/whatsnew/changelog.html): Реализованы [`PyObject_DelAttr()`](https://python-all.ru/3/c-api/object.html#c.PyObject_DelAttr) и [`PyObject_DelAttrString()`](https://python-all.ru/3/c-api/object.html#c.PyObject_DelAttrString) в виде макросов в ограниченном C API 3.12 и старше. Патч Виктора Стиннера.
- [gh-133968](https://python-all.ru/3/whatsnew/changelog.html): Добавлена функция [`PyUnicodeWriter_WriteASCII()`](https://python-all.ru/3/c-api/unicode.html#c.PyUnicodeWriter_WriteASCII) для записи ASCII-строки в [`PyUnicodeWriter`](https://python-all.ru/3/c-api/unicode.html#c.PyUnicodeWriter). Функция быстрее [`PyUnicodeWriter_WriteUTF8()`](https://python-all.ru/3/c-api/unicode.html#c.PyUnicodeWriter_WriteUTF8), но её поведение не определено, если входная строка содержит не-ASCII символы. Патч Виктора Стиннера.

### Сборка

- [gh-119132](https://python-all.ru/3/whatsnew/changelog.html): Удалён ярлык «экспериментальный» из сборки CPython со свободной потокостью.
- [gh-135497](https://python-all.ru/3/whatsnew/changelog.html): Исправлено обнаружение `MAXLOGNAME` в `configure.ac` скрипте.
- [gh-134923](https://python-all.ru/3/whatsnew/changelog.html): Сборки Windows с включённой профильной оптимизацией теперь используют `/GENPROFILE` и `/USEPROFILE` вместо устаревших `/LTCG:` опций.
- [gh-134774](https://python-all.ru/3/whatsnew/changelog.html): Исправлены предупреждения о переопределении макроса [`Py_DEBUG`](https://python-all.ru/3/c-api/intro.html#c.Py_DEBUG) в Windows отладочных сборках. Исправление от Chris Eibl.
- [gh-134632](https://python-all.ru/3/whatsnew/changelog.html): Исправлена генерация `build-details.json` для использования `INCLUDEPY`, чтобы ссылаться на подкаталог `pythonX.Y` каталога include, как требуется в [**PEP 739**](https://python-all.ru/3/whatsnew/changelog.html), вместо корневого каталога include .

## Python 3.14.0 beta 2

*Дата выпуска: 2025-05-26*

### Windows

- [gh-130727](https://python-all.ru/3/whatsnew/changelog.html): Исправлено состояние гонки во внутренних вызовах WMI, которое может приводить к исключению «invalid handle» при высокой нагрузке. Исправление от Chris Eibl.
- [gh-76023](https://python-all.ru/3/whatsnew/changelog.html): [`os.path.realpath()`](https://python-all.ru/3/library/os.path.html#os.path.realpath) теперь игнорирует ошибку Windows 1005 в нестрогом режиме.
- [gh-133779](https://python-all.ru/3/whatsnew/changelog.html): Отменяет изменение, которое генерировало разные файлы `pyconfig.h` на основе настроек компилятора, так как это часто приводило к поломке сборок расширений. В частности, переменная препроцессора `Py_GIL_DISABLED` теперь всегда должна быть явно определена при компиляции для экспериментальной свободно-поточной среды выполнения. Функцию [`sysconfig.get_config_var()`](https://python-all.ru/3/library/sysconfig.html#sysconfig.get_config_var) можно использовать для определения, была ли текущая среда выполнения скомпилирована с этим флагом или нет.
- [gh-133626](https://python-all.ru/3/whatsnew/changelog.html): Гарантирует, что пакеты случайно не включаются в традиционный установщик.

### Tools/Demos

- [gh-134215](https://python-all.ru/3/whatsnew/changelog.html): Автодополнение импорта в [REPL](https://python-all.ru/3/glossary.html#term-REPL) предлагает частные модули только при явном указании.

### Tests

- [gh-133744](https://python-all.ru/3/whatsnew/changelog.html): Исправлен тест прерывания multiprocessing. Добавлено событие для синхронизации родительского процесса с дочерним: ожидание, пока дочерний процесс начнёт спать. Исправление от Victor Stinner.
- [gh-133682](https://python-all.ru/3/whatsnew/changelog.html): Исправлен тестовый пример `test.test_annotationlib.TestStringFormat.test_displays`, который обеспечивает корректную обработку сложных структур данных (списков, множеств, словарей и кортежей) в строковых аннотациях.
- [gh-133639](https://python-all.ru/3/whatsnew/changelog.html): Исправлено: `TestPyReplAutoindent.test_auto_indent_default()` не запускает `input_code`.

### Безопасность

- [gh-133767](https://python-all.ru/3/whatsnew/changelog.html): Исправлено использование после освобождения (use-after-free) в декодере «unicode-escape» с обработчиком ошибок, отличным от «strict».
- [gh-128840](https://python-all.ru/3/whatsnew/changelog.html): Досрочное прерывание обработки длинных IPv6-адресов в [`ipaddress`](https://python-all.ru/3/library/ipaddress.html#module-ipaddress) для предотвращения чрезмерного потребления памяти и незначительного отказа в обслуживании.

### Библиотека

- [gh-132710](https://python-all.ru/3/whatsnew/changelog.html): По возможности обеспечить, чтобы [`uuid.getnode()`](https://python-all.ru/3/library/uuid.html#uuid.getnode) возвращал одинаковый результат даже в разных процессах. Ранее результат был постоянным только в пределах одного процесса. Исправление от Bénédikt Tran.
- [gh-80334](https://python-all.ru/3/whatsnew/changelog.html): [`multiprocessing.freeze_support()`](https://python-all.ru/3/library/multiprocessing.html#multiprocessing.freeze_support) теперь проверяет наличие работы на любой платформе с методом запуска «spawn», а не только на Windows.
- [gh-134582](https://python-all.ru/3/whatsnew/changelog.html): Исправлены ошибки обратного преобразования tokenize.untokenize(), связанные с экранированием фигурных скобок в t-строках.
- [gh-134546](https://python-all.ru/3/whatsnew/changelog.html): Обеспечить, чтобы скрипт удалённой отладки [`pdb`](https://python-all.ru/3/library/pdb.html#module-pdb) был читаем удалённым процессом Python.
- [gh-134451](https://python-all.ru/3/whatsnew/changelog.html): Преобразован `asyncio.tools.CycleFoundException` из dataclass в обычный тип исключения.
- [gh-114177](https://python-all.ru/3/whatsnew/changelog.html): Исправлено [`asyncio`](https://python-all.ru/3/library/asyncio.html#module-asyncio), чтобы не закрывать каналы подпроцесса, которые в противном случае выдавали бы ошибку, когда цикл событий уже закрыт.
- [gh-90871](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка на единицу (off-by-one) в параметре backlog в [`create_unix_server()`](https://python-all.ru/3/library/asyncio-eventloop.html#asyncio.loop.create_unix_server). Вклад от Christian Harries.
- [gh-134323](https://python-all.ru/3/whatsnew/changelog.html): Исправлен метод [`threading.RLock.locked()`](https://python-all.ru/3/library/threading.html#threading.RLock.locked).
- [gh-86802](https://python-all.ru/3/whatsnew/changelog.html): Исправлена утечка памяти в asyncio в отменённых задачах-щитах (shield tasks). Для задач с щитом, где щит был отменён, теперь логируются потенциальные исключения через обработчик исключений. Вклад от Christian Harries.
- [gh-134209](https://python-all.ru/3/whatsnew/changelog.html): [`curses`](https://python-all.ru/3/library/curses.html#module-curses): Методы [`curses.window.instr()`](https://python-all.ru/3/library/curses.html#curses.window.instr) и [`curses.window.getstr()`](https://python-all.ru/3/library/curses.html#curses.window.getstr) теперь выделяют свой внутренний буфер в куче, а не на стеке; кроме того, максимальный размер буфера увеличен с 1023 до 2047.
- [gh-134235](https://python-all.ru/3/whatsnew/changelog.html): Обновлено автодополнение по табуляции в REPL для включения встроенных модулей. Вклад от Tom Wang, Hunter Young
- [gh-134152](https://python-all.ru/3/whatsnew/changelog.html): Исправлена [`UnboundLocalError`](https://python-all.ru/3/library/exceptions.html#UnboundLocalError), которая могла возникать при парсинге заголовков [`email`](https://python-all.ru/3/library/email.html#module-email), если в некоторых контекстах отсутствует ожидаемый завершающий разделитель.
- [gh-134168](https://python-all.ru/3/whatsnew/changelog.html): [`http.server`](https://python-all.ru/3/library/http.server.html#module-http.server): Исправлено связывание IPv6-адресов и обработка [`--directory`](https://python-all.ru/3/library/http.server.html#cmdoption-http.server-d) при использовании HTTPS.
- [gh-62184](https://python-all.ru/3/whatsnew/changelog.html): Удалён импорт C-реализации [`io.FileIO`](https://python-all.ru/3/library/io.html#io.FileIO) из реализации на Python, у которой есть собственная реализация.
- [gh-133982](https://python-all.ru/3/whatsnew/changelog.html): Вызывается [`RuntimeWarning`](https://python-all.ru/3/library/exceptions.html#RuntimeWarning) в Python-реализации [`io`](https://python-all.ru/3/library/io.html#module-io), когда [файлоподобный объект](https://python-all.ru/3/glossary.html#term-file-object) не закрыт явно при наличии нескольких уровней ввода-вывода.
- [gh-133890](https://python-all.ru/3/whatsnew/changelog.html): Модуль [`tarfile`](https://python-all.ru/3/library/tarfile.html#module-tarfile) теперь обрабатывает [`UnicodeEncodeError`](https://python-all.ru/3/library/exceptions.html#UnicodeEncodeError) так же, как [`OSError`](https://python-all.ru/3/library/exceptions.html#OSError), когда не удаётся извлечь элемент.
- [gh-134097](https://python-all.ru/3/whatsnew/changelog.html): Исправлено взаимодействие новой [REPL](https://python-all.ru/3/glossary.html#term-REPL) и опции командной строки [`-X showrefcount`](https://python-all.ru/3/using/cmdline.html#cmdoption-X).
- [gh-133889](https://python-all.ru/3/whatsnew/changelog.html): Сгенерированная страница со списком каталогов в [`http.server.SimpleHTTPRequestHandler`](https://python-all.ru/3/library/http.server.html#http.server.SimpleHTTPRequestHandler) теперь показывает только декодированный компонент пути запрошенного URL, без строки запроса и фрагмента.
- [gh-134098](https://python-all.ru/3/whatsnew/changelog.html): Исправлена обработка путей, оканчивающихся на процентно-кодированный слеш (`%2f` или `%2F`) в [`http.server.SimpleHTTPRequestHandler`](https://python-all.ru/3/library/http.server.html#http.server.SimpleHTTPRequestHandler).
- [gh-132124](https://python-all.ru/3/whatsnew/changelog.html): На POSIX-совместимых системах `multiprocessing.util.get_temp_dir()` теперь игнорирует `TMPDIR` (и подобные переменные окружения), если длина пути к сокетным файлам `AF_UNIX` превышает максимальную длину, заданную платформой, при использовании метода запуска [forkserver](https://python-all.ru/3/library/multiprocessing.html#multiprocessing-start-method-forkserver). Патч от Bénédikt Tran.
- [gh-134062](https://python-all.ru/3/whatsnew/changelog.html): [`ipaddress`](https://python-all.ru/3/library/ipaddress.html#module-ipaddress): исправлены коллизии в [`__hash__()`](https://python-all.ru/3/reference/datamodel.html#object.__hash__) для объектов [`IPv4Network`](https://python-all.ru/3/library/ipaddress.html#ipaddress.IPv4Network) и [`IPv6Network`](https://python-all.ru/3/library/ipaddress.html#ipaddress.IPv6Network).
- [gh-133970](https://python-all.ru/3/whatsnew/changelog.html): Сделать `string.templatelib.Template` и `string.templatelib.Interpolation` обобщёнными.
- [gh-71253](https://python-all.ru/3/whatsnew/changelog.html): Вызывать [`ValueError`](https://python-all.ru/3/library/exceptions.html#ValueError) в [`open()`](https://python-all.ru/3/library/functions.html#open), если *opener* возвращает отрицательный файловый дескриптор в Python-реализации [`io`](https://python-all.ru/3/library/io.html#module-io), чтобы соответствовать C-реализации.
- [gh-133960](https://python-all.ru/3/whatsnew/changelog.html): Упрощён и улучшен [`typing.evaluate_forward_ref()`](https://python-all.ru/3/library/typing.html#typing.evaluate_forward_ref). Теперь он больше не вызывает ошибок для некоторых недопустимых типов. В ряде ситуаций он теперь может вычислять прямые ссылки, которые ранее не поддерживались.
- [gh-133925](https://python-all.ru/3/whatsnew/changelog.html): Сделать приватный класс `typing._UnionGenericAlias` хешируемым.
- [gh-133653](https://python-all.ru/3/whatsnew/changelog.html): Исправлен [`argparse.ArgumentParser`](https://python-all.ru/3/library/argparse.html#argparse.ArgumentParser) с аргументом *formatter\_class*. Исправлен TypeError, когда *formatter\_class* является пользовательским подклассом `HelpFormatter`. Исправлен TypeError, когда *formatter\_class* не является подклассом `HelpFormatter` и используется нестандартный *prefix\_char*. Исправлена поддержка подсветки, когда *formatter\_class* не является подклассом `HelpFormatter`.
- [gh-132641](https://python-all.ru/3/whatsnew/changelog.html): Исправлено состояние гонки в [`functools.lru_cache()`](https://python-all.ru/3/library/functools.html#functools.lru_cache) при free-threading.
- [gh-133783](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка применения [`copy.replace()`](https://python-all.ru/3/library/copy.html#copy.replace) к объектам [`ast`](https://python-all.ru/3/library/ast.html#module-ast). Атрибуты, которые по умолчанию имеют значение `None`, некорректно считались обязательными для вручную созданных узлов AST.
- [gh-133684](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка, при которой [`annotationlib.get_annotations()`](https://python-all.ru/3/library/annotationlib.html#annotationlib.get_annotations) возвращал неверный результат для некоторых классов, входящих в иерархию классов, где используется `from __future__ import annotations`.
- [gh-77057](https://python-all.ru/3/whatsnew/changelog.html): Исправлена обработка недопустимых объявлений разметки в [`html.parser.HTMLParser`](https://python-all.ru/3/library/html.parser.html#html.parser.HTMLParser).
- [gh-130328](https://python-all.ru/3/whatsnew/changelog.html): Ускорение вставки в `PyREPL` на Windows в устаревшей консоли. Патч от Chris Eibl.
- [gh-133701](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка, из-за которой классы [`typing.TypedDict`](https://python-all.ru/3/library/typing.html#typing.TypedDict), определённые внутри `from __future__ import annotations` и наследующие от другого `TypedDict`, имели некорректный атрибут `__annotations__`.
- [gh-133581](https://python-all.ru/3/whatsnew/changelog.html): Улучшено обратное преобразование t-строк в [`ast.unparse()`](https://python-all.ru/3/library/ast.html#ast.unparse) и `from __future__ import annotations`. Пустые t-строки теперь корректно проходят полный цикл, и форматирование в интерполяциях сохраняется. Патч от Jelle Zijlstra.
- [gh-133551](https://python-all.ru/3/whatsnew/changelog.html): Поддержка t-строк ([**PEP 750**](https://python-all.ru/3/whatsnew/changelog.html)) в [`annotationlib`](https://python-all.ru/3/library/annotationlib.html#module-annotationlib). Патч от Jelle Zijlstra.
- [gh-133439](https://python-all.ru/3/whatsnew/changelog.html): Исправлено, что dot-команды с завершающими пробелами ошибочно принимаются за многострочные SQL-операторы в интерфейсе командной строки sqlite3.
- [gh-132493](https://python-all.ru/3/whatsnew/changelog.html): Избегание ненужного обращения к `__annotations__` в [`inspect.signature()`](https://python-all.ru/3/library/inspect.html#inspect.signature).
- [gh-132876](https://python-all.ru/3/whatsnew/changelog.html): `ldexp()` в Windows не округляет субнормальные результаты до Windows 11, хотя должен. Обёртка [`math.ldexp()`](https://python-all.ru/3/library/math.html#math.ldexp) от Python теперь их округляет, поэтому результаты могут незначительно измениться в редких случаях очень малых значений на версиях Windows до 11.
- [gh-133009](https://python-all.ru/3/whatsnew/changelog.html): [`xml.etree.ElementTree`](https://python-all.ru/3/library/xml.etree.elementtree.html#module-xml.etree.ElementTree): Исправлен сбой в [`Element.__deepcopy__`](https://python-all.ru/3/library/copy.html#object.__deepcopy__) при конкурентном изменении элемента. Патч от Bénédikt Tran.
- [gh-91555](https://python-all.ru/3/whatsnew/changelog.html): Игнорировать сообщения журнала, порождённые при обработке сообщений журнала, чтобы избежать взаимоблокировки или бесконечной рекурсии. \[ПРИМЕЧАНИЕ: Это изменение впоследствии было отменено.\]
- [gh-125028](https://python-all.ru/3/whatsnew/changelog.html): [`functools.Placeholder`](https://python-all.ru/3/library/functools.html#functools.Placeholder) не может быть передан [`functools.partial()`](https://python-all.ru/3/library/functools.html#functools.partial) в качестве именованного аргумента.
- [gh-62824](https://python-all.ru/3/whatsnew/changelog.html): Исправлены псевдонимы для кодировки `iso8859_8`. Патч от Dave Goncalves.
- [gh-86155](https://python-all.ru/3/whatsnew/changelog.html): [`html.parser.HTMLParser.close()`](https://python-all.ru/3/library/html.parser.html#html.parser.HTMLParser.close) больше не теряет данные, когда тег `<script>` не закрыт. Патч от Waylan Limberg.
- [gh-69426](https://python-all.ru/3/whatsnew/changelog.html): Исправлен [`html.parser.HTMLParser`](https://python-all.ru/3/library/html.parser.html#html.parser.HTMLParser), чтобы он не разэкранировал символьные сущности в значениях атрибутов, если за ними следует буквенно-цифровой символ ASCII или знак равенства.
- [bpo-28494](https://python-all.ru/3/whatsnew/changelog.html): улучшить частоту ложных срабатываний проверки Zip-файлов в [`zipfile.is_zipfile()`](https://python-all.ru/3/library/zipfile.html#zipfile.is_zipfile).
- [gh-134381](https://python-all.ru/3/whatsnew/changelog.html): исправить [`RuntimeError`](https://python-all.ru/3/library/exceptions.html#RuntimeError) при использовании незапущенного [`threading.Thread`](https://python-all.ru/3/library/threading.html#threading.Thread) после вызова [`os.fork()`](https://python-all.ru/3/library/os.html#os.fork)

### Ядро и встроенные функции

- [gh-127960](https://python-all.ru/3/whatsnew/changelog.html): интерактивная оболочка PyREPL больше не устанавливает глобальные имена `__package__` и `__file__` равными внутренним компонентам пакета `_pyrepl`. Автор: Yuichiro Tachibana.
- [gh-130397](https://python-all.ru/3/whatsnew/changelog.html): удалить особую обработку ограничений глубины стека C для WASI. Поскольку WebAssembly имеет встроенную защиту стека, это не представляет угрозы безопасности.
- [gh-128066](https://python-all.ru/3/whatsnew/changelog.html): исправляет граничный случай, когда PyREPL некорректно выдавал ошибку при запуске Python в файловой системе только для чтения при попытке записи в файл истории.
- [gh-69605](https://python-all.ru/3/whatsnew/changelog.html): при автодополнении импорта в [REPL](https://python-all.ru/3/glossary.html#term-REPL), если не найдено ни одного кандидата, теперь не выдается никакого предложения, вместо предложений из текущего пространства имен.
- [gh-134158](https://python-all.ru/3/whatsnew/changelog.html): исправить раскраску двойных фигурных скобок в f-строках и t-строках в [REPL](https://python-all.ru/3/glossary.html#term-REPL).
- [gh-134119](https://python-all.ru/3/whatsnew/changelog.html): исправить краш при вызове [`next()`](https://python-all.ru/3/library/functions.html#next) на исчерпанном итераторе строки шаблона. Автор: Jelle Zijlstra.
- [gh-134100](https://python-all.ru/3/whatsnew/changelog.html): исправить ошибку use-after-free, возникающую, когда импортированный модуль не находится в [`sys.modules`](https://python-all.ru/3/library/sys.html#sys.modules) после его первоначального импорта. Автор: Nico-Posada.
- [gh-133999](https://python-all.ru/3/whatsnew/changelog.html): исправить регрессию [`SyntaxError`](https://python-all.ru/3/library/exceptions.html#SyntaxError) в разборе [`except`](https://python-all.ru/3/reference/compound_stmts.html#except) после [gh-123440](https://python-all.ru/3/whatsnew/changelog.html).
- [gh-133886](https://python-all.ru/3/whatsnew/changelog.html): исправить [`sys.remote_exec()`](https://python-all.ru/3/library/sys.html#sys.remote_exec) для не-ASCII путей в не-UTF-8 локалях и не-UTF-8 путей в UTF-8 локалях.
- [gh-133703](https://python-all.ru/3/whatsnew/changelog.html): исправить ситуацию, когда хеш-таблица в словаре может быть больше, чем необходимо, в некоторых ситуациях.
- [gh-133778](https://python-all.ru/3/whatsnew/changelog.html): исправить ошибку, при которой присваивание атрибутам [`__annotations__`](https://python-all.ru/3/reference/datamodel.html#type.__annotations__) классов, определенных в `from __future__ import annotations`, не имело эффекта.
- [gh-132762](https://python-all.ru/3/whatsnew/changelog.html): [`fromkeys()`](https://python-all.ru/3/library/stdtypes.html#dict.fromkeys) больше не зацикливается при добавлении небольшого набора ключей в большой базовый словарь. Автор: Angela Liss.
- [gh-133541](https://python-all.ru/3/whatsnew/changelog.html): несогласованные отступы в пользовательском вводе приводили к краху нового REPL при активной подсветке синтаксиса. Теперь это исправлено.
- [gh-133516](https://python-all.ru/3/whatsnew/changelog.html): вызывать [`ValueError`](https://python-all.ru/3/library/exceptions.html#ValueError), когда константы `True`, `False` или `None` используются как идентификатор после нормализации NFKC.
- [gh-132542](https://python-all.ru/3/whatsnew/changelog.html): обновить [`Thread.native_id`](https://python-all.ru/3/library/threading.html#threading.Thread.native_id) после *[fork(2)](https://python-all.ru/3/whatsnew/changelog.html)* для обеспечения точности. Автор: Noam Cohen.

### C API

- [gh-134144](https://python-all.ru/3/whatsnew/changelog.html): исправить краш при вызове [`Py_EndInterpreter()`](https://python-all.ru/3/c-api/subinterpreters.html#c.Py_EndInterpreter) с [состоянием потока](https://python-all.ru/3/glossary.html#term-thread-state), которое не является начальным потоком для интерпретатора.

### Сборка

- [gh-134455](https://python-all.ru/3/whatsnew/changelog.html): исправлена генерация `build-details.json` для использования правильного `c_api.headers`, как определено в [**PEP 739**](https://python-all.ru/3/whatsnew/changelog.html), вместо `c_api.include`.
- [gh-131769](https://python-all.ru/3/whatsnew/changelog.html): исправить определение, является ли собираемый Python в кросс-сборке pydebug-сборкой.
- [gh-117088](https://python-all.ru/3/whatsnew/changelog.html): компоновщик AIX не поддерживает опцию -h, поэтому избежать ее можно с помощью проверки платформы.

## Python 3.14.0 beta 1

*Дата выпуска: 2025-05-06*

### Windows

- [gh-132930](https://python-all.ru/3/whatsnew/changelog.html): помечает установщик для Windows как устаревший и обновляет документацию, чтобы включить описание нового менеджера установки Python.
- [gh-127405](https://python-all.ru/3/whatsnew/changelog.html): добавить `ABIFLAGS` в [`sysconfig.get_config_vars()`](https://python-all.ru/3/library/sysconfig.html#sysconfig.get_config_vars) на Windows. Автор: Xuehai Pan.

### Инструменты/Демо

- [gh-130453](https://python-all.ru/3/whatsnew/changelog.html): разрешить передачу нескольких именованных аргументов с одним и тем же именем функции в **pygettext**.
- [gh-130195](https://python-all.ru/3/whatsnew/changelog.html): добавить предупреждающие сообщения при вызове нереализованной опции `-a/--extract-all` в **pygettext**.

### Тесты

- [gh-133131](https://python-all.ru/3/whatsnew/changelog.html): iOS-тестовая среда теперь будет выбирать для тестирования последнее выпущенное устройство «SE-класса», если устройство явно не указано.
- [gh-91048](https://python-all.ru/3/whatsnew/changelog.html): Добавлена возможность внешнего просмотра всех ожидающих задач asyncio, даже если в цикл событий в данный момент не введена ни одна задача.
- [gh-109981](https://python-all.ru/3/whatsnew/changelog.html): Тестовый вспомогательный инструмент, подсчитывающий список открытых файловых дескрипторов, теперь использует оптимизированный подход `/dev/fd` на всех платформах Apple, а не только на macOS. Это предотвращает сбои, вызванные защищёнными файловыми дескрипторами.
- [gh-132678](https://python-all.ru/3/whatsnew/changelog.html): Добавлен `--prioritize` в `-m test`. Эта опция позволяет пользователю указать, какие выбранные тесты должны выполняться первыми, даже если порядок в остальном рандомизирован. Это особенно полезно для тестов, которые выполняются дольше всех.
- [gh-131290](https://python-all.ru/3/whatsnew/changelog.html): Тесты в `Lib/test` теперь можно корректно запускать как самостоятельные скрипты.

### Безопасность

- [gh-115322](https://python-all.ru/3/whatsnew/changelog.html): Базовые модули расширения, лежащие в основе [`readline`](https://python-all.ru/3/library/readline.html#module-readline):, [`subprocess`](https://python-all.ru/3/library/subprocess.html#module-subprocess) и [`ctypes`](https://python-all.ru/3/library/ctypes.html#module-ctypes), теперь генерируют события аудита на ранее неохваченных путях кода, которые могли приводить к доступу к файловой системе, связанному с вызовом C-функций и выполнением внешних бинарных файлов. Также исправлен хук аудита `ctypes.call_function`: теперь он использует беззнаковое значение для своего `function pointer`.

### Библиотека

- [gh-133490](https://python-all.ru/3/whatsnew/changelog.html): Добавлена поддержка цветов в PDB в удалённом режиме.
- [gh-132493](https://python-all.ru/3/whatsnew/changelog.html): Устранено нетерпеливое вычисление аннотаций в функциях, декорированных [`reprlib.recursive_repr()`](https://python-all.ru/3/library/reprlib.html#reprlib.recursive_repr).
- [gh-130645](https://python-all.ru/3/whatsnew/changelog.html): Добавлен цвет в CLI argparse из стандартной библиотеки. Патч от Hugo van Kemenade.
- [gh-119180](https://python-all.ru/3/whatsnew/changelog.html): Реализовано успешное выполнение [`annotationlib.get_annotations()`](https://python-all.ru/3/library/annotationlib.html#annotationlib.get_annotations) с форматом `FORWARDREF`, даже если при вычислении аннотаций возникает исключение, отличное от [`NameError`](https://python-all.ru/3/library/exceptions.html#NameError) или [`AttributeError`](https://python-all.ru/3/library/exceptions.html#AttributeError).
- [gh-133351](https://python-all.ru/3/whatsnew/changelog.html): Исправлен удалённый PDB: теперь он корректно запрашивает табуляционные завершения для выражений Python у сервера при завершении строки продолжения многострочного блока Python.
- [gh-133367](https://python-all.ru/3/whatsnew/changelog.html): Добавлены опции `--feature-version`, `--optimize` и `--show-empty` в интерфейс командной строки [`ast`](https://python-all.ru/3/library/ast.html#module-ast). Патч от Semyon Moroz.
- [gh-133363](https://python-all.ru/3/whatsnew/changelog.html): Исправлен класс [`cmd.Cmd`](https://python-all.ru/3/library/cmd.html#cmd.Cmd): теперь он надёжно вызывает метод `completedefault` всякий раз, когда метод `do_shell` не определён и запрашивается табуляционное завершение для строки, начинающейся с `!`.
- [gh-113081](https://python-all.ru/3/whatsnew/changelog.html): Подсветка синтаксиса исходного кода в [`pdb`](https://python-all.ru/3/library/pdb.html#module-pdb).
- [gh-133349](https://python-all.ru/3/whatsnew/changelog.html): Введён автоотступ в многострочном вводе [`pdb`](https://python-all.ru/3/library/pdb.html#module-pdb).
- [gh-133306](https://python-all.ru/3/whatsnew/changelog.html): Используется `\z` вместо `\Z` в [`fnmatch.translate()`](https://python-all.ru/3/library/fnmatch.html#fnmatch.translate) и [`glob.translate()`](https://python-all.ru/3/library/glob.html#glob.translate).
- [gh-133306](https://python-all.ru/3/whatsnew/changelog.html): Поддержка `\z` как синонима для `\Z` в [`regular expressions`](https://python-all.ru/3/library/re.html#module-re).
- [gh-133300](https://python-all.ru/3/whatsnew/changelog.html): Параметр `suggest_on_error` функции [`argparse.ArgumentParser`](https://python-all.ru/3/library/argparse.html#argparse.ArgumentParser) теперь является параметром только по ключевому слову. Патч от Hugo van Kemenade.
- [gh-133290](https://python-all.ru/3/whatsnew/changelog.html): Исправлена проблема кэширования атрибута при установке [`ctypes._Pointer._type_`](https://python-all.ru/3/library/ctypes.html#ctypes._Pointer._type_) в недокументированной и устаревшей функции `ctypes.SetPointerType()` и недокументированном методе `set_type()`.
- [gh-133223](https://python-all.ru/3/whatsnew/changelog.html): При подключении PDB к удалённому процессу теперь выполняется более качественный перехват Ctrl+C и его передача удалённому процессу.
- [gh-133153](https://python-all.ru/3/whatsnew/changelog.html): Отключено автодополнение команд [`pdb`](https://python-all.ru/3/library/pdb.html#module-pdb) в режиме `interact` `pdb`.
- [gh-133139](https://python-all.ru/3/whatsnew/changelog.html): Добавлена функция [`curses.assume_default_colors()`](https://python-all.ru/3/library/curses.html#curses.assume_default_colors), улучшенная версия функции [`curses.use_default_colors()`](https://python-all.ru/3/library/curses.html#curses.use_default_colors), позволяющая изменить цветовую пару `0`.
- [gh-133089](https://python-all.ru/3/whatsnew/changelog.html): Теперь при вызове функции [`subprocess.run()`](https://python-all.ru/3/library/subprocess.html#subprocess.run) с тайм-аутом для [`subprocess.TimeoutExpired`](https://python-all.ru/3/library/subprocess.html#subprocess.TimeoutExpired) используется исходное значение тайм-аута, а не частичное оставшееся значение, которое ранее иногда использовалось на финальном `wait()` и могло вводить в заблуждение.
- [gh-133036](https://python-all.ru/3/whatsnew/changelog.html): [`codecs.open()`](https://python-all.ru/3/library/codecs.html#codecs.open) теперь считается устаревшим. Вместо него используйте [`open()`](https://python-all.ru/3/library/functions.html#open). Предложено Inada Naoki.
- [gh-132987](https://python-all.ru/3/whatsnew/changelog.html): Многие встроенные и расширяющие функции, принимающие беззнаковый целочисленный аргумент, теперь используют [`__index__()`](https://python-all.ru/3/reference/datamodel.html#object.__index__), если он доступен.
- [gh-124703](https://python-all.ru/3/whatsnew/changelog.html): Устанавливать код возврата `1` при прерывании процесса из [`pdb`](https://python-all.ru/3/library/pdb.html#module-pdb).
- [gh-133005](https://python-all.ru/3/whatsnew/changelog.html): Поддержка передачи опции `preset` в [`tarfile.open()`](https://python-all.ru/3/library/tarfile.html#tarfile.open) при использовании режима `'w|xz'`.
- [gh-115032](https://python-all.ru/3/whatsnew/changelog.html): Поддержка пользовательских обработчиков логирования с аргументом *strm* устарела и будет удалена в Python 3.16. Вместо этого определяйте обработчики с аргументом *stream* (поток данных). Патч от Mariusz Felisiak.
- [gh-132991](https://python-all.ru/3/whatsnew/changelog.html): Добавлена константа `socket.IP_FREEBIND` на Linux 2.4 и новее.
- [gh-132995](https://python-all.ru/3/whatsnew/changelog.html): Обновление версии pip, входящей в состав ensurepip, до версии 25.1.1
- [gh-132933](https://python-all.ru/3/whatsnew/changelog.html): Модуль zipapp теперь применяет фильтр при создании списка файлов для добавления, а не дожидается момента добавления файла в архив.
- [gh-121249](https://python-all.ru/3/whatsnew/changelog.html): Всегда поддерживать float complex и double complex типы C в модуле [`struct`](https://python-all.ru/3/library/struct.html#module-struct). Исправление от Sergey B Kirpichev.
- [gh-132915](https://python-all.ru/3/whatsnew/changelog.html): [`fcntl.fcntl()`](https://python-all.ru/3/library/fcntl.html#fcntl.fcntl) и [`fcntl.ioctl()`](https://python-all.ru/3/library/fcntl.html#fcntl.ioctl) теперь могут обнаруживать переполнение буфера и вызывать [`SystemError`](https://python-all.ru/3/library/exceptions.html#SystemError). В таком случае стек и память могут быть повреждены, поэтому относитесь к этой ошибке как к фатальной.
- [gh-132017](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка, возникающая при приостановке `pyrepl`, а затем возобновлении и завершении.
- [gh-132893](https://python-all.ru/3/whatsnew/changelog.html): Улучшена точность [`statistics.NormalDist.cdf()`](https://python-all.ru/3/library/statistics.html#statistics.NormalDist.cdf) для входных значений меньше среднего.
- [gh-130328](https://python-all.ru/3/whatsnew/changelog.html): Ускорение вставки в `PyREPL` на Windows. Исправление от Chris Eibl.
- [gh-132882](https://python-all.ru/3/whatsnew/changelog.html): Исправлено копирование объектов [`typing.Union`](https://python-all.ru/3/library/typing.html#typing.Union), содержащих объекты, не поддерживающие оператор `|`.
- [gh-93696](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка отображения точек останова для замороженных модулей в [`pdb`](https://python-all.ru/3/library/pdb.html#module-pdb).
- [gh-129965](https://python-all.ru/3/whatsnew/changelog.html): Добавлены MIME-типы для `.7z`, `.apk`, `.deb`, `.glb`, `.gltf`, `.gz`, `.m4v`, `.php`, `.rar`, `.rpm`, `.stl` и `.wmv`. Исправление от Hugo van Kemenade.
- [gh-132742](https://python-all.ru/3/whatsnew/changelog.html): [`fcntl.fcntl()`](https://python-all.ru/3/library/fcntl.html#fcntl.fcntl) теперь поддерживает произвольные [байтоподобные объекты](https://python-all.ru/3/glossary.html#term-bytes-like-object), а не только [`bytes`](https://python-all.ru/3/library/stdtypes.html#bytes). [`fcntl.ioctl()`](https://python-all.ru/3/library/fcntl.html#fcntl.ioctl) теперь автоматически повторяет системные вызовы, завершившиеся с EINTR, и освобождает GIL во время системного вызова даже для больших байтоподобных объектов.
- [gh-132451](https://python-all.ru/3/whatsnew/changelog.html): CLI отладчика PDB теперь принимает аргумент `-p PID`, чтобы разрешить присоединение к запущенному процессу. Процесс должен работать под той же версией Python, что и PDB.
- [gh-125618](https://python-all.ru/3/whatsnew/changelog.html): Добавлен параметр *format* в [`annotationlib.ForwardRef.evaluate()`](https://python-all.ru/3/library/annotationlib.html#annotationlib.ForwardRef.evaluate). Вычисление аннотаций в формате `FORWARDREF` теперь успешно выполняется в большем числе случаев, которые ранее вызывали исключение.
- [gh-132805](https://python-all.ru/3/whatsnew/changelog.html): Исправлена некорректная обработка вложенных неконстантных значений в формате FORWARDREF в [`annotationlib`](https://python-all.ru/3/library/annotationlib.html#module-annotationlib).
- [gh-132734](https://python-all.ru/3/whatsnew/changelog.html): Добавлены новые константы для Bluetooth [`sockets`](https://python-all.ru/3/library/socket.html#module-socket).
- [gh-132673](https://python-all.ru/3/whatsnew/changelog.html): Исправлено [`AssertionError`](https://python-all.ru/3/library/exceptions.html#AssertionError), возникающее в [`ctypes.Structure`](https://python-all.ru/3/library/ctypes.html#ctypes.Structure) с `_align_ = 0` и `_fields_ = []`.
- [gh-132578](https://python-all.ru/3/whatsnew/changelog.html): Переименовано поле `threading.Thread._handle` во избежание затенения методов, определённых в подклассах `threading.Thread`.
- [gh-132561](https://python-all.ru/3/whatsnew/changelog.html): Исправлен публичный метод `locked` класса `multiprocessing.SemLock`. Также добавлены 2 теста для производных классов [`multiprocessing.Lock`](https://python-all.ru/3/library/multiprocessing.html#multiprocessing.Lock) и [`multiprocessing.RLock`](https://python-all.ru/3/library/multiprocessing.html#multiprocessing.RLock).
- [gh-121468](https://python-all.ru/3/whatsnew/changelog.html): Добавлена функция [`pdb.set_trace_async()`](https://python-all.ru/3/library/pdb.html#pdb.set_trace_async) для поддержки выражений [`await`](https://python-all.ru/3/reference/expressions.html#await) в [`pdb`](https://python-all.ru/3/library/pdb.html#module-pdb).
- [gh-132493](https://python-all.ru/3/whatsnew/changelog.html): [`typing.Protocol`](https://python-all.ru/3/library/typing.html#typing.Protocol) теперь использует [`annotationlib.get_annotations()`](https://python-all.ru/3/library/annotationlib.html#annotationlib.get_annotations) при проверке, реализует ли экземпляр протокол с [`isinstance()`](https://python-all.ru/3/library/functions.html#isinstance). Это включает поддержку проверок `isinstance` для классов с отложенными аннотациями.
- [gh-132536](https://python-all.ru/3/whatsnew/changelog.html): Не отключать событие [`PY_THROW`](https://python-all.ru/3/library/sys.monitoring.html#monitoring-event-PY_THROW) в [`bdb`](https://python-all.ru/3/library/bdb.html#module-bdb), поскольку его невозможно отключить.
- [gh-132527](https://python-all.ru/3/whatsnew/changelog.html): Включить допустимый код типа ‘w’ в сообщение об ошибке, если в [`array.array`](https://python-all.ru/3/library/array.html#array.array) передан недопустимый код типа.
- [gh-132099](https://python-all.ru/3/whatsnew/changelog.html): Bluetooth-сокет с протоколом [`BTPROTO_HCI`](https://python-all.ru/3/library/socket.html#socket.BTPROTO_HCI) на Linux теперь принимает адрес в формате целого числа `device_id`, а не только кортеж `(device_id,)`.
- [gh-81793](https://python-all.ru/3/whatsnew/changelog.html): Исправлено [`os.link()`](https://python-all.ru/3/library/os.html#os.link) на платформах (например, Linux), где системная функция `link()` не следует за символьными ссылками. На Linux теперь она следует за символьными ссылками по умолчанию или если указано `follow_symlinks=True`. На Windows теперь вызывает ошибку, если передан `follow_symlinks=True`. На macOS теперь вызывает ошибку, если передан `follow_symlinks=False` и системная функция `linkat()` недоступна во время выполнения.
- [gh-132493](https://python-all.ru/3/whatsnew/changelog.html): Поддержка создания классов [`typing.Protocol`](https://python-all.ru/3/library/typing.html#typing.Protocol) с аннотациями, которые не могут быть разрешены во время создания класса.
- [gh-132491](https://python-all.ru/3/whatsnew/changelog.html): Переименован `annotationlib.value_to_string` в [`annotationlib.type_repr()`](https://python-all.ru/3/library/annotationlib.html#annotationlib.type_repr) и улучшена обработка объектов-функций.
- [gh-132426](https://python-all.ru/3/whatsnew/changelog.html): Добавлен [`annotationlib.get_annotate_from_class_namespace()`](https://python-all.ru/3/library/annotationlib.html#annotationlib.get_annotate_from_class_namespace) в качестве вспомогательной функции для доступа к аннотациям в метаклассах, и удалён `annotationlib.get_annotate_function`.
- [gh-70145](https://python-all.ru/3/whatsnew/changelog.html): Добавлена поддержка каналов в протоколе Bluetooth HCI ([`BTPROTO_HCI`](https://python-all.ru/3/library/socket.html#socket.BTPROTO_HCI)).
- [gh-131913](https://python-all.ru/3/whatsnew/changelog.html): Добавлена функция быстрого доступа [`multiprocessing.Process.interrupt()`](https://python-all.ru/3/library/multiprocessing.html#multiprocessing.Process.interrupt) наряду с существующими [`multiprocessing.Process.terminate()`](https://python-all.ru/3/library/multiprocessing.html#multiprocessing.Process.terminate) и [`multiprocessing.Process.kill()`](https://python-all.ru/3/library/multiprocessing.html#multiprocessing.Process.kill) для улучшенного управления завершением дочерних процессов.
- [gh-132439](https://python-all.ru/3/whatsnew/changelog.html): Исправлено `PyREPL` на Windows: символы, введённые через AltGr, проглатывались. Исправление от Chris Eibl.
- [gh-132429](https://python-all.ru/3/whatsnew/changelog.html): Исправлена поддержка Bluetooth-сокетов на NetBSD и DragonFly BSD. Добавлена поддержка *cid* и *bdaddr\_type* в адресе BTPROTO\_L2CAP на FreeBSD. Возвращается *cid* в `getsockname()` для BTPROTO\_L2CAP, если он не равен нулю.
- [gh-132106](https://python-all.ru/3/whatsnew/changelog.html): [`QueueListener.start`](https://python-all.ru/3/library/logging.handlers.html#logging.handlers.QueueListener.start) теперь вызывает [`RuntimeError`](https://python-all.ru/3/library/exceptions.html#RuntimeError), если слушатель уже запущен.
- [gh-132417](https://python-all.ru/3/whatsnew/changelog.html): Исправлено разыменование нулевого указателя `NULL`, когда C-функция, вызванная с помощью [`ctypes`](https://python-all.ru/3/library/ctypes.html#module-ctypes) с `restype` [`py_object`](https://python-all.ru/3/library/ctypes.html#ctypes.py_object), возвращает `NULL`.
- [gh-132385](https://python-all.ru/3/whatsnew/changelog.html): Исправлены подсказки ошибок экземпляра, которые могли вызывать исключения в [`object.__getattr__()`](https://python-all.ru/3/reference/datamodel.html#object.__getattr__) в [`traceback`](https://python-all.ru/3/library/traceback.html#module-traceback).
- [gh-125866](https://python-all.ru/3/whatsnew/changelog.html): Добавлен необязательный аргумент *add\_scheme* в [`urllib.request.pathname2url()`](https://python-all.ru/3/library/urllib.request.html#urllib.request.pathname2url); если установлен в true, возвращается полный URL. Аналогично добавлен необязательный аргумент *require\_scheme* в [`url2pathname()`](https://python-all.ru/3/library/urllib.request.html#urllib.request.url2pathname); если установлен в true, принимается полный URL.
- [gh-132308](https://python-all.ru/3/whatsnew/changelog.html): Теперь [`traceback.TracebackException`](https://python-all.ru/3/library/traceback.html#traceback.TracebackException) корректно отображает атрибуты `__context__` и `__cause__` из [ложных](https://python-all.ru/3/library/stdtypes.html#truth) [`Exception`](https://python-all.ru/3/library/exceptions.html#Exception), и атрибут `exceptions` из ложных [`ExceptionGroup`](https://python-all.ru/3/library/exceptions.html#ExceptionGroup).
- [gh-130645](https://python-all.ru/3/whatsnew/changelog.html): Добавлена цветовая раскраска вывода справки [`argparse`](https://python-all.ru/3/library/argparse.html#module-argparse). Патч от Hugo van Kemenade.
- [gh-127495](https://python-all.ru/3/whatsnew/changelog.html): В PyREPL теперь добавляется новая запись в файл `PYTHON_HISTORY` *после* каждого оператора. Это должно сохранять историю командной строки после завершения интерпретатора. Патч от Sergey B Kirpichev.
- [gh-129463](https://python-all.ru/3/whatsnew/changelog.html): Сравнение объектов [`annotationlib.ForwardRef`](https://python-all.ru/3/library/annotationlib.html#annotationlib.ForwardRef) больше не использует внутренние атрибуты `__code__` и `__ast_node__`, которые используются как кэши.
- [gh-132250](https://python-all.ru/3/whatsnew/changelog.html): Исправлена [`SystemError`](https://python-all.ru/3/library/exceptions.html#SystemError) в [`cProfile`](https://python-all.ru/3/library/profile.html#module-cProfile), возникающая при поиске фактической C-функции метода, если он вызывает исключение.
- [gh-132064](https://python-all.ru/3/whatsnew/changelog.html): [`annotationlib.get_annotations()`](https://python-all.ru/3/library/annotationlib.html#annotationlib.get_annotations) теперь использует атрибут `__annotate__`, если он присутствует, даже если `__annotations__` отсутствует. Кроме того, функция теперь вызывает [`TypeError`](https://python-all.ru/3/library/exceptions.html#TypeError), если ей передан объект, не имеющий никаких аннотаций.
- [gh-130664](https://python-all.ru/3/whatsnew/changelog.html): Поддержка разделителя разрядов `'_'` при форматировании целой части чисел [`Decimal`](https://python-all.ru/3/library/decimal.html#decimal.Decimal). Патч от Sergey B Kirpichev.
- [gh-131952](https://python-all.ru/3/whatsnew/changelog.html): Добавлен цветной вывод в CLI **json**. Патч от Tomas Roun.
- [gh-132063](https://python-all.ru/3/whatsnew/changelog.html): Предотвращено игнорирование исключений, которые оцениваются как ложные (а именно, когда их метод `__bool__` возвращает `False` или их метод `__len__` возвращает 0), функциями [`concurrent.futures.ProcessPoolExecutor`](https://python-all.ru/3/library/concurrent.futures.html#concurrent.futures.ProcessPoolExecutor) и [`concurrent.futures.ThreadPoolExecutor`](https://python-all.ru/3/library/concurrent.futures.html#concurrent.futures.ThreadPoolExecutor).
- [gh-132106](https://python-all.ru/3/whatsnew/changelog.html): [`logging.handlers.QueueListener`](https://python-all.ru/3/library/logging.handlers.html#logging.handlers.QueueListener) теперь реализует протокол контекстного менеджера, что позволяет использовать его в операторе [`with`](https://python-all.ru/3/reference/compound_stmts.html#with).
- [gh-132054](https://python-all.ru/3/whatsnew/changelog.html): MIME-тип `application/yaml` ([**RFC 9512**](https://python-all.ru/3/whatsnew/changelog.html)) теперь поддерживается [`mimetypes`](https://python-all.ru/3/library/mimetypes.html#module-mimetypes). Патч от Sasha “Nelie” Chernykh и Hugo van Kemenade.
- [gh-119605](https://python-all.ru/3/whatsnew/changelog.html): Теперь учитывается `follow_wrapped` для методов `__init__()` и `__new__()` при получении сигнатуры класса для класса с [`inspect.signature()`](https://python-all.ru/3/library/inspect.html#inspect.signature). Сохранение сигнатуры класса после обёртывания с помощью [`warnings.deprecated()`](https://python-all.ru/3/library/warnings.html#warnings.deprecated). Патч от Xuehai Pan.
- [gh-118761](https://python-all.ru/3/whatsnew/changelog.html): Улучшено время импорта до 33 раз для модуля [`shlex`](https://python-all.ru/3/library/shlex.html#module-shlex), и повышена производительность [`shlex.quote()`](https://python-all.ru/3/library/shlex.html#shlex.quote) до 12 раз. Патч от Adam Turner.
- [gh-85302](https://python-all.ru/3/whatsnew/changelog.html): Добавлена поддержка [`BTPROTO_SCO`](https://python-all.ru/3/library/socket.html#socket.BTPROTO_SCO) в сокетах на FreeBSD.
- [gh-131757](https://python-all.ru/3/whatsnew/changelog.html): [`functools.lru_cache()`](https://python-all.ru/3/library/functools.html#functools.lru_cache) теперь вызывает кэшированную функцию без блокировки, чтобы обеспечить параллелизм.
- [gh-131423](https://python-all.ru/3/whatsnew/changelog.html): [`ssl`](https://python-all.ru/3/library/ssl.html#module-ssl) теперь может показывать описания ошибок, добавленных в OpenSSL 3.4.1. Патч от Bénédikt Tran.
- [gh-131434](https://python-all.ru/3/whatsnew/changelog.html): Улучшено сообщение об ошибке для неверного формата в [`time.strptime()`](https://python-all.ru/3/library/time.html#time.strptime).
- [gh-131524](https://python-all.ru/3/whatsnew/changelog.html): Добавлено сообщение справки в интерфейс командной строки [`platform`](https://python-all.ru/3/library/platform.html#module-platform). Автор: Harry Lees.
- [gh-100926](https://python-all.ru/3/whatsnew/changelog.html): Перенесён кэш типов [`ctypes.POINTER()`](https://python-all.ru/3/library/ctypes.html#ctypes.POINTER) из глобального внутреннего кэша (`_pointer_type_cache`) в атрибут [`ctypes._CData.__pointer_type__`](https://python-all.ru/3/library/ctypes.html#ctypes._CData.__pointer_type__) соответствующих типов [`ctypes`](https://python-all.ru/3/library/ctypes.html#module-ctypes). Это предотвратит бесконтрольный рост кэша в некоторых ситуациях.
- [gh-85702](https://python-all.ru/3/whatsnew/changelog.html): Если `zoneinfo._common.load_tzdata` передаётся пакет без ресурса, то вызывается `ZoneInfoNotFoundError`, а не [`IsADirectoryError`](https://python-all.ru/3/library/exceptions.html#IsADirectoryError).
- [gh-123471](https://python-all.ru/3/whatsnew/changelog.html): Обеспечена безопасность параллельных итераций по [`itertools.repeat`](https://python-all.ru/3/library/itertools.html#itertools.repeat) в режиме free-threading.
- [gh-131127](https://python-all.ru/3/whatsnew/changelog.html): Системы, использующие LibreSSL, теперь успешно собираются.
- [gh-89157](https://python-all.ru/3/whatsnew/changelog.html): Чистая реализация на Python для [`datetime.date.fromisoformat()`](https://python-all.ru/3/library/datetime.html#datetime.date.fromisoformat) теперь принимает только ASCII-строки для согласованности с реализацией на C.
- [gh-130941](https://python-all.ru/3/whatsnew/changelog.html): Исправлен разбор [`configparser.ConfigParser`](https://python-all.ru/3/library/configparser.html#configparser.ConfigParser) пустой интерполяции, когда `allow_no_value` установлен в `True`.
- [gh-110067](https://python-all.ru/3/whatsnew/changelog.html): Функции максимальной кучи [`heapq`](https://python-all.ru/3/library/heapq.html#module-heapq): [`heapq.heapify_max()`](https://python-all.ru/3/library/heapq.html#heapq.heapify_max), [`heapq.heappush_max()`](https://python-all.ru/3/library/heapq.html#heapq.heappush_max), [`heapq.heappop_max()`](https://python-all.ru/3/library/heapq.html#heapq.heappop_max) и [`heapq.heapreplace_max()`](https://python-all.ru/3/library/heapq.html#heapq.heapreplace_max) сделаны публичными. Прежние имена с подчёркиванием сохранены для обратной совместимости. Кроме того, отсутствовавшая функция [`heapq.heappushpop_max()`](https://python-all.ru/3/library/heapq.html#heapq.heappushpop_max) добавлена как в реализацию на C, так и на Python.
- [gh-129098](https://python-all.ru/3/whatsnew/changelog.html): Исправлено отображение traceback в REPL при использовании [`compile()`](https://python-all.ru/3/library/functions.html#compile) с несуществующим файлом. Патч от Bénédikt Tran.
- [gh-130631](https://python-all.ru/3/whatsnew/changelog.html): `http.cookiejar.join_header_words()` теперь стал более похож на оригинальную Perl-версию. Теперь он экранирует тот же набор символов и всегда экранирует значения, заканчивающиеся на `"\n"`.
- [gh-130482](https://python-all.ru/3/whatsnew/changelog.html): Добавлена возможность указывать имя для `tkinter.OptionMenu` и `tkinter.ttk.OptionMenu`.
- [gh-77065](https://python-all.ru/3/whatsnew/changelog.html): Добавлен необязательный аргумент *echo\_char* (только по ключевому слову) для [`getpass.getpass()`](https://python-all.ru/3/library/getpass.html#getpass.getpass) для обеспечения опциональной визуальной обратной связи с клавиатуры. Патч от Semyon Moroz.
- [gh-130317](https://python-all.ru/3/whatsnew/changelog.html): Исправлены [`PyFloat_Pack2()`](https://python-all.ru/3/c-api/float.html#c.PyFloat_Pack2) и [`PyFloat_Unpack2()`](https://python-all.ru/3/c-api/float.html#c.PyFloat_Unpack2) для NaN с нагрузкой. Это исправляет преобразование туда-обратно для [`struct.unpack()`](https://python-all.ru/3/library/struct.html#struct.unpack) и [`struct.pack()`](https://python-all.ru/3/library/struct.html#struct.pack) в случае типа IEEE 754 binary16 «half precision». Патч от Sergey B Kirpichev.
- [gh-130402](https://python-all.ru/3/whatsnew/changelog.html): Присоединение запущенных потоков-демонов во время завершения интерпретатора теперь вызывает [`PythonFinalizationError`](https://python-all.ru/3/library/exceptions.html#PythonFinalizationError).
- [gh-130167](https://python-all.ru/3/whatsnew/changelog.html): Увеличена скорость работы [`difflib.IS_LINE_JUNK()`](https://python-all.ru/3/library/difflib.html#difflib.IS_LINE_JUNK). Патч от Semyon Moroz.
- [gh-101410](https://python-all.ru/3/whatsnew/changelog.html): Добавлены более подробные сообщения об ошибках области определения в модуле [`math`](https://python-all.ru/3/library/math.html#module-math).
- [gh-128384](https://python-all.ru/3/whatsnew/changelog.html): Заставить [`warnings.catch_warnings`](https://python-all.ru/3/library/warnings.html#warnings.catch_warnings) использовать контекстную переменную для хранения состояния фильтрации предупреждений, если флаг [`sys.flags.context_aware_warnings`](https://python-all.ru/3/library/sys.html#sys.flags.context_aware_warnings) установлен в true. Это делает использование контекстного менеджера потокобезопасным в многопоточных программах. Флаг по умолчанию true в free-threaded сборках и false в остальных случаях. Значение флага можно переопределить через параметр командной строки [`-X context_aware_warnings`](https://python-all.ru/3/using/cmdline.html#cmdoption-X) или переменную окружения [`PYTHON_CONTEXT_AWARE_WARNINGS`](https://python-all.ru/3/using/cmdline.html#envvar-PYTHON_CONTEXT_AWARE_WARNINGS).
- [gh-129719](https://python-all.ru/3/whatsnew/changelog.html): Исправлено отсутствие константы `socket.CAN_RAW_ERR_FILTER` в модуле socket на Linux. Она отсутствовала начиная с Python 3.11.
- [gh-129027](https://python-all.ru/3/whatsnew/changelog.html): Вызывать [`DeprecationWarning`](https://python-all.ru/3/library/exceptions.html#DeprecationWarning) для [`sys._clear_type_cache()`](https://python-all.ru/3/library/sys.html#sys._clear_type_cache). Эта функция была объявлена устаревшей в Python 3.13, но не вызывала предупреждение времени выполнения.
- [gh-128307](https://python-all.ru/3/whatsnew/changelog.html): Добавлен именованный аргумент `eager_start` в [`asyncio.loop.create_task()`](https://python-all.ru/3/library/asyncio-eventloop.html#asyncio.loop.create_task)
- [gh-127604](https://python-all.ru/3/whatsnew/changelog.html): Добавлена поддержка печати C-стека на системах, которые поддерживают это через [`faulthandler.dump_c_stack()`](https://python-all.ru/3/library/faulthandler.html#faulthandler.dump_c_stack) или через *c\_stack* как аргумент в [`faulthandler.enable()`](https://python-all.ru/3/library/faulthandler.html#faulthandler.enable).
- [gh-127385](https://python-all.ru/3/whatsnew/changelog.html): Добавлена константа `F_DUPFD_QUERY` в модуль [`fcntl`](https://python-all.ru/3/library/fcntl.html#module-fcntl).
- [gh-126838](https://python-all.ru/3/whatsnew/changelog.html): Добавлен параметр *resolve\_host*, доступный только по ключу, в [`urllib.request.url2pathname()`](https://python-all.ru/3/library/urllib.request.html#urllib.request.url2pathname), и исправлена обработка файловых URL с сервером.
- [gh-82129](https://python-all.ru/3/whatsnew/changelog.html): Исправлено [`NameError`](https://python-all.ru/3/library/exceptions.html#NameError) при вызове [`typing.get_type_hints()`](https://python-all.ru/3/library/typing.html#typing.get_type_hints) для [`dataclasses.dataclass()`](https://python-all.ru/3/library/dataclasses.html#dataclasses.dataclass), созданного с помощью [`dataclasses.make_dataclass()`](https://python-all.ru/3/library/dataclasses.html#dataclasses.make_dataclass) с неаннотированными полями.
- [gh-122559](https://python-all.ru/3/whatsnew/changelog.html): Удалены методы `__reduce__()` и `__reduce_ex__()`, которые всегда вызывали [`TypeError`](https://python-all.ru/3/library/exceptions.html#TypeError) в реализации на C [`io.FileIO`](https://python-all.ru/3/library/io.html#io.FileIO), [`io.BufferedReader`](https://python-all.ru/3/library/io.html#io.BufferedReader), [`io.BufferedWriter`](https://python-all.ru/3/library/io.html#io.BufferedWriter) и [`io.BufferedRandom`](https://python-all.ru/3/library/io.html#io.BufferedRandom), и заменены методами по умолчанию `__getstate__()`, вызывающими `TypeError`. Это восстанавливает тонкие детали поведения Python 3.11 и более старых версий.
- [gh-122179](https://python-all.ru/3/whatsnew/changelog.html): [`hashlib.file_digest()`](https://python-all.ru/3/library/hashlib.html#hashlib.file_digest) теперь вызывает [`BlockingIOError`](https://python-all.ru/3/library/exceptions.html#BlockingIOError), когда данные недоступны во время неблокирующего ввода-вывода. Раньше он добавлял ложные нулевые байты в дайджест.
- [gh-53032](https://python-all.ru/3/whatsnew/changelog.html): Открыт доступ к [`decimal.IEEEContext()`](https://python-all.ru/3/library/decimal.html#decimal.IEEEContext) для поддержки создания контекстов, соответствующих десятичным форматам обмена IEEE 754 (2008). Патч от Sergey B Kirpichev.
- [gh-120220](https://python-all.ru/3/whatsnew/changelog.html): Объявлены устаревшими методы `tkinter.Variable`: `trace_variable()`, `trace_vdelete()` и `trace_vinfo()`. Вместо них можно использовать методы `trace_add()`, `trace_remove()` и `trace_info()`.
- [gh-113539](https://python-all.ru/3/whatsnew/changelog.html): [`webbrowser`](https://python-all.ru/3/library/webbrowser.html#module-webbrowser): Имена в переменной окружения `BROWSER` теперь могут ссылаться на уже зарегистрированные веб-браузеры, вместо того чтобы всегда создавать новую команду браузера.

  Это позволяет установить `BROWSER` в значение одного из поддерживаемых браузеров в macOS.
- [bpo-44172](https://python-all.ru/3/whatsnew/changelog.html): Сохранять ссылку на исходные окна [`curses`](https://python-all.ru/3/library/curses.html#module-curses) в подокнах, чтобы исходное окно не удалялось раньше подокон.
- [gh-75223](https://python-all.ru/3/whatsnew/changelog.html): Объявлены устаревшими нестандартные расширения в [`mimetypes.MimeTypes.add_type()`](https://python-all.ru/3/library/mimetypes.html#mimetypes.MimeTypes.add_type). Патч от Hugo van Kemenade.

### IDLE

- [gh-112936](https://python-all.ru/3/whatsnew/changelog.html): Исправление IDLE: нет пункта меню Shell в однопроцессном режиме.

### Документация

- [gh-107006](https://python-all.ru/3/whatsnew/changelog.html): Перенесена документация и примеры кода для [`threading.local`](https://python-all.ru/3/library/threading.html#threading.local) из его докстринга в официальную документацию.
- [gh-125142](https://python-all.ru/3/whatsnew/changelog.html): В составе встроенного вводного текста справки показывать сочетания клавиш для новой, не-базовой REPL (F1, F2 и F3).

### Ядро и встроенные модули

- [gh-133336](https://python-all.ru/3/whatsnew/changelog.html): `-J` больше не зарезервировано для использования Jython. Патч от Adam Turner.
- [gh-133261](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка, из-за которой циклический сборщик мусора мог исключить объекты из отслеживания (trashcan), потому что они выглядели как бессмертные. При добавлении объектов в trashcan мы заботимся о том, чтобы у них оставался счетчик ссылок смертного объекта.
- [gh-133346](https://python-all.ru/3/whatsnew/changelog.html): Добавлена экспериментальная поддержка цветовых тем в модуль `_colorize`.
- [gh-132917](https://python-all.ru/3/whatsnew/changelog.html): Для free-threaded сборки проверять увеличение использования памяти процессом перед запуском полной автоматической сборки мусора. Если используемая память не увеличилась на 10% с предыдущей сборки, отложить её.
- [gh-91048](https://python-all.ru/3/whatsnew/changelog.html): Добавлен новый интерфейс командной строки `python -m asyncio ps PID` для инспекции задач asyncio в запущенном процессе Python. Отображает плоскую таблицу отношений ожидания (await). Вариант с древовидным представлением также доступен как `python -m asyncio pstree PID`. Оба полезны для отладки асинхронного кода. Патч от Pablo Galindo, Łukasz Langa, Yury Selivanov и Marta Gomez Macias.
- [gh-133304](https://python-all.ru/3/whatsnew/changelog.html): Обходной путь для «канонизации» NaN в [`PyFloat_Pack4()`](https://python-all.ru/3/c-api/float.html#c.PyFloat_Pack4) и [`PyFloat_Unpack4()`](https://python-all.ru/3/c-api/float.html#c.PyFloat_Unpack4) на RISC-V.
- [gh-133197](https://python-all.ru/3/whatsnew/changelog.html): Улучшены сообщения об ошибках [`SyntaxError`](https://python-all.ru/3/library/exceptions.html#SyntaxError) для несовместимых префиксов строк и байтов.
- [gh-133231](https://python-all.ru/3/whatsnew/changelog.html): Добавлены новые утилиты для наблюдения за JIT-компиляцией: [`sys._jit.is_available()`](https://python-all.ru/3/library/sys.html#sys._jit.is_available), [`sys._jit.is_enabled()`](https://python-all.ru/3/library/sys.html#sys._jit.is_enabled) и [`sys._jit.is_active()`](https://python-all.ru/3/library/sys.html#sys._jit.is_active).

### Библиотека

- [gh-133194](https://python-all.ru/3/whatsnew/changelog.html): [`ast.parse()`](https://python-all.ru/3/library/ast.html#ast.parse) больше не будет разбирать новый синтаксис [**PEP 758**](https://python-all.ru/3/whatsnew/changelog.html) с переданным старым *feature\_version*.

### Ядро и встроенные модули

- [gh-131798](https://python-all.ru/3/whatsnew/changelog.html): Разбита `CALL_LEN` на несколько uops, позволяющих JIT удалять их при оптимизации. Исправление от Diego Russo.
- [gh-131798](https://python-all.ru/3/whatsnew/changelog.html): Используется `sym_new_type` вместо `sym_new_not_null` для \_BUILD\_STRING, \_BUILD\_SET
- [gh-132942](https://python-all.ru/3/whatsnew/changelog.html): Исправлены две гонки в кэше поиска типов. Это затрагивало сборку free-threaded и могло вызывать сбои (по-видимому, довольно сложно воспроизводимые).
- [gh-131798](https://python-all.ru/3/whatsnew/changelog.html): Распространяется тип возвращаемого значения `_BINARY_OP_SUBSCR_TUPLE_INT` в JIT. Исправление от Tomas Roun.
- [gh-132952](https://python-all.ru/3/whatsnew/changelog.html): Ускорен запуск с аргументом `-S` за счёт импорта частного модуля `_io` вместо [`io`](https://python-all.ru/3/library/io.html#module-io). Это исправляет регрессию производительности, введённую ранее при разработке Python 3.14, и восстанавливает производительность до уровня Python 3.13.
- [gh-131798](https://python-all.ru/3/whatsnew/changelog.html): Разрешено JIT удалять int guards после `_CALL_LEN` путём установки типа возвращаемого значения int. Исправление от Diego Russo.
- [gh-131798](https://python-all.ru/3/whatsnew/changelog.html): Разбита `CALL_TUPLE_1` на несколько uops, что позволяет JIT удалять некоторые из них. Исправление от Tomas Roun.
- [gh-131798](https://python-all.ru/3/whatsnew/changelog.html): Разбита `CALL_STR_1` на несколько uops, что позволяет JIT удалять некоторые из них. Исправление от Tomas Roun.
- [gh-132825](https://python-all.ru/3/whatsnew/changelog.html): Улучшены сообщения об ошибках о нехешируемых ключах/элементах для [`dict`](https://python-all.ru/3/library/stdtypes.html#dict) и [`set`](https://python-all.ru/3/library/stdtypes.html#set). Исправление от Victor Stinner.
- [gh-131591](https://python-all.ru/3/whatsnew/changelog.html): Сбрасываются все отложенные вызовы удалённой отладки [**PEP 768**](https://python-all.ru/3/whatsnew/changelog.html) в дочерних процессах после вызовов [`os.fork()`](https://python-all.ru/3/library/os.html#os.fork).
- [gh-132713](https://python-all.ru/3/whatsnew/changelog.html): Исправлено состояние гонки в `repr(list)`: теперь удерживается сильная ссылка на элемент во время вызова `repr(item)`. Исправление от Victor Stinner.
- [gh-132661](https://python-all.ru/3/whatsnew/changelog.html): Реализованы [**PEP 750**](https://python-all.ru/3/whatsnew/changelog.html) (Шаблонные строки). Добавлен новый синтаксис для t-строк и реализованы новые внутренние типы `string.templatelib.Template` и `string.templatelib.Interpolation`.
- [gh-132479](https://python-all.ru/3/whatsnew/changelog.html): Исправлено падение компилятора в определённых случаях, когда несколько аннотаций на уровне модуля включают включения (comprehensions) и другие вложенные области видимости.
- [gh-132747](https://python-all.ru/3/whatsnew/changelog.html): Исправлено падение при вызове [`__get__()`](https://python-all.ru/3/reference/datamodel.html#object.__get__) у [метода](https://python-all.ru/3/glossary.html#term-method) со вторым аргументом [`None`](https://python-all.ru/3/library/constants.html#None).
- [gh-132744](https://python-all.ru/3/whatsnew/changelog.html): Некоторые вызовы теперь проверяют неограниченную рекурсию и соблюдают системный предел рекурсии.
- [gh-132449](https://python-all.ru/3/whatsnew/changelog.html): Синтаксические ошибки, которые выглядят как опечатки в ключевых словах Python, теперь предлагают полезные исправления для опечатки. Предложено Pablo Galindo Salgado.

### Библиотека

- [gh-132737](https://python-all.ru/3/whatsnew/changelog.html): Добавлена поддержка профилирования кода, которому требуется `__main__`, например [`pickle`](https://python-all.ru/3/library/pickle.html#module-pickle).

### Ядро и встроенные модули

- [gh-132639](https://python-all.ru/3/whatsnew/changelog.html): Добавлены [`PyLong_AsNativeBytes()`](https://python-all.ru/3/c-api/long.html#c.PyLong_AsNativeBytes), [`PyLong_FromNativeBytes()`](https://python-all.ru/3/c-api/long.html#c.PyLong_FromNativeBytes) и [`PyLong_FromUnsignedNativeBytes()`](https://python-all.ru/3/c-api/long.html#c.PyLong_FromUnsignedNativeBytes) в ограниченный C API.
- [gh-100239](https://python-all.ru/3/whatsnew/changelog.html): Добавлена специализация для `BINARY_OP/SUBSCR` на списке и срезе.
- [gh-132508](https://python-all.ru/3/whatsnew/changelog.html): Использует тегированные целые числа в стеке оценки для представления смещений инструкций при повторном возбуждении исключения. Это позволяет избежать необходимости упаковки целого числа, что могло бы завершиться ошибкой при недостатке памяти.
- [gh-124476](https://python-all.ru/3/whatsnew/changelog.html): Исправлено декодирование из кодировки локали в локали C.UTF-8.
- [gh-131927](https://python-all.ru/3/whatsnew/changelog.html): Предупреждения компилятора, исходящие из одного и того же модуля и строки, теперь выдаются только один раз, соответствуя поведению предупреждений, выдаваемых из пользовательского кода. Это также можно настроить с помощью фильтров [`warnings`](https://python-all.ru/3/library/warnings.html#module-warnings).
- [gh-132457](https://python-all.ru/3/whatsnew/changelog.html): Сделаны обобщёнными (generic) [`staticmethod()`](https://python-all.ru/3/library/functions.html#staticmethod) и [`classmethod()`](https://python-all.ru/3/library/functions.html#classmethod).
- [gh-131798](https://python-all.ru/3/whatsnew/changelog.html): Используется `sym_new_type` вместо `sym_new_not_null` для \_BUILD\_LIST, \_BUILD\_SET, \_BUILD\_MAP
- [gh-131798](https://python-all.ru/3/whatsnew/changelog.html): Разбита `CALL_TYPE_1` на несколько uops, что позволяет JIT удалять некоторые из них.
- [gh-132386](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка при передаче подкласса словаря в качестве параметра `globals` в [`exec()`](https://python-all.ru/3/library/functions.html#exec).
- [gh-127682](https://python-all.ru/3/whatsnew/changelog.html): Больше не вызывается `__iter__` дважды при создании и выполнении генераторного выражения. Создание генераторного выражения из неитерируемого объекта теперь вызывает исключение только при выполнении этого выражения. Это приводит поведение генераторных выражений в соответствие с другими генераторами.
- [gh-132261](https://python-all.ru/3/whatsnew/changelog.html): Внутреннее хранилище для аннотаций и функций annotate в классах теперь использует разные ключи в словаре класса. Это устраняет различные граничные случаи, когда доступ к атрибутам `__annotate__` и `__annotations__` мог вести себя непредсказуемо.
- [gh-132284](https://python-all.ru/3/whatsnew/changelog.html): Не оборачивать базовые слоты `PyCFunction` при создании класса, если они не переопределены.
- [gh-130415](https://python-all.ru/3/whatsnew/changelog.html): Улучшена способность JIT удалять неиспользуемые загрузки констант и локальных переменных, а также исправлена проблема, при которой освобождение неиспользуемых значений могло привести к сбою или некорректному поведению JIT-кода.
- [gh-126703](https://python-all.ru/3/whatsnew/changelog.html): Исправлена возможная ошибка использования после освобождения (use-after-free) в случаях, когда определение метода имеет то же время жизни, что и его `self`.
- [gh-132286](https://python-all.ru/3/whatsnew/changelog.html): Исправлено, что [`type.__annotate__`](https://python-all.ru/3/reference/datamodel.html#type.__annotate__) не удалялся при удалении [`type.__annotations__`](https://python-all.ru/3/reference/datamodel.html#type.__annotations__).
- [gh-131798](https://python-all.ru/3/whatsnew/changelog.html): Разрешить JIT удалять лишнюю инструкцию `_TO_BOOL_BOOL` после `_CONTAINS_OP_DICT`, устанавливая возвращаемый тип в bool.
- [gh-124715](https://python-all.ru/3/whatsnew/changelog.html): Предотвращает переполнение стека при вызове [`Py_DECREF()`](https://python-all.ru/3/c-api/refcounting.html#c.Py_DECREF). Сторонним объектам расширений больше не нужно использовать механизм «trashcan», так как защита теперь встроена в макрос `Py_DECREF()`.
- [gh-131798](https://python-all.ru/3/whatsnew/changelog.html): Разрешить JIT-компилятору удалять некоторые проверки типов для операций над списками, кортежами, словарями и множествами.
- [gh-128398](https://python-all.ru/3/whatsnew/changelog.html): Улучшено сообщение об ошибке, когда объект, поддерживающий синхронный (соотв. асинхронный) протокол менеджера контекста, используется с помощью [`async with`](https://python-all.ru/3/reference/compound_stmts.html#async-with) (соотв. [`with`](https://python-all.ru/3/reference/compound_stmts.html#with)) вместо `with` (соотв. `async with`). Патч от Bénédikt Tran.
- [gh-131798](https://python-all.ru/3/whatsnew/changelog.html): Разрешить JIT удалять проверки Unicode после `_BINARY_OP_SUBSCR_STR_INT`, устанавливая возвращаемый тип в string.
- [gh-131878](https://python-all.ru/3/whatsnew/changelog.html): Обрабатывать необработанные исключения в основном цикле ввода новой REPL.
- [gh-131878](https://python-all.ru/3/whatsnew/changelog.html): Исправлена поддержка символов Unicode с двумя и более кодовыми точками в новой REPL на Windows.
- [gh-126835](https://python-all.ru/3/whatsnew/changelog.html): Перенесён constant folding в peephole optimizer. Переименованы файлы, связанные с оптимизацией AST (Python/ast\_opt.c -\> Python/ast\_preprocess.c), структуры (\_PyASTOptimizeState -\> \_PyASTPreprocessState) и функции (\_PyAST\_Optimize -\> \_PyAST\_Preprocess, \_PyCompile\_AstOptimize -\> \_PyCompile\_AstPreprocess).
- [gh-114809](https://python-all.ru/3/whatsnew/changelog.html): Добавлена поддержка многоплатформенных сборок macOS с включённым JIT.
- [gh-131507](https://python-all.ru/3/whatsnew/changelog.html): PyREPL теперь поддерживает подсветку синтаксиса. Предоставлено Łukasz Langa.
- [gh-130907](https://python-all.ru/3/whatsnew/changelog.html): Если `__annotations__` объекта модуля запрашиваются во время выполнения модуля, то возвращать аннотации, определённые на данный момент, без их кеширования.
- [gh-130104](https://python-all.ru/3/whatsnew/changelog.html): Трёхаргументная [`pow()`](https://python-all.ru/3/library/functions.html#pow) теперь пытается вызвать [`__rpow__()`](https://python-all.ru/3/reference/datamodel.html#object.__rpow__) при необходимости. Ранее она вызывалась только в двухаргументной `pow()` и бинарном операторе возведения в степень.
- [gh-130070](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка утверждения для [`exec()`](https://python-all.ru/3/library/functions.html#exec), которой передали строку `source` и не-`None` `closure`. Патч от Bartosz Sławecki.
- [gh-129958](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка, допускавшая непоследовательное использование символов новой строки в спецификаторах формата для f-строк в одинарных кавычках. Патч от Pablo Galindo.
- [gh-129858](https://python-all.ru/3/whatsnew/changelog.html): Операторы `elif`, следующие за блоком `else`, теперь имеют конкретное сообщение об ошибке.
- [gh-69605](https://python-all.ru/3/whatsnew/changelog.html): Добавлено автодополнение модулей в PyREPL.
- [gh-128555](https://python-all.ru/3/whatsnew/changelog.html): Добавлен флаг [`sys.flags.thread_inherit_context`](https://python-all.ru/3/library/sys.html#sys.flags.thread_inherit_context).

  - Этот флаг по умолчанию установлен в true в сборке со свободной потоковой обработкой (free-threaded) и false в остальных случаях. Если флаг имеет значение true, запуск нового потока с помощью [`threading.Thread`](https://python-all.ru/3/library/threading.html#threading.Thread) по умолчанию будет использовать копию [`contextvars.Context`](https://python-all.ru/3/library/contextvars.html#contextvars.Context) от вызывающей стороны [`threading.Thread.start()`](https://python-all.ru/3/library/threading.html#threading.Thread.start), а не пустой контекст.
  - Добавлены опция командной строки [`-X thread_inherit_context`](https://python-all.ru/3/using/cmdline.html#cmdoption-X) и переменная окружения [`PYTHON_THREAD_INHERIT_CONTEXT`](https://python-all.ru/3/using/cmdline.html#envvar-PYTHON_THREAD_INHERIT_CONTEXT), которые устанавливают флаг [`thread_inherit_context`](https://python-all.ru/3/library/sys.html#sys.flags.thread_inherit_context).
  - Добавлен именованный параметр `context` в [`Thread`](https://python-all.ru/3/library/threading.html#threading.Thread). Его можно использовать для явной передачи значения контекста, которое будет использовано новым потоком.
  - Сделать модуль `_contextvars` встроенным.
- [gh-123539](https://python-all.ru/3/whatsnew/changelog.html): Улучшено сообщение [`SyntaxError`](https://python-all.ru/3/library/exceptions.html#SyntaxError) для использования `import ... as` и `from ... import ... as` с не-именем.
- [gh-102567](https://python-all.ru/3/whatsnew/changelog.html): [`-X importtime`](https://python-all.ru/3/using/cmdline.html#cmdoption-X) теперь принимает значение `2`, которое указывает, что запись `importtime` также должна быть выведена, если импортированный модуль уже загружен. Патч от Noah Kim и Adam Turner.
- [gh-116436](https://python-all.ru/3/whatsnew/changelog.html): Улучшено сообщение об ошибке, когда [`TypeError`](https://python-all.ru/3/library/exceptions.html#TypeError) возникает во время [`dict.update()`](https://python-all.ru/3/library/stdtypes.html#dict.update)
- [gh-103997](https://python-all.ru/3/whatsnew/changelog.html): Строковые аргументы, переданные в «-c», теперь автоматически удаляют отступы, как если бы это делала [`textwrap.dedent()`](https://python-all.ru/3/library/textwrap.html#textwrap.dedent). Это позволяет использовать отступы в вызовах «python -c» в shell-скриптах без ошибок отступов. (Патч от Jon Crall и Steven Sun)

### Библиотека

- [gh-89562](https://python-all.ru/3/whatsnew/changelog.html): Удалён элемент `hostflags` из структуры `PySSLContext`.

### C API

- [gh-133166](https://python-all.ru/3/whatsnew/changelog.html): Исправлена регрессия, при которой [`PyType_GetModuleByDef()`](https://python-all.ru/3/c-api/type.html#c.PyType_GetModuleByDef) возвращает NULL без установки [`TypeError`](https://python-all.ru/3/library/exceptions.html#TypeError) при передаче статического типа.
- [gh-133164](https://python-all.ru/3/whatsnew/changelog.html): Добавлена функция [`PyUnstable_Object_IsUniqueReferencedTemporary()`](https://python-all.ru/3/c-api/object.html#c.PyUnstable_Object_IsUniqueReferencedTemporary) для определения, существует ли объект как уникальная временная переменная в стеке интерпретатора. Это замена некоторых случаев, когда проверки того, что [`Py_REFCNT()`](https://python-all.ru/3/c-api/refcounting.html#c.Py_REFCNT) равно единице, уже недостаточно для определения, безопасно ли изменять объект Python на месте без видимых побочных эффектов.
- [gh-133140](https://python-all.ru/3/whatsnew/changelog.html): Добавлен [`PyUnstable_Object_IsUniquelyReferenced()`](https://python-all.ru/3/c-api/object.html#c.PyUnstable_Object_IsUniquelyReferenced) как замена `Py_REFNCT(op) == 1` в [свободнопоточных](https://python-all.ru/3/glossary.html#term-free-threading) сборках Python.
- [gh-131747](https://python-all.ru/3/whatsnew/changelog.html): На платформах, отличных от Windows, объявлено устаревшим использование [`ctypes.Structure._pack_`](https://python-all.ru/3/library/ctypes.html#ctypes.Structure._pack_) для применения Windows-совместимой разметки на не-Windows платформах. Разметка должна быть задана явно через установку [`ctypes.Structure._layout_`](https://python-all.ru/3/library/ctypes.html#ctypes.Structure._layout_) в `'ms'`.
- [gh-128972](https://python-all.ru/3/whatsnew/changelog.html): Для сборок без свободной многопоточности (non-free-threaded) разметка памяти [`PyASCIIObject`](https://python-all.ru/3/c-api/unicode.html#c.PyASCIIObject) возвращена к версии Python 3.13. (Обратите внимание, что структура не является частью стабильного ABI, поэтому её разметка памяти *гарантированно* остаётся стабильной.)
- [gh-133079](https://python-all.ru/3/whatsnew/changelog.html): Недокументированные API `Py_C_RECURSION_LIMIT` и `PyThreadState.c_recursion_remaining`, добавленные в 3.13, удалены без периода устаревания.
- [gh-132987](https://python-all.ru/3/whatsnew/changelog.html): Форматы `k` и `K` в [`PyArg_Parse()`](https://python-all.ru/3/c-api/arg.html#c.PyArg_Parse) теперь поддерживают специальный метод [`__index__()`](https://python-all.ru/3/reference/datamodel.html#object.__index__), как и все остальные целочисленные форматы.
- [gh-132909](https://python-all.ru/3/whatsnew/changelog.html): Исправлено переполнение при обработке формата [K](https://python-all.ru/3/c-api/arg.html#capi-py-buildvalue-format-k) в [`Py_BuildValue()`](https://python-all.ru/3/c-api/arg.html#c.Py_BuildValue). Патч от Bénédikt Tran.
- [gh-132798](https://python-all.ru/3/whatsnew/changelog.html): Устаревшие и недокументированные функции `PyUnicode_AsEncodedObject()`, `PyUnicode_AsDecodedObject()`, `PyUnicode_AsEncodedUnicode()` и `PyUnicode_AsDecodedUnicode()` запланированы к удалению в 3.15.
- [gh-132470](https://python-all.ru/3/whatsnew/changelog.html): Создание [`ctypes.CField`](https://python-all.ru/3/library/ctypes.html#ctypes.CField) с *byte\_size*, который не соответствует фактическому размеру типа, теперь вызывает [`ValueError`](https://python-all.ru/3/library/exceptions.html#ValueError) вместо аварийного завершения интерпретатора.
- [gh-112068](https://python-all.ru/3/whatsnew/changelog.html): \[Отменено в [gh-136991](https://python-all.ru/3/whatsnew/changelog.html)\] Добавлена поддержка допускающих NULL аргументов в [`PyArg_Parse()`](https://python-all.ru/3/c-api/arg.html#c.PyArg_Parse) и подобных функциях. Добавление `?` после любой форматной единицы позволяет принимать `None` в качестве значения.
- [gh-50333](https://python-all.ru/3/whatsnew/changelog.html): Некортежные последовательности объявлены устаревшими в качестве аргумента для форматной единицы `(items)` в [`PyArg_ParseTuple()`](https://python-all.ru/3/c-api/arg.html#c.PyArg_ParseTuple) и других [функциях разбора аргументов](https://python-all.ru/3/c-api/arg.html#arg-parsing), если *items* содержит форматные единицы, которые хранят [заимствованный буфер](https://python-all.ru/3/c-api/arg.html#c-arg-borrowed-buffer) или [заимствованную ссылку](https://python-all.ru/3/glossary.html#term-borrowed-reference).

### Сборка

- [gh-113464](https://python-all.ru/3/whatsnew/changelog.html): Для управления зависимостями LLVM на Windows используется репозиторий «externals» из cpython-bin-deps. Ручная установка LLVM больше не требуется для JIT-сборок на Windows.
- [gh-133183](https://python-all.ru/3/whatsnew/changelog.html): Прокладки компилятора iOS теперь включают `IPHONEOS_DEPLOYMENT_TARGET` в тройки целевых платформ, что гарантирует соблюдение минимальных версий SDK.
- [gh-133167](https://python-all.ru/3/whatsnew/changelog.html): Исправлен процесс компиляции с `--enable-optimizations` и `--without-docstrings`.
- [gh-133171](https://python-all.ru/3/whatsnew/changelog.html): Поскольку свободнопоточные сборки не поддерживают экспериментальный JIT-компилятор, предотвращено объединение этих конфигураций.
- [gh-132758](https://python-all.ru/3/whatsnew/changelog.html): Исправлена сборка с интерпретатором хвостовых вызовов и pystats.
- [gh-132649](https://python-all.ru/3/whatsnew/changelog.html): Сценарий `PClayout` теперь позволяет передавать `--include-tcltk` на Windows ARM64.
- [gh-132257](https://python-all.ru/3/whatsnew/changelog.html): Изменены флаги LTO по умолчанию в GCC: теперь не передаётся `-flto-partition=none`, и разрешена параллелизация LTO. Для новых версий GNU make и GCC это даёт многократное ускорение времени сборки LTO без заметной потери производительности.
- [gh-132026](https://python-all.ru/3/whatsnew/changelog.html): Исправлено использование неопределённых идентификаторов при определении тройки платформы на платформах MIPS Linux.

## Python 3.14.0 alpha 7

*Дата выпуска: 2025-04-08*

### macOS

- [gh-124111](https://python-all.ru/3/whatsnew/changelog.html): Обновлён установщик macOS для использования Tcl/Tk 8.6.16.
- [gh-131423](https://python-all.ru/3/whatsnew/changelog.html): Обновлён установщик macOS для использования OpenSSL 3.0.16. Патч от Bénédikt Tran.
- [gh-131025](https://python-all.ru/3/whatsnew/changelog.html): Обновлён установщик macOS для поставки с SQLite 3.49.1.

### Windows

- [gh-131423](https://python-all.ru/3/whatsnew/changelog.html): Обновлена встроенная версия OpenSSL до 3.0.16. Новая сборка также отключает поддержку аплинк, что может быть важно для разработчиков, встраивающих Python, но не влияет на обычное использование.
- [gh-131453](https://python-all.ru/3/whatsnew/changelog.html): Добавлены некоторые константы `SND_*` и `MB_*` в [`winsound`](https://python-all.ru/3/library/winsound.html#module-winsound).
- [gh-91349](https://python-all.ru/3/whatsnew/changelog.html): Заменяет нашу копию `zlib` на `zlib-ng`, для повышения производительности в [`zlib`](https://python-all.ru/3/library/zlib.html#module-zlib).
- [gh-131025](https://python-all.ru/3/whatsnew/changelog.html): Обновляет установщик Windows: теперь он поставляется с SQLite 3.49.1.

### Инструменты/Демонстрации

- [gh-132121](https://python-all.ru/3/whatsnew/changelog.html): Всегда экранировать непечатаемые символы Юникода в **pygettext**.
- [gh-131852](https://python-all.ru/3/whatsnew/changelog.html): **msgfmt** больше не добавляет `POT-Creation-Date` в сгенерированные файлы `.mo` для согласованности с GNU `msgfmt`.

### Тесты

- [gh-131277](https://python-all.ru/3/whatsnew/changelog.html): Позволяет сбрасывать одну или несколько переменных окружения за раз через [`EnvironmentVarGuard.unset()`](https://python-all.ru/3/library/test.html#test.support.os_helper.EnvironmentVarGuard.unset). Патч от Bénédikt Tran.
- [gh-131050](https://python-all.ru/3/whatsnew/changelog.html): `test_ssl.test_dh_params` пропускается, если используемая TLS библиотека не поддерживает эфемерный Диффи-Хеллман на конечных полях.

### Безопасность

- [gh-131809](https://python-all.ru/3/whatsnew/changelog.html): Обновлена встроенная библиотека libexpat до 2.7.1
- [gh-131261](https://python-all.ru/3/whatsnew/changelog.html): Обновление до libexpat 2.7.0
- [gh-121284](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка в сворачивании (folding) закодированных слов rfc2047 при упрощении (flattening) email-сообщения с использованием современной политики email. Ранее, если закодированное слово было слишком длинным для строки, оно декодировалось, разбивалось на несколько строк и кодировалось заново. Однако запятые и другие специальные символы в исходном тексте могли остаться незакодированными и неэкранированными. Теоретически это могло быть использовано для подделки строк заголовка с помощью тщательно сконструированного закодированного слова, если полученное готовое сообщение было передано или повторно разобрано.

### Библиотека

- [gh-132174](https://python-all.ru/3/whatsnew/changelog.html): Исправлено имя функции в сообщении об ошибке для `_interpreters.run_string`.
- [gh-132171](https://python-all.ru/3/whatsnew/changelog.html): Исправлен сбой `_interpreters.run_string` при работе с подклассами строк.
- [gh-129204](https://python-all.ru/3/whatsnew/changelog.html): Добавлен новый рычаг переменной окружения `_PYTHON_SUBPROCESS_USE_POSIX_SPAWN` в [`subprocess`](https://python-all.ru/3/library/subprocess.html#module-subprocess) для управления использованием [`os.posix_spawn()`](https://python-all.ru/3/library/os.html#os.posix_spawn).
- [gh-132159](https://python-all.ru/3/whatsnew/changelog.html): Аргументы пользователя больше не затеняются в сгенерированном `__new__()` декоратором [`warnings.deprecated`](https://python-all.ru/3/library/warnings.html#warnings.deprecated). Патч от Xuehai Pan.
- [gh-132168](https://python-all.ru/3/whatsnew/changelog.html): Тип [`ctypes.py_object`](https://python-all.ru/3/library/ctypes.html#ctypes.py_object) теперь поддерживает подписку (subscription), что делает его [обобщённым типом](https://python-all.ru/3/glossary.html#term-generic-type).
- [gh-84481](https://python-all.ru/3/whatsnew/changelog.html): Добавлен атрибут `zipfile.ZipFile.data_offset`, который хранит смещение к началу ZIP-данных в файле, если оно доступно. Когда [`zipfile.ZipFile`](https://python-all.ru/3/library/zipfile.html#zipfile.ZipFile) открыт в режиме `'w'` или `'x'`, и базовый файл не поддерживает `tell()`, значение будет равно `None`.
- [gh-132075](https://python-all.ru/3/whatsnew/changelog.html): Исправлено возможное использование структур адресов [`socket`](https://python-all.ru/3/library/socket.html#module-socket) с неинициализированными элементами. Теперь все элементы структур по умолчанию инициализируются нулями.
- [gh-118761](https://python-all.ru/3/whatsnew/changelog.html): Улучшено время импорта модуля [`string`](https://python-all.ru/3/library/string.html#module-string) до 27 раз. Патч от Adam Turner.
- [gh-125434](https://python-all.ru/3/whatsnew/changelog.html): Отображение имени потока в [`faulthandler`](https://python-all.ru/3/library/faulthandler.html#module-faulthandler). Патч от Victor Stinner.
- [gh-132002](https://python-all.ru/3/whatsnew/changelog.html): Исправлен сбой при освобождении [`contextvars.ContextVar`](https://python-all.ru/3/library/contextvars.html#contextvars.ContextVar) со странными нехешируемыми строковыми именами.
- [gh-131938](https://python-all.ru/3/whatsnew/changelog.html): [`xml.etree.ElementTree`](https://python-all.ru/3/library/xml.etree.elementtree.html#module-xml.etree.ElementTree): обновлено сообщение об ошибке, когда элемент для удаления через [`Element.remove`](https://python-all.ru/3/library/xml.etree.elementtree.html#xml.etree.ElementTree.Element.remove) не найден. Патч от Bénédikt Tran.
- [gh-115942](https://python-all.ru/3/whatsnew/changelog.html): Добавлены [`threading.RLock.locked()`](https://python-all.ru/3/library/threading.html#threading.RLock.locked), [`multiprocessing.Lock.locked()`](https://python-all.ru/3/library/multiprocessing.html#multiprocessing.Lock.locked), [`multiprocessing.RLock.locked()`](https://python-all.ru/3/library/multiprocessing.html#multiprocessing.RLock.locked), и разрешено [`multiprocessing.managers.SyncManager.Lock()`](https://python-all.ru/3/library/multiprocessing.html#multiprocessing.managers.SyncManager.Lock) и [`multiprocessing.managers.SyncManager.RLock()`](https://python-all.ru/3/library/multiprocessing.html#multiprocessing.managers.SyncManager.RLock) проксировать вызов `locked()`.
- [gh-131974](https://python-all.ru/3/whatsnew/changelog.html): Исправлено несколько проблем потокобезопасности в [`ctypes`](https://python-all.ru/3/library/ctypes.html#module-ctypes) в сборке [со свободной многопоточностью (free threaded)](https://python-all.ru/3/glossary.html#term-free-threading).
- [gh-118761](https://python-all.ru/3/whatsnew/changelog.html): Улучшено время импорта модуля [`ast`](https://python-all.ru/3/library/ast.html#module-ast) путём извлечения функции [`unparse()`](https://python-all.ru/3/library/ast.html#ast.unparse) во вспомогательный модуль.
- [gh-107369](https://python-all.ru/3/whatsnew/changelog.html): Улучшена производительность [`textwrap.indent()`](https://python-all.ru/3/library/textwrap.html#textwrap.indent) в среднем в ~1.3 раза. Патч от Adam Turner.
- [gh-131792](https://python-all.ru/3/whatsnew/changelog.html): Улучшена производительность [`textwrap.dedent()`](https://python-all.ru/3/library/textwrap.html#textwrap.dedent) в среднем в ~2.4 раза (с улучшением до 4x для больших входных данных) и исправлена ошибка, из-за которой пустые строки с пробельными символами, отличными от пробела или горизонтальной табуляции, не нормализовались до символа новой строки. Патч от Adam Turner, Marius Juston и Pieter Eendebak.
- [gh-131668](https://python-all.ru/3/whatsnew/changelog.html): [`socket`](https://python-all.ru/3/library/socket.html#module-socket): Исправлен разбор кода адресов сокетов AF\_BLUETOOTH.
- [gh-60115](https://python-all.ru/3/whatsnew/changelog.html): Поддержка замороженных модулей для [`linecache.getline()`](https://python-all.ru/3/library/linecache.html#linecache.getline).
- [gh-131492](https://python-all.ru/3/whatsnew/changelog.html): Исправлена утечка ресурсов при ошибке создания [`gzip.GzipFile`](https://python-all.ru/3/library/gzip.html#gzip.GzipFile) с именем файла, например при передаче недопустимого `compresslevel`.
- [gh-131435](https://python-all.ru/3/whatsnew/changelog.html): Повышение производительности [`random.randint()`](https://python-all.ru/3/library/random.html#random.randint) на 10–20%.
- [gh-131461](https://python-all.ru/3/whatsnew/changelog.html): Исправлен [`ResourceWarning`](https://python-all.ru/3/library/exceptions.html#ResourceWarning) при создании [`gzip.GzipFile`](https://python-all.ru/3/library/gzip.html#gzip.GzipFile) в режиме записи с повреждённым файловым объектом.
- [gh-125866](https://python-all.ru/3/whatsnew/changelog.html): Модуль `nturl2path` объявлен устаревшим. Вместо него используйте [`urllib.request.url2pathname()`](https://python-all.ru/3/library/urllib.request.html#urllib.request.url2pathname) и [`pathname2url()`](https://python-all.ru/3/library/urllib.request.html#urllib.request.pathname2url).
- [gh-126367](https://python-all.ru/3/whatsnew/changelog.html): Исправлена проблема, при которой [`urllib.request.url2pathname()`](https://python-all.ru/3/library/urllib.request.html#urllib.request.url2pathname) вызывал [`OSError`](https://python-all.ru/3/library/exceptions.html#OSError) при передаче Windows-URI, содержащего символ двоеточия не после буквы диска, например перед альтернативным потоком данных NTFS.
- [gh-120144](https://python-all.ru/3/whatsnew/changelog.html): Отключение события `CALL` в [`bdb`](https://python-all.ru/3/library/bdb.html#module-bdb) в бэкенде `monitoring`, когда не требуется новых событий на объекте кода для повышения производительности.
- [gh-131358](https://python-all.ru/3/whatsnew/changelog.html): Зарегистрирован `cseuckr` как псевдоним кодировки для `euc_kr`.
- [gh-131325](https://python-all.ru/3/whatsnew/changelog.html): Исправлена резервная реализация sendfile для слива данных после записи в транспорт в [`asyncio`](https://python-all.ru/3/library/asyncio.html#module-asyncio).
- [gh-90548](https://python-all.ru/3/whatsnew/changelog.html): [`platform.libc_ver()`](https://python-all.ru/3/library/platform.html#platform.libc_ver) теперь может обнаруживать и сообщать версию `musl` на Alpine Linux.
- [gh-129843](https://python-all.ru/3/whatsnew/changelog.html): Исправлена некорректная передача аргументов в [`warnings.warn_explicit()`](https://python-all.ru/3/library/warnings.html#warnings.warn_explicit).
- [gh-70647](https://python-all.ru/3/whatsnew/changelog.html): При создании объекта [`datetime`](https://python-all.ru/3/library/datetime.html#module-datetime) с датой вне допустимого диапазона вызывается более информативная ошибка.
- [gh-130914](https://python-all.ru/3/whatsnew/changelog.html): Разрешён вызов [`graphlib.TopologicalSorter.prepare()`](https://python-all.ru/3/library/graphlib.html#graphlib.TopologicalSorter.prepare) более одного раза, пока сортировка не началась. Исправление от Daniel Pope.
- [gh-131236](https://python-all.ru/3/whatsnew/changelog.html): Теперь можно генерировать несколько UUID за один раз через [`python -m uuid --count`](https://python-all.ru/3/library/uuid.html#cmdoption-uuid-count).
- [gh-126895](https://python-all.ru/3/whatsnew/changelog.html): Исправлен [`readline`](https://python-all.ru/3/library/readline.html#module-readline) в [free-threaded](https://python-all.ru/3/glossary.html#term-free-threading) сборке.
- [gh-121468](https://python-all.ru/3/whatsnew/changelog.html): `$_asynctask` добавлена как [`pdb`](https://python-all.ru/3/library/pdb.html#module-pdb) удобная переменная для доступа к текущей задаче asyncio, если применимо.
- [gh-118761](https://python-all.ru/3/whatsnew/changelog.html): Улучшено время импорта [`locale`](https://python-all.ru/3/library/locale.html#module-locale) с использованием ленивого импорта `re`. Исправление от Semyon Moroz.
- [gh-129598](https://python-all.ru/3/whatsnew/changelog.html): Исправлен [`ast.unparse()`](https://python-all.ru/3/library/ast.html#ast.unparse), когда [`ast.Interactive`](https://python-all.ru/3/library/ast.html#ast.Interactive) содержит несколько выражений.
- [gh-85162](https://python-all.ru/3/whatsnew/changelog.html): Модуль [`http.server`](https://python-all.ru/3/library/http.server.html#module-http.server) теперь включает встроенную поддержку HTTPS-серверов, предоставляемых [`http.server.HTTPSServer`](https://python-all.ru/3/library/http.server.html#http.server.HTTPSServer). Эта функциональность доступна через интерфейс командной строки (`python -m http.server`) с помощью параметров `--tls-cert`, `--tls-key` и `--tls-password-file`. Исправление от Semyon Moroz.
- [gh-129463](https://python-all.ru/3/whatsnew/changelog.html): Реализации равенства и хеширования для [`annotationlib.ForwardRef`](https://python-all.ru/3/library/annotationlib.html#annotationlib.ForwardRef) теперь используют все атрибуты объекта. Два объекта `ForwardRef` равны только в том случае, если все атрибуты равны.
- [gh-128593](https://python-all.ru/3/whatsnew/changelog.html): Объекты [`annotationlib.ForwardRef`](https://python-all.ru/3/library/annotationlib.html#annotationlib.ForwardRef) больше не кешируют своё значение после успешного вычисления. Последовательные вызовы [`annotationlib.ForwardRef.evaluate()`](https://python-all.ru/3/library/annotationlib.html#annotationlib.ForwardRef.evaluate) могут возвращать разные значения.
- [gh-117779](https://python-all.ru/3/whatsnew/changelog.html): Исправлено чтение дублирующихся записей в [`zipfile`](https://python-all.ru/3/library/zipfile.html#module-zipfile) по имени. Чтение дублирующихся записей (кроме последней) с помощью `ZipInfo` теперь выводит предупреждение вместо возбуждения исключения.
- [gh-128715](https://python-all.ru/3/whatsnew/changelog.html): Класс дескрипторов полей [`Structure`](https://python-all.ru/3/library/ctypes.html#ctypes.Structure)/[`Union`](https://python-all.ru/3/library/ctypes.html#ctypes.Union) теперь доступен как [`CField`](https://python-all.ru/3/library/ctypes.html#ctypes.CField) и имеет новые атрибуты для упрощения отладки и интроспекции.
- [gh-128055](https://python-all.ru/3/whatsnew/changelog.html): Исправлен `test.test_sysconfig.test_sysconfigdata_json` при запуске вне каталога сборки (например, после установки).
- [gh-126037](https://python-all.ru/3/whatsnew/changelog.html): [`xml.etree.ElementTree`](https://python-all.ru/3/library/xml.etree.elementtree.html#module-xml.etree.ElementTree): Исправлен сбой в [`Element.find`](https://python-all.ru/3/library/xml.etree.elementtree.html#xml.etree.ElementTree.Element.find), [`Element.findtext`](https://python-all.ru/3/library/xml.etree.elementtree.html#xml.etree.ElementTree.Element.findtext) и [`Element.findall`](https://python-all.ru/3/library/xml.etree.elementtree.html#xml.etree.ElementTree.Element.findall), когда искомый тег реализует метод [`__eq__()`](https://python-all.ru/3/reference/datamodel.html#object.__eq__), изменяющий запрашиваемый элемент. Исправление от Bénédikt Tran.
- [gh-127794](https://python-all.ru/3/whatsnew/changelog.html): При добавлении заголовков к [`email.message.Message`](https://python-all.ru/3/library/email.compat32-message.html#email.message.Message) объектам, либо через [`email.message.Message.__setitem__()`](https://python-all.ru/3/library/email.compat32-message.html#email.message.Message.__setitem__) или [`email.message.Message.add_header()`](https://python-all.ru/3/library/email.compat32-message.html#email.message.Message.add_header), имя поля теперь проверяется в соответствии с [**RFC 5322, Section 2.2**](https://python-all.ru/3/whatsnew/changelog.html), и [`ValueError`](https://python-all.ru/3/library/exceptions.html#ValueError) возбуждается, если имя поля содержит недопустимые символы.
- [gh-123599](https://python-all.ru/3/whatsnew/changelog.html): `pathlib.PurePath.as_uri()` объявлен устаревшим; используйте [`pathlib.Path.as_uri()`](https://python-all.ru/3/library/pathlib.html#pathlib.Path.as_uri) вместо него.
- [gh-126033](https://python-all.ru/3/whatsnew/changelog.html): [`xml.etree.ElementTree`](https://python-all.ru/3/library/xml.etree.elementtree.html#module-xml.etree.ElementTree): Исправлен сбой в [`Element.remove`](https://python-all.ru/3/library/xml.etree.elementtree.html#xml.etree.ElementTree.Element.remove), когда элемент одновременно изменяется. Исправление от Bénédikt Tran.
- [gh-120144](https://python-all.ru/3/whatsnew/changelog.html): Добавлен опциональный бэкенд `sys.monitoring` в [`bdb`](https://python-all.ru/3/library/bdb.html#module-bdb) и используется для [`pdb`](https://python-all.ru/3/library/pdb.html#module-pdb).
- [gh-74598](https://python-all.ru/3/whatsnew/changelog.html): Добавлен [`fnmatch.filterfalse()`](https://python-all.ru/3/library/fnmatch.html#fnmatch.filterfalse) для исключения имён, соответствующих шаблону. Исправление от Bénédikt Tran.
- [gh-114917](https://python-all.ru/3/whatsnew/changelog.html): Добавлена поддержка AI\_NUMERICSERV в эмуляции getaddrinfo
- [bpo-17254](https://python-all.ru/3/whatsnew/changelog.html): Добавлены псевдонимы для тайского языка с использованием кодовых страниц Microsoft.

### Документация

- [gh-131417](https://python-all.ru/3/whatsnew/changelog.html): [`asyncio.Future`](https://python-all.ru/3/library/asyncio-future.html#asyncio.Future) и [`asyncio.Task`](https://python-all.ru/3/library/asyncio-task.html#asyncio.Task) теперь упоминаются в списке обобщённых классов.

### Ядро и встроенные модули

- [gh-131798](https://python-all.ru/3/whatsnew/changelog.html): Разрешить JIT удалять лишнюю инструкцию `_TO_BOOL_BOOL` после `_CONTAINS_OP_SET`, устанавливая возвращаемый тип в bool.
- [gh-132011](https://python-all.ru/3/whatsnew/changelog.html): Исправлен сбой при вызове [`list.append()`](https://python-all.ru/3/library/stdtypes.html#list.append) как непривязанного метода.
- [gh-131998](https://python-all.ru/3/whatsnew/changelog.html): Исправлен сбой при использовании объекта [дескриптора](https://python-all.ru/3/glossary.html#term-descriptor) непривязанного метода в функции, где использовался дескриптор привязанного метода.
- [gh-131591](https://python-all.ru/3/whatsnew/changelog.html): Реализован [**PEP 768**](https://python-all.ru/3/whatsnew/changelog.html) (безопасный внешний интерфейс отладчика для CPython). Добавлена новая функция [`sys.remote_exec()`](https://python-all.ru/3/library/sys.html#sys.remote_exec) в модуль [`sys`](https://python-all.ru/3/library/sys.html#module-sys). Эта функция планирует выполнение Python-файла в отдельном процессе. Патч от Pablo Galindo, Matt Wozniski и Ivona Stojanovic.
- [gh-131798](https://python-all.ru/3/whatsnew/changelog.html): Разрешить JIT пропускать проверку str в тесте на истинность, когда тип str известен.
- [gh-131833](https://python-all.ru/3/whatsnew/changelog.html): Добавлена поддержка опционального опускания группирующих скобок при использовании нескольких типов исключений в соответствии с [**PEP 758**](https://python-all.ru/3/whatsnew/changelog.html). Патч от Pablo Galindo
- [gh-130924](https://python-all.ru/3/whatsnew/changelog.html): Использование имени в аннотации области видимости функции больше не вызывает создание ячейки для этой переменной. Это исправляет регрессию в ранних альфа-версиях Python 3.14.
- [gh-131800](https://python-all.ru/3/whatsnew/changelog.html): Улучшена способность экспериментального JIT удалять проверки типов для некоторых операций индексирования.
- [gh-131738](https://python-all.ru/3/whatsnew/changelog.html): Компилятор генерирует оптимизированный код для вызовов встроенных any/all/tuple над выражением-генератором.
- [gh-131719](https://python-all.ru/3/whatsnew/changelog.html): Исправлена отсутствующая проверка NULL в `_PyMem_FreeDelayed` в [свободно-поточной](https://python-all.ru/3/glossary.html#term-free-threading) сборке.
- [gh-131670](https://python-all.ru/3/whatsnew/changelog.html): Исправлен сбой [`anext()`](https://python-all.ru/3/library/functions.html#anext) при синхронном [`__anext__()`](https://python-all.ru/3/reference/datamodel.html#object.__anext__), вызывающем исключение.
- [gh-131666](https://python-all.ru/3/whatsnew/changelog.html): Исправлена сигнатура объектов `anext_awaitable.close`. Патч от Bénédikt Tran.
- [gh-130415](https://python-all.ru/3/whatsnew/changelog.html): Оптимизировано сравнение двух констант в JIT-сборках
- [gh-129149](https://python-all.ru/3/whatsnew/changelog.html): Добавлен быстрый путь для малых и средних целых чисел в [`PyLong_FromInt32()`](https://python-all.ru/3/c-api/long.html#c.PyLong_FromInt32), [`PyLong_FromUInt32()`](https://python-all.ru/3/c-api/long.html#c.PyLong_FromUInt32), [`PyLong_FromInt64()`](https://python-all.ru/3/c-api/long.html#c.PyLong_FromInt64) и [`PyLong_FromUInt64()`](https://python-all.ru/3/c-api/long.html#c.PyLong_FromUInt64). Патч от Chris Eibl.
- [gh-130887](https://python-all.ru/3/whatsnew/changelog.html): Оптимизирована генерация кода для AArch64 в JIT. Патч от Diego Russo
- [gh-130956](https://python-all.ru/3/whatsnew/changelog.html): Оптимизирована генерация кода для AArch64 в JIT. Патч от Diego Russo
- [gh-130928](https://python-all.ru/3/whatsnew/changelog.html): Исправлено сообщение об ошибке при форматировании байтов с использованием флага `'i'`. Патч от Maxim Ageev.
- [gh-130935](https://python-all.ru/3/whatsnew/changelog.html): Аннотации на уровне класса и модуля, которые определены условно, теперь отражаются в `__annotations__` только если блок, в котором они находятся, выполнен. Патч от Jelle Zijlstra.
- [gh-130775](https://python-all.ru/3/whatsnew/changelog.html): Не падать при отрицательных `column` и `end_column` в [`ast`](https://python-all.ru/3/library/ast.html#module-ast) местах.
- [gh-130704](https://python-all.ru/3/whatsnew/changelog.html): Оптимизированы `LOAD_FAST` и его суперинструкция для уменьшения накладных расходов на подсчёт ссылок. Эти инструкции заменяются более быстрыми вариантами, которые загружают заимствованные ссылки на стек операндов, когда можно доказать, что ссылка во фрейме переживает ссылку, загруженную на стек.
- [gh-88887](https://python-all.ru/3/whatsnew/changelog.html): Исправлена утечка процесса Resource Tracker в multiprocessing, обычно наблюдаемая при запуске Python как PID 1.
- [gh-130115](https://python-all.ru/3/whatsnew/changelog.html): Исправлена проблема с расширением знака идентификаторов потоков на некоторых платформах.

### Библиотека

- [gh-99108](https://python-all.ru/3/whatsnew/changelog.html): Добавлена поддержка встроенной реализации HMAC ([**RFC 2104**](https://python-all.ru/3/whatsnew/changelog.html)) на основе HACL\*. Патч от Bénédikt Tran.

### Ядро и встроенные модули

- [gh-130080](https://python-all.ru/3/whatsnew/changelog.html): Реализован PEP 765: Запретить return/break/continue, которые выходят из блока finally.
- [gh-129900](https://python-all.ru/3/whatsnew/changelog.html): Исправлены коды возврата внутри [`SystemExit`](https://python-all.ru/3/library/exceptions.html#SystemExit), не возвращаемые REPL.
- [gh-128632](https://python-all.ru/3/whatsnew/changelog.html): Запретить `__classdict__` в качестве имени параметра типа. Ранее использование этого имени могло привести к сбою интерпретатора в некоторых случаях.
- [gh-126703](https://python-all.ru/3/whatsnew/changelog.html): Улучшена производительность встроенных методов за счёт использования списка свободных объектов.
- [gh-126703](https://python-all.ru/3/whatsnew/changelog.html): Улучшена производительность [`range`](https://python-all.ru/3/library/stdtypes.html#range) за счёт использования списка свободных объектов.

### C API

- [gh-131740](https://python-all.ru/3/whatsnew/changelog.html): Обновлена функция PyUnstable\_GC\_VisitObjects для обхода perm gen.
- [gh-131525](https://python-all.ru/3/whatsnew/changelog.html): PyTupleObject теперь кэширует вычисленное хеш-значение в новом поле ob\_hash.

### Сборка

- [gh-131865](https://python-all.ru/3/whatsnew/changelog.html): Сборка DTrace теперь корректно передаёт переменные `CC` и `CFLAGS` команде `dtrace` при использовании SystemTap в Linux.
- [gh-131675](https://python-all.ru/3/whatsnew/changelog.html): Исправлена сборка библиотеки mimalloc для 32-разрядных ARM-устройств.
- [gh-131691](https://python-all.ru/3/whatsnew/changelog.html): clang-cl в Windows требует опцию `/EHa` для корректной поддержки SEH (структурированной обработки исключений). Исправление от Chris Eibl.
- [gh-131278](https://python-all.ru/3/whatsnew/changelog.html): Добавлен оптимизирующий флаг `WITH_COMPUTED_GOTOS` в сборки Windows для компиляторов, которые его поддерживают (сейчас clang-cl). Патч от Chris Eibl.
- [gh-130213](https://python-all.ru/3/whatsnew/changelog.html): Обновлена поставляемая библиотека HACL\* для исправления проблем сборки со старыми компиляторами clang.
- [gh-130673](https://python-all.ru/3/whatsnew/changelog.html): Исправлена потенциальная `KeyError` при обработке секций объектов в процессе JIT-сборки.

## Python 3.14.0 alpha 6

*Дата выпуска: 2025-03-14*

### macOS

- [gh-128540](https://python-all.ru/3/whatsnew/changelog.html): Обеспечено, что веб-браузер запускается командой [`webbrowser.open()`](https://python-all.ru/3/library/webbrowser.html#webbrowser.open) в macOS, даже для URL вида `file://`.

### Windows

- [gh-131020](https://python-all.ru/3/whatsnew/changelog.html): [pylauncher](https://python-all.ru/src/3.14/PC/launcher2.c) корректно обнаруживает BOM при поиске shebang. Исправление от Chris Eibl.

### Tools/Demos

- [gh-130453](https://python-all.ru/3/whatsnew/changelog.html): Добавлена возможность переопределять ключевые слова по умолчанию в **pygettext**.
- [gh-85012](https://python-all.ru/3/whatsnew/changelog.html): Корректный сброс `msgctxt` при компиляции сообщений в **msgfmt**.
- [gh-130453](https://python-all.ru/3/whatsnew/changelog.html): Расширена поддержка указания пользовательских ключевых слов в **pygettext**.
- [gh-130195](https://python-all.ru/3/whatsnew/changelog.html): Добавлены предупреждающие сообщения при вызове нереализованной опции `pygettext` `-a/--extract-all`.
- [gh-130057](https://python-all.ru/3/whatsnew/changelog.html): Добавлена поддержка комментариев переводчика в **pygettext.py**.
- [gh-130025](https://python-all.ru/3/whatsnew/changelog.html): Тестовое окружение iOS теперь корректно обрабатывает симлинки, используемые как ссылки на фреймворк Python.
- [gh-129911](https://python-all.ru/3/whatsnew/changelog.html): Исправлена запись ключевого слова в выводе справки **pygettext**.

### Тесты

- [gh-129200](https://python-all.ru/3/whatsnew/changelog.html): Теперь можно запускать несколько тестовых окружений iOS одновременно без неоднозначности владения симулятором.
- [gh-130292](https://python-all.ru/3/whatsnew/changelog.html): Тестовое окружение iOS теперь будет успешно запускаться на машине, на которой ранее не выполнялись тесты Xcode (например, в конфигурациях CI).
- [gh-130293](https://python-all.ru/3/whatsnew/changelog.html): Тесты цветового оформления терминала больше не чувствительны к значению переменной `TERM` в тестовом окружении.
- [gh-129401](https://python-all.ru/3/whatsnew/changelog.html): Исправлен нестабильный тест в `test_repr_rlock`, проверяющий представление [`multiprocessing.RLock`](https://python-all.ru/3/library/multiprocessing.html#multiprocessing.RLock).
- [gh-126332](https://python-all.ru/3/whatsnew/changelog.html): Добавлены модульные тесты для pyrepl.

### Безопасность

- [gh-127371](https://python-all.ru/3/whatsnew/changelog.html): Предотвращено неограниченное буферизирование для `tempfile.SpooledTemporaryFile.writelines()`. Ранее сброс на диск проверялся только после исчерпания итератора строк. Теперь это делается после записи каждой строки.

### Библиотека

- [gh-131204](https://python-all.ru/3/whatsnew/changelog.html): Использовать моноширинный шрифт из системного стека шрифтов для кроссплатформенной поддержки в [`difflib.HtmlDiff`](https://python-all.ru/3/library/difflib.html#difflib.HtmlDiff).
- [gh-131196](https://python-all.ru/3/whatsnew/changelog.html): Улучшена производительность [`uuid.UUID.hex`](https://python-all.ru/3/library/uuid.html#uuid.UUID.hex) и [`uuid.UUID.__str__`](https://python-all.ru/3/reference/datamodel.html#object.__str__).
- [gh-130940](https://python-all.ru/3/whatsnew/changelog.html): Поведение `PyConfig.use_system_logger` было изменено: теперь оно включено по умолчанию на iOS. На macOS оно по-прежнему отключено по умолчанию.
- [gh-131123](https://python-all.ru/3/whatsnew/changelog.html): Добавлена поддержка автодополнения для атрибутов вспомогательных переменных в [`pdb`](https://python-all.ru/3/library/pdb.html#module-pdb).
- [gh-93096](https://python-all.ru/3/whatsnew/changelog.html): Удалена недокументированная CLI `python -m difflib`. Вместо неё используйте `python -m doctest Lib/difflib.py -v`. Исправление от Semyon Moroz.
- [gh-93096](https://python-all.ru/3/whatsnew/changelog.html): Удалены недокументированные аргументы `-t` и `-v` у `python -m pickle`. Вместо них используйте `python -m doctest Lib/pickle.py -v`. Исправление от Semyon Moroz.
- [gh-81267](https://python-all.ru/3/whatsnew/changelog.html): Исправлено сообщение об ошибке [`time.sleep()`](https://python-all.ru/3/library/time.html#time.sleep), когда предоставляется объект, который не может быть интерпретирован как целое число или число с плавающей запятой.
- [gh-93096](https://python-all.ru/3/whatsnew/changelog.html): Удалены недокументированные аргументы `-t` и `-v` у `python -m pickletools`. Вместо них используйте `python -m doctest Lib/pickletools.py -v`. Исправление от Semyon Moroz.
- [gh-131045](https://python-all.ru/3/whatsnew/changelog.html): Исправлена проблема с `__contains__`, значениями и псевдо-членами для [`enum.Flag`](https://python-all.ru/3/library/enum.html#enum.Flag).
- [gh-130959](https://python-all.ru/3/whatsnew/changelog.html): Исправлена реализация на чистом Python [`datetime.time.fromisoformat()`](https://python-all.ru/3/library/datetime.html#datetime.time.fromisoformat) для отклонения времени с пробелами в дробной части (например, `12:34:56.400 +02:00`), в соответствии с реализацией на C. Исправление от Michał Gorny.
- [gh-130806](https://python-all.ru/3/whatsnew/changelog.html): Удаление [`gzip.GzipFile`](https://python-all.ru/3/library/gzip.html#gzip.GzipFile) до его закрытия теперь вызывает [`ResourceWarning`](https://python-all.ru/3/library/exceptions.html#ResourceWarning).
- [gh-130637](https://python-all.ru/3/whatsnew/changelog.html): Добавлена проверка числовых данных ответа в методе poplib.POP3.stat()
- [gh-130665](https://python-all.ru/3/whatsnew/changelog.html): Применение локали к [CLI календаря](https://python-all.ru/3/library/calendar.html#calendar-cli) только когда она установлена через `--locale`, а не через переменную окружения `LANG`.
- [gh-130660](https://python-all.ru/3/whatsnew/changelog.html): `sys.ps1` и `sys.ps2` теперь восстанавливаются после вызова [`code.interact()`](https://python-all.ru/3/library/code.html#code.interact).
- [gh-130608](https://python-all.ru/3/whatsnew/changelog.html): Удалён аргумент *dirs\_exist\_ok* из [`pathlib.Path.copy()`](https://python-all.ru/3/library/pathlib.html#pathlib.Path.copy) и [`copy_into()`](https://python-all.ru/3/library/pathlib.html#pathlib.Path.copy_into). Эти методы являются новыми в Python 3.14.
- [gh-130461](https://python-all.ru/3/whatsnew/changelog.html): Удалены директивы `.. index::` из документации модуля [`uuid`](https://python-all.ru/3/library/uuid.html#module-uuid) . Ранее эти директивы создавали записи в общем указателе для [`getnode()`](https://python-all.ru/3/library/uuid.html#uuid.getnode), а также для функций-конструкторов [`uuid1()`](https://python-all.ru/3/library/uuid.html#uuid.uuid1), [`uuid3()`](https://python-all.ru/3/library/uuid.html#uuid.uuid3), [`uuid4()`](https://python-all.ru/3/library/uuid.html#uuid.uuid4), [`uuid5()`](https://python-all.ru/3/library/uuid.html#uuid.uuid5) и [`uuid8()`](https://python-all.ru/3/library/uuid.html#uuid.uuid8).
- [gh-130379](https://python-all.ru/3/whatsnew/changelog.html): Модуль zipapp теперь вычисляет список файлов для добавления в архив перед созданием архива. Это предотвращает случайное включение целевого файла, если он создаётся в исходной директории.
- [gh-82987](https://python-all.ru/3/whatsnew/changelog.html): Инлайн-точки останова, такие как [`breakpoint()`](https://python-all.ru/3/library/functions.html#breakpoint) или [`pdb.set_trace()`](https://python-all.ru/3/library/pdb.html#pdb.set_trace), всегда будут останавливать программу в вызывающем фрейме, игнорируя шаблон `skip` (если он есть).
- [gh-125377](https://python-all.ru/3/whatsnew/changelog.html): `<tab>` в начале строки в многострочном вводе [`pdb`](https://python-all.ru/3/library/pdb.html#module-pdb) теперь будет добавлять отступ в 4 пробела, вместо вставки символа `\t`.
- [gh-125413](https://python-all.ru/3/whatsnew/changelog.html): Гарантировать, что путь, возвращаемый из [`pathlib.Path.copy()`](https://python-all.ru/3/library/pathlib.html#pathlib.Path.copy) или [`move()`](https://python-all.ru/3/library/pathlib.html#pathlib.Path.move), имеет актуальный [`info`](https://python-all.ru/3/library/pathlib.html#pathlib.Path.info).
- [gh-65697](https://python-all.ru/3/whatsnew/changelog.html): Модуль stdlib configparser теперь будет пытаться проверить, что записываемые ключи не приведут к повреждению файла (созданию файла, который не может быть точно проанализирован будущим вызовом read() того же анализатора). Попытка повреждающей записи вызовет исключение InvalidWriteError.
- [gh-125413](https://python-all.ru/3/whatsnew/changelog.html): Ускорен [`Path.copy`](https://python-all.ru/3/library/pathlib.html#pathlib.Path.copy) за счёт более эффективного использования [`info`](https://python-all.ru/3/library/pathlib.html#pathlib.Path.info) внутри.
- [gh-130285](https://python-all.ru/3/whatsnew/changelog.html): Исправлен краевой случай для [`random.sample()`](https://python-all.ru/3/library/random.html#random.sample), позволяющий параметру *counts* указывать пустую популяцию. Теперь `sample([], 0, counts=[])` и `sample('abc', k=0, counts=[0, 0, 0])` оба дают тот же результат, что и `sample([], 0)`.
- [gh-124703](https://python-all.ru/3/whatsnew/changelog.html): Выполнение команды `quit` в [`pdb`](https://python-all.ru/3/library/pdb.html#module-pdb) вызовет [`bdb.BdbQuit`](https://python-all.ru/3/library/bdb.html#bdb.BdbQuit), когда `pdb` запущен из интерактивной консоли с помощью [`breakpoint()`](https://python-all.ru/3/library/functions.html#breakpoint) или [`pdb.set_trace()`](https://python-all.ru/3/library/pdb.html#pdb.set_trace).
- [gh-107773](https://python-all.ru/3/whatsnew/changelog.html): Сделать подкласс [`datetime`](https://python-all.ru/3/library/datetime.html#module-datetime) от [`__repr__()`](https://python-all.ru/3/reference/datamodel.html#object.__repr__) согласованным в обеих реализациях. Исправление от Semyon Moroz.
- [gh-130250](https://python-all.ru/3/whatsnew/changelog.html): Исправлена регрессия в `traceback.print_last()`.
- [gh-123471](https://python-all.ru/3/whatsnew/changelog.html): Сделать конкурентные итерации по [`itertools.batched`](https://python-all.ru/3/library/itertools.html#itertools.batched) безопасными в свободной многопоточности.
- [gh-57537](https://python-all.ru/3/whatsnew/changelog.html): Поддержка точек останова для модулей [`zipimport`](https://python-all.ru/3/library/zipimport.html#module-zipimport) на [`pdb`](https://python-all.ru/3/library/pdb.html#module-pdb)
- [gh-130230](https://python-all.ru/3/whatsnew/changelog.html): Исправлен сбой в [`pow()`](https://python-all.ru/3/library/functions.html#pow), когда третьим аргументом указан только [`Decimal`](https://python-all.ru/3/library/decimal.html#decimal.Decimal)
- [gh-126944](https://python-all.ru/3/whatsnew/changelog.html): Показывать явные ошибки, когда отсутствуют обязательные аргументы команд [`pdb`](https://python-all.ru/3/library/pdb.html#module-pdb)
- [gh-127750](https://python-all.ru/3/whatsnew/changelog.html): Улучшено представление (repr) методов [`functools.singledispatchmethod`](https://python-all.ru/3/library/functools.html#functools.singledispatchmethod) и дескрипторов.
- [gh-128520](https://python-all.ru/3/whatsnew/changelog.html): Применяет преобразование типов единообразно в методах [`pathlib.PurePath`](https://python-all.ru/3/library/pathlib.html#pathlib.PurePath) и [`Path`](https://python-all.ru/3/library/pathlib.html#pathlib.Path), которые могут принимать объект пути в качестве аргумента, например [`match()`](https://python-all.ru/3/library/pathlib.html#pathlib.PurePath.match) и [`rename()`](https://python-all.ru/3/library/pathlib.html#pathlib.Path.rename). Аргумент теперь преобразуется в объект пути, если у него отсутствует атрибут [`with_segments()`](https://python-all.ru/3/library/pathlib.html#pathlib.PurePath.with_segments), и не преобразуется в противном случае.
- [gh-118761](https://python-all.ru/3/whatsnew/changelog.html): Отменяет изменение в предыдущем выпуске, которое пыталось сделать некоторые импорты стандартной библиотеки, используемые внутри модуля [`subprocess`](https://python-all.ru/3/library/subprocess.html#module-subprocess), ленивыми, так как это вызывало ошибки во время финализаторов `__del__`, вызывающих такие методы, как `terminate`, `kill` или `send_signal`.
- [gh-130164](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка, из-за которой не вызывалось [`TypeError`](https://python-all.ru/3/library/exceptions.html#TypeError) в [`inspect.Signature.bind()`](https://python-all.ru/3/library/inspect.html#inspect.Signature.bind) для позиционно-ключевых аргументов, переданных по ключу, когда присутствовал вариативный ключевой аргумент (например, `**kwargs`).
- [gh-130151](https://python-all.ru/3/whatsnew/changelog.html): Исправлены утечки ссылок в `_hashlib.hmac_new()` и `_hashlib.hmac_digest()`. Патч от Bénédikt Tran.
- [gh-130145](https://python-all.ru/3/whatsnew/changelog.html): Исправлено `asyncio.AbstractEventloop.run_forever()`, когда другой цикл уже запущен.
- [gh-130139](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка, при которой [`ast.parse()`](https://python-all.ru/3/library/ast.html#ast.parse) не выдавал ошибку при входных данных AST неправильного типа, при вызове с optimize=False.
- [gh-127260](https://python-all.ru/3/whatsnew/changelog.html): Запрещено использование двоеточия (":") в качестве разделителя дробной части и другие улучшения согласованности возникновения ошибок между реализациями на C и Python для [`datetime.time.fromisoformat()`](https://python-all.ru/3/library/datetime.html#datetime.time.fromisoformat) и [`datetime.datetime.fromisoformat()`](https://python-all.ru/3/library/datetime.html#datetime.datetime.fromisoformat). Патч от Semyon Moroz.
- [gh-85795](https://python-all.ru/3/whatsnew/changelog.html): Использование [`super()`](https://python-all.ru/3/library/functions.html#super) и `__class__` [переменной замыкания](https://python-all.ru/3/glossary.html#term-closure-variable) в пользовательских методах подклассов [`typing.NamedTuple`](https://python-all.ru/3/library/typing.html#typing.NamedTuple) теперь явно запрещено во время выполнения. Предложено Bartosz Sławecki в [gh-130082](https://python-all.ru/3/whatsnew/changelog.html).
- [gh-118761](https://python-all.ru/3/whatsnew/changelog.html): Улучшено время импорта [`cmd`](https://python-all.ru/3/library/cmd.html#module-cmd) за счёт ленивого импорта [`inspect`](https://python-all.ru/3/library/inspect.html#module-inspect) и удаления [`string`](https://python-all.ru/3/library/string.html#module-string). Патч от Semyon Moroz.
- [gh-129726](https://python-all.ru/3/whatsnew/changelog.html): Исправлено [`gzip.GzipFile`](https://python-all.ru/3/library/gzip.html#gzip.GzipFile), вызывавшее неперехватываемое исключение во время сборки мусора при ссылке на временный объект, путём разрыва цикла ссылок с помощью [`weakref`](https://python-all.ru/3/library/weakref.html#module-weakref).
- [gh-127750](https://python-all.ru/3/whatsnew/changelog.html): Удалено сломанное кэширование [`functools.singledispatchmethod()`](https://python-all.ru/3/library/functools.html#functools.singledispatchmethod), введённое в [gh-85160](https://python-all.ru/3/whatsnew/changelog.html). Достигнута та же производительность с помощью другой оптимизации.
- [gh-129948](https://python-all.ru/3/whatsnew/changelog.html): Добавлена поддержка общих [`set`](https://python-all.ru/3/library/stdtypes.html#set) для [`multiprocessing.managers.SyncManager`](https://python-all.ru/3/library/multiprocessing.html#multiprocessing.managers.SyncManager) через [`SyncManager.set()`](https://python-all.ru/3/library/multiprocessing.html#multiprocessing.managers.SyncManager.set).
- [gh-129965](https://python-all.ru/3/whatsnew/changelog.html): Обновлены MIME-типы для `.avi` и `.wav`. Добавлены MIME-типы для `.docx`, `.pptx`, `.xlsx`, `.epub`, `.flac`, `.m4a`, `.odg`, `.odp`, `.ods`, `.odt`, `.oga`, `.ogg`, `.ogx` и `.weba`. Патч от Hugo van Kemenade.
- [gh-129889](https://python-all.ru/3/whatsnew/changelog.html): Поддержка протокола менеджера контекста в [`contextvars.Token`](https://python-all.ru/3/library/contextvars.html#contextvars.Token). Патч от Andrew Svetlov.
- [gh-97850](https://python-all.ru/3/whatsnew/changelog.html): Обновлено предупреждение об устаревании для [`importlib.abc.Loader.load_module()`](https://python-all.ru/3/library/importlib.html#importlib.abc.Loader.load_module).
- [gh-129678](https://python-all.ru/3/whatsnew/changelog.html): [`configparser.ConfigParser`](https://python-all.ru/3/library/configparser.html#configparser.ConfigParser): не записывать пустой безымянный раздел
- [gh-128641](https://python-all.ru/3/whatsnew/changelog.html): Восстановлена производительность [`configparser.ConfigParser.read()`](https://python-all.ru/3/library/configparser.html#configparser.ConfigParser.read).
- [gh-129569](https://python-all.ru/3/whatsnew/changelog.html): Исправлено [`unicodedata.normalize()`](https://python-all.ru/3/library/unicodedata.html#unicodedata.normalize), чтобы он всегда возвращал встроенный объект [`str`](https://python-all.ru/3/library/stdtypes.html#str) при вводе подкласса `str`, независимо от того, нормализована ли строка уже.
- [gh-128231](https://python-all.ru/3/whatsnew/changelog.html): Выполнение нескольких операторов в новом REPL теперь останавливается сразу при первом же возникшем исключении. Патч от Bartosz Sławecki.
- [gh-96092](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка в [`traceback.walk_stack()`](https://python-all.ru/3/library/traceback.html#traceback.walk_stack) при вызове с None, из-за которой пропускалось больше фреймов, чем в предыдущих версиях. Это исправление также изменяет walk\_stack так, чтобы обход стека начинался с фрейма, в котором он был вызван, а не с того, где он впервые используется.
- [gh-129288](https://python-all.ru/3/whatsnew/changelog.html): Добавлены необязательные поля `l2_cid` и `l2_bdaddr_type` в кортеж sockaddr [`socket`](https://python-all.ru/3/library/socket.html#module-socket) `BTPROTO_L2CAP`.
- [gh-128703](https://python-all.ru/3/whatsnew/changelog.html): Исправлено [`mimetypes.guess_type()`](https://python-all.ru/3/library/mimetypes.html#mimetypes.guess_type), чтобы использовать сопоставление по умолчанию для пустого `Content-Type` в реестре.
- [gh-128647](https://python-all.ru/3/whatsnew/changelog.html): Немедленная запись в буферы, передаваемые реализациям [`readinto()`](https://python-all.ru/3/library/io.html#io.BufferedIOBase.readinto) и [`readinto1()`](https://python-all.ru/3/library/io.html#io.BufferedIOBase.readinto1) модуля [`gzip.GzipFile`](https://python-all.ru/3/library/gzip.html#gzip.GzipFile), что позволяет избежать ненужных выделений памяти. Патч от Chris Markiewicz.
- [gh-128184](https://python-all.ru/3/whatsnew/changelog.html): Улучшено отображение объекта [`annotationlib.ForwardRef`](https://python-all.ru/3/library/annotationlib.html#annotationlib.ForwardRef) внутри представлений [`inspect.Signature`](https://python-all.ru/3/library/inspect.html#inspect.Signature). Это также исправляет [`NameError`](https://python-all.ru/3/library/exceptions.html#NameError), которое возникало при использовании [`dataclasses.dataclass()`](https://python-all.ru/3/library/dataclasses.html#dataclasses.dataclass) для классов с неразрешимыми прямыми ссылками.
- [gh-128041](https://python-all.ru/3/whatsnew/changelog.html): Добавлены [`concurrent.futures.ProcessPoolExecutor.terminate_workers()`](https://python-all.ru/3/library/concurrent.futures.html#concurrent.futures.ProcessPoolExecutor.terminate_workers) и [`concurrent.futures.ProcessPoolExecutor.kill_workers()`](https://python-all.ru/3/library/concurrent.futures.html#concurrent.futures.ProcessPoolExecutor.kill_workers) как способы завершить или принудительно остановить все живые рабочие процессы в данном пуле. (Предложено Charles Machalow в [gh-130849](https://python-all.ru/3/whatsnew/changelog.html).)
- [gh-127647](https://python-all.ru/3/whatsnew/changelog.html): Добавлены протоколы [`io.Reader`](https://python-all.ru/3/library/io.html#io.Reader) и [`io.Writer`](https://python-all.ru/3/library/io.html#io.Writer) в качестве альтернатив [`typing.IO`](https://python-all.ru/3/library/typing.html#typing.IO), [`typing.TextIO`](https://python-all.ru/3/library/typing.html#typing.TextIO) и [`typing.BinaryIO`](https://python-all.ru/3/library/typing.html#typing.BinaryIO).
- [gh-109798](https://python-all.ru/3/whatsnew/changelog.html): Добавлена дополнительная информация в сообщения об ошибках в [`datetime`](https://python-all.ru/3/library/datetime.html#module-datetime), и сообщения стали более согласованными между реализациями на C и Python. Патч от Semyon Moroz.
- [gh-125746](https://python-all.ru/3/whatsnew/changelog.html): Отложено удаление устаревшего [`zipimport.zipimporter.load_module()`](https://python-all.ru/3/library/zipimport.html#zipimport.zipimporter.load_module) до версии 3.15. Вместо него используйте [`zipimport.zipimporter.exec_module()`](https://python-all.ru/3/library/zipimport.html#zipimport.zipimporter.exec_module).
- [gh-74028](https://python-all.ru/3/whatsnew/changelog.html): Добавлен необязательный параметр `buffersize` в [`concurrent.futures.Executor.map()`](https://python-all.ru/3/library/concurrent.futures.html#concurrent.futures.Executor.map) для ограничения количества отправленных задач, результаты которых ещё не были получены. Если буфер заполнен, итерация по *итерируемым объектам* приостанавливается до тех пор, пока из буфера не будет получен результат.
- [gh-124927](https://python-all.ru/3/whatsnew/changelog.html): Непечатаемые символы теперь правильно обрабатываются в новом REPL.
- [gh-124096](https://python-all.ru/3/whatsnew/changelog.html): Включён режим виртуального терминала и включена вставка в скобках (bracketed paste) в REPL на консоли Windows. (Если терминал не поддерживает вставку в скобках, её включение ничего не даёт.)
- [gh-89083](https://python-all.ru/3/whatsnew/changelog.html): Добавлен [`uuid.uuid7()`](https://python-all.ru/3/library/uuid.html#uuid.uuid7) для генерации объектов UUIDv7, как указано в [**RFC 9562**](https://python-all.ru/3/whatsnew/changelog.html). Патч от Bénédikt Tran.
- [gh-89083](https://python-all.ru/3/whatsnew/changelog.html): Добавлен [`uuid.uuid6()`](https://python-all.ru/3/library/uuid.html#uuid.uuid6) для генерации объектов UUIDv6 в соответствии с [**RFC 9562**](https://python-all.ru/3/whatsnew/changelog.html). Патч от Bénédikt Tran.
- [gh-117151](https://python-all.ru/3/whatsnew/changelog.html): Увеличен `io.DEFAULT_BUFFER_SIZE` с 8k до 128k и изменён [`open()`](https://python-all.ru/3/library/functions.html#open) на платформах, где [`os.fstat()`](https://python-all.ru/3/library/os.html#os.fstat) предоставляет поле `st_blksize` (например, Linux), чтобы использовать `max(min(blocksize, 8 MiB), io.DEFAULT_BUFFER_SIZE)` вместо постоянного использования размера блока устройства. Это должно улучшить производительность ввода-вывода. Патч от Romain Morotti.
- [gh-105499](https://python-all.ru/3/whatsnew/changelog.html): Сделать [`types.UnionType`](https://python-all.ru/3/library/types.html#types.UnionType) псевдонимом для [`typing.Union`](https://python-all.ru/3/library/typing.html#typing.Union). Теперь и `int | str`, и `Union[int, str]` создают экземпляры одного типа. Патч от Jelle Zijlstra.
- [gh-93096](https://python-all.ru/3/whatsnew/changelog.html): Документирована командная строка для [`mimetypes`](https://python-all.ru/3/library/mimetypes.html#module-mimetypes). Теперь при ошибке завершается с `1` вместо `0`, а при неверных параметрах командной строки – с `2` вместо `1`. Также ошибки выводятся в stderr вместо stdout, а их текст стал более кратким. Патч от Oleg Iarygin и Hugo van Kemenade.

### Документация

- [gh-125722](https://python-all.ru/3/whatsnew/changelog.html): Требуется Sphinx 8.2.0 или новее для сборки документации Python. Патч от Adam Turner.
- [gh-129712](https://python-all.ru/3/whatsnew/changelog.html): Теперь документированы теги wheel, поддерживаемые каждой опцией универсального SDK macOS.
- [gh-46236](https://python-all.ru/3/whatsnew/changelog.html): C API: Документированы [`PyUnicode_RSplit()`](https://python-all.ru/3/c-api/unicode.html#c.PyUnicode_RSplit), [`PyUnicode_Partition()`](https://python-all.ru/3/c-api/unicode.html#c.PyUnicode_Partition) и [`PyUnicode_RPartition()`](https://python-all.ru/3/c-api/unicode.html#c.PyUnicode_RPartition).

### Ядро и встроенные модули

- [gh-131141](https://python-all.ru/3/whatsnew/changelog.html): Исправлена гонка данных в инструментации [`sys.monitoring`](https://python-all.ru/3/library/sys.monitoring.html#module-sys.monitoring) при регистрации колбэка.
- [gh-130804](https://python-all.ru/3/whatsnew/changelog.html): Исправлена поддержка символов Unicode в Windows в новом REPL.
- [gh-130932](https://python-all.ru/3/whatsnew/changelog.html): Исправлена неверная обработка исключений в `_PyModule_IsPossiblyShadowing`
- [gh-122029](https://python-all.ru/3/whatsnew/changelog.html): [`sys.setprofile()`](https://python-all.ru/3/library/sys.html#sys.setprofile) и [`sys.settrace()`](https://python-all.ru/3/library/sys.html#sys.settrace) не будут генерировать событие `c_call` для `INSTRUMENTED_CALL_FUNCTION_EX`, если вызываемый объект является методом с обёрнутой C-функцией, поскольку в таком случае событие `c_return` не генерируется.
- [gh-129964](https://python-all.ru/3/whatsnew/changelog.html): Исправлен крах JIT в Windows на Arm. Патч от Diego Russo и Brandt Bucher.
- [gh-130851](https://python-all.ru/3/whatsnew/changelog.html): Исправлен крах в [free threading](https://python-all.ru/3/glossary.html#term-free-threading) сборке при создании объекта [`code`](https://python-all.ru/3/library/code.html#module-code) с [`co_consts`](https://python-all.ru/3/reference/datamodel.html#codeobject.co_consts), содержащим экземпляры типов, которые не генерируются компилятором байт-кода.
- [gh-128534](https://python-all.ru/3/whatsnew/changelog.html): Обеспечить, чтобы левая и правая ветви имели одинаковый источник для `async for` циклов. Добавить эти ветви в итератор `co_branches()`.
- [gh-130794](https://python-all.ru/3/whatsnew/changelog.html): Исправлена утечка памяти в [free threaded](https://python-all.ru/3/glossary.html#term-free-threading) сборке при изменении размера общего списка или словаря из нескольких короткоживущих потоков.
- [gh-130415](https://python-all.ru/3/whatsnew/changelog.html): Улучшено понимание JIT целых чисел в булевом контексте.
- [gh-130382](https://python-all.ru/3/whatsnew/changelog.html): Исправлена проблема, когда `PyRefTracer_DESTROY` не отправлялся из `Python/ceval.c` `Py_DECREF()`.
- [gh-130574](https://python-all.ru/3/whatsnew/changelog.html): Перенумерован [`RESUME`](https://python-all.ru/3/library/dis.html#opcode-RESUME) с 149 на 128.
- [gh-124878](https://python-all.ru/3/whatsnew/changelog.html): Исправлены состояния гонки во время финализации среды выполнения, которые могли привести к доступу к освобождённой памяти.
- [gh-130415](https://python-all.ru/3/whatsnew/changelog.html): Улучшена способность экспериментального JIT сужать булевы значения на основе результатов проверки истинности.
- [gh-130618](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка, которая вызывала `UnicodeDecodeError` или `SystemError` при использовании f-строк с `lambda` выражениями, содержащими не-ASCII символы. Патч от Pablo Galindo
- [gh-123044](https://python-all.ru/3/whatsnew/changelog.html): Убедиться, что расположение целевых меток перехода в `match`-случаях находится в теле, а не в шаблоне.
- [gh-128534](https://python-all.ru/3/whatsnew/changelog.html): Добавлен мониторинг ветвлений (события `BRANCH_LEFT` и `BRANCH_RIGHT`) для `async for` циклов.
- [gh-130163](https://python-all.ru/3/whatsnew/changelog.html): Исправлены возможные крахи, связанные с конкурентным изменением и использованием атрибутов модуля [`sys`](https://python-all.ru/3/library/sys.html#module-sys).
- [gh-122029](https://python-all.ru/3/whatsnew/changelog.html): `INSTRUMENTED_CALL_KW` будет разворачивать метод перед мониторингом, чтобы точнее отражать фактическое поведение.
- [gh-130415](https://python-all.ru/3/whatsnew/changelog.html): Улучшена способность JIT оптимизировать строки в булевых контекстах.
- [gh-130396](https://python-all.ru/3/whatsnew/changelog.html): Использовать фактические ограничения стека (из *[pthread\_getattr\_np(3)](https://python-all.ru/3/whatsnew/changelog.html)*) для Linux и других систем, где определено `_GNU_SOURCE`, при определении границ защиты C-стека.
- [gh-128396](https://python-all.ru/3/whatsnew/changelog.html): Исправлен крах, возникающий при вызове [`locals()`](https://python-all.ru/3/library/functions.html#locals) внутри встроенного генераторного выражения, использующего ту же локальную переменную, что и внешняя область видимости фрейма, где переменная является свободной или cell-переменной.
- [gh-129107](https://python-all.ru/3/whatsnew/changelog.html): Исправлены ещё две [`bytearray`](https://python-all.ru/3/library/stdtypes.html#bytearray) функции для [free threading](https://python-all.ru/3/glossary.html#term-free-threading).
- [gh-127705](https://python-all.ru/3/whatsnew/changelog.html): Использовать тегированные ссылки (`_PyStackRef`) как для сборки по умолчанию, так и для сборки с free-threading. В краткосрочной перспективе это немного снижает производительность, но в будущем позволит добиться большего ускорения и значительно сократить расходы на поддержку за счёт использования единой реализации тегированных ссылок.
- [gh-130094](https://python-all.ru/3/whatsnew/changelog.html): Исправлено два состояния гонки, связанных с конкурентными импортами, которые могли приводить к ложным сбоям с [`ModuleNotFoundError`](https://python-all.ru/3/library/exceptions.html#ModuleNotFoundError).
- [gh-129107](https://python-all.ru/3/whatsnew/changelog.html): Итератор [`bytearray`](https://python-all.ru/3/library/stdtypes.html#bytearray) теперь безопасен в условиях [свободной многопоточности](https://python-all.ru/3/glossary.html#term-free-threading).
- [gh-115802](https://python-all.ru/3/whatsnew/changelog.html): Используется более эффективная модель кода «medium» для JIT-компилированного кода на поддерживаемых платформах.
- [gh-107956](https://python-all.ru/3/whatsnew/changelog.html): Файл `build-details.json` теперь устанавливается в платформенно-независимый каталог стандартной библиотеки (реализация [**PEP 739**](https://python-all.ru/3/whatsnew/changelog.html)).
- [gh-116042](https://python-all.ru/3/whatsnew/changelog.html): Исправлено расположение SyntaxError для недопустимых escape-последовательностей в токенизаторе. Исправление от Pablo Galindo.
- [gh-91079](https://python-all.ru/3/whatsnew/changelog.html): Изменена защита от переполнения C-стека: теперь учитывается объём потреблённого стека, а не счётчик. Это позволяет более глубокую рекурсию во многих случаях, оставаясь безопасным.
- [gh-129715](https://python-all.ru/3/whatsnew/changelog.html): Улучшена обработка возвратов из экспериментального JIT к неизвестным вызывающим.

### Библиотека

- [gh-129983](https://python-all.ru/3/whatsnew/changelog.html): Исправлено состояние гонки данных в compile\_template в `sre.c`.

### Ядро и встроенные функции

- [gh-129967](https://python-all.ru/3/whatsnew/changelog.html): Исправлено состояние гонки в сборке с [свободной многопоточностью](https://python-all.ru/3/glossary.html#term-free-threading), когда `repr(set)` вызывается конкурентно с `set.clear()`.
- [gh-129953](https://python-all.ru/3/whatsnew/changelog.html): Внутренний (вычислительный) стек теперь выгружается в память всякий раз, когда выполнение выходит за пределы интерпретатора или JIT-компилированного кода. Это не должно иметь наблюдаемого эффекта ни в Python, ни в расширениях на C, но позволит провести различные важные оптимизации в будущем.
- [gh-129515](https://python-all.ru/3/whatsnew/changelog.html): Уточнены сообщения об ошибках синтаксиса для условных выражений, когда инструкция указана перед ключевым словом [`if`](https://python-all.ru/3/reference/compound_stmts.html#if) или после ключевого слова [`else`](https://python-all.ru/3/reference/compound_stmts.html#else).
- [gh-129349](https://python-all.ru/3/whatsnew/changelog.html): [`bytes.fromhex()`](https://python-all.ru/3/library/stdtypes.html#bytes.fromhex) и [`bytearray.fromhex()`](https://python-all.ru/3/library/stdtypes.html#bytearray.fromhex) теперь принимают ASCII [`bytes`](https://python-all.ru/3/library/stdtypes.html#bytes) и [байтоподобные объекты](https://python-all.ru/3/glossary.html#term-bytes-like-object).
- [gh-129149](https://python-all.ru/3/whatsnew/changelog.html): Добавлен быстрый путь для целых чисел среднего размера в [`PyLong_FromSsize_t()`](https://python-all.ru/3/c-api/long.html#c.PyLong_FromSsize_t). Исправление от Chris Eibl.
- [gh-129107](https://python-all.ru/3/whatsnew/changelog.html): [`bytearray`](https://python-all.ru/3/library/stdtypes.html#bytearray) теперь безопасен в условиях [свободной многопоточности](https://python-all.ru/3/glossary.html#term-free-threading).
- [gh-128974](https://python-all.ru/3/whatsnew/changelog.html): Исправлен сбой в [`UnicodeError.__str__`](https://python-all.ru/3/reference/datamodel.html#object.__str__), когда пользовательские атрибуты реализуют `__str__()` с побочными эффектами. Исправление от Bénédikt Tran.
- [gh-126085](https://python-all.ru/3/whatsnew/changelog.html): [`typing.TypeAliasType`](https://python-all.ru/3/library/typing.html#typing.TypeAliasType) теперь поддерживает звёздочную распаковку.
- [gh-125331](https://python-all.ru/3/whatsnew/changelog.html): `from __future__ import barry_as_FLUFL` теперь работает в большем количестве контекстов, включая использование в файлах, с флагом `-c` и в REPL, когда на одной строке несколько инструкций. Ранее он работал только на последующих строках в REPL и когда соответствующие флаги передавались напрямую в [`compile()`](https://python-all.ru/3/library/functions.html#compile). Исправление от Pablo Galindo.
- [gh-121464](https://python-all.ru/3/whatsnew/changelog.html): Конкурентные итерации по одному и тому же итератору [`enumerate()`](https://python-all.ru/3/library/functions.html#enumerate) теперь безопасны в условиях свободной многопоточности. См. [Стратегию итераторов в свободной многопоточности](https://python-all.ru/3/whatsnew/changelog.html).
- [gh-87790](https://python-all.ru/3/whatsnew/changelog.html): Добавлена поддержка символов подчёркивания и запятой в качестве разделителей тысяч в дробной части для типов представления чисел с плавающей точкой в новом стиле форматирования строк (с [`format()`](https://python-all.ru/3/library/functions.html#format) или [f-строками](https://python-all.ru/3/reference/lexical_analysis.html#f-strings)). Исправление от Sergey B Kirpichev.
- [gh-124445](https://python-all.ru/3/whatsnew/changelog.html): Исправлена специализация обобщённых псевдонимов, которые являются обобщёнными по [`typing.ParamSpec`](https://python-all.ru/3/library/typing.html#typing.ParamSpec) и были специализированы вложенной переменной типа.
- [gh-120608](https://python-all.ru/3/whatsnew/changelog.html): Адаптирован [`reversed()`](https://python-all.ru/3/library/functions.html#reversed) для использования в сборке со свободной многопоточностью. `reversed()` всё ещё не является потокобезопасным в том смысле, что конкурентные итерации могут видеть один и тот же объект, но они не повредят состояние интерпретатора.

### Библиотека

- [gh-100388](https://python-all.ru/3/whatsnew/changelog.html): Исправлен метод `platform._sys_version()`, когда `__DATE__` не определён во время сборки; изменена строка даты и времени по умолчанию на начало эпохи UNIX.

### Ядро и встроенные функции

- [bpo-44369](https://python-all.ru/3/whatsnew/changelog.html): Улучшены сообщения об ошибках синтаксиса для некорректно закрытых строк. Исправление от Pablo Galindo

### C API

- [gh-111178](https://python-all.ru/3/whatsnew/changelog.html): Исправлен API [`PyCMethod`](https://python-all.ru/3/c-api/structures.html#c.PyCMethod): замена `size_t nargs` на `Py_ssize_t nargs` в `PyCMethod`. Исправление от Victor Stinner.
- [gh-130947](https://python-all.ru/3/whatsnew/changelog.html): Снова добавлен [`PySequence_Fast()`](https://python-all.ru/3/c-api/sequence.html#c.PySequence_Fast) в ограниченный C API. Исправление от Victor Stinner.
- [gh-128863](https://python-all.ru/3/whatsnew/changelog.html): Следующие приватные функции объявлены устаревшими и будут удалены в Python 3.18:

  - `_PyUnicodeWriter_Init()`: заменить `_PyUnicodeWriter_Init(&writer)` на [`writer = PyUnicodeWriter_Create(0)`](https://python-all.ru/3/c-api/unicode.html#c.PyUnicodeWriter_Create).
  - `_PyUnicodeWriter_Finish()`: заменить `_PyUnicodeWriter_Finish(&writer)` на [`PyUnicodeWriter_Finish(writer)`](https://python-all.ru/3/c-api/unicode.html#c.PyUnicodeWriter_Finish).
  - `_PyUnicodeWriter_Dealloc()`: заменить `_PyUnicodeWriter_Dealloc(&writer)` на [`PyUnicodeWriter_Discard(writer)`](https://python-all.ru/3/c-api/unicode.html#c.PyUnicodeWriter_Discard).
  - `_PyUnicodeWriter_WriteChar()`: заменить `_PyUnicodeWriter_WriteChar(&writer, ch)` на [`PyUnicodeWriter_WriteChar(writer, ch)`](https://python-all.ru/3/c-api/unicode.html#c.PyUnicodeWriter_WriteChar).
  - `_PyUnicodeWriter_WriteStr()`: заменить `_PyUnicodeWriter_WriteStr(&writer, str)` на [`PyUnicodeWriter_WriteStr(writer, str)`](https://python-all.ru/3/c-api/unicode.html#c.PyUnicodeWriter_WriteStr).
  - `_PyUnicodeWriter_WriteSubstring()`: заменить `_PyUnicodeWriter_WriteSubstring(&writer, str, start, end)` на [`PyUnicodeWriter_WriteSubstring(writer, str, start, end)`](https://python-all.ru/3/c-api/unicode.html#c.PyUnicodeWriter_WriteSubstring).
  - `_PyUnicodeWriter_WriteASCIIString()`: заменить `_PyUnicodeWriter_WriteASCIIString(&writer, str)` на [`PyUnicodeWriter_WriteUTF8(writer, str)`](https://python-all.ru/3/c-api/unicode.html#c.PyUnicodeWriter_WriteUTF8).
  - `_PyUnicodeWriter_WriteLatin1String()`: заменить `_PyUnicodeWriter_WriteLatin1String(&writer, str)` на [`PyUnicodeWriter_WriteUTF8(writer, str)`](https://python-all.ru/3/c-api/unicode.html#c.PyUnicodeWriter_WriteUTF8).
  - `_PyUnicodeWriter_Prepare()`: (нет замены).
  - `_PyUnicodeWriter_PrepareKind()`: (нет замены).

  Проект [pythoncapi-compat](https://python-all.ru/3/whatsnew/changelog.html) можно использовать для получения этих новых публичных функций на Python 3.13 и более старых версиях.

  Патч от Виктора Стиннера.
- [gh-45325](https://python-all.ru/3/whatsnew/changelog.html): Добавлен новый параметр формата `p` к [`Py_BuildValue()`](https://python-all.ru/3/c-api/arg.html#c.Py_BuildValue), который позволяет принимать C-целое и возвращать объект Python [`bool`](https://python-all.ru/3/library/functions.html#bool). Патч от Пабло Галиндо.

### Сборка

- [gh-131035](https://python-all.ru/3/whatsnew/changelog.html): Использовать `-flto=thin` для ускорения сборки с clang-cl на Windows. Патч от Криса Айбла.
- [gh-130740](https://python-all.ru/3/whatsnew/changelog.html): Обеспечить, чтобы `Python.h` включался до `stdbool.h`, если только `pyconfig.h` не включен раньше или в некоторых платформо-зависимых контекстах.
- [gh-130090](https://python-all.ru/3/whatsnew/changelog.html): Сборка с `PlatformToolset=ClangCL` на Windows теперь поддерживает PGO (профильно-управляемую оптимизацию). Патч от Криса Айбла при неоценимой поддержке Стива Давера.
- [gh-129819](https://python-all.ru/3/whatsnew/changelog.html): Разрешить сборку JIT с интерпретатором хвостового вызова.
- [gh-129989](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка, при которой интерпретатор хвостового вызова включался, когда `--without-tail-call-interp` передавался скрипту configure.
- [gh-129838](https://python-all.ru/3/whatsnew/changelog.html): Не переопределять `_Py_NO_SANITIZE_UNDEFINED` при компиляции с недавней версией GCC и включенным undefined sanitizer.
- [gh-82909](https://python-all.ru/3/whatsnew/changelog.html): Связывание на основе `#pragma` с `python3*.lib` теперь можно отключить с помощью [Py\_NO\_LINK\_LIB](https://python-all.ru/3/extending/windows.html#c.Py_NO_LINK_LIB). Патч от Жан-Кристофа Филиппона-Робена.

## Python 3.14.0 alpha 5

*Дата выпуска: 2025-02-11*

### macOS

- [gh-91132](https://python-all.ru/3/whatsnew/changelog.html): Обновление установщика macOS для использования ncurses 6.5.

### Инструменты/Демонстрации

- [gh-129248](https://python-all.ru/3/whatsnew/changelog.html): Тестовый раннер iOS теперь удаляет префикс лога из каждой строки, выводимой тестовым набором.
- [gh-104400](https://python-all.ru/3/whatsnew/changelog.html): Исправлено несколько ошибок при извлечении путем перехода на AST-парсер в **pygettext**.

### Тесты

- [gh-129386](https://python-all.ru/3/whatsnew/changelog.html): Добавлен `test.support.reset_code`, который можно использовать для сброса различных оптимизаций на уровне байт-кода и локальной инструментации для функции.
- [gh-128474](https://python-all.ru/3/whatsnew/changelog.html): Отключены тестовые случаи `test_embed`, которые вызывают segfault на инструментированных BOLT бинарниках. Тесты отключаются только когда BOLT включен.
- [gh-128003](https://python-all.ru/3/whatsnew/changelog.html): Добавлена опция `--parallel-threads=N` в регрессионный тестовый раннер, которая запускает отдельные тесты в нескольких потоках параллельно для поиска ошибок параллелизма. Обратите внимание, что большая часть тестового набора ещё не проверена на потокобезопасность и не аннотирована с помощью `@thread_unsafe` при необходимости.

### Безопасность

- [gh-105704](https://python-all.ru/3/whatsnew/changelog.html): При использовании [`urllib.parse.urlsplit()`](https://python-all.ru/3/library/urllib.parse.html#urllib.parse.urlsplit) и [`urllib.parse.urlparse()`](https://python-all.ru/3/library/urllib.parse.html#urllib.parse.urlparse) разбор хоста не отклонял доменные имена, содержащие квадратные скобки (`[` и `]`). Квадратные скобки допустимы только для хостов IPv6 и IPvFuture согласно [RFC 3986 Section 3.2.2](https://python-all.ru/3/whatsnew/changelog.html).
- [gh-126108](https://python-all.ru/3/whatsnew/changelog.html): Исправлено возможное разыменование указателя `NULL` в `PySys_AddWarnOptionUnicode()`.
- [gh-80222](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка в сворачивании строк в кавычках при уплощении email-сообщения с использованием современной политики email. Ранее, когда строка в кавычках сворачивалась так, что она занимала более одной строки, окружающие кавычки и внутренние экранирования опускались. Это теоретически могло использоваться для подделки строк заголовка с помощью тщательно сконструированной строки в кавычках, если полученное отрендеренное письмо передавалось или повторно разбиралось.
- [gh-119511](https://python-all.ru/3/whatsnew/changelog.html): Исправлена потенциальная уязвимость отказа в обслуживании в модуле [`imaplib`](https://python-all.ru/3/library/imaplib.html#module-imaplib). При подключении к вредоносному серверу могло быть выделено произвольное количество памяти. На многих системах это безвредно, так как неиспользуемая виртуальная память – это только отображение, но если это достигало предела размера виртуального адреса, это могло привести к [`MemoryError`](https://python-all.ru/3/library/exceptions.html#MemoryError) или другому падению процесса. На необычных системах или сборках, где вся выделенная память трогается и подкрепляется реальной оперативной памятью или хранилищем, это могло потреблять ресурсы до аналогичного падения.

### Библиотека

- [gh-129939](https://python-all.ru/3/whatsnew/changelog.html): Страницы сравнения с выделенными изменениями, генерируемые классом [`difflib.HtmlDiff`](https://python-all.ru/3/library/difflib.html#difflib.HtmlDiff), теперь поддерживают тёмную тему.
- [gh-129928](https://python-all.ru/3/whatsnew/changelog.html): Возбуждать [`sqlite3.ProgrammingError`](https://python-all.ru/3/library/sqlite3.html#sqlite3.ProgrammingError), если создаётся пользовательская SQL-функция с недопустимым количеством параметров. Патч от Эрленда Асланда.
- [gh-129583](https://python-all.ru/3/whatsnew/changelog.html): Обновление встроенного pip до 25.0.1.
- [gh-129766](https://python-all.ru/3/whatsnew/changelog.html): Исправлен сбой в [`warnings`](https://python-all.ru/3/library/warnings.html#module-warnings) при вызове `_release_lock()` без существующей блокировки.
- [gh-129005](https://python-all.ru/3/whatsnew/changelog.html): `_pyio.FileIO.readall()` теперь выделяет, изменяет размер и заполняет буфер данных с использованием того же алгоритма, что и `_io.FileIO.readall()`.
- [gh-129646](https://python-all.ru/3/whatsnew/changelog.html): Обновлено сопоставление псевдонимов локалей в модуле [`locale`](https://python-all.ru/3/library/locale.html#module-locale), чтобы оно соответствовало последнему сопоставлению псевдонимов локалей X Org и поддерживало новые локали в Glibc 2.41.
- [gh-128317](https://python-all.ru/3/whatsnew/changelog.html): Подсветка календаря командной строки вынесена в приватный класс, `highlight_day` удалён из публичного API [`calendar.TextCalendar`](https://python-all.ru/3/library/calendar.html#calendar.TextCalendar). Патч от Hugo van Kemenade.
- [gh-129603](https://python-all.ru/3/whatsnew/changelog.html): Исправлены ошибки, из-за которых объекты [`sqlite3.Row`](https://python-all.ru/3/library/sqlite3.html#sqlite3.Row) могли приводить к сегфолту, если их унаследованный [`description`](https://python-all.ru/3/library/sqlite3.html#sqlite3.Cursor.description) был установлен в `None`. Патч от Erlend Aasland.
- [gh-129559](https://python-all.ru/3/whatsnew/changelog.html): Добавлен метод [`bytearray.resize()`](https://python-all.ru/3/library/stdtypes.html#bytearray.resize), чтобы [`bytearray`](https://python-all.ru/3/library/stdtypes.html#bytearray) можно было эффективно изменить размер на месте.
- [gh-129502](https://python-all.ru/3/whatsnew/changelog.html): Маловероятные ошибки при подготовке аргументов для [`ctypes`](https://python-all.ru/3/library/ctypes.html#module-ctypes) колбэка теперь обрабатываются так же, как ошибки, возникшие в самом колбэке или при преобразовании результата колбэка: используется [`sys.unraisablehook()`](https://python-all.ru/3/library/sys.html#sys.unraisablehook) вместо [`sys.excepthook()`](https://python-all.ru/3/library/sys.html#sys.excepthook), и не устанавливаются [`sys.last_exc`](https://python-all.ru/3/library/sys.html#sys.last_exc) и другие переменные.
- [gh-129403](https://python-all.ru/3/whatsnew/changelog.html): Исправлено сообщение [`ValueError`](https://python-all.ru/3/library/exceptions.html#ValueError) для [`asyncio.Barrier`](https://python-all.ru/3/library/asyncio-sync.html#asyncio.Barrier) и [`threading.Barrier`](https://python-all.ru/3/library/threading.html#threading.Barrier).
- [gh-129409](https://python-all.ru/3/whatsnew/changelog.html): Исправлено целочисленное переполнение в модуле [`csv`](https://python-all.ru/3/library/csv.html#module-csv) при записи поля данных размером более 2 ГБ.
- [gh-126400](https://python-all.ru/3/whatsnew/changelog.html): Добавлен именованный аргумент *тайм-аута сокета* в [`logging.handlers.SysLogHandler`](https://python-all.ru/3/library/logging.handlers.html#logging.handlers.SysLogHandler).
- [gh-118761](https://python-all.ru/3/whatsnew/changelog.html): Всегда выполнять ленивый импорт `warnings` в [`threading`](https://python-all.ru/3/library/threading.html#module-threading). Патч от Taneli Hukkinen.
- [gh-118761](https://python-all.ru/3/whatsnew/changelog.html): Улучшено время импорта [`subprocess`](https://python-all.ru/3/library/subprocess.html#module-subprocess) за счёт ленивого импорта `locale` и `signal`. Патч от Taneli Hukkinen.
- [gh-129346](https://python-all.ru/3/whatsnew/changelog.html): В [`sqlite3`](https://python-all.ru/3/library/sqlite3.html#module-sqlite3) добавлена обработка нехватки памяти при создании пользовательских SQL-функций.
- [gh-129005](https://python-all.ru/3/whatsnew/changelog.html): Оптимизирован `_pyio.FileIO.readinto` за счёт устранения лишних объектов и копирования с помощью [`os.readinto()`](https://python-all.ru/3/library/os.html#os.readinto).
- [gh-129195](https://python-all.ru/3/whatsnew/changelog.html): Добавлена поддержка вывода информации о графе вызовов из `asyncio.staggered.staggered_race()`.
- [gh-129205](https://python-all.ru/3/whatsnew/changelog.html): Add [`os.readinto()`](https://python-all.ru/3/library/os.html#os.readinto) to read into a [buffer object](https://python-all.ru/3/c-api/buffer.html#bufferobjects) from a file descriptor.
- [gh-128772](https://python-all.ru/3/whatsnew/changelog.html): Исправлен [`pydoc`](https://python-all.ru/3/library/pydoc.html#module-pydoc) для методов, у которых атрибут `__module__` равен `None`.
- [gh-129061](https://python-all.ru/3/whatsnew/changelog.html): Исправлено поведение FORCE\_COLOR и NO\_COLOR, когда они являются пустыми строками. Патч от Hugo van Kemenade.
- [gh-92897](https://python-all.ru/3/whatsnew/changelog.html): Запланировано объявление аргумента `check_home` функции [`sysconfig.is_python_build()`](https://python-all.ru/3/library/sysconfig.html#sysconfig.is_python_build) устаревшим в Python 3.15.
- [gh-129064](https://python-all.ru/3/whatsnew/changelog.html): `sysconfig.expand_makefile_vars()` объявлен устаревшим в пользу использования [`sysconfig.get_paths()`](https://python-all.ru/3/library/sysconfig.html#sysconfig.get_paths) с аргументом `vars`.
- [gh-128550](https://python-all.ru/3/whatsnew/changelog.html): Удалена некорректная оптимизация, связанная с нетерпеливыми задачами в [`asyncio.TaskGroup`](https://python-all.ru/3/library/asyncio-task.html#asyncio.TaskGroup), из-за которой пропускались отмены.
- [gh-128991](https://python-all.ru/3/whatsnew/changelog.html): Освобождение ссылки на входной фрейм внутри колбэка [`bdb`](https://python-all.ru/3/library/bdb.html#module-bdb)
- [gh-118761](https://python-all.ru/3/whatsnew/changelog.html): Время импорта [`pstats`](https://python-all.ru/3/library/profile.html#module-pstats) и [`zipfile`](https://python-all.ru/3/library/zipfile.html#module-zipfile) сокращено на 20% за счёт удаления ненужных импортов в [`typing`](https://python-all.ru/3/library/typing.html#module-typing). Патч от Bénédikt Tran.
- [gh-128978](https://python-all.ru/3/whatsnew/changelog.html): Исправлена [`NameError`](https://python-all.ru/3/library/exceptions.html#NameError) в `sysconfig.expand_makefile_vars()`. Патч от Bénédikt Tran.
- [gh-128961](https://python-all.ru/3/whatsnew/changelog.html): Исправлен сбой при установке состояния на исчерпанный итератор [`array.array`](https://python-all.ru/3/library/array.html#array.array).
- [gh-128894](https://python-all.ru/3/whatsnew/changelog.html): Исправлено, чтобы `traceback.TracebackException._format_syntax_error` не завершался ошибкой при исключениях с пользовательскими метаданными.
- [gh-128916](https://python-all.ru/3/whatsnew/changelog.html): Не пытаться устанавливать `SO_REUSEPORT` на сокетах других семейств адресов, кроме `AF_INET` и `AF_INET6`, так как это бессмысленно для этих семейств, и вызов завершится ошибкой на ядре Linux 6.12.9 и новее.
- [gh-118761](https://python-all.ru/3/whatsnew/changelog.html): Улучшено время импорта [`tomllib`](https://python-all.ru/3/library/tomllib.html#module-tomllib) за счёт удаления импортов `typing`, `string` и `tomllib._types`. Патч от Taneli Hukkinen.
- [gh-128679](https://python-all.ru/3/whatsnew/changelog.html): [`tracemalloc`](https://python-all.ru/3/library/tracemalloc.html#module-tracemalloc): Исправлены состояния гонки, когда [`tracemalloc.stop()`](https://python-all.ru/3/library/tracemalloc.html#tracemalloc.stop) вызывается потоком, в то время как другие потоки отслеживают выделения памяти. Патч от Victor Stinner.
- [gh-128891](https://python-all.ru/3/whatsnew/changelog.html): Добавлены специализированные опкоды в `opcode.opname`.
- [gh-118761](https://python-all.ru/3/whatsnew/changelog.html): Время импорта [`gettext`](https://python-all.ru/3/library/gettext.html#module-gettext) сокращено до десяти раз за счёт импорта [`re`](https://python-all.ru/3/library/re.html#module-re) по требованию. В частности, `re` больше не раскрывается неявно как `gettext.re`. Патч от Eli Schwartz.
- [gh-118761](https://python-all.ru/3/whatsnew/changelog.html): Сокращено время импорта [`optparse`](https://python-all.ru/3/library/optparse.html#module-optparse), когда не выводится текст справки. Патч от Eli Schwartz.
- [gh-128657](https://python-all.ru/3/whatsnew/changelog.html): Fix possible extra reference when using objects returned by [`hashlib.sha256()`](https://python-all.ru/3/library/hashlib.html#hashlib.sha256) under [free threading](https://python-all.ru/3/glossary.html#term-free-threading).
- [gh-118761](https://python-all.ru/3/whatsnew/changelog.html): Время импорта [`csv`](https://python-all.ru/3/library/csv.html#module-csv) сокращено до пяти раз за счёт импорта [`re`](https://python-all.ru/3/library/re.html#module-re) по требованию. В частности, `re` больше не раскрывается неявно как `csv.re`. Патч от Bénédikt Tran.
- [gh-128308](https://python-all.ru/3/whatsnew/changelog.html): Добавлена поддержка именованного аргумента *name* для нетерпеливых задач в [`asyncio.loop.create_task()`](https://python-all.ru/3/library/asyncio-eventloop.html#asyncio.loop.create_task), [`asyncio.create_task()`](https://python-all.ru/3/library/asyncio-task.html#asyncio.create_task) и [`asyncio.TaskGroup.create_task()`](https://python-all.ru/3/library/asyncio-task.html#asyncio.TaskGroup.create_task) путём передачи всех *kwargs* фабрике задач, заданной с помощью [`asyncio.loop.set_task_factory()`](https://python-all.ru/3/library/asyncio-eventloop.html#asyncio.loop.set_task_factory).
- [gh-118761](https://python-all.ru/3/whatsnew/changelog.html): Улучшена производительность [`base64.b16decode()`](https://python-all.ru/3/library/base64.html#base64.b16decode) до десяти раз за счёт более эффективной проверки байтовой строки на наличие шестнадцатеричных цифр. Время импорта [`base64`](https://python-all.ru/3/library/base64.html#module-base64) сокращено до шести раз за счёт отказа от импорта [`re`](https://python-all.ru/3/library/re.html#module-re). Патч от Bénédikt Tran, Chris Markiewicz и Adam Turner.
- [gh-128156](https://python-all.ru/3/whatsnew/changelog.html): При использовании системной `libffi` macOS поддержка комплексных типов в [`ctypes`](https://python-all.ru/3/library/ctypes.html#module-ctypes) теперь проверяется во время выполнения (macOS 10.15 или новее). Типы также должны быть доступны во время сборки.
- [gh-128636](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка PyREPL, когда [`os.environ`](https://python-all.ru/3/library/os.html#os.environ) перезаписывается недопустимым значением.
- [gh-128498](https://python-all.ru/3/whatsnew/changelog.html): По умолчанию для определения цвета используется isatty для stdout, а не stderr. Патч от Hugo van Kemenade.
- [gh-128384](https://python-all.ru/3/whatsnew/changelog.html): Добавлена блокировка в [`warnings`](https://python-all.ru/3/library/warnings.html#module-warnings) для предотвращения некоторых состояний гонки при использовании свободной многопоточности. Изменена `_warnings_runtime_state.mutex` на рекурсивный мьютекс, и он предоставлен `warnings` через функции `_acquire_lock()` и `_release_lock()`. Блокировка удерживается при обновлении `filters` и `_filters_version`.
- [gh-128509](https://python-all.ru/3/whatsnew/changelog.html): Добавлена [`sys._is_immortal()`](https://python-all.ru/3/library/sys.html#sys._is_immortal) для идентификации [бессмертных](https://python-all.ru/3/glossary.html#term-immortal) объектов во время выполнения.
- [gh-128479](https://python-all.ru/3/whatsnew/changelog.html): Исправлена утечка задач в `asyncio.staggered.staggered_race()` и выдача необработанного исключения.
- [gh-128427](https://python-all.ru/3/whatsnew/changelog.html): [`uuid.NIL`](https://python-all.ru/3/library/uuid.html#uuid.NIL) и [`uuid.MAX`](https://python-all.ru/3/library/uuid.html#uuid.MAX) теперь доступны для представления форматов UUID Nil и Max, как определено в [**RFC 9562**](https://python-all.ru/3/whatsnew/changelog.html).
- [gh-91279](https://python-all.ru/3/whatsnew/changelog.html): [`zipfile.ZipFile.writestr()`](https://python-all.ru/3/library/zipfile.html#zipfile.ZipFile.writestr) теперь учитывают `SOURCE_DATE_EPOCH`, которые дистрибутивы могут задавать централизованно, и инструменты сборки используют это для получения воспроизводимого результата.
- [gh-112064](https://python-all.ru/3/whatsnew/changelog.html): Исправлена некорректная обработка отрицательных размеров чтения в [`HTTPResponse.read`](https://python-all.ru/3/library/http.client.html#http.client.HTTPResponse.read). Патч от Yury Manushkin.
- [gh-58956](https://python-all.ru/3/whatsnew/changelog.html): Исправлена утечка ссылок на фреймы в [`bdb`](https://python-all.ru/3/library/bdb.html#module-bdb).
- [gh-128131](https://python-all.ru/3/whatsnew/changelog.html): Полностью поддерживается произвольный доступ к несжатым незашифрованным zip-файлам только для чтения, полученным с помощью [`ZipFile.open`](https://python-all.ru/3/library/zipfile.html#zipfile.ZipFile.open).
- [gh-127975](https://python-all.ru/3/whatsnew/changelog.html): Избегайте повторного использования типов кавычек в [`ast.unparse()`](https://python-all.ru/3/library/ast.html#ast.unparse), если это не нужно.
- [gh-115514](https://python-all.ru/3/whatsnew/changelog.html): Исправлены исключения и неполные записи после закрытия `asyncio._SelectorTransport` до завершения записи.
- [gh-121604](https://python-all.ru/3/whatsnew/changelog.html): Добавлены недостающие предупреждения об устаревании для [`importlib.machinery.DEBUG_BYTECODE_SUFFIXES`](https://python-all.ru/3/library/importlib.html#importlib.machinery.DEBUG_BYTECODE_SUFFIXES), [`importlib.machinery.OPTIMIZED_BYTECODE_SUFFIXES`](https://python-all.ru/3/library/importlib.html#importlib.machinery.OPTIMIZED_BYTECODE_SUFFIXES), [`importlib.machinery.WindowsRegistryFinder`](https://python-all.ru/3/library/importlib.html#importlib.machinery.WindowsRegistryFinder), [`importlib.abc.ResourceLoader`](https://python-all.ru/3/library/importlib.html#importlib.abc.ResourceLoader), [`importlib.abc.SourceLoader.path_mtime()`](https://python-all.ru/3/library/importlib.html#importlib.abc.SourceLoader.path_mtime).
- [gh-127873](https://python-all.ru/3/whatsnew/changelog.html): Когда установлено `-E`, при раскрашивании вывода игнорируется только `PYTHON_COLORS`, а не `FORCE_COLOR`/`NO_COLOR`/`TERM`. Патч от Hugo van Kemenade.
- [gh-125413](https://python-all.ru/3/whatsnew/changelog.html): Добавлен атрибут [`pathlib.Path.info`](https://python-all.ru/3/library/pathlib.html#pathlib.Path.info), который хранит объект, реализующий протокол [`pathlib.types.PathInfo`](https://python-all.ru/3/library/pathlib.html#pathlib.types.PathInfo) (также новый). Объект поддерживает запрос типа файла и внутреннее кэширование результатов [`stat()`](https://python-all.ru/3/library/os.html#os.stat). Объекты Path, созданные [`iterdir()`](https://python-all.ru/3/library/pathlib.html#pathlib.Path.iterdir), инициализируются информацией о типе файла, полученной при сканировании родительского каталога.
- [gh-127712](https://python-all.ru/3/whatsnew/changelog.html): Исправлена обработка аргумента `secure` в [`logging.handlers.SMTPHandler`](https://python-all.ru/3/library/logging.handlers.html#logging.handlers.SMTPHandler).
- [gh-127096](https://python-all.ru/3/whatsnew/changelog.html): Не пересоздавать безымянный раздел при каждом чтении в [`configparser.ConfigParser`](https://python-all.ru/3/library/configparser.html#configparser.ConfigParser). Патч от Andrey Efremov.
- [gh-124369](https://python-all.ru/3/whatsnew/changelog.html): Устарело `pdb.Pdb.curframe_locals`
- [gh-126332](https://python-all.ru/3/whatsnew/changelog.html): Исправлен сбой \_pyrepl при вводе двойного CTRL-Z на переполненной строке.
- [gh-125553](https://python-all.ru/3/whatsnew/changelog.html): Исправлена инвариантность обратного преобразования для обратных слешей продолжения в [`tokenize.untokenize()`](https://python-all.ru/3/library/tokenize.html#tokenize.untokenize).
- [gh-91048](https://python-all.ru/3/whatsnew/changelog.html): Добавлены функции [`asyncio.capture_call_graph()`](https://python-all.ru/3/library/asyncio-graph.html#asyncio.capture_call_graph) и [`asyncio.print_call_graph()`](https://python-all.ru/3/library/asyncio-graph.html#asyncio.print_call_graph).
- [gh-124703](https://python-all.ru/3/whatsnew/changelog.html): Выход из [`pdb`](https://python-all.ru/3/library/pdb.html#module-pdb) в режиме `inline` теперь будет выдавать запрос подтверждения и корректно завершать работу, вместо вывода трассировки исключения.
- [gh-123987](https://python-all.ru/3/whatsnew/changelog.html): Исправлена проблема в NamespaceReader, когда элемент, не являющийся путём, в пространстве имён (например, sentinel, добавленный редактируемым установщиком) нарушал загрузку ресурсов.
- [gh-119349](https://python-all.ru/3/whatsnew/changelog.html): Добавлена функция [`ctypes.util.dllist()`](https://python-all.ru/3/library/ctypes.html#ctypes.util.dllist) для вывода списка загруженных общих библиотек текущего процесса.
- [gh-55454](https://python-all.ru/3/whatsnew/changelog.html): Добавлена поддержка IMAP4 `IDLE` в модуль [`imaplib`](https://python-all.ru/3/library/imaplib.html#module-imaplib). Патч от Forest.
- [gh-119257](https://python-all.ru/3/whatsnew/changelog.html): Меню автодополнения по табуляции теперь отображается под текущей строкой, что уменьшает количество рывков и исправляет ошибку перемещения курсора. Патч от Daniel Hollas.
- [gh-101410](https://python-all.ru/3/whatsnew/changelog.html): Поддержка пользовательских сообщений для ошибок домена в модуле [`math`](https://python-all.ru/3/library/math.html#module-math) (в качестве примеров изменены [`math.sqrt()`](https://python-all.ru/3/library/math.html#math.sqrt), [`math.log()`](https://python-all.ru/3/library/math.html#math.log) и [`math.atanh()`](https://python-all.ru/3/library/math.html#math.atanh)). Патч от Charlie Zhao и Sergey B Kirpichev.
- [gh-81340](https://python-all.ru/3/whatsnew/changelog.html): Использовать [`os.copy_file_range()`](https://python-all.ru/3/library/os.html#os.copy_file_range) в функциях [`shutil.copy()`](https://python-all.ru/3/library/shutil.html#shutil.copy), [`shutil.copy2()`](https://python-all.ru/3/library/shutil.html#shutil.copy2) и [`shutil.copyfile()`](https://python-all.ru/3/library/shutil.html#shutil.copyfile) по умолчанию. Соответствующий системный вызов Linux даёт файловым системам возможность реализовать копирование при записи (copy-on-write) (в случае btrfs и XFS) или копирование на стороне сервера (в случае NFS). Патч от Illia Volochii.
- [bpo-27307](https://python-all.ru/3/whatsnew/changelog.html): Добавлена поддержка доступа к атрибутам и элементам в [`string.Formatter`](https://python-all.ru/3/library/string.html#string.Formatter) в режиме автоматической нумерации, что позволяет использовать строки формата типа '{.name}' и '{\[1\]}'.

### IDLE

- [gh-129873](https://python-all.ru/3/whatsnew/changelog.html): Упрощено отображение документации IDLE: теперь копируется только текстовая часть idle.html в idlelib/help.html. Исправление от Stan Ulbrych.

### Документация

- [gh-125722](https://python-all.ru/3/whatsnew/changelog.html): Для сборки документации Python теперь требуется Sphinx 8.1.3 или новее. Исправление от Adam Turner.
- [gh-67206](https://python-all.ru/3/whatsnew/changelog.html): Документировано, что [`string.printable`](https://python-all.ru/3/library/string.html#string.printable) не является печатным в смысле POSIX. В частности, [`string.printable.isprintable()`](https://python-all.ru/3/library/stdtypes.html#str.isprintable) возвращает [`False`](https://python-all.ru/3/library/constants.html#False). Исправление от Bénédikt Tran.

### Ядро и встроенные

- [gh-100239](https://python-all.ru/3/whatsnew/changelog.html): Замена опкода BINARY\_SUBSCR и его семейства на BINARY\_OP с аргументом NB\_SUBSCR.
- [gh-129732](https://python-all.ru/3/whatsnew/changelog.html): Исправлено состояние гонки в `_Py_qsbr_reserve` в сборке со свободной многопоточностью.
- [gh-129763](https://python-all.ru/3/whatsnew/changelog.html): Удалён внутренний макрос `LLTRACE` (используйте [`Py_DEBUG`](https://python-all.ru/3/c-api/intro.html#c.Py_DEBUG) вместо него).
- [gh-129715](https://python-all.ru/3/whatsnew/changelog.html): Улучшена производительность JIT для генераторов.
- [gh-129643](https://python-all.ru/3/whatsnew/changelog.html): Исправлена потокобезопасность [`PyList_Insert()`](https://python-all.ru/3/c-api/list.html#c.PyList_Insert) в сборках со свободной многопоточностью.
- [gh-129668](https://python-all.ru/3/whatsnew/changelog.html): Исправлено состояние гонки при возбуждении [`MemoryError`](https://python-all.ru/3/library/exceptions.html#MemoryError) в сборке со свободной многопоточностью.
- [gh-129643](https://python-all.ru/3/whatsnew/changelog.html): Исправлена потокобезопасность [`PyList_SetItem()`](https://python-all.ru/3/c-api/list.html#c.PyList_SetItem) в сборках со свободной многопоточностью. Исправление от Kumar Aditya.
- [gh-128563](https://python-all.ru/3/whatsnew/changelog.html): Исправлена проблема, из-за которой функция отладки "lltrace" могла быть ошибочно включена для некоторых кадров.
- [gh-129393](https://python-all.ru/3/whatsnew/changelog.html): На FreeBSD [`sys.platform`](https://python-all.ru/3/library/sys.html#sys.platform) больше не содержит мажорную версию. Теперь это всегда `'freebsd'`, а не `'freebsd13'` или `'freebsd14'`.

### Библиотека

- [gh-129345](https://python-all.ru/3/whatsnew/changelog.html): Исправлено разыменование нулевого указателя в [`syslog.openlog()`](https://python-all.ru/3/library/syslog.html#syslog.openlog), когда хук аудита возбуждает исключение.

### Ядро и встроенные

- [gh-129231](https://python-all.ru/3/whatsnew/changelog.html): Улучшено размещение в памяти JIT-трасс. Исправление от Diego Russo.
- [gh-129149](https://python-all.ru/3/whatsnew/changelog.html): Добавлен быстрый путь для целых чисел среднего размера в [`PyLong_FromUnsignedLong()`](https://python-all.ru/3/c-api/long.html#c.PyLong_FromUnsignedLong), [`PyLong_FromUnsignedLongLong()`](https://python-all.ru/3/c-api/long.html#c.PyLong_FromUnsignedLongLong) и [`PyLong_FromSize_t()`](https://python-all.ru/3/c-api/long.html#c.PyLong_FromSize_t).
- [gh-129201](https://python-all.ru/3/whatsnew/changelog.html): Версия циклического сборщика мусора со свободной многопоточностью была оптимизирована для условного использования инструкций предвыборки CPU во время сборки. Это может сократить время сборки, увеличивая вероятность того, что данные будут в кэше CPU в момент необходимости. Инструкции предвыборки включаются, если количество долгоживущих объектов (объектов, переживших полную сборку) превышает порог.
- [gh-129093](https://python-all.ru/3/whatsnew/changelog.html): Исправлена проблема, при которой f-строки, такие как `f'{expr=}'`, иногда не отображали полное выражение, если оно содержит `!=`.
- [gh-124363](https://python-all.ru/3/whatsnew/changelog.html): Выражения отладки в f-строках теперь обрабатываются как сырые строки. Исправление от Pablo Galindo.
- [gh-128714](https://python-all.ru/3/whatsnew/changelog.html): Исправлены потенциальные гонки в dunder-методах get/set `__annotations__`, `__annotate__` и `__type_params__` для объекта функции, добавлены соответствующие тесты.
- [gh-128799](https://python-all.ru/3/whatsnew/changelog.html): Добавлен кадр `except*` в трассировку, когда он оборачивает голое исключение.
- [gh-128842](https://python-all.ru/3/whatsnew/changelog.html): Сбор статистики памяти JIT с помощью pystats. Исправление от Diego Russo.
- [gh-100239](https://python-all.ru/3/whatsnew/changelog.html): Специализация `BINARY_OP` для побитовых логических операций над компактными целыми числами.
- [gh-128910](https://python-all.ru/3/whatsnew/changelog.html): Удалены недокументированные и неиспользуемые приватные функции C-API `_PyTrash_begin` и `_PyTrash_end`.
- [gh-128807](https://python-all.ru/3/whatsnew/changelog.html): Добавлена фаза маркировки в GC со свободной многопоточностью. Это похоже на то, что было сделано в [gh-126491](https://python-all.ru/3/whatsnew/changelog.html). Поскольку GC со свободной многопоточностью не имеет поколений и не является инкрементальным, фаза маркировки ищет все объекты, достижимые из известных корней. Корни – это объекты, которые заведомо не являются мусором, например, словарь модуля для [`sys`](https://python-all.ru/3/library/sys.html#module-sys). Для большинства программ эта фаза маркировки должна сделать GC немного быстрее, так как обычно выполняется меньше работы на объект.
- [gh-100239](https://python-all.ru/3/whatsnew/changelog.html): Добавлен опкод `BINARY_OP_EXTEND`, который выполняет пару функций (функции защиты и специализации), доступные из инлайн-кэша.
- [gh-128563](https://python-all.ru/3/whatsnew/changelog.html): В CPython добавлен новый тип интерпретатора. Этот интерпретатор использует хвостовые вызовы для обработчиков инструкций. Предварительные результаты бенчмарков показывают улучшение геометрического среднего на 7–11% на pyperformance (в зависимости от платформы) и до 30% на задачах, интенсивно использующих Python. В настоящее время этот интерпретатор работает только на новых компиляторах, таких как `clang-19`. Остальные компиляторы продолжат использовать старый интерпретатор. Исправление от Ken Jin, с идеями по реализации в CPython от Mark Shannon, Garret Gu, Haoran Xu и Josh Haberman.
- [gh-126703](https://python-all.ru/3/whatsnew/changelog.html): Улучшена производительность итерации по спискам и кортежам за счёт использования свободного списка для объектов-итераторов.
- [gh-127953](https://python-all.ru/3/whatsnew/changelog.html): Время обработки события `LINE` в sys.monitoring (и sys.settrace) теперь не зависит от количества строк в объекте кода.
- [gh-128330](https://python-all.ru/3/whatsnew/changelog.html): Восстановление управляющих символов терминала при выходе из REPL.
- [gh-128016](https://python-all.ru/3/whatsnew/changelog.html): Улучшено сообщение `SyntaxWarning` для недопустимых escape-последовательностей: теперь поясняется, что такие последовательности будут вызывать `SyntaxError` в будущих версиях Python. Новое сообщение также предлагает возможное исправление, а именно `Did you mean "\\e"?`.
- [gh-126004](https://python-all.ru/3/whatsnew/changelog.html): Исправлена обработка значений [`UnicodeError.start`](https://python-all.ru/3/library/exceptions.html#UnicodeError.start) и [`UnicodeError.end`](https://python-all.ru/3/library/exceptions.html#UnicodeError.end) в обработчике ошибок [`codecs.replace_errors()`](https://python-all.ru/3/library/codecs.html#codecs.replace_errors). Автор: Bénédikt Tran.
- [gh-126004](https://python-all.ru/3/whatsnew/changelog.html): Исправлена обработка значений [`UnicodeError.start`](https://python-all.ru/3/library/exceptions.html#UnicodeError.start) и [`UnicodeError.end`](https://python-all.ru/3/library/exceptions.html#UnicodeError.end) в обработчике ошибок [`codecs.backslashreplace_errors()`](https://python-all.ru/3/library/codecs.html#codecs.backslashreplace_errors). Автор: Bénédikt Tran.
- [gh-126004](https://python-all.ru/3/whatsnew/changelog.html): Исправлена обработка значений [`UnicodeError.start`](https://python-all.ru/3/library/exceptions.html#UnicodeError.start) и [`UnicodeError.end`](https://python-all.ru/3/library/exceptions.html#UnicodeError.end) в обработчике ошибок [`codecs.xmlcharrefreplace_errors()`](https://python-all.ru/3/library/codecs.html#codecs.xmlcharrefreplace_errors). Автор: Bénédikt Tran.
- [gh-127119](https://python-all.ru/3/whatsnew/changelog.html): Небольшая оптимизация деаллокатора [`int`](https://python-all.ru/3/library/functions.html#int).
- [gh-127349](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка при изменении размера терминала в Python REPL. Автор: Semyon Moroz.
- [gh-125723](https://python-all.ru/3/whatsnew/changelog.html): Исправлена аварийная остановка с `gi_frame.f_locals`, когда фреймы генератора переживают сам генератор. Автор: Mikhail Efimov.

### Библиотека

- [gh-126349](https://python-all.ru/3/whatsnew/changelog.html): Добавлены менеджеры контекста [`turtle.fill()`](https://python-all.ru/3/library/turtle.html#turtle.fill), [`turtle.poly()`](https://python-all.ru/3/library/turtle.html#turtle.poly) и [`turtle.no_animation()`](https://python-all.ru/3/library/turtle.html#turtle.no_animation). Автор: Marie Roald и Yngve Mardal Moe.

### Ядро и встроенные

- [gh-115911](https://python-all.ru/3/whatsnew/changelog.html): Если текущий рабочий каталог не может быть определён из-за прав доступа, то импорт больше не будет вызывать [`PermissionError`](https://python-all.ru/3/library/exceptions.html#PermissionError). Автор: Alex Willmer.

### Библиотека

- [gh-112713](https://python-all.ru/3/whatsnew/changelog.html): Добавлена поддержка флага cookie `Partitioned` в [`http.cookies`](https://python-all.ru/3/library/http.cookies.html#module-http.cookies).

### C API

- [gh-129533](https://python-all.ru/3/whatsnew/changelog.html): Обновлены [`PyGC_Enable()`](https://python-all.ru/3/c-api/gcsupport.html#c.PyGC_Enable), [`PyGC_Disable()`](https://python-all.ru/3/c-api/gcsupport.html#c.PyGC_Disable), [`PyGC_IsEnabled()`](https://python-all.ru/3/c-api/gcsupport.html#c.PyGC_IsEnabled) для использования атомарной операции для потокобезопасности в сборке free-threading. Автор: Donghee Na.
- [gh-89188](https://python-all.ru/3/whatsnew/changelog.html): Реализованы [`PyUnicode_KIND()`](https://python-all.ru/3/c-api/unicode.html#c.PyUnicode_KIND) и [`PyUnicode_DATA()`](https://python-all.ru/3/c-api/unicode.html#c.PyUnicode_DATA) как функции, в дополнение к макросам с теми же именами. Макросы полагаются на битовые поля C, которые имеют специфическое для компилятора расположение. Автор: Victor Stinner.
- [gh-91417](https://python-all.ru/3/whatsnew/changelog.html): Удалена [`PySequence_Fast()`](https://python-all.ru/3/c-api/sequence.html#c.PySequence_Fast) из ограниченного C API, поскольку эту функцию нужно использовать с [`PySequence_Fast_GET_ITEM`](https://python-all.ru/3/c-api/sequence.html#c.PySequence_Fast_GET_ITEM), которая никогда не работала в ограниченном C API. Автор: Victor Stinner.
- [gh-128509](https://python-all.ru/3/whatsnew/changelog.html): Добавлена [`PyUnstable_IsImmortal()`](https://python-all.ru/3/c-api/object.html#c.PyUnstable_IsImmortal) для определения, является ли объект [бессмертным](https://python-all.ru/3/glossary.html#term-immortal).
- [gh-129033](https://python-all.ru/3/whatsnew/changelog.html): Удалены частные функции `_PyInterpreterState_GetConfigCopy()` и `_PyInterpreterState_SetConfig()`. Вместо них используйте [`PyConfig_Get()`](https://python-all.ru/3/c-api/init_config.html#c.PyConfig_Get) и [`PyConfig_Set()`](https://python-all.ru/3/c-api/init_config.html#c.PyConfig_Set), публичный C API, добавленный [**PEP 741**](https://python-all.ru/3/whatsnew/changelog.html) «Python Configuration C API». Автор: Victor Stinner.
- [gh-129033](https://python-all.ru/3/whatsnew/changelog.html): Удалена частная функция `_Py_InitializeMain()`. Это был [временный API](https://python-all.ru/3/glossary.html#term-provisional-API), добавленный в Python 3.8 по [**PEP 587**](https://python-all.ru/3/whatsnew/changelog.html). Автор: Victor Stinner.
- [gh-128844](https://python-all.ru/3/whatsnew/changelog.html): Добавлены нестабильные API [`PyUnstable_TryIncRef()`](https://python-all.ru/3/c-api/object.html#c.PyUnstable_TryIncRef) и [`PyUnstable_EnableTryIncRef()`](https://python-all.ru/3/c-api/object.html#c.PyUnstable_EnableTryIncRef). Это вспомогательные функции для работы с неприсвоенными ссылками потокобезопасным способом, особенно в сборке free threading.
- [gh-128911](https://python-all.ru/3/whatsnew/changelog.html): Добавлены вспомогательные функции [`PyImport_ImportModuleAttr()`](https://python-all.ru/3/c-api/import.html#c.PyImport_ImportModuleAttr) и [`PyImport_ImportModuleAttrString()`](https://python-all.ru/3/c-api/import.html#c.PyImport_ImportModuleAttrString) для импорта модуля и получения атрибута модуля. Автор: Victor Stinner.
- [gh-128863](https://python-all.ru/3/whatsnew/changelog.html): Следующие частные функции устарели и планируются к удалению в Python 3.18:

  - `_PyBytes_Join()`: используйте [`PyBytes_Join()`](https://python-all.ru/3/c-api/bytes.html#c.PyBytes_Join).
  - `_PyDict_GetItemStringWithError()`: используйте [`PyDict_GetItemStringRef()`](https://python-all.ru/3/c-api/dict.html#c.PyDict_GetItemStringRef).
  - `_PyDict_Pop()`: используйте [`PyDict_Pop()`](https://python-all.ru/3/c-api/dict.html#c.PyDict_Pop).
  - `_PyLong_Sign()`: используйте [`PyLong_GetSign()`](https://python-all.ru/3/c-api/long.html#c.PyLong_GetSign).
  - `_PyLong_FromDigits()` и `_PyLong_New()`: используйте [`PyLongWriter_Create()`](https://python-all.ru/3/c-api/long.html#c.PyLongWriter_Create).
  - `_PyThreadState_UncheckedGet()`: используйте [`PyThreadState_GetUnchecked()`](https://python-all.ru/3/c-api/threads.html#c.PyThreadState_GetUnchecked).
  - `_PyUnicode_AsString()`: используйте [`PyUnicode_AsUTF8()`](https://python-all.ru/3/c-api/unicode.html#c.PyUnicode_AsUTF8).
  - `_Py_HashPointer()`: используйте [`Py_HashPointer()`](https://python-all.ru/3/c-api/hash.html#c.Py_HashPointer).
  - `_Py_fopen_obj()`: используйте [`Py_fopen()`](https://python-all.ru/3/c-api/sys.html#c.Py_fopen).

  Проект [pythoncapi-compat](https://python-all.ru/3/whatsnew/changelog.html) можно использовать для получения этих новых публичных функций в Python 3.13 и более старых версиях.

  Автор: Victor Stinner.
- [gh-126599](https://python-all.ru/3/whatsnew/changelog.html): Удалены некоторые внутренние тестовые API для экспериментального JIT-компилятора.
- [gh-127925](https://python-all.ru/3/whatsnew/changelog.html): Модуль [`decimal`](https://python-all.ru/3/library/decimal.html#module-decimal) переведён на использование [**PEP 757**](https://python-all.ru/3/whatsnew/changelog.html) C API (экспорт-импорт целых чисел), что даёт некоторое ускорение, если целая часть экземпляра [`Decimal`](https://python-all.ru/3/library/decimal.html#decimal.Decimal) мала. Автор: Sergey B Kirpichev.

### Сборка

- [gh-129660](https://python-all.ru/3/whatsnew/changelog.html): Убрано `test_embed` из PGO-обучения, чей вклад в последних версиях считается незначительным.
- [gh-128902](https://python-all.ru/3/whatsnew/changelog.html): Исправлены ошибки компиляции с Clang 9 и старше из-за отсутствия поддержки `__attribute__((fallthrough))`.

## Python 3.14.0 alpha 4

*Дата выпуска: 2025-01-14*

### macOS

- [gh-127592](https://python-all.ru/3/whatsnew/changelog.html): Использование унифицированных API Apple System Log было отключено, если минимальная версия macOS ниже 10.12.

### Tools/Demos

- [gh-128152](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка, при которой парсер препроцессора C в Argument Clinic пытался разбирать директивы препроцессора внутри комментариев C. Исправление от Erlend Aasland.

### Тесты

- [gh-128690](https://python-all.ru/3/whatsnew/changelog.html): Временно отключено использование test\_embed в сборках с PGO профилированием до устранения проблемы с test\_init\_pyvenv\_cfg, завершающейся ошибкой в некоторых конфигурациях.

### Библиотека

- [gh-128731](https://python-all.ru/3/whatsnew/changelog.html): Исправлено [`ResourceWarning`](https://python-all.ru/3/library/exceptions.html#ResourceWarning) в [`urllib.robotparser.RobotFileParser.read()`](https://python-all.ru/3/library/urllib.robotparser.html#urllib.robotparser.RobotFileParser.read).
- [gh-71339](https://python-all.ru/3/whatsnew/changelog.html): Добавлены новые методы утверждений для [`unittest`](https://python-all.ru/3/library/unittest.html#module-unittest): [`assertHasAttr()`](https://python-all.ru/3/library/unittest.html#unittest.TestCase.assertHasAttr), [`assertNotHasAttr()`](https://python-all.ru/3/library/unittest.html#unittest.TestCase.assertNotHasAttr), [`assertIsSubclass()`](https://python-all.ru/3/library/unittest.html#unittest.TestCase.assertIsSubclass), [`assertNotIsSubclass()`](https://python-all.ru/3/library/unittest.html#unittest.TestCase.assertNotIsSubclass) [`assertStartsWith()`](https://python-all.ru/3/library/unittest.html#unittest.TestCase.assertStartsWith), [`assertNotStartsWith()`](https://python-all.ru/3/library/unittest.html#unittest.TestCase.assertNotStartsWith), [`assertEndsWith()`](https://python-all.ru/3/library/unittest.html#unittest.TestCase.assertEndsWith) и [`assertNotEndsWith()`](https://python-all.ru/3/library/unittest.html#unittest.TestCase.assertNotEndsWith).
- [gh-118761](https://python-all.ru/3/whatsnew/changelog.html): Улучшено время импорта [`pickle`](https://python-all.ru/3/library/pickle.html#module-pickle) на 25% за счёт удаления ненужного регулярного выражения. Вследствие этого [`re`](https://python-all.ru/3/library/re.html#module-re) больше не доступен неявно как `pickle.re`. Исправление от Bénédikt Tran.
- [gh-128661](https://python-all.ru/3/whatsnew/changelog.html): Исправлено, что [`typing.evaluate_forward_ref()`](https://python-all.ru/3/library/typing.html#typing.evaluate_forward_ref) не показывает предупреждение об устаревании, если аргумент `type_params` не передан.
- [gh-128562](https://python-all.ru/3/whatsnew/changelog.html): Исправлены возможные конфликты в сгенерированных именах виджетов [`tkinter`](https://python-all.ru/3/library/tkinter.html#module-tkinter), если имя класса виджета заканчивается на цифру.
- [gh-128559](https://python-all.ru/3/whatsnew/changelog.html): Улучшено время импорта [`asyncio`](https://python-all.ru/3/library/asyncio.html#module-asyncio).
- [gh-128552](https://python-all.ru/3/whatsnew/changelog.html): Исправлен циклический мусор, возникающий из-за того, что [`asyncio.loop.create_task()`](https://python-all.ru/3/library/asyncio-eventloop.html#asyncio.loop.create_task) и [`asyncio.TaskGroup.create_task()`](https://python-all.ru/3/library/asyncio-task.html#asyncio.TaskGroup.create_task) удерживают ссылку на созданную задачу, если она нетерпеливая.
- [gh-128340](https://python-all.ru/3/whatsnew/changelog.html): Добавлен внутренний потокобезопасный дескриптор для использования в [`asyncio.loop.call_soon_threadsafe()`](https://python-all.ru/3/library/asyncio-eventloop.html#asyncio.loop.call_soon_threadsafe) для потокобезопасной отмены.
- [gh-128182](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка, приводящая к аварийному завершению при одновременном использовании указателей [`ctypes`](https://python-all.ru/3/library/ctypes.html#module-ctypes) в [сборке со свободной многопоточностью](https://python-all.ru/3/glossary.html#term-free-threading).
- [gh-128400](https://python-all.ru/3/whatsnew/changelog.html): Показывать только текущий поток в [`faulthandler`](https://python-all.ru/3/library/faulthandler.html#module-faulthandler) на [сборке со свободной многопоточностью](https://python-all.ru/3/glossary.html#term-free-threading) для предотвращения состояний гонки.
- [gh-128400](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка, приводящая к аварийному завершению при использовании [`faulthandler.dump_traceback()`](https://python-all.ru/3/library/faulthandler.html#faulthandler.dump_traceback), пока другие потоки активны на [сборке со свободной многопоточностью](https://python-all.ru/3/glossary.html#term-free-threading).
- [gh-128388](https://python-all.ru/3/whatsnew/changelog.html): Исправлено `PyREPL` в Windows для поддержки большего числа сочетаний клавиш, таких как `Control`-`←` и `Control`-`→` для пропуска слов, а также с мета (т.е. `Alt`), например `Alt`-`d` для `kill-word` или `Alt`-`Backspace` `backward-kill-word`.
- [gh-88834](https://python-all.ru/3/whatsnew/changelog.html): Унифицирована проверка экземпляра для [`typing.Union`](https://python-all.ru/3/library/typing.html#typing.Union) и [`types.UnionType`](https://python-all.ru/3/library/types.html#types.UnionType): `Union` теперь использует проверки экземпляра по своим параметрам вместо проверок подклассов.
- [gh-128302](https://python-all.ru/3/whatsnew/changelog.html): Исправлено `xml.dom.xmlbuilder.DOMEntityResolver.resolveEntity()`, которое было сломано переходом на Python 3.0.
- [gh-128317](https://python-all.ru/3/whatsnew/changelog.html): Выделять сегодняшний день цветом в выводе командной строки [`calendar`](https://python-all.ru/3/library/calendar.html#module-calendar). Исправление от Hugo van Kemenade.
- [gh-128302](https://python-all.ru/3/whatsnew/changelog.html): Разрешено `xml.dom.xmlbuilder.DOMParser.parse()` корректно обрабатывать экземпляры `xml.dom.xmlbuilder.DOMInputSource`, у которых установлен только атрибут `systemId`.
- [gh-128151](https://python-all.ru/3/whatsnew/changelog.html): Улучшена генерация объектов [`UUID`](https://python-all.ru/3/library/uuid.html#uuid.UUID) версий 3, 4, 5 и 8 через их специальные функции на 30%. Исправление от Bénédikt Tran.
- [gh-128118](https://python-all.ru/3/whatsnew/changelog.html): Улучшена производительность [`copy.copy()`](https://python-all.ru/3/library/copy.html#copy.copy) на 30% за счёт быстрого пути для атомарных типов и типов-контейнеров.
- [gh-127946](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка, приводящая к аварийному завершению при одновременном изменении объектов [`ctypes._CFuncPtr`](https://python-all.ru/3/library/ctypes.html#ctypes._CFuncPtr) в [сборке со свободной многопоточностью](https://python-all.ru/3/glossary.html#term-free-threading).
- [gh-128062](https://python-all.ru/3/whatsnew/changelog.html): Возвращён шрифт строки меню [`turtledemo`](https://python-all.ru/3/library/turtle.html#module-turtledemo) к значению по умолчанию и исправлено отображение клавиш быстрого доступа в правильной позиции.
- [gh-128014](https://python-all.ru/3/whatsnew/changelog.html): Исправлено сбрасывание значка окна по умолчанию путём передачи `default=''` в метод [`tkinter`](https://python-all.ru/3/library/tkinter.html#module-tkinter) `wm_iconbitmap()`.
- [gh-41872](https://python-all.ru/3/whatsnew/changelog.html): Исправлено быстрое извлечение строк документации модуля из файла в [`pydoc`](https://python-all.ru/3/library/pydoc.html#module-pydoc). Теперь поддерживаются строки документации с одинарными кавычками, управляющими последовательностями, необработанными строковыми литералами и другим синтаксисом Python.
- [gh-127060](https://python-all.ru/3/whatsnew/changelog.html): Установлена переменная окружения TERM в значение “dumb” для отключения цветов трассировки в IDLE, так как IDLE не понимает ANSI escape-последовательности. Исправление от Victor Stinner.
- [gh-126742](https://python-all.ru/3/whatsnew/changelog.html): Исправлена поддержка локализованных сообщений об ошибках, выдаваемых *[dlerror(3)](https://python-all.ru/3/whatsnew/changelog.html)* и *[gdbm\_strerror](https://python-all.ru/3/whatsnew/changelog.html)* в функциях [`ctypes`](https://python-all.ru/3/library/ctypes.html#module-ctypes) и [`dbm.gnu`](https://python-all.ru/3/library/dbm.html#module-dbm.gnu) соответственно. Патч от Bénédikt Tran.
- [gh-122548](https://python-all.ru/3/whatsnew/changelog.html): Добавляет два новых локальных события в sys.monitoring: `BRANCH_LEFT` и `BRANCH_RIGHT`. Это позволяет независимо отключать две ветви, что должно значительно повысить производительность инструментов покрытия на уровне ветвлений. Старое событие ветвления `BRANCH` теперь считается устаревшим.
- [gh-127847](https://python-all.ru/3/whatsnew/changelog.html): Исправлена работа с позицией при чередующихся операциях установки позиции и чтения в несжатых незашифрованных zip-файлах, возвращаемых [`zipfile.ZipFile.open()`](https://python-all.ru/3/library/zipfile.html#zipfile.ZipFile.open).
- [gh-127688](https://python-all.ru/3/whatsnew/changelog.html): Добавлены константы [`SCHED_DEADLINE`](https://python-all.ru/3/library/os.html#os.SCHED_DEADLINE) и [`SCHED_NORMAL`](https://python-all.ru/3/library/os.html#os.SCHED_NORMAL) в модуль [`os`](https://python-all.ru/3/library/os.html#module-os).
- [gh-83662](https://python-all.ru/3/whatsnew/changelog.html): Добавлен недостающий метод `__class_getitem__` в Python-реализацию [`functools.partial()`](https://python-all.ru/3/library/functools.html#functools.partial) для совместимости с C-версией. Это в первую очередь актуально для альтернативных реализаций Python, таких как PyPy и GraalPy, поскольку CPython обычно использует C-реализацию этой функции.
- [gh-127586](https://python-all.ru/3/whatsnew/changelog.html): [`multiprocessing.pool.Pool`](https://python-all.ru/3/library/multiprocessing.html#multiprocessing.pool.Pool) теперь корректно восстанавливает заблокированные обработчики сигналов родительского потока при создании процессов через *spawn* или *forkserver*.
- [gh-98188](https://python-all.ru/3/whatsnew/changelog.html): Исправлена проблема в [`email.message.Message.get_payload()`](https://python-all.ru/3/library/email.compat32-message.html#email.message.Message.get_payload), из-за которой данные не могли быть декодированы, если механизм Content Transfer Encoding содержал завершающие пробелы или дополнительный мусорный текст. Патч от Hui Liu.
- [gh-127529](https://python-all.ru/3/whatsnew/changelog.html): Исправлено поведение `asyncio.selector_events.BaseSelectorEventLoop._accept_connection()` при обработке [`ConnectionAbortedError`](https://python-all.ru/3/library/exceptions.html#ConnectionAbortedError) в цикле. Это улучшает производительность на OpenBSD.
- [gh-127360](https://python-all.ru/3/whatsnew/changelog.html): Когда для [`ssl.SSLError`](https://python-all.ru/3/library/ssl.html#ssl.SSLError) не удаётся предоставить описательное сообщение об ошибке, теперь в сообщении «unknown error» отображается внутренний код ошибки (полученный с помощью `ERR_get_error` и аналогичных функций OpenSSL).
- [gh-127196](https://python-all.ru/3/whatsnew/changelog.html): Исправлен сбой при передаче словаря с ключами в недопустимой кодировке в несколько функций модуля `_interpreters`.
- [gh-124130](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка при сопоставлении регулярного выражения `\B` с пустой входной строкой. Теперь оно всегда противоположно `\b`. Чтобы получить старое поведение, используйте `(?!\A\Z)\B`. Чтобы получить новое поведение в старых версиях Python, используйте `(?!\b)`.
- [gh-126639](https://python-all.ru/3/whatsnew/changelog.html): [`tempfile.NamedTemporaryFile`](https://python-all.ru/3/library/tempfile.html#tempfile.NamedTemporaryFile) теперь будет выдавать [`ResourceWarning`](https://python-all.ru/3/library/exceptions.html#ResourceWarning), когда сборщик мусора финализирует его без явного закрытия.
- [gh-126624](https://python-all.ru/3/whatsnew/changelog.html): Открыт код ошибки [`XML_ERROR_NOT_STARTED`](https://python-all.ru/3/library/pyexpat.html#xml.parsers.expat.errors.XML_ERROR_NOT_STARTED) из Expat \>=2.6.4 в [`xml.parsers.expat.errors`](https://python-all.ru/3/library/pyexpat.html#module-xml.parsers.expat.errors).
- [gh-126225](https://python-all.ru/3/whatsnew/changelog.html): [`getopt`](https://python-all.ru/3/library/getopt.html#module-getopt) и [`optparse`](https://python-all.ru/3/library/optparse.html#module-optparse) больше не помечены как устаревшие. Существуют веские причины использовать один из этих модулей вместо [`argparse`](https://python-all.ru/3/library/argparse.html#module-argparse), и ни один из них не находится под угрозой удаления из стандартной библиотеки. Из трёх `argparse` остаётся рекомендуемым выбором по умолчанию, *если только* не применима одна из проблем, указанных в начале документации модуля `optparse`.
- [gh-124761](https://python-all.ru/3/whatsnew/changelog.html): Добавлена константа [`SO_REUSEPORT_LB`](https://python-all.ru/3/library/socket.html#socket.SO_REUSEPORT_LB) в [`socket`](https://python-all.ru/3/library/socket.html#module-socket) для FreeBSD.
- [gh-121720](https://python-all.ru/3/whatsnew/changelog.html): [`enum.EnumDict`](https://python-all.ru/3/library/enum.html#enum.EnumDict) теперь можно использовать без обращения к частному API.
- [gh-123424](https://python-all.ru/3/whatsnew/changelog.html): Добавлено [`zipfile.ZipInfo._for_archive()`](https://python-all.ru/3/library/zipfile.html#zipfile.ZipInfo._for_archive), задающее свойства по умолчанию для объектов [`ZipInfo`](https://python-all.ru/3/library/zipfile.html#zipfile.ZipInfo). Патч от Bénédikt Tran и Jason R. Coombs.
- [gh-121676](https://python-all.ru/3/whatsnew/changelog.html): Устарело использование вызова Python-реализации [`functools.reduce()`](https://python-all.ru/3/library/functools.html#functools.reduce) с `function` или `sequence` в качестве [именованного аргумента](https://python-all.ru/3/glossary.html#term-keyword-argument). Это будет запрещено в Python 3.16 для согласования с C-реализацией.
- [gh-112015](https://python-all.ru/3/whatsnew/changelog.html): Теперь существует [`ctypes.memoryview_at()`](https://python-all.ru/3/library/ctypes.html#ctypes.memoryview_at) для создания объекта [`memoryview`](https://python-all.ru/3/library/stdtypes.html#memoryview), который ссылается на переданный указатель и длину. Он работает как [`ctypes.string_at()`](https://python-all.ru/3/library/ctypes.html#ctypes.string_at), но без копирования буфера, и особенно полезен при реализации чистых Python-функций обратного вызова, которым передаются буферы динамического размера.
- [gh-95371](https://python-all.ru/3/whatsnew/changelog.html): Добавлена поддержка других форматов изображений (PNG, PGM, PPM) в модуль turtle. Патч от Shin-myoung-serp.

### Ядро и встроенные объекты

- [gh-128078](https://python-all.ru/3/whatsnew/changelog.html): Исправлен [`SystemError`](https://python-all.ru/3/library/exceptions.html#SystemError) при использовании [`anext()`](https://python-all.ru/3/library/functions.html#anext) со значением кортежа по умолчанию. Патч от Bénédikt Tran.
- [gh-128717](https://python-all.ru/3/whatsnew/changelog.html): Исправлен сбой при установке предела рекурсии, когда другие потоки активны в [сборке со свободными потоками](https://python-all.ru/3/glossary.html#term-free-threading).
- [gh-124483](https://python-all.ru/3/whatsnew/changelog.html): Обрабатывать `Py_DECREF` и варианты как экранирующие при генерации метаданных opcode и uop. Это предотвращает возможность того, что метод `__del__` вызовет некорректное поведение JIT.
- [gh-126703](https://python-all.ru/3/whatsnew/changelog.html): Повышена производительность методов класса за счёт использования списка свободных блоков (freelist).
- [gh-128137](https://python-all.ru/3/whatsnew/changelog.html): Обновлена компоновка [`PyASCIIObject`](https://python-all.ru/3/c-api/unicode.html#c.PyASCIIObject) для обработки интернированного поля с атомарной операцией. Патч от Donghee Na.

### Библиотека

- [gh-128192](https://python-all.ru/3/whatsnew/changelog.html): Обновлён алгоритм дайджест-аутентификации HTTP для [`urllib.request`](https://python-all.ru/3/library/urllib.request.html#module-urllib.request) за счёт поддержки дайджест-аутентификации SHA-256, как указано в [**RFC 7616**](https://python-all.ru/3/whatsnew/changelog.html).

### Ядро и встроенные объекты

- [gh-126868](https://python-all.ru/3/whatsnew/changelog.html): Увеличено использование freelist при выделении [`int`](https://python-all.ru/3/library/functions.html#int).
- [gh-114203](https://python-all.ru/3/whatsnew/changelog.html): Оптимизирован `Py_BEGIN_CRITICAL_SECTION` для простых рекурсивных вызовов.
- [gh-127705](https://python-all.ru/3/whatsnew/changelog.html): Добавляет отладку stackref, когда установлен `Py_STACKREF_DEBUG`. Находит все двойные закрытия и утечки, регистрируя источник и последнее заимствование.

  Вдохновлено режимом отладки HPy. [https://docs.hpyproject.org/en/latest/debug-mode.html](https://python-all.ru/3/whatsnew/changelog.html)
- [gh-128079](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка, из-за которой [`except*`](https://python-all.ru/3/reference/compound_stmts.html#except-star) не проверял должным образом возвращаемое значение функции [`split()`](https://python-all.ru/3/library/exceptions.html#BaseExceptionGroup.split) объекта [`ExceptionGroup`](https://python-all.ru/3/library/exceptions.html#ExceptionGroup), что в некоторых случаях приводило к аварийному завершению. Теперь, когда `split()` возвращает недопустимый объект, `except*` возбуждает [`TypeError`](https://python-all.ru/3/library/exceptions.html#TypeError) с привязанным к нему исходным возбуждённым объектом `ExceptionGroup`.
- [gh-128030](https://python-all.ru/3/whatsnew/changelog.html): Предотвращение ошибки при вызове `PyModule_GetFilenameObject` для объекта, не являющегося модулем, при импорте несуществующего символа из такого объекта.

### Библиотека

- [gh-128035](https://python-all.ru/3/whatsnew/changelog.html): Через [`ssl.HAS_PHA`](https://python-all.ru/3/library/ssl.html#ssl.HAS_PHA) теперь указывается, поддерживает ли модуль [`ssl`](https://python-all.ru/3/library/ssl.html#module-ssl) аутентификацию клиента после рукопожатия TLSv1.3 (PHA). Исправление от Will Childs-Klein.

### Ядро и встроенные объекты

- [gh-127274](https://python-all.ru/3/whatsnew/changelog.html): Добавлен новый флаг `CO_METHOD` в [`co_flags`](https://python-all.ru/3/reference/datamodel.html#codeobject.co_flags), который указывает, принадлежит ли объект кода функции, определённой в области видимости класса.
- [gh-66409](https://python-all.ru/3/whatsnew/changelog.html): Во время [инициализации путей](https://python-all.ru/3/library/sys_path_init.html#sys-path-init) теперь проверяется, совпадает ли `base_exec_prefix` с `base_prefix`, прежде чем переходить к поиску в каталоге интерпретатора Python.
- [gh-127970](https://python-all.ru/3/whatsnew/changelog.html): Теперь для определения [`sys.base_prefix`](https://python-all.ru/3/library/sys.html#sys.base_prefix) на всех платформах, реализующих функцию [dladdr](https://python-all.ru/3/whatsnew/changelog.html), определённую стандартом UNIX (включая Linux, Android, macOS, iOS, FreeBSD и т.д.), используется расположение библиотеки времени выполнения `libpython` текущего процесса. Ранее это уже было реализовано для Windows и macOS Framework-сборок.
- [gh-127773](https://python-all.ru/3/whatsnew/changelog.html): Не использовать кеш атрибутов типа для типов с несовместимым [MRO](https://python-all.ru/3/glossary.html#term-MRO).
- [gh-127903](https://python-all.ru/3/whatsnew/changelog.html): `Objects/unicodeobject.c`: исправлено аварийное завершение в DEBUG-сборках в `_copy_characters`, когда нечего копировать.
- [gh-127809](https://python-all.ru/3/whatsnew/changelog.html): Исправлена проблема, из-за которой экспериментальный JIT мог выводить неверный тип результата для возведения в степень (`**` и `**=`), что приводило к ошибкам или аварийному завершению.
- [gh-126862](https://python-all.ru/3/whatsnew/changelog.html): Исправлено возможное переполнение, когда класс наследуется от чрезмерно большого числа суперклассов. Сообщение от Valery Fedorenko. Исправление от Bénédikt Tran.

### C API

- [gh-128400](https://python-all.ru/3/whatsnew/changelog.html): [`Py_FatalError()`](https://python-all.ru/3/c-api/sys.html#c.Py_FatalError) больше не показывает все потоки в [сборке со свободной многопоточностью](https://python-all.ru/3/glossary.html#term-free-threading) во избежание аварийных завершений.
- [gh-128629](https://python-all.ru/3/whatsnew/changelog.html): Добавлены макросы [`Py_PACK_VERSION()`](https://python-all.ru/3/c-api/apiabiversion.html#c.Py_PACK_VERSION) и [`Py_PACK_FULL_VERSION()`](https://python-all.ru/3/c-api/apiabiversion.html#c.Py_PACK_FULL_VERSION) для упаковки номеров версий Python в битовые поля.
- [gh-128008](https://python-all.ru/3/whatsnew/changelog.html): Добавлена функция [`PyWeakref_IsDead()`](https://python-all.ru/3/c-api/weakref.html#c.PyWeakref_IsDead), проверяющая, является ли слабая ссылка мёртвой.
- [gh-127350](https://python-all.ru/3/whatsnew/changelog.html): Добавлена функция [`Py_fopen()`](https://python-all.ru/3/c-api/sys.html#c.Py_fopen) для открытия файла. Аналогична функции `fopen()`, но параметр *path* является объектом Python, а при ошибке устанавливается исключение. Также добавлена функция [`Py_fclose()`](https://python-all.ru/3/c-api/sys.html#c.Py_fclose) для закрытия файла, необходимая для поддержки Windows. Исправление от Victor Stinner.

### Сборка

- [gh-128627](https://python-all.ru/3/whatsnew/changelog.html): Для сборок Emscripten переключатель вызовов с приведением указателей на функции теперь использует инструкцию wasm-gc ref.test, если она доступна, вместо отражения типов Wasm JS.
- [gh-128472](https://python-all.ru/3/whatsnew/changelog.html): Пропуск оптимизации BOLT для функций, использующих вычисляемые переходы, исправляя ошибки сборки с LLVM 19.
- [gh-115765](https://python-all.ru/3/whatsnew/changelog.html): Для генерации `configure` теперь требуется GNU Autoconf 2.72. Исправление от Erlend Aasland.
- [gh-123925](https://python-all.ru/3/whatsnew/changelog.html): Исправлена сборка модуля [`curses`](https://python-all.ru/3/library/curses.html#module-curses) на платформах с libncurses, но без libncursesw.
- [gh-90905](https://python-all.ru/3/whatsnew/changelog.html): Добавлена поддержка кросс-компиляции для x86\_64 на aarch64/arm64 macOS.
- [gh-128321](https://python-all.ru/3/whatsnew/changelog.html): При проверке доступности библиотечных функций [`sqlite3`](https://python-all.ru/3/library/sqlite3.html#module-sqlite3) теперь устанавливается `LIBS` вместо `LDFLAGS`. Это исправляет порядок связываемых библиотек при проверках, который был неверным при использовании статически скомпонованной `libsqlite3`.
- [gh-100384](https://python-all.ru/3/whatsnew/changelog.html): Ошибка при `unguarded-availability` в сборках macOS, предотвращающая некорректное использование символов, недоступных в старых версиях ОС.
- [gh-128104](https://python-all.ru/3/whatsnew/changelog.html): Удалены условия `Py_STRFTIME_C99_SUPPORT` в пользу требования поддержки спецификатора C99 *[strftime(3)](https://python-all.ru/3/whatsnew/changelog.html)* на этапе сборки. При кросс-компиляции проверка на этапе сборки не выполняется, и поддержка предполагается.
- [gh-127951](https://python-all.ru/3/whatsnew/changelog.html): Добавлена опция `--pystats` в сборку Windows для включения сбора статистики производительности.

## Python 3.14.0 alpha 3

*Дата выпуска: 2024-12-17*

### Windows

- [gh-127353](https://python-all.ru/3/whatsnew/changelog.html): Разрешено принудительное включение цветного вывода на Windows с помощью переменных окружения. Исправление от Andrey Efremov.
- [gh-125729](https://python-all.ru/3/whatsnew/changelog.html): Наличие модуля [`turtle`](https://python-all.ru/3/library/turtle.html#module-turtle) теперь зависит от опции установщика Tcl/Tk. Ранее модуль всегда устанавливался, но без Tcl/Tk был непригоден к использованию.

### Tools/Demos

- [gh-126700](https://python-all.ru/3/whatsnew/changelog.html): Добавлена поддержка функций [`gettext`](https://python-all.ru/3/library/gettext.html#module-gettext) с несколькими аргументами в **pygettext.py**.

### Tests

- [gh-127906](https://python-all.ru/3/whatsnew/changelog.html): Протестировано ограниченное C API в test\_cppext. Патч от Victor Stinner.
- [gh-127637](https://python-all.ru/3/whatsnew/changelog.html): Добавлены тесты для интерфейса командной строки [`dis`](https://python-all.ru/3/library/dis.html#module-dis). Патч от Bénédikt Tran.
- [gh-126925](https://python-all.ru/3/whatsnew/changelog.html): Результаты тестов iOS теперь передаются потоково во время выполнения, а устаревший инструмент xcresulttool больше не используется.
- [gh-127076](https://python-all.ru/3/whatsnew/changelog.html): Отключены тесты системных вызовов на основе strace при установленной переменной LD\_PRELOAD.
- [gh-127076](https://python-all.ru/3/whatsnew/changelog.html): При тестировании поведения [`io`](https://python-all.ru/3/library/io.html#module-io) с помощью strace исключены вызовы `mmap`, `munmap` и `mprotect`, связанные с памятью, из числа файловых вызовов.

### Security

- [gh-127655](https://python-all.ru/3/whatsnew/changelog.html): Исправлено, что транспорт `asyncio.selector_events._SelectorSocketTransport` не приостанавливал запись для протокола, когда буфер достигал верхней границы при использовании [`asyncio.WriteTransport.writelines()`](https://python-all.ru/3/library/asyncio-protocol.html#asyncio.WriteTransport.writelines).

### Library

- [gh-126907](https://python-all.ru/3/whatsnew/changelog.html): Исправлено падение при одновременном использовании [`atexit`](https://python-all.ru/3/library/atexit.html#module-atexit) в [сборке со свободной многопоточностью](https://python-all.ru/3/glossary.html#term-free-threading).
- [gh-127870](https://python-all.ru/3/whatsnew/changelog.html): Обнаружение рекурсивных вызовов при обработке `_as_parameter_` в ctypes. Патч от Victor Stinner.
- [gh-127732](https://python-all.ru/3/whatsnew/changelog.html): Модуль [`platform`](https://python-all.ru/3/library/platform.html#module-platform) теперь корректно распознает Windows Server 2025.
- [gh-126789](https://python-all.ru/3/whatsnew/changelog.html): Исправлены [`sysconfig.get_config_vars()`](https://python-all.ru/3/library/sysconfig.html#sysconfig.get_config_vars), [`sysconfig.get_paths()`](https://python-all.ru/3/library/sysconfig.html#sysconfig.get_paths) и аналогичные функции, которые возвращали устаревшие кэшированные данные при изменении значения [`sys.prefix`](https://python-all.ru/3/library/sys.html#sys.prefix) или [`sys.exec_prefix`](https://python-all.ru/3/library/sys.html#sys.exec_prefix). Перезапись `sys.prefix` или `sys.exec_prefix` по-прежнему не рекомендуется, так как это может нарушить другие части кода.
- [gh-127718](https://python-all.ru/3/whatsnew/changelog.html): Добавлен цвет в вывод [`test.regrtest`](https://python-all.ru/3/library/test.html#module-test.regrtest). Патч от Hugo van Kemenade.
- [gh-127610](https://python-all.ru/3/whatsnew/changelog.html): Добавлена проверка на более чем один позиционно-переменный или ключево-переменный параметр в [`inspect.Signature`](https://python-all.ru/3/library/inspect.html#inspect.Signature). Патч от Maxim Ageev.
- [gh-127627](https://python-all.ru/3/whatsnew/changelog.html): Добавлен `posix._emscripten_debugger()` для помощи в отладке набора тестов на платформе Emscripten.
- [gh-126821](https://python-all.ru/3/whatsnew/changelog.html): Приложения macOS и iOS теперь могут перенаправлять stdout и stderr в системный журнал во время настройки интерпретатора.
- [gh-93312](https://python-all.ru/3/whatsnew/changelog.html): Включен `<sys/pidfd.h>` для получения константы `os.PIDFD_NONBLOCK`. Патч от Victor Stinner.
- [gh-127481](https://python-all.ru/3/whatsnew/changelog.html): Добавлена константа `EPOLLWAKEUP` в модуль [`select`](https://python-all.ru/3/library/select.html#module-select).
- [gh-127065](https://python-all.ru/3/whatsnew/changelog.html): [`operator.methodcaller()`](https://python-all.ru/3/library/operator.html#operator.methodcaller) теперь потокобезопасен и безопасен для повторного входа.
- [gh-127321](https://python-all.ru/3/whatsnew/changelog.html): [`pdb.set_trace()`](https://python-all.ru/3/library/pdb.html#pdb.set_trace) больше не будет останавливаться на опкоде, у которого нет номера строки.
- [gh-127429](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка, при которой во время кросс-сборок данные POSIX [`sysconfig`](https://python-all.ru/3/library/sysconfig.html#module-sysconfig) генерировались с `Makefile` хост-версии Python. Теперь данные генерируются из `Makefile` текущей сборки.
- [gh-127413](https://python-all.ru/3/whatsnew/changelog.html): Добавлен параметр командной строки [`dis --specialized`](https://python-all.ru/3/library/dis.html#cmdoption-dis-S) для показа специализированного байт-кода. Патч от Bénédikt Tran.
- [gh-125413](https://python-all.ru/3/whatsnew/changelog.html): Отменено добавление `pathlib.Path.scandir()`. Этот метод был добавлен в 3.14.0a2. Оптимизации остаются для путей файловой системы, но другие подклассы должны реализовывать только [`pathlib.Path.iterdir()`](https://python-all.ru/3/library/pathlib.html#pathlib.Path.iterdir).
- [gh-127257](https://python-all.ru/3/whatsnew/changelog.html): В [`ssl`](https://python-all.ru/3/library/ssl.html#module-ssl) ошибки системных вызовов, которые OpenSSL сообщает через `ERR_LIB_SYS`, теперь возбуждаются как [`OSError`](https://python-all.ru/3/library/exceptions.html#OSError).
- [gh-59705](https://python-all.ru/3/whatsnew/changelog.html): В Linux [`threading.Thread`](https://python-all.ru/3/library/threading.html#threading.Thread) теперь задаёт имя потока для операционной системы. Патч от Victor Stinner.
- [gh-127303](https://python-all.ru/3/whatsnew/changelog.html): Публично открыт [`EXACT_TOKEN_TYPES`](https://python-all.ru/3/library/token.html#token.EXACT_TOKEN_TYPES) в `token.__all__`.
- [gh-127331](https://python-all.ru/3/whatsnew/changelog.html): [`ssl`](https://python-all.ru/3/library/ssl.html#module-ssl) теперь может показывать описания ошибок, добавленных в OpenSSL 3.4.
- [gh-123967](https://python-all.ru/3/whatsnew/changelog.html): Исправлен faulthandler для trampoline-фреймов. Если верхний фрейм является trampoline-фреймом, он пропускается. Патч от Victor Stinner.
- [gh-127178](https://python-all.ru/3/whatsnew/changelog.html): В каталог стандартной библиотеки теперь добавляется файл `_sysconfig_vars_(...).json`. Он содержит вывод [`sysconfig.get_config_vars()`](https://python-all.ru/3/library/sysconfig.html#sysconfig.get_config_vars) в стандартном окружении, закодированный как JSON. Это деталь реализации, которая может измениться в любой момент.
- [gh-127072](https://python-all.ru/3/whatsnew/changelog.html): Удалены устаревшие константы `socket.NETLINK_*`, отсутствующие в ядрах Linux новее 2.6.17.
- [gh-127255](https://python-all.ru/3/whatsnew/changelog.html): Функция [`CopyComPointer()`](https://python-all.ru/3/library/ctypes.html#ctypes.CopyComPointer) теперь является публичной. Ранее она была приватной и доступной только в `_ctypes`.
- [gh-127182](https://python-all.ru/3/whatsnew/changelog.html): Исправлен сбой `io.StringIO.__setstate__()`, возникавший, когда [`None`](https://python-all.ru/3/library/constants.html#None) передавался первым значением.
- [gh-127217](https://python-all.ru/3/whatsnew/changelog.html): Исправлена [`urllib.request.pathname2url()`](https://python-all.ru/3/library/urllib.request.html#urllib.request.pathname2url) для путей, начинающихся с нескольких слешей в Posix.
- [gh-125866](https://python-all.ru/3/whatsnew/changelog.html): [`urllib.request.pathname2url()`](https://python-all.ru/3/library/urllib.request.html#urllib.request.pathname2url) теперь добавляет пустой authority при формировании URL для пути, начинающегося ровно с одного слеша. Например, путь `/etc/hosts` преобразуется в URL без схемы `///etc/hosts`. В результате такого изменения URL без authority формируются только для относительных путей.
- [gh-127221](https://python-all.ru/3/whatsnew/changelog.html): Добавлена раскраска вывода [`unittest`](https://python-all.ru/3/library/unittest.html#module-unittest). Патч от Hugo van Kemenade.
- [gh-127035](https://python-all.ru/3/whatsnew/changelog.html): Исправлена [`shutil.which`](https://python-all.ru/3/library/shutil.html#shutil.which) в Windows. Теперь поиск точного совпадения выполняется только если команда заканчивается расширением PATHEXT или X\_OK не входит в режим. Поддерживаются файлы без расширения, если «.» присутствует в PATHEXT. Поддерживаются расширения PATHEXT, оканчивающиеся точкой.
- [gh-122273](https://python-all.ru/3/whatsnew/changelog.html): Добавлена поддержка истории PyREPL в Windows. Патч от devdanzin и Victor Stinner.
- [gh-125866](https://python-all.ru/3/whatsnew/changelog.html): [`urllib.request.pathname2url()`](https://python-all.ru/3/library/urllib.request.html#urllib.request.pathname2url) и [`url2pathname()`](https://python-all.ru/3/library/urllib.request.html#urllib.request.url2pathname) больше не преобразуют буквы дисков Windows в верхний регистр.
- [gh-127078](https://python-all.ru/3/whatsnew/changelog.html): Исправлена проблема, когда [`urllib.request.url2pathname()`](https://python-all.ru/3/library/urllib.request.html#urllib.request.url2pathname) не удалял лишний слеш перед UNC-диском в пути URL в Windows.
- [gh-126766](https://python-all.ru/3/whatsnew/changelog.html): Исправлена проблема, когда [`urllib.request.url2pathname()`](https://python-all.ru/3/library/urllib.request.html#urllib.request.url2pathname) не удалял authority «localhost» в URL.
- [gh-127065](https://python-all.ru/3/whatsnew/changelog.html): Исправлен сбой при вызове экземпляра [`operator.methodcaller()`](https://python-all.ru/3/library/operator.html#operator.methodcaller) из нескольких потоков в сборке со свободной многопоточностью.
- [gh-127090](https://python-all.ru/3/whatsnew/changelog.html): Исправлено значение [`urllib.response.addinfourl.url`](https://python-all.ru/3/library/urllib.request.html#urllib.response.addinfourl.url) для URL `file:`, содержащих относительные пути и абсолютные пути Windows. Теперь используется канонический URL, сгенерированный [`urllib.request.pathname2url()`](https://python-all.ru/3/library/urllib.request.html#urllib.request.pathname2url).
- [gh-126992](https://python-all.ru/3/whatsnew/changelog.html): Исправлены опкоды LONG и INT – теперь для преобразования строки в целое число в [`pickle`](https://python-all.ru/3/library/pickle.html#module-pickle) используется только основание 10.
- [gh-126997](https://python-all.ru/3/whatsnew/changelog.html): Исправлена поддержка опкодов STRING и GLOBAL с не-ASCII аргументами в [`pickletools`](https://python-all.ru/3/library/pickletools.html#module-pickletools). [`pickletools.dis()`](https://python-all.ru/3/library/pickletools.html#pickletools.dis) теперь выводит не-ASCII байты в аргументах STRING, BINSTRING и SHORT\_BINSTRING в экранированном виде (`\xXX`).
- [gh-126316](https://python-all.ru/3/whatsnew/changelog.html): [`grp`](https://python-all.ru/3/library/grp.html#module-grp): добавлена потокобезопасность для [`grp.getgrall()`](https://python-all.ru/3/library/grp.html#grp.getgrall) с помощью мьютекса. Патч от Victor Stinner.
- [gh-126618](https://python-all.ru/3/whatsnew/changelog.html): Исправлено представление объектов [`itertools.count`](https://python-all.ru/3/library/itertools.html#itertools.count), когда значение счётчика равно [`sys.maxsize`](https://python-all.ru/3/library/sys.html#sys.maxsize).
- [gh-126615](https://python-all.ru/3/whatsnew/changelog.html): Исключение [`COMError`](https://python-all.ru/3/library/ctypes.html#ctypes.COMError) теперь является публичным. Ранее оно было приватным и доступным только в `_ctypes`.
- [gh-126985](https://python-all.ru/3/whatsnew/changelog.html): При работе в виртуальном окружении с отключённым [`site`](https://python-all.ru/3/library/site.html#module-site) (см. [`-S`](https://python-all.ru/3/using/cmdline.html#cmdoption-S)) [`sys.prefix`](https://python-all.ru/3/library/sys.html#sys.prefix) и [`sys.base_prefix`](https://python-all.ru/3/library/sys.html#sys.base_prefix) теперь будут указывать на виртуальное окружение, а не на базовую установку.
- [gh-112192](https://python-all.ru/3/whatsnew/changelog.html): В модуле [`trace`](https://python-all.ru/3/library/trace.html#module-trace) увеличена точность покрытия (`cov%`) до одного десятичного знака.
- [gh-118761](https://python-all.ru/3/whatsnew/changelog.html): Время импорта [`mimetypes`](https://python-all.ru/3/library/mimetypes.html#module-mimetypes) улучшено примерно в 11–16 раз. Патч от Hugo van Kemenade.
- [gh-126947](https://python-all.ru/3/whatsnew/changelog.html): В `_pydatetime.timedelta.__new__()` теперь возбуждается [`TypeError`](https://python-all.ru/3/library/exceptions.html#TypeError), если переданные аргументы не являются [`int`](https://python-all.ru/3/library/functions.html#int) или [`float`](https://python-all.ru/3/library/functions.html#float). Это приводит реализацию Python в соответствие с реализацией на C.
- [gh-126946](https://python-all.ru/3/whatsnew/changelog.html): Улучшено сообщение об ошибке [`GetoptError`](https://python-all.ru/3/library/getopt.html#getopt.GetoptError), когда префикс длинной опции совпадает с несколькими допустимыми опциями в [`getopt.getopt()`](https://python-all.ru/3/library/getopt.html#getopt.getopt) и [`getopt.gnu_getopt()`](https://python-all.ru/3/library/getopt.html#getopt.gnu_getopt).
- [gh-126899](https://python-all.ru/3/whatsnew/changelog.html): Методы виджетов tkinter `after()` и `after_idle()` теперь принимают аргументы, переданные по ключу.
- [gh-85168](https://python-all.ru/3/whatsnew/changelog.html): Исправлена проблема, когда [`urllib.request.url2pathname()`](https://python-all.ru/3/library/urllib.request.html#urllib.request.url2pathname) и [`pathname2url()`](https://python-all.ru/3/library/urllib.request.html#urllib.request.pathname2url) всегда использовали UTF-8 при экранировании и снятии экранирования файловых URI. Теперь они используют [кодировку файловой системы и обработчик ошибок](https://python-all.ru/3/glossary.html#term-filesystem-encoding-and-error-handler).
- [gh-126780](https://python-all.ru/3/whatsnew/changelog.html): Исправлена [`os.path.normpath()`](https://python-all.ru/3/library/os.path.html#os.path.normpath) для путей, относительных к диску, в Windows.
- [gh-126775](https://python-all.ru/3/whatsnew/changelog.html): [`linecache.checkcache()`](https://python-all.ru/3/library/linecache.html#linecache.checkcache) сделан потокобезопасным и безопасным для повторного входа в GC.
- [gh-126601](https://python-all.ru/3/whatsnew/changelog.html): Исправлена проблема, когда [`urllib.request.pathname2url()`](https://python-all.ru/3/library/urllib.request.html#urllib.request.pathname2url) возбуждал [`OSError`](https://python-all.ru/3/library/exceptions.html#OSError) при передаче пути Windows, содержащего двоеточие не после буквы диска, например перед альтернативным потоком данных NTFS.
- [gh-126727](https://python-all.ru/3/whatsnew/changelog.html): `locale.nl_langinfo(locale.ERA)` теперь возвращает несколько сегментов описания эры, разделённых точками с запятой. Ранее возвращался только первый сегмент на платформах с Glibc.
- [gh-85046](https://python-all.ru/3/whatsnew/changelog.html): Добавлен код ошибки [`EHWPOISON`](https://python-all.ru/3/library/errno.html#errno.EHWPOISON) в [`errno`](https://python-all.ru/3/library/errno.html#module-errno).
- [gh-118201](https://python-all.ru/3/whatsnew/changelog.html): Исправлены нерегулярные сбои [`os.confstr`](https://python-all.ru/3/library/os.html#os.confstr), [`os.pathconf`](https://python-all.ru/3/library/os.html#os.pathconf) и [`os.sysconf`](https://python-all.ru/3/library/os.html#os.sysconf) в iOS и Android.
- [gh-86463](https://python-all.ru/3/whatsnew/changelog.html): Параметр `usage` функции [`argparse.ArgumentParser`](https://python-all.ru/3/library/argparse.html#argparse.ArgumentParser) больше не влияет на значение по умолчанию параметра `prog` в подпарсерах.
- [gh-124008](https://python-all.ru/3/whatsnew/changelog.html): Исправлена возможная ошибка (в отладочной сборке), неверный вывод или возврат некорректного значения из сырой бинарной `write()` при записи в консоль в Windows.
- [gh-123401](https://python-all.ru/3/whatsnew/changelog.html): Модуль [`http.cookies`](https://python-all.ru/3/library/http.cookies.html#module-http.cookies) теперь поддерживает разбор устаревших форматов дат [**RFC 850**](https://python-all.ru/3/whatsnew/changelog.html) в соответствии с требованиями [**RFC 9110**](https://python-all.ru/3/whatsnew/changelog.html). Исправление от Nano Zheng.
- [gh-122431](https://python-all.ru/3/whatsnew/changelog.html): [`readline.append_history_file()`](https://python-all.ru/3/library/readline.html#readline.append_history_file) теперь вызывает [`ValueError`](https://python-all.ru/3/library/exceptions.html#ValueError) при передаче отрицательного значения.
- [gh-122356](https://python-all.ru/3/whatsnew/changelog.html): Гарантируется, что позиция файлоподобного объекта, переданного в [`zipfile.is_zipfile()`](https://python-all.ru/3/library/zipfile.html#zipfile.is_zipfile), остаётся неизменной после вызова. Исправление от Bénédikt Tran.
- [gh-122288](https://python-all.ru/3/whatsnew/changelog.html): Производительность [`fnmatch.translate()`](https://python-all.ru/3/library/fnmatch.html#fnmatch.translate) улучшена в 1,7 раза. Исправление от Bénédikt Tran.
- [gh-88110](https://python-all.ru/3/whatsnew/changelog.html): Исправлено, что [`multiprocessing.Process`](https://python-all.ru/3/library/multiprocessing.html#multiprocessing.Process) сообщал `.exitcode`, равный 1, даже при успешном выполнении при использовании метода запуска `"fork"` и [`concurrent.futures.ThreadPoolExecutor`](https://python-all.ru/3/library/concurrent.futures.html#concurrent.futures.ThreadPoolExecutor).
- [gh-97514](https://python-all.ru/3/whatsnew/changelog.html): Аутентификация добавлена в управляющий сокет метода запуска forkserver [`multiprocessing`](https://python-all.ru/3/library/multiprocessing.html#module-multiprocessing), чтобы только процессы с ключом аутентификации, сгенерированным процессом, который породил forkserver, могли им управлять. Это улучшение по сравнению с другими исправлениями [gh-97514](https://python-all.ru/3/whatsnew/changelog.html), так что доступ больше не ограничивается только правами файловой системы.

  Обмен файловыми дескрипторами управляющих каналов с порождённым рабочим процессом теперь требует отправки явного байта подтверждения через сокет после обмена на всех платформах, поддерживающих forkserver. Это значительно упрощает тестирование вышеуказанного.

### Документация

- [gh-127347](https://python-all.ru/3/whatsnew/changelog.html): Публично открыт [`traceback.print_list()`](https://python-all.ru/3/library/traceback.html#traceback.print_list) в `traceback.__all__`.

### Ядро и встроенные модули

- [gh-127740](https://python-all.ru/3/whatsnew/changelog.html): Исправлено сообщение об ошибке в [`bytes.fromhex()`](https://python-all.ru/3/library/stdtypes.html#bytes.fromhex) при указании нечётного количества цифр, чтобы правильно сообщать, что требуется чётное количество шестнадцатеричных цифр.
- [gh-127058](https://python-all.ru/3/whatsnew/changelog.html): `PySequence_Tuple` теперь создаёт результирующий кортеж атомарно, предотвращая видимость частично созданных кортежей для сборщика мусора или через `gc.get_referrers()`.
- [gh-127599](https://python-all.ru/3/whatsnew/changelog.html): Исправлена статистика для увеличения счётчиков ссылок на объекты (в частности, когда счётчик ссылок увеличивался более чем на 1 за одну операцию).
- [gh-127651](https://python-all.ru/3/whatsnew/changelog.html): При возбуждении [`ImportError`](https://python-all.ru/3/library/exceptions.html#ImportError) для отсутствующих символов в импортах `from` используйте `__file__` в сообщении об ошибке, если `__spec__.origin` не является местоположением.
- [gh-127582](https://python-all.ru/3/whatsnew/changelog.html): Исправлено небезопасное для потоков воскрешение объектов при вызове финализаторов и колбэков наблюдателей в сборке free threading.
- [gh-127434](https://python-all.ru/3/whatsnew/changelog.html): Прокладки компилятора iOS теперь могут принимать аргументы с пробелами.
- [gh-127536](https://python-all.ru/3/whatsnew/changelog.html): Добавлены недостающие блокировки вокруг некоторых операций присваивания списков в сборке free threading.
- [gh-127085](https://python-all.ru/3/whatsnew/changelog.html): Исправлена гонка при экспорте буфера из объекта [`memoryview`](https://python-all.ru/3/library/stdtypes.html#memoryview) в [сборке со свободной многопоточностью](https://python-all.ru/3/glossary.html#term-free-threading).
- [gh-127238](https://python-all.ru/3/whatsnew/changelog.html): Исправлено сообщение об ошибке для [`sys.set_int_max_str_digits()`](https://python-all.ru/3/library/sys.html#sys.set_int_max_str_digits).
- [gh-113841](https://python-all.ru/3/whatsnew/changelog.html): Исправлено возможное неопределённое поведение – деление на ноль в [`_Py_c_pow()`](https://python-all.ru/3/c-api/complex.html#c._Py_c_pow) объекта [`complex`](https://python-all.ru/3/library/functions.html#complex).

### Библиотека

- [gh-127133](https://python-all.ru/3/whatsnew/changelog.html): Вызов [`argparse.ArgumentParser.add_argument_group()`](https://python-all.ru/3/library/argparse.html#argparse.ArgumentParser.add_argument_group) для группы аргументов, а также вызов `argparse.ArgumentParser.add_argument_group()` или [`argparse.ArgumentParser.add_mutually_exclusive_group()`](https://python-all.ru/3/library/argparse.html#argparse.ArgumentParser.add_mutually_exclusive_group) для взаимно исключающей группы теперь вызывает исключения. Такое вложение никогда не поддерживалось, часто работало некорректно и было случайно раскрыто через наследование. Эта функциональность устарела начиная с Python 3.11.

### Ядро и встроенные модули

- [gh-126491](https://python-all.ru/3/whatsnew/changelog.html): Добавлена фаза пометки в GC. Все объекты, которые могут быть транзитивно достижимы из встроенных модулей или стеков, помечаются как достижимые до обнаружения циклов. Это сокращает объём работы, выполняемой GC, примерно вдвое.
- [gh-127020](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка в сборке free threading, когда [`PyCode_GetCode()`](https://python-all.ru/3/c-api/code.html#c.PyCode_GetCode), [`PyCode_GetVarnames()`](https://python-all.ru/3/c-api/code.html#c.PyCode_GetVarnames), [`PyCode_GetCellvars()`](https://python-all.ru/3/c-api/code.html#c.PyCode_GetCellvars) или [`PyCode_GetFreevars()`](https://python-all.ru/3/c-api/code.html#c.PyCode_GetFreevars) вызывались из нескольких потоков одновременно.
- [gh-127010](https://python-all.ru/3/whatsnew/changelog.html): Упрощено отслеживание словарей GC. Теперь все словари отслеживаются при создании, а не лениво при добавлении отслеживаемого объекта. Это значительно упрощает код и приводит к небольшому ускорению.
- [gh-126980](https://python-all.ru/3/whatsnew/changelog.html): Исправлено [`__buffer__()`](https://python-all.ru/3/reference/datamodel.html#object.__buffer__) объекта [`bytearray`](https://python-all.ru/3/library/stdtypes.html#bytearray), который падал при передаче [`READ`](https://python-all.ru/3/library/inspect.html#inspect.BufferFlags.READ) или [`WRITE`](https://python-all.ru/3/library/inspect.html#inspect.BufferFlags.WRITE) в качестве флагов.
- [gh-126937](https://python-all.ru/3/whatsnew/changelog.html): Исправлено [`TypeError`](https://python-all.ru/3/library/exceptions.html#TypeError), когда [`ctypes.Structure`](https://python-all.ru/3/library/ctypes.html#ctypes.Structure) имеет размер поля, не помещающийся в 16-битное беззнаковое целое. Вместо этого максимальное количество *битов* равно [`sys.maxsize`](https://python-all.ru/3/library/sys.html#sys.maxsize).
- [gh-126868](https://python-all.ru/3/whatsnew/changelog.html): Повышена производительность [`int`](https://python-all.ru/3/library/functions.html#int) за счёт добавления списка свободных объектов для компактных целых чисел.
- [gh-126881](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка при финализации состояния dtoa. Исправление от Kumar Aditya.
- [gh-126892](https://python-all.ru/3/whatsnew/changelog.html): Требуется прогрев холодного или недействительного кода перед повторной JIT-компиляцией.
- [gh-126091](https://python-all.ru/3/whatsnew/changelog.html): Обеспечить полноту стектрейсов при возбуждении исключения в цепочку генераторов, заканчивающуюся пользовательским генератором.
- [gh-126024](https://python-all.ru/3/whatsnew/changelog.html): Оптимизировать декодирование коротких UTF-8-последовательностей, содержащих не-ASCII символы, примерно на 15%.
- [gh-125420](https://python-all.ru/3/whatsnew/changelog.html): Добавить [`memoryview.index()`](https://python-all.ru/3/library/stdtypes.html#memoryview.index) к объектам [`memoryview`](https://python-all.ru/3/library/stdtypes.html#memoryview). Исправление от Bénédikt Tran.
- [gh-125420](https://python-all.ru/3/whatsnew/changelog.html): Добавить [`memoryview.count()`](https://python-all.ru/3/library/stdtypes.html#memoryview.count) к объектам [`memoryview`](https://python-all.ru/3/library/stdtypes.html#memoryview). Исправление от Bénédikt Tran.
- [gh-124470](https://python-all.ru/3/whatsnew/changelog.html): Исправить крах в свободно-поточной сборке при замене словаря объекта во время чтения атрибута из другого потока.
- [gh-69639](https://python-all.ru/3/whatsnew/changelog.html): Реализовать правила арифметики смешанного режима, объединяющие действительные и комплексные числа, как указано в стандартах C начиная с C99. Исправление от Sergey B Kirpichev.
- [gh-120010](https://python-all.ru/3/whatsnew/changelog.html): Исправить некорректные угловые случаи, которые приводили к `(nan+nanj)` на выходе при умножении комплексных чисел, например, `(1e300+1j)*(nan+infj)`. Исправление от Sergey B Kirpichev.
- [gh-109746](https://python-all.ru/3/whatsnew/changelog.html): Если `_thread.start_new_thread()` не может запустить новый поток, он удаляет своё состояние из интерпретатора и тем самым избегает повторной очистки при завершении.

### C API

- [gh-127896](https://python-all.ru/3/whatsnew/changelog.html): Ранее недокументированная функция [`PySequence_In()`](https://python-all.ru/3/c-api/sequence.html#c.PySequence_In) помечена как [мягко устаревшая](https://python-all.ru/3/glossary.html#term-soft-deprecated). Вместо неё используйте [`PySequence_Contains()`](https://python-all.ru/3/c-api/sequence.html#c.PySequence_Contains).
- [gh-127791](https://python-all.ru/3/whatsnew/changelog.html): Исправить потерю колбэков после более чем одного вызова [`PyUnstable_AtExit()`](https://python-all.ru/3/c-api/interp-lifecycle.html#c.PyUnstable_AtExit).
- [gh-127691](https://python-all.ru/3/whatsnew/changelog.html): C API [Unicode Exception Objects](https://python-all.ru/3/c-api/exceptions.html#unicodeexceptions) теперь вызывает [`TypeError`](https://python-all.ru/3/library/exceptions.html#TypeError), если его аргумент исключения не является объектом [`UnicodeError`](https://python-all.ru/3/library/exceptions.html#UnicodeError). Исправление от Bénédikt Tran.
- [gh-123378](https://python-all.ru/3/whatsnew/changelog.html): Обеспечить, чтобы значение [`UnicodeEncodeError.end`](https://python-all.ru/3/library/exceptions.html#UnicodeError.end), полученное с помощью [`PyUnicodeEncodeError_GetEnd()`](https://python-all.ru/3/c-api/exceptions.html#c.PyUnicodeEncodeError_GetEnd), находилось в `[min(1, objlen), max(min(1, objlen), objlen)]`, где *objlen* – длина [`UnicodeEncodeError.object`](https://python-all.ru/3/library/exceptions.html#UnicodeError.object). Аналогичные аргументы применимы к [`UnicodeDecodeError`](https://python-all.ru/3/library/exceptions.html#UnicodeDecodeError) и [`UnicodeTranslateError`](https://python-all.ru/3/library/exceptions.html#UnicodeTranslateError) и их соответствующему C-интерфейсу. Исправление от Bénédikt Tran.
- [gh-127314](https://python-all.ru/3/whatsnew/changelog.html): Улучшить сообщение об ошибке при вызове C API без активного состояния потока в [свободно-поточной](https://python-all.ru/3/glossary.html#term-free-threading) сборке.
- [gh-123378](https://python-all.ru/3/whatsnew/changelog.html): Обеспечить, чтобы значение [`UnicodeEncodeError.start`](https://python-all.ru/3/library/exceptions.html#UnicodeError.start), полученное с помощью [`PyUnicodeEncodeError_GetStart()`](https://python-all.ru/3/c-api/exceptions.html#c.PyUnicodeEncodeError_GetStart), находилось в `[0, max(0, objlen - 1)]`, где *objlen* – длина [`UnicodeEncodeError.object`](https://python-all.ru/3/library/exceptions.html#UnicodeError.object). Аналогичные аргументы применимы к [`UnicodeDecodeError`](https://python-all.ru/3/library/exceptions.html#UnicodeDecodeError) и [`UnicodeTranslateError`](https://python-all.ru/3/library/exceptions.html#UnicodeTranslateError) и их соответствующему C-интерфейсу. Исправление от Bénédikt Tran.
- [gh-109523](https://python-all.ru/3/whatsnew/changelog.html): Чтение текста из неблокирующего потока данных с помощью `read` теперь может вызвать [`BlockingIOError`](https://python-all.ru/3/library/exceptions.html#BlockingIOError), если операция не может немедленно вернуть байты.
- [gh-102471](https://python-all.ru/3/whatsnew/changelog.html): Добавить новый API импорта и экспорта для объектов Python [`int`](https://python-all.ru/3/library/functions.html#int) ([**PEP 757**](https://python-all.ru/3/whatsnew/changelog.html)):

  - [`PyLong_GetNativeLayout()`](https://python-all.ru/3/c-api/long.html#c.PyLong_GetNativeLayout);
  - [`PyLong_Export()`](https://python-all.ru/3/c-api/long.html#c.PyLong_Export);
  - [`PyLong_FreeExport()`](https://python-all.ru/3/c-api/long.html#c.PyLong_FreeExport);
  - [`PyLongWriter_Create()`](https://python-all.ru/3/c-api/long.html#c.PyLongWriter_Create);
  - [`PyLongWriter_Finish()`](https://python-all.ru/3/c-api/long.html#c.PyLongWriter_Finish);
  - [`PyLongWriter_Discard()`](https://python-all.ru/3/c-api/long.html#c.PyLongWriter_Discard).

  Исправление от Victor Stinner.
- [gh-121058](https://python-all.ru/3/whatsnew/changelog.html): `PyThreadState_Clear()` теперь выводит предупреждение (и вызывает `sys.excepthook`), если состояние потока всё ещё содержит активное исключение.

### Сборка

- [gh-127865](https://python-all.ru/3/whatsnew/changelog.html): Исправить ошибку сборки в системах без поддержки локальных переменных потока.
- [gh-127629](https://python-all.ru/3/whatsnew/changelog.html): Сборки Emscripten теперь включают поддержку ctypes.
- [gh-127111](https://python-all.ru/3/whatsnew/changelog.html): Обновлён веб-пример Emscripten для использования модулей ES6 и сборки в отдельную подпапку `web_example`.
- [gh-115869](https://python-all.ru/3/whatsnew/changelog.html): Сделать `jit_stencils.h` (который создаётся при JIT-сборках) воспроизводимым.
- [gh-126898](https://python-all.ru/3/whatsnew/changelog.html): Сборка Python для Emscripten теперь основана на модулях ES6.

## Python 3.14.0 alpha 2

*Дата выпуска: 2024-11-19*

### Windows

- [gh-126911](https://python-all.ru/3/whatsnew/changelog.html): Обновить вывод команды credits.
- [gh-118973](https://python-all.ru/3/whatsnew/changelog.html): Обеспечивает, что экспериментальная свободно-поточная установка включает модуль `_tkinter`. Для работы модуля также должен быть установлен дополнительный компонент Tcl/Tk.
- [gh-126497](https://python-all.ru/3/whatsnew/changelog.html): Исправляет ошибку venv из-за отсутствия исполняемых файлов перенаправителя в экспериментальных свободно-поточных установках.
- [gh-126074](https://python-all.ru/3/whatsnew/changelog.html): Удалены ненужные DLL из встраиваемого пакета для Windows.
- [gh-125315](https://python-all.ru/3/whatsnew/changelog.html): Предотвращение аварийного завершения в [`platform`](https://python-all.ru/3/library/platform.html#module-platform) из-за медленных вызовов WMI на некоторых машинах с Windows.
- [gh-126084](https://python-all.ru/3/whatsnew/changelog.html): Исправлен venvwlauncher для запуска pythonw вместо python, чтобы не создавалось дополнительное окно консоли.
- [gh-125842](https://python-all.ru/3/whatsnew/changelog.html): Исправлена [`SystemError`](https://python-all.ru/3/library/exceptions.html#SystemError) при вызове [`sys.exit()`](https://python-all.ru/3/library/sys.html#sys.exit) с `0xffffffff` в Windows.
- [gh-125550](https://python-all.ru/3/whatsnew/changelog.html): Включена возможность обнаружения установок Python 3.14 из Магазина Windows в [менеджере установки Python](https://python-all.ru/3/using/windows.html#launcher).
- [gh-123803](https://python-all.ru/3/whatsnew/changelog.html): Все кодовые страницы Windows теперь поддерживаются как кодеки «cpXXX» в Windows.

### Инструменты/Демонстрации

- [gh-126807](https://python-all.ru/3/whatsnew/changelog.html): Исправлены предупреждения об извлечении в **pygettext.py**, вызванные ошибочным принятием определений функций за вызовы функций.
- [gh-126167](https://python-all.ru/3/whatsnew/changelog.html): Тестовый стенд для iOS изменён, чтобы его могли использовать сторонние проекты для тестирования.

### Тесты

- [gh-126909](https://python-all.ru/3/whatsnew/changelog.html): Исправлены тесты расширенных атрибутов test\_os для работы в файловых системах с ограничением размера xattr в 1 КиБ.
- [gh-125730](https://python-all.ru/3/whatsnew/changelog.html): Изменено `make test`, чтобы не запускать GUI-тесты по умолчанию. Используйте `make ci` для запуска тестов с GUI-тестами.
- [gh-124295](https://python-all.ru/3/whatsnew/changelog.html): Добавлены тесты перевода в модуль [`argparse`](https://python-all.ru/3/library/argparse.html#module-argparse).

### Безопасность

- [gh-126623](https://python-all.ru/3/whatsnew/changelog.html): Обновление libexpat до версии 2.6.4

### Библиотека

- [gh-85957](https://python-all.ru/3/whatsnew/changelog.html): Добавлены недостающие MIME-типы для изображений с RFC: emf, fits, g3fax, jp2, jpm, jpx, t38, tiff-fx и wmf. Патч от Hugo van Kemenade.
- [gh-126920](https://python-all.ru/3/whatsnew/changelog.html): Исправлены ключи `prefix` и `exec_prefix` из [`sysconfig.get_config_vars()`](https://python-all.ru/3/library/sysconfig.html#sysconfig.get_config_vars), которые некорректно имели то же значение, что и [`sys.base_prefix`](https://python-all.ru/3/library/sys.html#sys.base_prefix) и [`sys.base_exec_prefix`](https://python-all.ru/3/library/sys.html#sys.base_exec_prefix), соответственно, в виртуальных окружениях. Теперь они точно отражают [`sys.prefix`](https://python-all.ru/3/library/sys.html#sys.prefix) и [`sys.exec_prefix`](https://python-all.ru/3/library/sys.html#sys.exec_prefix).
- [gh-67877](https://python-all.ru/3/whatsnew/changelog.html): Исправлены утечки памяти, когда сопоставление [`regular expression`](https://python-all.ru/3/library/re.html#module-re) прерывается внезапно из-за сигнала или неудачного выделения памяти.
- [gh-125063](https://python-all.ru/3/whatsnew/changelog.html): [`marshal`](https://python-all.ru/3/library/marshal.html#module-marshal) теперь поддерживает объекты [`slice`](https://python-all.ru/3/library/functions.html#slice). Версия формата marshal увеличена до 5.
- [gh-126789](https://python-all.ru/3/whatsnew/changelog.html): Исправлены значения [`sysconfig.get_config_vars()`](https://python-all.ru/3/library/sysconfig.html#sysconfig.get_config_vars), [`sysconfig.get_paths()`](https://python-all.ru/3/library/sysconfig.html#sysconfig.get_paths) и их родственных элементов, когда инициализация [`site`](https://python-all.ru/3/library/site.html#module-site) происходит после того, как [`sysconfig`](https://python-all.ru/3/library/sysconfig.html#module-sysconfig) построил кеш для `sysconfig.get_config_vars()`.
- [gh-126188](https://python-all.ru/3/whatsnew/changelog.html): Обновление встроенного pip до версии 24.3.1
- [gh-126766](https://python-all.ru/3/whatsnew/changelog.html): Исправлена проблема, при которой [`urllib.request.url2pathname()`](https://python-all.ru/3/library/urllib.request.html#urllib.request.url2pathname) не удавалось отбросить два начальных слэша, приводящих к пустому разделу authority.
- [gh-126705](https://python-all.ru/3/whatsnew/changelog.html): Разрешено использовать [`os.PathLike`](https://python-all.ru/3/library/os.html#os.PathLike) в качестве базового для протоколов.
- [gh-126699](https://python-all.ru/3/whatsnew/changelog.html): Разрешено использовать [`collections.abc.AsyncIterator`](https://python-all.ru/3/library/collections.abc.html#collections.abc.AsyncIterator) в качестве базового для протоколов.
- [gh-126654](https://python-all.ru/3/whatsnew/changelog.html): Исправлено аварийное завершение при передаче не-словаря в некоторые функции модуля `_interpreters`.
- [gh-104745](https://python-all.ru/3/whatsnew/changelog.html): Ограничение запуска patcher (из [`unittest.mock.patch()`](https://python-all.ru/3/library/unittest.mock.html#unittest.mock.patch) или [`unittest.mock.patch.object()`](https://python-all.ru/3/library/unittest.mock.html#unittest.mock.patch.object)) более одного раза без его остановки
- [gh-126595](https://python-all.ru/3/whatsnew/changelog.html): Исправлено аварийное завершение при создании экземпляра [`itertools.count`](https://python-all.ru/3/library/itertools.html#itertools.count) с начальным значением счётчика [`sys.maxsize`](https://python-all.ru/3/library/sys.html#sys.maxsize) в отладочных сборках. Патч от Bénédikt Tran.
- [gh-120423](https://python-all.ru/3/whatsnew/changelog.html): Исправлена проблема, при которой [`urllib.request.pathname2url()`](https://python-all.ru/3/library/urllib.request.html#urllib.request.pathname2url) некорректно обрабатывал пути Windows с встроенными прямыми слешами.
- [gh-126565](https://python-all.ru/3/whatsnew/changelog.html): Улучшена производительность [`zipfile.Path.open()`](https://python-all.ru/3/library/zipfile.html#zipfile.Path.open) для режимов, отличных от чтения.
- [gh-126505](https://python-all.ru/3/whatsnew/changelog.html): Исправлены ошибки при компиляции [`regular expressions`](https://python-all.ru/3/library/re.html#module-re) без учёта регистра с классами символов, содержащими символы за пределами BMP: символ верхнего регистра вне BMP игнорировался, и флаг ASCII игнорировался при сопоставлении диапазона символов, верхняя граница которого находится за пределами области BMP.
- [gh-117378](https://python-all.ru/3/whatsnew/changelog.html): Исправлен процесс метода запуска [`multiprocessing`](https://python-all.ru/3/library/multiprocessing.html#module-multiprocessing) `"forkserver"` forkserver для корректного наследования [`sys.path`](https://python-all.ru/3/library/sys.html#sys.path) родительского процесса во время импорта модулей [`multiprocessing.set_forkserver_preload()`](https://python-all.ru/3/library/multiprocessing.html#multiprocessing.set_forkserver_preload) таким же образом, как `sys.path` настраивается в рабочих процессах перед выполнением заданий.

  Эта ошибка приводила к тому, что предварительная загрузка модулей forkserver незаметно завершалась неудачей. Это проявлялось как снижение производительности в дочерних процессах, когда требовался `sys.path` из-за дополнительной повторной работы в каждом рабочем процессе.

  Это также могло иметь побочный эффект: `""` оставался в [`sys.path`](https://python-all.ru/3/library/sys.html#sys.path) во время предварительной загрузки импортов forkserver вместо абсолютного пути из [`os.getcwd()`](https://python-all.ru/3/library/os.html#os.getcwd) на момент импорта multiprocessing, используемого в рабочем `sys.path`.

  Различия `sys.path` между фазами в дочернем процессе могли потенциально привести к тому, что предварительная загрузка импортировала неверные объекты из неправильного расположения. Нам неизвестно, чтобы это действительно происходило на практике.
- [gh-125679](https://python-all.ru/3/whatsnew/changelog.html): Значения [`multiprocessing.Lock`](https://python-all.ru/3/library/multiprocessing.html#multiprocessing.Lock) и [`multiprocessing.RLock`](https://python-all.ru/3/library/multiprocessing.html#multiprocessing.RLock) `repr` больше не выводят «unknown» на macOS.
- [gh-126476](https://python-all.ru/3/whatsnew/changelog.html): Возникает исключение [`calendar.IllegalMonthError`](https://python-all.ru/3/library/calendar.html#calendar.IllegalMonthError) (теперь подкласс [`IndexError`](https://python-all.ru/3/library/exceptions.html#IndexError)) для [`calendar.month()`](https://python-all.ru/3/library/calendar.html#calendar.month), когда указан неверный месяц.
- [gh-126489](https://python-all.ru/3/whatsnew/changelog.html): Реализация [`pickle`](https://python-all.ru/3/library/pickle.html#module-pickle) на Python больше не вызывает [`pickle.Pickler.persistent_id()`](https://python-all.ru/3/library/pickle.html#pickle.Pickler.persistent_id) для результата `persistent_id()`.
- [gh-126451](https://python-all.ru/3/whatsnew/changelog.html): Зарегистрировать тип [`contextvars.Context`](https://python-all.ru/3/library/contextvars.html#contextvars.Context) в [`collections.abc.Mapping`](https://python-all.ru/3/library/collections.abc.html#collections.abc.Mapping).
- [gh-126175](https://python-all.ru/3/whatsnew/changelog.html): Добавить атрибуты `msg`, `doc`, `pos`, `lineno` и `colno` в [`tomllib.TOMLDecodeError`](https://python-all.ru/3/library/tomllib.html#tomllib.TOMLDecodeError). Устарело создание экземпляров с произвольными аргументами.
- [gh-89416](https://python-all.ru/3/whatsnew/changelog.html): Добавить MIME-типы [**RFC 9559**](https://python-all.ru/3/whatsnew/changelog.html) для аудиовизуальных контейнерных форматов Matroska. Патч от Hugo van Kemenade.
- [gh-126417](https://python-all.ru/3/whatsnew/changelog.html): Зарегистрировать типы `multiprocessing.managers.DictProxy` и `multiprocessing.managers.ListProxy` в [`multiprocessing.managers`](https://python-all.ru/3/library/multiprocessing.html#module-multiprocessing.managers) в [`collections.abc.MutableMapping`](https://python-all.ru/3/library/collections.abc.html#collections.abc.MutableMapping) и [`collections.abc.MutableSequence`](https://python-all.ru/3/library/collections.abc.html#collections.abc.MutableSequence) соответственно.
- [gh-126390](https://python-all.ru/3/whatsnew/changelog.html): Добавлена поддержка возврата смешанных опций и неопционных аргументов в порядке их следования в [`getopt.gnu_getopt()`](https://python-all.ru/3/library/getopt.html#getopt.gnu_getopt).
- [gh-126374](https://python-all.ru/3/whatsnew/changelog.html): Добавлена поддержка опций с необязательными аргументами в модуле [`getopt`](https://python-all.ru/3/library/getopt.html#module-getopt).
- [gh-126363](https://python-all.ru/3/whatsnew/changelog.html): Ускорен разбор шаблонов в [`pathlib.Path.glob()`](https://python-all.ru/3/library/pathlib.html#pathlib.Path.glob) за счёт пропуска создания объекта [`pathlib.Path`](https://python-all.ru/3/library/pathlib.html#pathlib.Path) для шаблона.
- [gh-126353](https://python-all.ru/3/whatsnew/changelog.html): [`asyncio.get_event_loop()`](https://python-all.ru/3/library/asyncio-eventloop.html#asyncio.get_event_loop) теперь не создаёт неявно цикл событий. Теперь возникает исключение [`RuntimeError`](https://python-all.ru/3/library/exceptions.html#RuntimeError), если цикл событий не установлен. Патч от Kumar Aditya.
- [gh-126313](https://python-all.ru/3/whatsnew/changelog.html): Исправлена проблема в [`curses.napms()`](https://python-all.ru/3/library/curses.html#curses.napms), когда [`curses.initscr()`](https://python-all.ru/3/library/curses.html#curses.initscr) ещё не был вызван. Патч от Bénédikt Tran.
- [gh-126303](https://python-all.ru/3/whatsnew/changelog.html): Исправлена сериализация (pickling) и копирование объектов [`os.sched_param`](https://python-all.ru/3/library/os.html#os.sched_param).
- [gh-126138](https://python-all.ru/3/whatsnew/changelog.html): Исправлено падение из-за использования после освобождения (use-after-free) для объектов [`asyncio.Task`](https://python-all.ru/3/library/asyncio-task.html#asyncio.Task), чья базовая корутина возвращает объект, реализующий опасный [`__getattribute__()`](https://python-all.ru/3/reference/datamodel.html#object.__getattribute__). Патч от Nico Posada.
- [gh-120057](https://python-all.ru/3/whatsnew/changelog.html): Заменить метод `os.environ.refresh()` новой функцией [`os.reload_environ()`](https://python-all.ru/3/library/os.html#os.reload_environ). Патч от Victor Stinner.
- [gh-126220](https://python-all.ru/3/whatsnew/changelog.html): Исправлено падение в `cProfile.Profile` и `_lsprof.Profiler`, когда их колбэки вызывались напрямую без аргументов.
- [gh-126212](https://python-all.ru/3/whatsnew/changelog.html): Исправлена проблема, при которой [`urllib.request.pathname2url()`](https://python-all.ru/3/library/urllib.request.html#urllib.request.pathname2url) и [`url2pathname()`](https://python-all.ru/3/library/urllib.request.html#urllib.request.url2pathname) удаляли слеши из путей Windows DOS и URL-адресов.
- [gh-126223](https://python-all.ru/3/whatsnew/changelog.html): Возникает исключение [`UnicodeEncodeError`](https://python-all.ru/3/library/exceptions.html#UnicodeEncodeError) вместо [`SystemError`](https://python-all.ru/3/library/exceptions.html#SystemError) при вызове `_interpreters.create()` с недопустимым символом Unicode.
- [gh-126205](https://python-all.ru/3/whatsnew/changelog.html): Исправлена проблема, при которой [`urllib.request.pathname2url()`](https://python-all.ru/3/library/urllib.request.html#urllib.request.pathname2url) генерировал URL-адреса, начинающиеся с четырёх слешей (вместо двух), при передаче пути Windows UNC.
- [gh-126156](https://python-all.ru/3/whatsnew/changelog.html): Улучшена производительность создания объектов [`Morsel`](https://python-all.ru/3/library/http.cookies.html#http.cookies.Morsel) в 3,8 раза.
- [gh-126105](https://python-all.ru/3/whatsnew/changelog.html): Исправлено падение в [`ast`](https://python-all.ru/3/library/ast.html#module-ast) при удалении атрибута [`ast.AST._fields`](https://python-all.ru/3/library/ast.html#ast.AST._fields).
- [gh-126106](https://python-all.ru/3/whatsnew/changelog.html): Исправлено возможное разыменование указателя `NULL` в [`ssl`](https://python-all.ru/3/library/ssl.html#module-ssl).
- [gh-126080](https://python-all.ru/3/whatsnew/changelog.html): Исправлено падение из-за использования после освобождения для объектов [`asyncio.Task`](https://python-all.ru/3/library/asyncio-task.html#asyncio.Task), чей базовый цикл событий реализует опасный [`__getattribute__()`](https://python-all.ru/3/reference/datamodel.html#object.__getattribute__). Сообщено Nico-Posada. Патч от Bénédikt Tran.
- [gh-125322](https://python-all.ru/3/whatsnew/changelog.html): Исправлено определение поддержки комплексных чисел в libffi.
- [gh-126083](https://python-all.ru/3/whatsnew/changelog.html): Исправлена утечка ссылок в объектах [`asyncio.Task`](https://python-all.ru/3/library/asyncio-task.html#asyncio.Task) при повторной инициализации того же объекта с контекстом, отличным от `None`. Патч от Nico Posada.
- [gh-126068](https://python-all.ru/3/whatsnew/changelog.html): Исправлены исключения в модуле [`argparse`](https://python-all.ru/3/library/argparse.html#module-argparse): теперь переводятся только сообщения об ошибках для ArgumentError и ArgumentTypeError. ArgumentError теперь используется только для ошибок командной строки, а не для логических ошибок в программе. Для некоторых логических ошибок теперь возбуждается TypeError вместо ValueError.
- [gh-125413](https://python-all.ru/3/whatsnew/changelog.html): Добавлен метод `pathlib.Path.scandir()` для эффективного получения содержимого каталога и атрибутов файлов. Это простая обёртка [`os.scandir()`](https://python-all.ru/3/library/os.html#os.scandir).
- [gh-125984](https://python-all.ru/3/whatsnew/changelog.html): Исправлены падения из-за использования после освобождения для объектов [`asyncio.Future`](https://python-all.ru/3/library/asyncio-future.html#asyncio.Future), чей базовый цикл событий реализует опасный [`__getattribute__()`](https://python-all.ru/3/reference/datamodel.html#object.__getattribute__). Сообщено Nico-Posada. Патч от Bénédikt Tran.
- [gh-125926](https://python-all.ru/3/whatsnew/changelog.html): Fix [`urllib.parse.urljoin()`](https://python-all.ru/3/library/urllib.parse.html#urllib.parse.urljoin) for base URI with undefined authority. Although [**RFC 3986**](https://python-all.ru/3/whatsnew/changelog.html) only specify reference resolution for absolute base URI, `urljoin()` should continue to return sensible result for relative base URI.
- [gh-125969](https://python-all.ru/3/whatsnew/changelog.html): Исправлен выход за границы при крахе, когда злонамеренный [`asyncio.loop.call_soon()`](https://python-all.ru/3/library/asyncio-eventloop.html#asyncio.loop.call_soon) изменяет длину внутреннего списка колбэков. Исправление от Bénédikt Tran.
- [gh-125966](https://python-all.ru/3/whatsnew/changelog.html): Исправлен крах при использовании после освобождения в [`asyncio.Future.remove_done_callback()`](https://python-all.ru/3/library/asyncio-future.html#asyncio.Future.remove_done_callback). Исправление от Bénédikt Tran.
- [gh-125789](https://python-all.ru/3/whatsnew/changelog.html): Исправлен возможный крах при изменении списка колбэков, возвращаемого `asyncio.Future._callbacks`. Теперь он всегда возвращает новую копию в реализации на C `_asyncio`. Исправление от Kumar Aditya.
- [gh-126916](https://python-all.ru/3/whatsnew/changelog.html): Разрешить передавать параметр *initial* функции [`functools.reduce()`](https://python-all.ru/3/library/functools.html#functools.reduce) в качестве именованного аргумента. Исправление от Sayandip Dutta.
- [gh-124452](https://python-all.ru/3/whatsnew/changelog.html): Исправлена проблема в [`email.policy.EmailPolicy.header_source_parse()`](https://python-all.ru/3/library/email.policy.html#email.policy.EmailPolicy.header_source_parse) и [`email.policy.Compat32.header_source_parse()`](https://python-all.ru/3/library/email.policy.html#email.policy.Compat32.header_source_parse), которая приводила к появлению лишних начальных пробелов в значениях заголовков, когда заголовок содержит символ новой строки после разделителя имени заголовка (`:`) и перед значением.
- [gh-117941](https://python-all.ru/3/whatsnew/changelog.html): `argparse.BooleanOptionalAction` теперь отклоняет имена опций, начинающиеся с `--no-`.
- [gh-125884](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка в [`pdb`](https://python-all.ru/3/library/pdb.html#module-pdb), из-за которой нельзя было установить точки останова на функциях с определенными аннотациями.
- [gh-125355](https://python-all.ru/3/whatsnew/changelog.html): Исправлено несколько ошибок в [`argparse.ArgumentParser.parse_intermixed_args()`](https://python-all.ru/3/library/argparse.html#argparse.ArgumentParser.parse_intermixed_args).

  - Парсер больше не меняется временно во время разбора.
  - Значения по умолчанию не обрабатываются дважды.
  - Обязательные взаимоисключающие группы, содержащие позиционные аргументы, теперь поддерживаются.
  - Отчет об отсутствующих аргументах теперь включает имена всех обязательных необязательных и позиционных аргументов.
  - Неизвестные опции можно смешивать с позиционными аргументами в parse\_known\_intermixed\_args().
- [gh-125767](https://python-all.ru/3/whatsnew/changelog.html): Объекты [`super`](https://python-all.ru/3/library/functions.html#super) теперь [`pickleable`](https://python-all.ru/3/library/pickle.html#module-pickle) и [`copyable`](https://python-all.ru/3/library/copy.html#module-copy).
- [gh-124969](https://python-all.ru/3/whatsnew/changelog.html): `locale.nl_langinfo(locale.ALT_DIGITS)` теперь снова возвращает строку. Возвращаемое значение состоит из до 100 символов, разделённых точкой с запятой.
- [gh-84850](https://python-all.ru/3/whatsnew/changelog.html): Удалены классы `URLopener` и `FancyURLopener` из [`urllib.request`](https://python-all.ru/3/library/urllib.request.html#module-urllib.request). Ранее они вызывали [`DeprecationWarning`](https://python-all.ru/3/library/exceptions.html#DeprecationWarning) начиная с Python 3.3.
- [gh-125666](https://python-all.ru/3/whatsnew/changelog.html): Избегать выхода из интерпретатора, если в новом REPL в качестве входных данных передан нулевой байт.
- [gh-125710](https://python-all.ru/3/whatsnew/changelog.html): \[Enum\] исправлены сравнения хешируемых и нехешируемых значений членов перечисления.
- [gh-125631](https://python-all.ru/3/whatsnew/changelog.html): Восстановлена возможность задавать атрибуты [`persistent_id`](https://python-all.ru/3/library/pickle.html#pickle.Pickler.persistent_id) и [`persistent_load`](https://python-all.ru/3/library/pickle.html#pickle.Unpickler.persistent_load) экземпляров классов `Pickler` и `Unpickler` в модуле [`pickle`](https://python-all.ru/3/library/pickle.html#module-pickle).
- [gh-125378](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка в [`pdb`](https://python-all.ru/3/library/pdb.html#module-pdb), из-за которой после многострочной команды пустая строка повторяла первую строку многострочной команды, а не всю команду.
- [gh-125682](https://python-all.ru/3/whatsnew/changelog.html): Отклонять не-ASCII цифры в реализации [`json.loads()`](https://python-all.ru/3/library/json.html#json.loads) на Python в соответствии со спецификацией JSON.
- [gh-125660](https://python-all.ru/3/whatsnew/changelog.html): Отклонять недопустимые управляющие последовательности Юникода в реализации [`json.loads()`](https://python-all.ru/3/library/json.html#json.loads) на Python.
- [gh-52551](https://python-all.ru/3/whatsnew/changelog.html): Использовать `wcsftime()` для реализации [`time.strftime()`](https://python-all.ru/3/library/time.html#time.strftime) на Windows.
- [gh-125259](https://python-all.ru/3/whatsnew/changelog.html): Исправлена логика удаления примечаний для ошибок, возникающих при инициализации перечисления.
- [gh-125633](https://python-all.ru/3/whatsnew/changelog.html): Добавлена функция [`inspect.ispackage()`](https://python-all.ru/3/library/inspect.html#inspect.ispackage) для определения, является ли объект [пакетом](https://python-all.ru/3/glossary.html#term-package) или нет.
- [gh-125614](https://python-all.ru/3/whatsnew/changelog.html): В формате [`FORWARDREF`](https://python-all.ru/3/library/annotationlib.html#annotationlib.Format.FORWARDREF) функции [`annotationlib`](https://python-all.ru/3/library/annotationlib.html#module-annotationlib) исправлена ошибка, из-за которой вложенные выражения не возвращались в формате [`annotationlib.ForwardRef`](https://python-all.ru/3/library/annotationlib.html#annotationlib.ForwardRef).
- [gh-125590](https://python-all.ru/3/whatsnew/changelog.html): Разрешено `FrameLocalsProxy` выполнять delete и pop, если ключ не является быстрой переменной.
- [gh-125600](https://python-all.ru/3/whatsnew/changelog.html): Показывать предупреждение об устаревшем коде в [`pdb`](https://python-all.ru/3/library/pdb.html#module-pdb) только при отображении исходного кода.
- [gh-125542](https://python-all.ru/3/whatsnew/changelog.html): Передача именованного аргумента *prefix\_chars* в [`argparse.ArgumentParser.add_argument_group()`](https://python-all.ru/3/library/argparse.html#argparse.ArgumentParser.add_argument_group) объявлена устаревшей.
- [gh-125541](https://python-all.ru/3/whatsnew/changelog.html): Нажатие `Ctrl`-`C` во время блокировки в [`threading.Lock.acquire()`](https://python-all.ru/3/library/threading.html#threading.Lock.acquire), [`threading.RLock.acquire()`](https://python-all.ru/3/library/threading.html#threading.RLock.acquire) и [`threading.Thread.join()`](https://python-all.ru/3/library/threading.html#threading.Thread.join) теперь прерывает вызов функции и вызывает исключение [`KeyboardInterrupt`](https://python-all.ru/3/library/exceptions.html#KeyboardInterrupt) на Windows, аналогично поведению этих функций на macOS и Linux.
- [gh-125519](https://python-all.ru/3/whatsnew/changelog.html): Улучшена трассировка при вызове [`importlib.reload()`](https://python-all.ru/3/library/importlib.html#importlib.reload) с объектом, не являющимся модулем. Исправление от Alex Waygood.
- [gh-125451](https://python-all.ru/3/whatsnew/changelog.html): Исправлена взаимная блокировка, когда [`concurrent.futures.ProcessPoolExecutor`](https://python-all.ru/3/library/concurrent.futures.html#concurrent.futures.ProcessPoolExecutor) завершает работу одновременно с ошибкой при передаче задания рабочему процессу.
- [gh-125115](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка в [`pdb`](https://python-all.ru/3/library/pdb.html#module-pdb), из-за которой аргументы, начинающиеся с `-` нельзя было передать отлаживаемому скрипту.
- [gh-125398](https://python-all.ru/3/whatsnew/changelog.html): Исправлено преобразование пути `VIRTUAL_ENV` в скрипте активации [`venv`](https://python-all.ru/3/library/venv.html#module-venv) при запуске в Git Bash для Windows.
- [gh-125245](https://python-all.ru/3/whatsnew/changelog.html): Исправлено состояние гонки при импорте [`collections.abc`](https://python-all.ru/3/library/collections.abc.html#module-collections.abc), из-за которого мог быть неверно возвращён пустой модуль.
- [gh-52551](https://python-all.ru/3/whatsnew/changelog.html): Исправлены проблемы кодирования в [`time.strftime()`](https://python-all.ru/3/library/time.html#time.strftime), методе [`strftime()`](https://python-all.ru/3/library/datetime.html#datetime.datetime.strftime) классов [`datetime`](https://python-all.ru/3/library/datetime.html#module-datetime) [`datetime`](https://python-all.ru/3/library/datetime.html#datetime.datetime), [`date`](https://python-all.ru/3/library/datetime.html#datetime.date) и [`time`](https://python-all.ru/3/library/datetime.html#datetime.time), а также форматирование этих классов. Символы, не кодируемые в текущей локали, теперь допустимы в строке формата. Суррогатные пары и последовательности байтов, закодированных с помощью surrogatescape, больше не рекомбинируются. Встроенный нулевой символ больше не завершает строку формата.
- [gh-124984](https://python-all.ru/3/whatsnew/changelog.html): Исправлена потокобезопасность в [`ssl`](https://python-all.ru/3/library/ssl.html#module-ssl) в сборке со свободной потоковой моделью. Операции OpenSSL теперь защищены блокировкой на уровне объекта.
- [gh-124651](https://python-all.ru/3/whatsnew/changelog.html): Корректное экранирование строк шаблонов в скриптах активации [`venv`](https://python-all.ru/3/library/venv.html#module-venv).
- [gh-124694](https://python-all.ru/3/whatsnew/changelog.html): Добавлен [`concurrent.futures.InterpreterPoolExecutor`](https://python-all.ru/3/library/concurrent.futures.html#concurrent.futures.InterpreterPoolExecutor), позволяющий выполнять код в нескольких изолированных интерпретаторах. Это позволяет обойти ограничения потоков, связанных с загрузкой CPU (из-за GIL). Патч от Eric Snow.

  Это дополнение не связано с [**PEP 734**](https://python-all.ru/3/whatsnew/changelog.html).
- [gh-58032](https://python-all.ru/3/whatsnew/changelog.html): Устарел конвертер типов [`argparse.FileType`](https://python-all.ru/3/library/argparse.html#argparse.FileType).
- [gh-99749](https://python-all.ru/3/whatsnew/changelog.html): Добавлена возможность включения подсказок для вариантов аргументов и имён подпарсеров при опечатке пользователя.
- [gh-58956](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка в [`pdb`](https://python-all.ru/3/library/pdb.html#module-pdb), из-за которой точка останова иногда не срабатывала, если была установлена на функцию, уже находящуюся в стеке вызовов.
- [gh-124111](https://python-all.ru/3/whatsnew/changelog.html): Модуль tkinter теперь можно собрать для использования либо новой версии 9.0.0 Tcl/Tk, либо последнего выпуска 8.6.15 Tcl/Tk 8. Tcl/Tk 9 включает множество улучшений как в языке Tcl, так и во внешнем виде и функциональности графического интерфейса, предоставляемого Tk.
- [gh-80958](https://python-all.ru/3/whatsnew/changelog.html): Обнаружение тестов unittest снова поддерживает пространства имён пакетов PEP 420 в качестве начального каталога.
- [gh-123370](https://python-all.ru/3/whatsnew/changelog.html): Исправлена проблема с очисткой холста после запуска turtledemo clock.
- [gh-89083](https://python-all.ru/3/whatsnew/changelog.html): Добавлен [`uuid.uuid8()`](https://python-all.ru/3/library/uuid.html#uuid.uuid8) для генерации объектов UUIDv8, как указано в [**RFC 9562**](https://python-all.ru/3/whatsnew/changelog.html). Патч от Bénédikt Tran.
- [gh-122549](https://python-all.ru/3/whatsnew/changelog.html): Добавлен [`platform.invalidate_caches()`](https://python-all.ru/3/library/platform.html#platform.invalidate_caches) для аннулирования кэшированных результатов.
- [gh-120754](https://python-all.ru/3/whatsnew/changelog.html): Обновлены неограниченные вызовы `read` в [`zipfile`](https://python-all.ru/3/library/zipfile.html#module-zipfile) для указания явного `size`, ограничивающего объём считываемых данных. Это также обновляет обработку максимального размера комментария ZIP в соответствии со стандартом, вместо чтения комментариев, которые на один байт длиннее.
- [gh-121267](https://python-all.ru/3/whatsnew/changelog.html): Улучшена производительность [`tarfile`](https://python-all.ru/3/library/tarfile.html#module-tarfile) при записи файлов за счёт кэширования имён пользователей и групп.
- [gh-70764](https://python-all.ru/3/whatsnew/changelog.html): Исправлена проблема, при которой [`inspect.getclosurevars()`](https://python-all.ru/3/library/inspect.html#inspect.getclosurevars) ошибочно классифицировал имя атрибута как глобальную переменную, если это имя существует и как имя атрибута, и как глобальная переменная.
- [gh-118289](https://python-all.ru/3/whatsnew/changelog.html): `posixpath.realpath()` теперь вызывает [`NotADirectoryError`](https://python-all.ru/3/library/exceptions.html#NotADirectoryError), когда включён режим *strict* и указан путь, не являющийся каталогом, с завершающим слэшем.
- [gh-119826](https://python-all.ru/3/whatsnew/changelog.html): Всегда возвращать абсолютный путь для [`os.path.abspath()`](https://python-all.ru/3/library/os.path.html#os.path.abspath) в Windows.
- [gh-97850](https://python-all.ru/3/whatsnew/changelog.html): Удалены устаревшие `pkgutil.get_loader()` и `pkgutil.find_loader()`.
- [gh-118986](https://python-all.ru/3/whatsnew/changelog.html): Добавлена константа `socket.IPV6_RECVERR` (доступна начиная с Linux 2.2).
- [gh-116897](https://python-all.ru/3/whatsnew/changelog.html): Приём объектов с ложными значениями (таких как `0` и `[]`), за исключением пустых строк, байтоподобных объектов и `None`, в функциях [`urllib.parse`](https://python-all.ru/3/library/urllib.parse.html#module-urllib.parse) [`parse_qsl()`](https://python-all.ru/3/library/urllib.parse.html#urllib.parse.parse_qsl) и [`parse_qs()`](https://python-all.ru/3/library/urllib.parse.html#urllib.parse.parse_qs) теперь является устаревшим.
- [gh-101955](https://python-all.ru/3/whatsnew/changelog.html): Исправлена SystemError при сопоставлении с шаблоном регулярного выражения, содержащим некоторую комбинацию сверхжадного квантификатора, альтернативы и захватывающей группы.
- [gh-71936](https://python-all.ru/3/whatsnew/changelog.html): Исправлено состояние гонки в [`multiprocessing.pool.Pool`](https://python-all.ru/3/library/multiprocessing.html#multiprocessing.pool.Pool).
- [bpo-46128](https://python-all.ru/3/whatsnew/changelog.html): Удаление кадров стека [`unittest.IsolatedAsyncioTestCase`](https://python-all.ru/3/library/unittest.html#unittest.IsolatedAsyncioTestCase) из сообщаемых трассировок стека.
- [gh-84852](https://python-all.ru/3/whatsnew/changelog.html): Добавлены MIME-типы для шрифтов MS Embedded OpenType, OpenType Layout, TrueType, WOFF 1.0 и 2.0. Патч от Sahil Prajapati и Hugo van Kemenade.

### Документация

- [gh-126622](https://python-all.ru/3/whatsnew/changelog.html): Добавлены страницы-заглушки для удалённых модулей с объяснением причин удаления, указанием замен и ссылкой на последнюю версию Python, которая их поддерживала. Автор: Ned Batchelder.
- [gh-125277](https://python-all.ru/3/whatsnew/changelog.html): Для сборки документации Python теперь требуется Sphinx 7.2.6 или новее. Патч от Adam Turner.
- [gh-60712](https://python-all.ru/3/whatsnew/changelog.html): Тип [`object`](https://python-all.ru/3/library/functions.html#object) включён в списки документированных типов. Изменение от Furkan Onder и Martin Panter.

### Ядро и встроенные модули

- [gh-126795](https://python-all.ru/3/whatsnew/changelog.html): Увеличен порог прогрева JIT-кода. В зависимости от платформы и нагрузки это может дать прирост производительности на 1–9% и экономию памяти на 3–5%.
- [gh-126341](https://python-all.ru/3/whatsnew/changelog.html): Теперь возбуждается [`ValueError`](https://python-all.ru/3/library/exceptions.html#ValueError) вместо [`SystemError`](https://python-all.ru/3/library/exceptions.html#SystemError) при попытке итерации по освобождённому объекту [`memoryview`](https://python-all.ru/3/library/stdtypes.html#memoryview).
- [gh-126688](https://python-all.ru/3/whatsnew/changelog.html): Исправлен сбой при вызове [`os.fork()`](https://python-all.ru/3/library/os.html#os.fork) в некоторых операционных системах, включая SerenityOS.

### Библиотека

- [gh-126066](https://python-all.ru/3/whatsnew/changelog.html): Исправлено [`importlib`](https://python-all.ru/3/library/importlib.html#module-importlib), чтобы он не записывал неполные .pyc-файлы, когда ulimit или другой механизм операционной системы препятствует полной записи.

### Ядро и встроенные модули

- [gh-126222](https://python-all.ru/3/whatsnew/changelog.html): Не включать количество элементов «peek» в `_PyUop_num_popped`. Это гарантирует, что из стека будет извлечено правильное количество элементов при завершении микрооперации с ошибкой.
- [gh-126366](https://python-all.ru/3/whatsnew/changelog.html): Исправлен сбой при использовании `yield from` для объекта, который возбуждает исключение в своём `__iter__`.

### Библиотека

- [gh-126209](https://python-all.ru/3/whatsnew/changelog.html): Исправлена проблема с параметром `skip_file_prefixes`, которая приводила к несовместимому поведению между C и Python реализациями [`warnings.warn()`](https://python-all.ru/3/library/warnings.html#warnings.warn). Патч от Daehee Kim.

### Ядро и встроенные модули

- [gh-126312](https://python-all.ru/3/whatsnew/changelog.html): Исправлен сбой во время сборки мусора для объекта, замороженного [`gc.freeze()`](https://python-all.ru/3/library/gc.html#gc.freeze) в сборке со свободной многопоточностью.
- [gh-103951](https://python-all.ru/3/whatsnew/changelog.html): Ослаблены требования к оптимизации, чтобы разрешить быстрый доступ к атрибутам подклассов модулей.
- [gh-126072](https://python-all.ru/3/whatsnew/changelog.html): Вслед за [gh-126101](https://python-all.ru/3/whatsnew/changelog.html), для [объектов кода](https://python-all.ru/3/c-api/code.html#codeobjects), таких как lambda, аннотации и псевдонимы типов, мы больше не добавляем `None` в их [`co_consts`](https://python-all.ru/3/reference/datamodel.html#codeobject.co_consts).
- [gh-126195](https://python-all.ru/3/whatsnew/changelog.html): Улучшена производительность JIT на 1,4% на macOS Apple Silicon благодаря использованию платформенно-специфичных API защиты памяти. Патч от Diego Russo.
- [gh-126139](https://python-all.ru/3/whatsnew/changelog.html): Улучшено указание местоположения ошибки при попытке использовать [future-оператор](https://python-all.ru/3/glossary.html#term-__future__) с неизвестной future-возможностью.
- [gh-126072](https://python-all.ru/3/whatsnew/changelog.html): Добавлен новый атрибут в [`co_flags`](https://python-all.ru/3/reference/datamodel.html#codeobject.co_flags), указывающий, является ли первый элемент в [`co_consts`](https://python-all.ru/3/reference/datamodel.html#codeobject.co_consts) строкой документации. Если объект кода не имеет строки документации, `None` **НЕ** будет вставлен.
- [gh-126076](https://python-all.ru/3/whatsnew/changelog.html): Перемещённые объекты, такие как `tuple`, `bytes` и `str`, теперь правильно отслеживаются [`tracemalloc`](https://python-all.ru/3/library/tracemalloc.html#module-tracemalloc) и связанными с ним хуками. Патч от Pablo Galindo.
- [gh-90370](https://python-all.ru/3/whatsnew/changelog.html): Избегайте создания временного кортежа для \*args при передаче аргументов в коде, сгенерированном Argument Clinic (если аргументы либо с переменным числом, либо позиционные).
- [gh-126018](https://python-all.ru/3/whatsnew/changelog.html): Исправлен сбой в [`sys.audit()`](https://python-all.ru/3/library/sys.html#sys.audit) при передаче нестроки в качестве первого аргумента, если Python был скомпилирован в режиме отладки.
- [gh-126012](https://python-all.ru/3/whatsnew/changelog.html): Тип [`memoryview`](https://python-all.ru/3/library/stdtypes.html#memoryview) теперь поддерживает подписку, что делает его [обобщённым типом](https://python-all.ru/3/glossary.html#term-generic-type).
- [gh-125837](https://python-all.ru/3/whatsnew/changelog.html): Добавлены инструкции [`LOAD_SMALL_INT`](https://python-all.ru/3/library/dis.html#opcode-LOAD_SMALL_INT) и [`LOAD_CONST_IMMORTAL`](https://python-all.ru/3/library/dis.html#opcode-LOAD_CONST_IMMORTAL). `LOAD_SMALL_INT` помещает маленькое целое число, равное `oparg`, в стек. `LOAD_CONST_IMMORTAL` делает то же самое, что и `LOAD_CONST`, но более эффективен для бессмертных объектов. Удалена инструкция `RETURN_CONST`.
- [gh-125942](https://python-all.ru/3/whatsnew/changelog.html): На Android значение `errors` параметра [`sys.stdout`](https://python-all.ru/3/library/sys.html#sys.stdout) было изменено с `surrogateescape` на `backslashreplace`.
- [gh-125859](https://python-all.ru/3/whatsnew/changelog.html): Исправлен сбой в сборке со свободной многопоточностью, когда [`gc.get_objects()`](https://python-all.ru/3/library/gc.html#gc.get_objects) или [`gc.get_referrers()`](https://python-all.ru/3/library/gc.html#gc.get_referrers) вызывается во время выполняющейся сборки мусора.
- [gh-125868](https://python-all.ru/3/whatsnew/changelog.html): В версии 3.14.0a1 поиск атрибута мог давать неверное значение. Это было связано с некорректной специализацией в очень специфических обстоятельствах. Исправлено в 3.14.0a2.
- [gh-125498](https://python-all.ru/3/whatsnew/changelog.html): JIT обновлён для использования нового атрибута `preserve_none` от Clang 19, который поддерживает больше платформ и является более полезным, чем существующее соглашение о вызовах `ghccc` LLVM. Это также устраняет необходимость в ручном исправлении соглашения о вызовах в LLVM IR, упрощая процесс JIT-компиляции.
- [gh-125703](https://python-all.ru/3/whatsnew/changelog.html): Корректно учитывать хуки [`tracemalloc`](https://python-all.ru/3/library/tracemalloc.html#module-tracemalloc) в специализированных путях `Py_DECREF`. Патч от Pablo Galindo.
- [gh-125593](https://python-all.ru/3/whatsnew/changelog.html): Использовать цвет для выделения местоположений ошибок в трассировке из группы исключений.
- [gh-125017](https://python-all.ru/3/whatsnew/changelog.html): Исправлен сбой при определённых доступах к `__annotations__` объектов [`staticmethod`](https://python-all.ru/3/library/functions.html#staticmethod) и [`classmethod`](https://python-all.ru/3/library/functions.html#classmethod).
- [gh-125588](https://python-all.ru/3/whatsnew/changelog.html): Генератор PEG в Python теперь может использовать f-строки в действиях грамматики. Патч от Pablo Galindo.
- [gh-125444](https://python-all.ru/3/whatsnew/changelog.html): Исправлена недопустимая инструкция для старых архитектур Arm. Патч от Diego Russo, тестирование от Ross Burton.
- [gh-118423](https://python-all.ru/3/whatsnew/changelog.html): Добавлен новый макрос `INSTRUCTION_SIZE` в генератор случаев, который возвращает текущий размер инструкции.
- [gh-125038](https://python-all.ru/3/whatsnew/changelog.html): Исправлено падение при итерации по выражению-генератору после прямых изменений в `gi_frame.f_locals`. Патч от Mikhail Efimov.
- [gh-124855](https://python-all.ru/3/whatsnew/changelog.html): Запрещено одновременное включение поддержки JIT и perf. Патч от Pablo Galindo.
- [gh-123714](https://python-all.ru/3/whatsnew/changelog.html): Обновлена JIT-компиляция для использования LLVM 19
- [gh-123930](https://python-all.ru/3/whatsnew/changelog.html): Улучшено сообщение об ошибке, когда скрипт, затеняющий модуль из стандартной библиотеки, вызывает [`ImportError`](https://python-all.ru/3/library/exceptions.html#ImportError) во время импорта с помощью «from». Аналогично улучшено сообщение об ошибке, когда скрипт, затеняющий сторонний модуль, пытается выполнить импорт атрибута из этого стороннего модуля с помощью «from» во время его инициализации.
- [gh-119793](https://python-all.ru/3/whatsnew/changelog.html): Встроенная функция [`map()`](https://python-all.ru/3/library/functions.html#map) теперь имеет опциональный ключевой флаг *strict*, как и [`zip()`](https://python-all.ru/3/library/functions.html#zip), для проверки, что все итерируемые объекты имеют одинаковую длину. Патч от Wannes Boeykens.

### Библиотека

- [gh-118950](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка, из-за которой SSLProtocol.connection\_lost не вызывалась при возникновении OSError во время записи в сокет.
- [gh-113570](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка в `reprlib.repr`, из-за которой он некорректно вызывал метод repr для затенённых встроенных типов Python.

### C API

- [gh-126554](https://python-all.ru/3/whatsnew/changelog.html): Исправлена обработка ошибок в объектах [`ctypes.CDLL`](https://python-all.ru/3/library/ctypes.html#ctypes.CDLL), которая могла приводить к падению в редких ситуациях.
- [gh-126061](https://python-all.ru/3/whatsnew/changelog.html): Добавлены [`PyLong_IsPositive()`](https://python-all.ru/3/c-api/long.html#c.PyLong_IsPositive), [`PyLong_IsNegative()`](https://python-all.ru/3/c-api/long.html#c.PyLong_IsNegative) и [`PyLong_IsZero()`](https://python-all.ru/3/c-api/long.html#c.PyLong_IsZero) для проверки, является ли [`PyLongObject`](https://python-all.ru/3/c-api/long.html#c.PyLongObject) положительным, отрицательным или нулём соответственно.
- [gh-125608](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка, из-за которой наблюдатели словаря (например, [`PyDict_Watch()`](https://python-all.ru/3/c-api/dict.html#c.PyDict_Watch)) за словарём атрибутов объекта ([`__dict__`](https://python-all.ru/3/reference/datamodel.html#object.__dict__)) не срабатывали при изменении атрибутов объекта.
- [gh-123619](https://python-all.ru/3/whatsnew/changelog.html): Добавлена функция [`PyUnstable_Object_EnableDeferredRefcount()`](https://python-all.ru/3/c-api/object.html#c.PyUnstable_Object_EnableDeferredRefcount) для включения отложенного подсчёта ссылок [**PEP 703**](https://python-all.ru/3/whatsnew/changelog.html).
- [gh-121654](https://python-all.ru/3/whatsnew/changelog.html): Добавлена функция [`PyType_Freeze()`](https://python-all.ru/3/c-api/type.html#c.PyType_Freeze), чтобы сделать тип неизменяемым. Патч от Victor Stinner.
- [gh-120026](https://python-all.ru/3/whatsnew/changelog.html): Макрос `Py_HUGE_VAL` является [мягко устаревшим](https://python-all.ru/3/glossary.html#term-soft-deprecated).

### Сборка

- [gh-126691](https://python-all.ru/3/whatsnew/changelog.html): Удалён флаг конфигурации `--with-emscripten-target`. Мы объединили опции `node` и `browser`, и теперь можно использовать одну и ту же сборку независимо от целевого окружения выполнения.
- [gh-123877](https://python-all.ru/3/whatsnew/changelog.html): Использовать `wasm32-wasip1` как целевую тройку для WASI вместо `wasm32-wasi`. Последняя в конечном счёте будет возвращена для WASI 1.0, в то время как CPython в настоящее время поддерживает только WASI preview1.
- [gh-126458](https://python-all.ru/3/whatsnew/changelog.html): Отключена поддержка SIMD для HACL в WASI.
- [gh-89640](https://python-all.ru/3/whatsnew/changelog.html): Зафиксирован порядок слов float как little endian на WASM.
- [gh-126206](https://python-all.ru/3/whatsnew/changelog.html): `make clinic` теперь запускает Argument Clinic с опцией `--force`, тем самым принудительно перегенерируя сгенерированный код.
- [gh-126187](https://python-all.ru/3/whatsnew/changelog.html): Введён `Tools/wasm/emscripten.py` для упрощения сборок Emscripten.
- [gh-124932](https://python-all.ru/3/whatsnew/changelog.html): Для кросс-сборок теперь поддерживается возможность указать другой префикс установки `prefix`, отличный от `host_prefix`, используемого `getpath.py`. Для Emscripten по умолчанию установлено значение `/`, на других платформах поведение по умолчанию осталось прежним.
- [gh-125946](https://python-all.ru/3/whatsnew/changelog.html): Минимальная поддерживаемая версия Android теперь 7.0 (API level 24).
- [gh-125940](https://python-all.ru/3/whatsnew/changelog.html): Сборка Android теперь поддерживает [размер страниц 16 КБ](https://python-all.ru/3/whatsnew/changelog.html).
- [gh-89640](https://python-all.ru/3/whatsnew/changelog.html): Улучшено определение порядка слов float на Linux, когда включена оптимизация времени компоновки.
- [gh-124928](https://python-all.ru/3/whatsnew/changelog.html): Сборки Emscripten теперь требуют node \>= 18.
- [gh-115382](https://python-all.ru/3/whatsnew/changelog.html): Исправлены ошибки кросс-компиляции, когда SOABI хоста и цели совпадают.

## Python 3.14.0 alpha 1

*Дата выпуска: 2024-10-15*

### macOS

- [gh-124448](https://python-all.ru/3/whatsnew/changelog.html): Обновление встроенного Tcl/Tk в установщике macOS до версии 8.6.15.
- [gh-123797](https://python-all.ru/3/whatsnew/changelog.html): Проверка доступности функции `ptsname_r` во время выполнения на macOS.
- [gh-123418](https://python-all.ru/3/whatsnew/changelog.html): Обновление сборки установщика macOS для использования OpenSSL 3.0.15.

### Windows

- [gh-124487](https://python-all.ru/3/whatsnew/changelog.html): Повышение требуемого уровня ОС и API Windows до Windows 10.
- [gh-124609](https://python-all.ru/3/whatsnew/changelog.html): Исправление `_Py_ThreadId` для сборок Windows с использованием MinGW. Патч от Тони Робертса.
- [gh-124448](https://python-all.ru/3/whatsnew/changelog.html): Обновление встроенного Tcl/Tk до 8.6.15.
- [gh-124254](https://python-all.ru/3/whatsnew/changelog.html): Обеспечивает сохранение экспериментальных бинарных сборок со свободными потоками при обновлении.
- [gh-123915](https://python-all.ru/3/whatsnew/changelog.html): Обеспечение использования `Tools\msi\buildrelease.bat` различных каталогов для сборок AMD64 и ARM64.
- [gh-123418](https://python-all.ru/3/whatsnew/changelog.html): Обновление сборки Windows для использования OpenSSL 3.0.15.
- [gh-123476](https://python-all.ru/3/whatsnew/changelog.html): Добавление поддержки `socket.TCP_QUICKACK` на платформах Windows.
- [gh-122573](https://python-all.ru/3/whatsnew/changelog.html): Сборка CPython для Windows теперь требует версию 3.10 или новее.
- [gh-100256](https://python-all.ru/3/whatsnew/changelog.html): [`mimetypes`](https://python-all.ru/3/library/mimetypes.html#module-mimetypes) больше не завершается с ошибкой при обнаружении недоступного ключа реестра.
- [gh-119679](https://python-all.ru/3/whatsnew/changelog.html): Обеспечивает включение правильных библиотек импорта в установки Windows.
- [gh-119690](https://python-all.ru/3/whatsnew/changelog.html): Добавление поддержки Unicode и исправление аудита событий для `_winapi.CreateNamedPipe`.
- [gh-111201](https://python-all.ru/3/whatsnew/changelog.html): Добавление поддержки нового pyrepl на Windows
- [gh-119070](https://python-all.ru/3/whatsnew/changelog.html): Исправление обработки `py.exe` шебангов, таких как `/usr/bin/env python3.12`, которые ранее интерпретировались как `python3.exe` вместо `python3.12.exe`.
- [gh-117505](https://python-all.ru/3/whatsnew/changelog.html): Исправление проблемы с установщиком Windows, при которой ensurepip не запускался в полностью изолированном окружении. Это могло вызывать неожиданные взаимодействия с пользовательскими site-packages.
- [gh-118209](https://python-all.ru/3/whatsnew/changelog.html): Предотвращение аварийного завершения [`mmap`](https://python-all.ru/3/library/mmap.html#module-mmap) в Windows, когда отображаемая память недоступна из-за ошибок файловой системы или нарушений доступа.
- [gh-79846](https://python-all.ru/3/whatsnew/changelog.html): Заставляет `ssl.create_default_context()` игнорировать недействительные сертификаты в хранилище сертификатов Windows

### Tools/Demos

- [gh-123418](https://python-all.ru/3/whatsnew/changelog.html): Обновление рабочих процессов GitHub CI для использования OpenSSL 3.0.15 и multissltests для использования 3.0.15, 3.1.7 и 3.2.3.

### Tests

- [gh-125041](https://python-all.ru/3/whatsnew/changelog.html): Повторное включение пропущенных тестов для [`zlib`](https://python-all.ru/3/library/zlib.html#module-zlib) на архитектуре s390x: пропускаются только проверки сжатых байтов, которые могут различаться между программной реализацией zlib и аппаратно-ускоренной реализацией.
- [gh-124378](https://python-all.ru/3/whatsnew/changelog.html): Обновление `test_ttk` для успешного прохождения с Tcl/Tk 8.6.15.
- [gh-124213](https://python-all.ru/3/whatsnew/changelog.html): Определение, выполняется ли набор тестов внутри контейнера systemd-nspawn с опцией `--suppress-sync=true`, и пропуск тестов `test_os` и `test_mmap`, которые дают сбой в этом сценарии.
- [gh-124190](https://python-all.ru/3/whatsnew/changelog.html): Добавление возможности игнорировать целые файлы или каталоги в инструменте CI проверки предупреждений
- [gh-121921](https://python-all.ru/3/whatsnew/changelog.html): Обновление `Lib/test/crashers/bogus_code_obj.py`, чтобы он снова корректно аварийно завершался.
- [gh-112301](https://python-all.ru/3/whatsnew/changelog.html): Добавление инструментов для проверки изменений в предупреждениях компилятора. Патч от Нейта Олсона.
- [gh-59022](https://python-all.ru/3/whatsnew/changelog.html): Добавление тестов для [`pkgutil.extend_path()`](https://python-all.ru/3/library/pkgutil.html#pkgutil.extend_path). Патч от Андреаса Стокера.
- [gh-99242](https://python-all.ru/3/whatsnew/changelog.html): [`os.getloadavg()`](https://python-all.ru/3/library/os.html#os.getloadavg) может вызывать [`OSError`](https://python-all.ru/3/library/exceptions.html#OSError) при запуске регрессионных тестов в определённых условиях (например, chroot). Теперь эта ошибка перехватывается и игнорируется, так как сообщение о средней нагрузке необязательно.
- [gh-121084](https://python-all.ru/3/whatsnew/changelog.html): Исправление случайных утечек в test\_typing. Очистка кэшей ABC модуля typing при запуске тестов на утечки (опция `-R`): вызов `_abc_caches_clear()` для абстрактных классов typing и их подклассов. Патч от Виктора Стиннера.
- [gh-121160](https://python-all.ru/3/whatsnew/changelog.html): Добавлен тест для [`readline.set_history_length()`](https://python-all.ru/3/library/readline.html#readline.set_history_length). Этот тест может не сработать в библиотеках readline.
- [gh-121200](https://python-all.ru/3/whatsnew/changelog.html): Исправлено `test_expanduser_pwd2()` в `test_posixpath`. Вызывается `getpwnam()` для получения `pw_dir`, так как оно может отличаться от `getpwall()` `pw_dir`. Патч от Victor Stinner.
- [gh-121188](https://python-all.ru/3/whatsnew/changelog.html): При создании JUnit XML-файла regrtest теперь экранирует символы, недопустимые в XML, например управляющий символ chr(27), используемый в ANSI-escape-последовательностях. Патч от Victor Stinner.
- [gh-120801](https://python-all.ru/3/whatsnew/changelog.html): Приведены в порядок фикстуры для тестов importlib.metadata и унифицировано поведение с test.support.os\_helper.
- [gh-119727](https://python-all.ru/3/whatsnew/changelog.html): Добавлена опция командной строки `--single-process` в тестовый раннер Python (regrtest). Патч от Victor Stinner.
- [gh-119273](https://python-all.ru/3/whatsnew/changelog.html): Тестовый раннер Python больше не запускает тесты, использующие TTY (например, test\_ioctl), в группе процессов (с помощью `setsid()`). Раньше такие тесты пропускались. Патч от Victor Stinner.
- [gh-119050](https://python-all.ru/3/whatsnew/changelog.html): Тестовый раннер regrtest: добавлена поддержка XML в проверку утечек рефлексов (опция -R). Патч от Victor Stinner.
- [gh-101525](https://python-all.ru/3/whatsnew/changelog.html): Пропускается `test_gdb`, если двоичный файл перемещён с помощью BOLT. Патч от Donghee Na.
- [gh-107562](https://python-all.ru/3/whatsnew/changelog.html): Тестовые сертификаты обновлены: срок их действия теперь истекает в далёком будущем. Это позволяет тестировать Y2038 с системным временем, установленным после этой даты, чтобы настоящие проблемы Y2038 могли проявиться, а не маскироваться ошибками истекших сертификатов.

### Безопасность

- [gh-125140](https://python-all.ru/3/whatsnew/changelog.html): Удалена текущая директория из `sys.path` при использовании PyREPL.
- [gh-123678](https://python-all.ru/3/whatsnew/changelog.html): Обновление libexpat до версии 2.6.3
- [gh-112301](https://python-all.ru/3/whatsnew/changelog.html): Включены опции компилятора, предупреждающие о потенциальных уязвимостях безопасности.
- [gh-122792](https://python-all.ru/3/whatsnew/changelog.html): Изменено поведение IPv4-mapped `ipaddress.IPv6Address` – теперь для определения свойств последовательно используется значение отображённого IPv4-адреса. Свойства, поведение которых было исправлено: `is_multicast`, `is_reserved`, `is_link_local`, `is_global` и `is_unspecified`.
- [gh-112301](https://python-all.ru/3/whatsnew/changelog.html): Добавлена возможность игнорировать предупреждения для отдельных файлов с подсчётом предупреждений в инструментарии проверки предупреждений. Патч от Nate Ohlson.
- [gh-112301](https://python-all.ru/3/whatsnew/changelog.html): Добавлена возможность отслеживания предупреждений для macOS в инструментарий проверки предупреждений. Патч от Nate Ohlson.
- [gh-122133](https://python-all.ru/3/whatsnew/changelog.html): Выполняется аутентификация сокетного соединения для запасного варианта `socket.socketpair()` на платформах, где недоступен `AF_UNIX`, например на Windows.

  Патч от Gregory P. Smith \<[greg@krypto.org](https://python-all.ru/3/whatsnew/changelog.html)\> и Seth Larson \<[seth@python.org](https://python-all.ru/3/whatsnew/changelog.html)\>. Сообщено Ellie \<[el@horse64.org](https://python-all.ru/3/whatsnew/changelog.html)\>
- [gh-121957](https://python-all.ru/3/whatsnew/changelog.html): Исправлены отсутствовавшие события аудита при интерактивном использовании Python; теперь они корректно срабатывают также для `python -i` и для `python -m asyncio`. Соответствующие события: `cpython.run_stdin` и `cpython.run_startup`.
- [gh-112301](https://python-all.ru/3/whatsnew/changelog.html): Включены средства защиты времени выполнения для glibc, прерывающие выполнение при обнаружении небезопасного поведения, на всех платформах, кроме Windows.
- [gh-121285](https://python-all.ru/3/whatsnew/changelog.html): Удалён возврат (backtracking) при разборе заголовков tarfile для `hdrcharset`, PAX и GNU sparse-заголовков.
- [gh-112301](https://python-all.ru/3/whatsnew/changelog.html): Добавлены опции компилятора по умолчанию для повышения безопасности. Включены -Wimplicit-fallthrough, -fstack-protector-strong, -Wtrampolines.
- [gh-118773](https://python-all.ru/3/whatsnew/changelog.html): Исправлено создание ACL в [`os.mkdir()`](https://python-all.ru/3/library/os.html#os.mkdir) на Windows для корректной работы на машинах с неанглийской локалью.
- [gh-118486](https://python-all.ru/3/whatsnew/changelog.html): [`os.mkdir()`](https://python-all.ru/3/library/os.html#os.mkdir) в Windows теперь принимает *режим* `0o700`, чтобы ограничить новую директорию только текущим пользователем. Это исправляет [**CVE 2024-4030**](https://python-all.ru/3/whatsnew/changelog.html), затрагивающий [`tempfile.mkdtemp()`](https://python-all.ru/3/library/tempfile.html#tempfile.mkdtemp) в сценариях, где базовая временная директория имеет более разрешительные права, чем по умолчанию.

### Библиотеки

- [gh-125422](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка, при которой [`pdb`](https://python-all.ru/3/library/pdb.html#module-pdb) и [`bdb`](https://python-all.ru/3/library/bdb.html#module-bdb) могли переходить в нижний кадр вызывающего кода.
- [gh-100141](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка, при которой [`pdb`](https://python-all.ru/3/library/pdb.html#module-pdb) зависал в бесконечном цикле при отладке пустого файла.
- [gh-53203](https://python-all.ru/3/whatsnew/changelog.html): Исправлен [`time.strptime()`](https://python-all.ru/3/library/time.html#time.strptime) для форматов `%c`, `%x` и `%X` во многих локалях, использующих не ASCII-цифры, например персидской, бирманской, одия и шан.
- [gh-125206](https://python-all.ru/3/whatsnew/changelog.html): Добавлен обходной путь для старых версий libffi. Модуль ctypes поддерживает double complex только с libffi \>= 3.3.0. Патч от Mikhail Efimov.
- [gh-89967](https://python-all.ru/3/whatsnew/changelog.html): Сделаны [`WeakKeyDictionary`](https://python-all.ru/3/library/weakref.html#weakref.WeakKeyDictionary) и [`WeakValueDictionary`](https://python-all.ru/3/library/weakref.html#weakref.WeakValueDictionary) безопасными относительно конкурентных изменений из других потоков. Патч от Kumar Aditya.
- [gh-125260](https://python-all.ru/3/whatsnew/changelog.html): Параметр *mtime* в [`gzip.compress()`](https://python-all.ru/3/library/gzip.html#gzip.compress) теперь по умолчанию равен 0 для воспроизводимого вывода. Патч от Bernhard M. Wiedemann и Adam Turner.
- [gh-125243](https://python-all.ru/3/whatsnew/changelog.html): Исправлено состояние гонки при создании объектов [`zoneinfo.ZoneInfo`](https://python-all.ru/3/library/zoneinfo.html#zoneinfo.ZoneInfo) в сборке со свободной многопоточностью (free threading).
- [gh-125254](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка, из-за которой ArgumentError включал неправильную неоднозначную опцию в [`argparse`](https://python-all.ru/3/library/argparse.html#module-argparse).
- [gh-125235](https://python-all.ru/3/whatsnew/changelog.html): Сохранить пути [`tkinter`](https://python-all.ru/3/library/tkinter.html#module-tkinter) TCL в venv, указывающие на базовую установку на Windows.
- [gh-61011](https://python-all.ru/3/whatsnew/changelog.html): Исправлено наследование вложенных взаимоисключающих групп от родительского парсера в [`argparse.ArgumentParser`](https://python-all.ru/3/library/argparse.html#argparse.ArgumentParser). Ранее все вложенные взаимоисключающие группы теряли связь с содержащей их группой и отображались как принадлежащие непосредственно парсеру.
- [gh-125118](https://python-all.ru/3/whatsnew/changelog.html): Не копировать произвольные значения в \_Bool в модуле [`struct`](https://python-all.ru/3/library/struct.html#module-struct).
- [gh-125069](https://python-all.ru/3/whatsnew/changelog.html): Исправлена проблема, при которой передача объекта [`pathlib.PurePath`](https://python-all.ru/3/library/pathlib.html#pathlib.PurePath) в качестве аргумента инициализатора второму объекту `PurePath` с другим [`parser`](https://python-all.ru/3/library/pathlib.html#pathlib.PurePath.parser) приводила к тому, что аргументы инициализатора первого объекта объединялись парсером второго объекта.
- [gh-125096](https://python-all.ru/3/whatsnew/changelog.html): Если установлена переменная окружения [`PYTHON_BASIC_REPL`](https://python-all.ru/3/using/cmdline.html#envvar-PYTHON_BASIC_REPL), модуль [`site`](https://python-all.ru/3/library/site.html#module-site) больше не импортирует модуль `_pyrepl`. Кроме того, модуль `site` теперь учитывает параметры командной строки [`-E`](https://python-all.ru/3/using/cmdline.html#cmdoption-E) и [`-I`](https://python-all.ru/3/using/cmdline.html#cmdoption-I): в этом случае игнорируются `PYTHON_BASIC_REPL`. Патч от Victor Stinner.
- [gh-124969](https://python-all.ru/3/whatsnew/changelog.html): Исправлена `locale.nl_langinfo(locale.ALT_DIGITS)`. Теперь она возвращает кортеж из не более чем 100 строк (пустой кортеж в большинстве локалей). Ранее она возвращала первый элемент этого кортежа или пустую строку.
- [gh-124960](https://python-all.ru/3/whatsnew/changelog.html): Исправлена поддержка флага будущего `barry_as_FLUFL` в новом REPL.
- [gh-69998](https://python-all.ru/3/whatsnew/changelog.html): Исправлена [`locale.nl_langinfo()`](https://python-all.ru/3/library/locale.html#locale.nl_langinfo) в случае, когда разные категории имеют разные локали. Теперь функция временно устанавливает локаль `LC_CTYPE` в некоторых случаях. Это временное изменение влияет на другие потоки.
- [gh-124958](https://python-all.ru/3/whatsnew/changelog.html): Исправлены циклические ссылки в исключениях, возбуждаемых из [`asyncio.TaskGroup`](https://python-all.ru/3/library/asyncio-task.html#asyncio.TaskGroup) и реализации Python для [`asyncio.Future`](https://python-all.ru/3/library/asyncio-future.html#asyncio.Future)
- [gh-53203](https://python-all.ru/3/whatsnew/changelog.html): Исправлена [`time.strptime()`](https://python-all.ru/3/library/time.html#time.strptime) для форматов `%c` и `%x` во многих локалях: арабский, бислама, бретонский, бодо, кашубский, чувашский, эстонский, французский, ирландский, геэз, гуджарати, мэнский гэльский, иврит, хинди, чхаттисгархи, гаитянский креольский, японский, каннада, корейский, маратхи, малайский, норвежский, нюнорск, панджаби, раджастхани, ток-писин, йоруба, кантонский китайский, яу/нунгон и китайский.
- [gh-123961](https://python-all.ru/3/whatsnew/changelog.html): Преобразовать [`curses`](https://python-all.ru/3/library/curses.html#module-curses) в многофазную инициализацию ([**PEP 489**](https://python-all.ru/3/whatsnew/changelog.html)), тем самым исправив утечки ссылок при завершении интерпретатора. Патч от Bénédikt Tran.
- [gh-124944](https://python-all.ru/3/whatsnew/changelog.html): Добавить `SO_ORIGINAL_DST` в модуль [`socket`](https://python-all.ru/3/library/socket.html#module-socket).
- [gh-117151](https://python-all.ru/3/whatsnew/changelog.html): Размер буфера по умолчанию, используемый [`shutil.copyfileobj()`](https://python-all.ru/3/library/shutil.html#shutil.copyfileobj), увеличен с 64k до 256k на платформах, отличных от Windows. На Windows он уже был больше.
- [gh-90102](https://python-all.ru/3/whatsnew/changelog.html): Пропускать системный вызов `isatty` во время open(), когда файл заведомо не является символьным устройством. Это дает небольшое улучшение производительности при чтении целых файлов.
- [gh-124917](https://python-all.ru/3/whatsnew/changelog.html): Разрешить вызов [`os.path.exists()`](https://python-all.ru/3/library/os.path.html#os.path.exists) и [`os.path.lexists()`](https://python-all.ru/3/library/os.path.html#os.path.lexists) с именованными аргументами в Windows. Исправляет регрессию в 3.13.0.
- [gh-65865](https://python-all.ru/3/whatsnew/changelog.html): [`argparse`](https://python-all.ru/3/library/argparse.html#module-argparse) теперь вызывает раннюю ошибку при недопустимых `help` аргументах для [`add_argument()`](https://python-all.ru/3/library/argparse.html#argparse.ArgumentParser.add_argument), [`add_subparsers()`](https://python-all.ru/3/library/argparse.html#argparse.ArgumentParser.add_subparsers) и `add_parser()`.
- [gh-124653](https://python-all.ru/3/whatsnew/changelog.html): Исправлено обнаружение минимального API очереди, необходимого модулю [`logging`](https://python-all.ru/3/library/logging.html#module-logging). Патч от Bénédikt Tran.
- [gh-91818](https://python-all.ru/3/whatsnew/changelog.html): CLI многих модулей ([`ast`](https://python-all.ru/3/library/ast.html#module-ast), [`ensurepip`](https://python-all.ru/3/library/ensurepip.html#module-ensurepip), [`json`](https://python-all.ru/3/library/json.html#module-json), [`pdb`](https://python-all.ru/3/library/pdb.html#module-pdb), [`sqlite3`](https://python-all.ru/3/library/sqlite3.html#module-sqlite3), [`tokenize`](https://python-all.ru/3/library/tokenize.html#module-tokenize), [`venv`](https://python-all.ru/3/library/venv.html#module-venv)) теперь использует фактическое имя исполняемого файла вместо просто «python» для отображения в сообщении об использовании.
- [gh-124858](https://python-all.ru/3/whatsnew/changelog.html): Исправлены циклические ссылки, оставшиеся в трассировках в [`asyncio.open_connection()`](https://python-all.ru/3/library/asyncio-stream.html#asyncio.open_connection) при использовании с `happy_eyeballs_delay`
- [gh-124390](https://python-all.ru/3/whatsnew/changelog.html): Исправлена [`AssertionError`](https://python-all.ru/3/library/exceptions.html#AssertionError) при использовании `asyncio.staggered.staggered_race()` с [`asyncio.eager_task_factory`](https://python-all.ru/3/library/asyncio-task.html#asyncio.eager_task_factory).
- [gh-85935](https://python-all.ru/3/whatsnew/changelog.html): [`argparse.ArgumentParser.add_argument()`](https://python-all.ru/3/library/argparse.html#argparse.ArgumentParser.add_argument) теперь вызывает исключение, если для позиционных аргументов указано [action](https://python-all.ru/3/library/argparse.html#action), которое не потребляет аргументы (например, ‘store\_const’ или ‘store\_true’), или явный `nargs=0`.
- [gh-124835](https://python-all.ru/3/whatsnew/changelog.html): Заставить [`tomllib.loads()`](https://python-all.ru/3/library/tomllib.html#tomllib.loads) возбуждать [`TypeError`](https://python-all.ru/3/library/exceptions.html#TypeError), а не [`AttributeError`](https://python-all.ru/3/library/exceptions.html#AttributeError) при неверных типах ввода, у которых нет атрибута `replace`. Улучшено сообщение об ошибке при получении [`bytes`](https://python-all.ru/3/library/stdtypes.html#bytes).
- [gh-124693](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка, из-за которой [`argparse`](https://python-all.ru/3/library/argparse.html#module-argparse) не распознает отрицательные комплексные числа или отрицательные числа в экспоненциальной записи.
- [gh-124787](https://python-all.ru/3/whatsnew/changelog.html): Исправлена [`typing.TypeAliasType`](https://python-all.ru/3/library/typing.html#typing.TypeAliasType) с некорректным аргументом `type_params`. Теперь она возбуждает [`TypeError`](https://python-all.ru/3/library/exceptions.html#TypeError), когда параметр типа без значения по умолчанию следует за параметром со значением, и когда запись в кортеже `type_params` не является объектом параметра типа.
- [gh-66436](https://python-all.ru/3/whatsnew/changelog.html): Улучшено значение по умолчанию [prog](https://python-all.ru/3/library/argparse.html#prog) для [`argparse.ArgumentParser`](https://python-all.ru/3/library/argparse.html#argparse.ArgumentParser). Теперь оно будет включать имя исполняемого файла Python вместе с именем модуля или пакета, или путь к каталогу, ZIP-файлу или каталогу внутри ZIP-файла, если код был запущен таким образом.
- [gh-116850](https://python-all.ru/3/whatsnew/changelog.html): Исправлена [`argparse`](https://python-all.ru/3/library/argparse.html#module-argparse) для пространств имён с не напрямую записываемым словарём (например, классы).
- [gh-101552](https://python-all.ru/3/whatsnew/changelog.html): Добавить параметр *annoation\_format* в [`inspect.signature()`](https://python-all.ru/3/library/inspect.html#inspect.signature). Добавить параметр *quote\_annotation\_strings* в [`inspect.Signature.format()`](https://python-all.ru/3/library/inspect.html#inspect.Signature.format). Использовать новую функциональность для улучшения отображения аннотаций в сигнатурах в [`pydoc`](https://python-all.ru/3/library/pydoc.html#module-pydoc). Патч от Jelle Zijlstra.
- [gh-58573](https://python-all.ru/3/whatsnew/changelog.html): Исправлены конфликты между сокращёнными длинными опциями в родительском парсере и подпарсерах в [`argparse`](https://python-all.ru/3/library/argparse.html#module-argparse).
- [gh-124594](https://python-all.ru/3/whatsnew/changelog.html): Все приглашения REPL [`asyncio`](https://python-all.ru/3/library/asyncio.html#module-asyncio) выполняются в одном [`context`](https://python-all.ru/3/library/contextvars.html#contextvars.Context). Вклад Bartosz Sławecki.
- [gh-61181](https://python-all.ru/3/whatsnew/changelog.html): Исправлена поддержка [choices](https://python-all.ru/3/library/argparse.html#choices) со строковым значением в [`argparse`](https://python-all.ru/3/library/argparse.html#module-argparse). Подстроки указанной строки больше не считаются допустимыми значениями.
- [gh-116750](https://python-all.ru/3/whatsnew/changelog.html): Добавлен [`sys.monitoring.clear_tool_id()`](https://python-all.ru/3/library/sys.monitoring.html#sys.monitoring.clear_tool_id) для отмены регистрации всех событий и колбэков, установленных инструментом.
- [gh-124552](https://python-all.ru/3/whatsnew/changelog.html): Улучшена точность проверки [`bdb`](https://python-all.ru/3/library/bdb.html#module-bdb) на возможность точки останова во фрейме. Это позволяет отключать ненужные события в функциях.
- [gh-124538](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка при использовании [`gc.get_referents()`](https://python-all.ru/3/library/gc.html#gc.get_referents) на объекте-капсуле.
- [gh-80259](https://python-all.ru/3/whatsnew/changelog.html): Исправлена поддержка [`argparse`](https://python-all.ru/3/library/argparse.html#module-argparse) позиционных аргументов с `nargs='?'`, `default=argparse.SUPPRESS` и указанным `type`.
- [gh-120378](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка, связанная с целочисленным переполнением в [`curses.resizeterm()`](https://python-all.ru/3/library/curses.html#curses.resizeterm) и [`curses.resize_term()`](https://python-all.ru/3/library/curses.html#curses.resize_term).
- [gh-124498](https://python-all.ru/3/whatsnew/changelog.html): Исправлено, чтобы [`typing.TypeAliasType`](https://python-all.ru/3/library/typing.html#typing.TypeAliasType) не был обобщённым, когда `type_params` – пустой кортеж.
- [gh-53834](https://python-all.ru/3/whatsnew/changelog.html): Исправлена поддержка аргументов с [choices](https://python-all.ru/3/library/argparse.html#choices) в [`argparse`](https://python-all.ru/3/library/argparse.html#module-argparse). Позиционные аргументы с [nargs](https://python-all.ru/3/library/argparse.html#nargs), равным `'?'` или `'*'`, больше не проверяют [default](https://python-all.ru/3/library/argparse.html#default) на соответствие `choices`. Необязательные аргументы с `nargs`, равным `'?'`, больше не проверяют [const](https://python-all.ru/3/library/argparse.html#const) на соответствие `choices`.
- [gh-123884](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка в обработке itertools.tee() других входных данных (tee в tee). Теперь вывод содержит обещанные *n* независимых новых итераторов. Ранее первый итератор был идентичен (не независим) входному итератору. Это иногда приводило к неожиданным результатам.
- [gh-123017](https://python-all.ru/3/whatsnew/changelog.html): Из-за ненадёжных результатов на некоторых устройствах, [`time.strftime()`](https://python-all.ru/3/library/time.html#time.strftime) больше не принимает отрицательные годы на Android.
- [gh-123014](https://python-all.ru/3/whatsnew/changelog.html): [`os.pidfd_open()`](https://python-all.ru/3/library/os.html#os.pidfd_open) и [`signal.pidfd_send_signal()`](https://python-all.ru/3/library/signal.html#signal.pidfd_send_signal) теперь недоступны при сборке для API Android уровней ниже 31, поскольку соответствующие системные вызовы могут вызывать сбой.
- [gh-124176](https://python-all.ru/3/whatsnew/changelog.html): Добавлена поддержка [`dataclasses.dataclass()`](https://python-all.ru/3/library/dataclasses.html#dataclasses.dataclass) в [`unittest.mock.create_autospec()`](https://python-all.ru/3/library/unittest.mock.html#unittest.mock.create_autospec). Теперь `create_autospec` будет проверять на возможные dataclasses и использовать функцию [`dataclasses.fields()`](https://python-all.ru/3/library/dataclasses.html#dataclasses.fields) для получения информации о спецификации.
- [gh-124345](https://python-all.ru/3/whatsnew/changelog.html): [`argparse`](https://python-all.ru/3/library/argparse.html#module-argparse) поддерживает сокращённые однодефисные длинные опции, отделённые от значения символом `=`.
- [gh-124400](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка в [`pdb`](https://python-all.ru/3/library/pdb.html#module-pdb), когда `until` не действует, если он находится в последовательности `commands`. Также устранён вывод информации о фрейме в точке останова, имеющей список команд, содержащий команду, возобновляющую выполнение.
- [gh-90562](https://python-all.ru/3/whatsnew/changelog.html): Изменены dataclasses для поддержки super() без аргументов, если указан `slots=True`. Это работает путём изменения всех ссылок на `__class__`, чтобы они указывали на вновь созданный класс.
- [gh-104860](https://python-all.ru/3/whatsnew/changelog.html): Исправлено запрещение сокращения однодефисных длинных опций в [`argparse`](https://python-all.ru/3/library/argparse.html#module-argparse) с помощью `allow_abbrev=False`.
- [gh-63143](https://python-all.ru/3/whatsnew/changelog.html): Исправлен разбор взаимоисключающих аргументов в [`argparse`](https://python-all.ru/3/library/argparse.html#module-argparse). Аргументы со значением, идентичным значению по умолчанию (например, логические значения, малые целые числа, пустые строки или строки из одного символа), больше не считаются «отсутствующими».
- [gh-72795](https://python-all.ru/3/whatsnew/changelog.html): Позиционные аргументы с [nargs](https://python-all.ru/3/library/argparse.html#nargs), равным `'*'` или `argparse.REMAINDER`, больше не являются обязательными. Это позволяет использовать позиционный аргумент с `nargs='*'` и без `default` во взаимоисключающей группе и улучшает сообщение об ошибке об обязательных аргументах.
- [gh-59317](https://python-all.ru/3/whatsnew/changelog.html): Исправлен разбор позиционного аргумента с [nargs](https://python-all.ru/3/library/argparse.html#nargs), равным `'?'` или `'*'`, если ему предшествуют опция и другой позиционный аргумент.
- [gh-100980](https://python-all.ru/3/whatsnew/changelog.html): Атрибут [`_fields_`](https://python-all.ru/3/library/ctypes.html#ctypes.Structure._fields_) объектов [`ctypes.Structure`](https://python-all.ru/3/library/ctypes.html#ctypes.Structure) и [`Union`](https://python-all.ru/3/library/ctypes.html#ctypes.Union) больше не устанавливается, если операция setattr вызывает ошибку.
- [gh-53780](https://python-all.ru/3/whatsnew/changelog.html): [`argparse`](https://python-all.ru/3/library/argparse.html#module-argparse) теперь игнорирует первый `"--"` (двойной дефис) между опцией и командой.
- [gh-124217](https://python-all.ru/3/whatsnew/changelog.html): Добавлен зарезервированный блок IPv6 `3fff::/20` по RFC 9637 в модуль [`ipaddress`](https://python-all.ru/3/library/ipaddress.html#module-ipaddress).
- [gh-111513](https://python-all.ru/3/whatsnew/changelog.html): Улучшено сообщение об ошибке, которое может быть вызвано функцией [`datetime.date.fromtimestamp()`](https://python-all.ru/3/library/datetime.html#datetime.date.fromtimestamp).
- [gh-124248](https://python-all.ru/3/whatsnew/changelog.html): Исправлена потенциальная ошибка при использовании [`struct`](https://python-all.ru/3/library/struct.html#module-struct) для обработки полей нулевой ширины в стиле «Pascal-строк» (`0p`).
- [gh-81691](https://python-all.ru/3/whatsnew/changelog.html): Исправлена обработка нескольких `"--"` (двойных дефисов) в [`argparse`](https://python-all.ru/3/library/argparse.html#module-argparse). Теперь удаляется только первый, все последующие воспринимаются буквально.
- [gh-87041](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка в [`argparse`](https://python-all.ru/3/library/argparse.html#module-argparse), при которой длинная справка по аргументам подпарсера неправильно выравнивалась.
- [gh-84559](https://python-all.ru/3/whatsnew/changelog.html): Метод запуска [`multiprocessing`](https://python-all.ru/3/library/multiprocessing.html#module-multiprocessing) по умолчанию на Linux и других POSIX-системах изменён с часто небезопасного `"fork"` на `"forkserver"` (когда платформа поддерживает передачу файловых дескрипторов через каналы, как большинство) или на `"spawn"`. Mac и Windows не изменились, так как они уже по умолчанию используют `"spawn"`.
- [gh-124212](https://python-all.ru/3/whatsnew/changelog.html): Исправлена некорректная переменная в обработке [`venv`](https://python-all.ru/3/library/venv.html#module-venv) неудачной символической ссылки на Windows
- [gh-124171](https://python-all.ru/3/whatsnew/changelog.html): Добавлен обходной путь для некорректных реализаций `fmod()` на Windows, которые теряют знак нуля (например, `fmod(-10, 1)` возвращает `0.0`). Патч от Sergey B Kirpichev.
- [gh-123978](https://python-all.ru/3/whatsnew/changelog.html): Удалены неработающие [`time.thread_time()`](https://python-all.ru/3/library/time.html#time.thread_time) и [`time.thread_time_ns()`](https://python-all.ru/3/library/time.html#time.thread_time_ns) на NetBSD.
- [gh-123934](https://python-all.ru/3/whatsnew/changelog.html): Исправлен [`unittest.mock.MagicMock`](https://python-all.ru/3/library/unittest.mock.html#unittest.mock.MagicMock), сбрасывающий возвращаемые значения магических методов после вызова `.reset_mock(return_value=True)`.
- [gh-124016](https://python-all.ru/3/whatsnew/changelog.html): Обновлена база данных [`unicodedata`](https://python-all.ru/3/library/unicodedata.html#module-unicodedata) до Unicode 16.0.0.
- [gh-123968](https://python-all.ru/3/whatsnew/changelog.html): Исправлен интерфейс командной строки для модуля [`random`](https://python-all.ru/3/library/random.html#module-random), чтобы выбирать числа с плавающей точкой между 0 и N, а не между 1 и N.
- [gh-123945](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка, при которой [`argparse`](https://python-all.ru/3/library/argparse.html#module-argparse) не распознаёт отрицательные числа с подчёркиваниями
- [gh-123935](https://python-all.ru/3/whatsnew/changelog.html): Исправлено обнаружение родительских слотов для dataclasses, наследующих от классов с `__dictoffset__`.
- [gh-123892](https://python-all.ru/3/whatsnew/changelog.html): Добавлен `"_wmi"` в [`sys.stdlib_module_names`](https://python-all.ru/3/library/sys.html#sys.stdlib_module_names). Патч предоставлен Victor Stinner.
- [gh-84808](https://python-all.ru/3/whatsnew/changelog.html): Исправлена обработка ошибок в методе [`socket`](https://python-all.ru/3/library/socket.html#socket.socket) [`connect_ex()`](https://python-all.ru/3/library/socket.html#socket.socket.connect_ex) на платформах, где `errno` может быть отрицательным.
- [gh-123756](https://python-all.ru/3/whatsnew/changelog.html): Добавлен новый аргумент `mode` в [`pdb.Pdb`](https://python-all.ru/3/library/pdb.html#pdb.Pdb). Разрешено использовать [`pdb`](https://python-all.ru/3/library/pdb.html#module-pdb) из командной строки только для команды `restart`.
- [gh-122765](https://python-all.ru/3/whatsnew/changelog.html): Исправлены ошибки несбалансированных кавычек, возникавшие при загрузке activate.csh из [`venv`](https://python-all.ru/3/library/venv.html#module-venv) с пользовательским приглашением, содержащим непарные кавычки или символы новой строки.
- [gh-123657](https://python-all.ru/3/whatsnew/changelog.html): Исправлены крах и утечка памяти в [`decimal.getcontext()`](https://python-all.ru/3/library/decimal.html#decimal.getcontext). Крах происходил при использовании потоко-локального контекста через `--with-decimal-contextvar=no`.
- [gh-123339](https://python-all.ru/3/whatsnew/changelog.html): Исправлен [`inspect.getsource()`](https://python-all.ru/3/library/inspect.html#inspect.getsource) для классов в модулях [`collections.abc`](https://python-all.ru/3/library/collections.abc.html#module-collections.abc) и [`decimal`](https://python-all.ru/3/library/decimal.html#module-decimal) (для реализации на чистом Python). Теперь [`inspect.getcomments()`](https://python-all.ru/3/library/inspect.html#inspect.getcomments) вызывает OSError вместо IndexError, если значение `__firstlineno__` для класса выходит за пределы.
- [gh-123374](https://python-all.ru/3/whatsnew/changelog.html): Удалена проверка на переопределённую запись memo в [`pickletools.dis()`](https://python-all.ru/3/library/pickletools.html#pickletools.dis).
- [gh-123504](https://python-all.ru/3/whatsnew/changelog.html): Исправлена утечка ссылок при финализации [`tkinter`](https://python-all.ru/3/library/tkinter.html#module-tkinter).
- [gh-123430](https://python-all.ru/3/whatsnew/changelog.html): Страницы, сгенерированные модулем [`http.server`](https://python-all.ru/3/library/http.server.html#module-http.server), позволяют браузеру применять свой стандартный тёмный режим.
- [gh-123446](https://python-all.ru/3/whatsnew/changelog.html): Исправлено пустое имя функции в [`TypeError`](https://python-all.ru/3/library/exceptions.html#TypeError), когда [`csv.reader()`](https://python-all.ru/3/library/csv.html#csv.reader), [`csv.writer()`](https://python-all.ru/3/library/csv.html#csv.writer) или [`csv.register_dialect()`](https://python-all.ru/3/library/csv.html#csv.register_dialect) используются без обязательных аргументов.
- [gh-123448](https://python-all.ru/3/whatsnew/changelog.html): Исправлена утечка памяти [`typing.NoDefault`](https://python-all.ru/3/library/typing.html#typing.NoDefault) путём перемещения его в статический массив типов.
- [gh-123409](https://python-all.ru/3/whatsnew/changelog.html): Исправлен вывод [`ipaddress.IPv6Address.reverse_pointer`](https://python-all.ru/3/library/ipaddress.html#ipaddress.IPv6Address.reverse_pointer) в соответствии с [**RFC 3596, §2.5**](https://python-all.ru/3/whatsnew/changelog.html). Патч предоставлен Bénédikt Tran.
- [gh-123089](https://python-all.ru/3/whatsnew/changelog.html): Сделано [`weakref.WeakSet`](https://python-all.ru/3/library/weakref.html#weakref.WeakSet) безопасным при одновременных изменениях во время итерации. Патч предоставлен Kumar Aditya.
- [gh-123363](https://python-all.ru/3/whatsnew/changelog.html): Отображение строкового значения операнда [`CONTAINS_OP`](https://python-all.ru/3/library/dis.html#opcode-CONTAINS_OP) в выводе [`dis`](https://python-all.ru/3/library/dis.html#module-dis). Патч предоставлен Alexandr153.
- [gh-123341](https://python-all.ru/3/whatsnew/changelog.html): Добавлен [`__class_getitem__()`](https://python-all.ru/3/reference/datamodel.html#object.__class_getitem__) в `tkinter.Event` для поддержки индексации типов во время выполнения. Патч предоставлен Adonis Rakateli.
- [gh-123340](https://python-all.ru/3/whatsnew/changelog.html): Отображение строкового значения операнда [`IS_OP`](https://python-all.ru/3/library/dis.html#opcode-IS_OP) в выводе [`dis`](https://python-all.ru/3/library/dis.html#module-dis).
- [gh-119518](https://python-all.ru/3/whatsnew/changelog.html): Ускорена нормализация объектов [`pathlib.PurePath`](https://python-all.ru/3/library/pathlib.html#pathlib.PurePath) и [`Path`](https://python-all.ru/3/library/pathlib.html#pathlib.Path) за счёт отказа от интернирования строковых частей.
- [gh-123270](https://python-all.ru/3/whatsnew/changelog.html): Применено более точечное исправление для повреждённых полезных нагрузок в [`zipfile.Path`](https://python-all.ru/3/library/zipfile.html#zipfile.Path), вызывавших бесконечные циклы ([gh-122905](https://python-all.ru/3/whatsnew/changelog.html)), без нарушения содержимого, использующего допустимые символы.
- [gh-73991](https://python-all.ru/3/whatsnew/changelog.html): Добавлены [`pathlib.Path.copy_into()`](https://python-all.ru/3/library/pathlib.html#pathlib.Path.copy_into) и [`move_into()`](https://python-all.ru/3/library/pathlib.html#pathlib.Path.move_into), которые копируют и перемещают файлы и каталоги в *существующие* каталоги.
- [gh-123228](https://python-all.ru/3/whatsnew/changelog.html): Исправлен возвращаемый тип для `_pyrepl.readline._ReadlineWrapper.get_line_buffer()` на [`str()`](https://python-all.ru/3/library/stdtypes.html#str). Патч предоставлен Sergey B Kirpichev.
- [gh-123240](https://python-all.ru/3/whatsnew/changelog.html): Теперь для [`input()`](https://python-all.ru/3/library/functions.html#input) в новом REPL поднимаются события аудита.
- [gh-76960](https://python-all.ru/3/whatsnew/changelog.html): Исправлены [`urllib.parse.urljoin()`](https://python-all.ru/3/library/urllib.parse.html#urllib.parse.urljoin) и [`urllib.parse.urldefrag()`](https://python-all.ru/3/library/urllib.parse.html#urllib.parse.urldefrag) для URI, содержащих пустые компоненты. Например, `urljoin()` с относительной ссылкой «?» теперь устанавливает пустой запрос и удаляет фрагмент. Сохранение пустых компонентов (authority, params, query, fragment) в `urljoin()`. Сохранение пустых компонентов (authority, params, query) в `urldefrag()`.
- [gh-116810](https://python-all.ru/3/whatsnew/changelog.html): Устранена утечка памяти, появившаяся в [`ssl`](https://python-all.ru/3/library/ssl.html#module-ssl) CPython 3.10 при обращении к свойству [`ssl.SSLSocket.session`](https://python-all.ru/3/library/ssl.html#ssl.SSLSocket.session). Ускоряет чтение и запись этого свойства за счёт отказа от ненужного клонирования объектов сеанса через сериализацию.
- [gh-123243](https://python-all.ru/3/whatsnew/changelog.html): Исправлена утечка памяти в `_decimal`.
- [gh-122546](https://python-all.ru/3/whatsnew/changelog.html): Теперь в новом repl для разных исключений последовательно используется одно и то же имя файла. Патч предоставлен Sergey B Kirpichev.
- [gh-123213](https://python-all.ru/3/whatsnew/changelog.html): Присваивание [`xml.etree.ElementTree.Element.extend()`](https://python-all.ru/3/library/xml.etree.elementtree.html#xml.etree.ElementTree.Element.extend) и [`Element`](https://python-all.ru/3/library/xml.etree.elementtree.html#xml.etree.ElementTree.Element) больше не скрывает внутреннее исключение, если передан ошибочный генератор. Патч предоставлен Bar Harel.
- [gh-85110](https://python-all.ru/3/whatsnew/changelog.html): Сохранение относительного пути в URL без netloc в [`urllib.parse.urlunsplit()`](https://python-all.ru/3/library/urllib.parse.html#urllib.parse.urlunsplit) и [`urllib.parse.urlunparse()`](https://python-all.ru/3/library/urllib.parse.html#urllib.parse.urlunparse).
- [gh-123165](https://python-all.ru/3/whatsnew/changelog.html): Добавлена поддержка отрисовки [`Positions`](https://python-all.ru/3/library/dis.html#dis.Positions) в [`dis`](https://python-all.ru/3/library/dis.html#module-dis).
- [gh-122909](https://python-all.ru/3/whatsnew/changelog.html): В urllib.request при возникновении URLError при открытии ftp URL аргумент исключения теперь всегда является строкой. В более ранних версиях в качестве аргумента URLError передавалась либо строка, либо экземпляр исключения ftplib.
- [gh-123084](https://python-all.ru/3/whatsnew/changelog.html): `shutil.ExecError` объявлен устаревшим; он не вызывался ни одной функцией [`shutil`](https://python-all.ru/3/library/shutil.html#module-shutil) начиная с Python 3.4. Теперь это псевдоним [`RuntimeError`](https://python-all.ru/3/library/exceptions.html#RuntimeError).
- [gh-123085](https://python-all.ru/3/whatsnew/changelog.html): При простом вызове [`importlib.resources.files()`](https://python-all.ru/3/library/importlib.resources.html#importlib.resources.files) обеспечено корректное определение кадра вызывающего кода, когда сам `importlib.resources` доступен только как скомпилированный модуль (без исходного кода).
- [gh-123067](https://python-all.ru/3/whatsnew/changelog.html): Исправлена квадратичная сложность при разборе `"`-quoted значений cookie с обратными слешами через [`http.cookies`](https://python-all.ru/3/library/http.cookies.html#module-http.cookies).
- [gh-123049](https://python-all.ru/3/whatsnew/changelog.html): Добавлена поддержка [`UNNAMED_SECTION`](https://python-all.ru/3/library/configparser.html#configparser.UNNAMED_SECTION) в [`configparser.ConfigParser.add_section()`](https://python-all.ru/3/library/configparser.html#configparser.ConfigParser.add_section).
- [gh-121735](https://python-all.ru/3/whatsnew/changelog.html): При работе с ZIP-архивами importlib.resources теперь корректно учитывает ссылки, смежные с модулем (например, `files(pkg.mod)`, а не только `files(pkg)`).
- [gh-122981](https://python-all.ru/3/whatsnew/changelog.html): Исправлен [`inspect.getsource()`](https://python-all.ru/3/library/inspect.html#inspect.getsource) для сгенерированных классов с базовыми классами Python (например, перечислений).
- [gh-122903](https://python-all.ru/3/whatsnew/changelog.html): `zipfile.Path.glob` теперь корректно сопоставляет каталоги, а не молча пропускает их.
- [gh-122905](https://python-all.ru/3/whatsnew/changelog.html): Объекты [`zipfile.Path`](https://python-all.ru/3/library/zipfile.html#zipfile.Path) теперь очищают имена из ZIP-файла.
- [gh-122873](https://python-all.ru/3/whatsnew/changelog.html): Модуль [`json`](https://python-all.ru/3/library/json.html#module-json) теперь можно запускать как скрипт с помощью ключа [`-m`](https://python-all.ru/3/using/cmdline.html#cmdoption-m): `python -m json`. См. документацию [интерфейса командной строки JSON](https://python-all.ru/3/library/json.html#json-commandline). Исправление от Trey Hunner.
- [gh-122858](https://python-all.ru/3/whatsnew/changelog.html): `asyncio.iscoroutinefunction()` объявлен устаревшим в пользу [`inspect.iscoroutinefunction()`](https://python-all.ru/3/library/inspect.html#inspect.iscoroutinefunction).
- [gh-116263](https://python-all.ru/3/whatsnew/changelog.html): [`logging.handlers.RotatingFileHandler`](https://python-all.ru/3/library/logging.handlers.html#logging.handlers.RotatingFileHandler) больше не выполняет прокрутку пустых файлов журнала.
- [gh-105376](https://python-all.ru/3/whatsnew/changelog.html): Восстановлен устаревший метод [`logging`](https://python-all.ru/3/library/logging.html#module-logging) `warn()`. Он был удалён в Python 3.13 alpha 1. Устаревший метод `warn()` оставлен в Python 3.13. Исправление от Victor Stinner.
- [gh-122311](https://python-all.ru/3/whatsnew/changelog.html): Улучшены сообщения об ошибках в модуле [`pickle`](https://python-all.ru/3/library/pickle.html#module-pickle). Теперь вместо [`UnicodeEncodeError`](https://python-all.ru/3/library/exceptions.html#UnicodeEncodeError), [`ValueError`](https://python-all.ru/3/library/exceptions.html#ValueError) и [`AttributeError`](https://python-all.ru/3/library/exceptions.html#AttributeError) чаще возбуждается [`PicklingError`](https://python-all.ru/3/library/pickle.html#pickle.PicklingError), и к нему прикрепляется исходное исключение. Улучшены и унифицированы сообщения об ошибках в реализациях на Python и C.
- [gh-122744](https://python-all.ru/3/whatsnew/changelog.html): Обновлена версия pip, входящего в состав ensurepip, до версии 24.2.
- [gh-118761](https://python-all.ru/3/whatsnew/changelog.html): Ускорен импорт [`pprint`](https://python-all.ru/3/library/pprint.html#module-pprint) примерно в семь раз. Исправление от Hugo van Kemenade.
- [gh-118974](https://python-all.ru/3/whatsnew/changelog.html): Добавлен параметр `decorator` в [`dataclasses.make_dataclass()`](https://python-all.ru/3/library/dataclasses.html#dataclasses.make_dataclass) для настройки функционального создания dataclass.
- [gh-118814](https://python-all.ru/3/whatsnew/changelog.html): Исправлен конструктор [`typing.TypeVar`](https://python-all.ru/3/library/typing.html#typing.TypeVar), когда имя передаётся ключевым словом.
- [gh-122637](https://python-all.ru/3/whatsnew/changelog.html): Приведены в соответствие `cmath.tanh(nanj)` и `cmath.tanh(infj)` с последними стандартами C.
- [gh-122478](https://python-all.ru/3/whatsnew/changelog.html): Удалены внутренние кадры из traceback, отображаемых в [`code.InteractiveInterpreter`](https://python-all.ru/3/library/code.html#code.InteractiveInterpreter) с нестандартным [`sys.excepthook()`](https://python-all.ru/3/library/sys.html#sys.excepthook). Сохраняются правильные traceback в [`sys.last_traceback`](https://python-all.ru/3/library/sys.html#sys.last_traceback) и обновляется атрибут `__traceback__` у [`sys.last_value`](https://python-all.ru/3/library/sys.html#sys.last_value) и [`sys.last_exc`](https://python-all.ru/3/library/sys.html#sys.last_exc).
- [gh-116622](https://python-all.ru/3/whatsnew/changelog.html): На Android константы `FICLONE` и `FICLONERANGE` больше не предоставляются [`fcntl`](https://python-all.ru/3/library/fcntl.html#module-fcntl), так как эти ioctl блокируются SELinux.
- [gh-82378](https://python-all.ru/3/whatsnew/changelog.html): Обеспечено, чтобы новый [REPL](https://python-all.ru/3/glossary.html#term-REPL) интерпретировал [`sys.tracebacklimit`](https://python-all.ru/3/library/sys.html#sys.tracebacklimit) так же, как это делал классический REPL.
- [gh-122334](https://python-all.ru/3/whatsnew/changelog.html): Исправлен сбой при импорте [`ssl`](https://python-all.ru/3/library/ssl.html#module-ssl) после перезапуска главного интерпретатора.
- [gh-122459](https://python-all.ru/3/whatsnew/changelog.html): Оптимизирован [`pickling`](https://python-all.ru/3/library/pickle.html#module-pickle) для объектов по имени без атрибута `__module__`.
- [gh-87320](https://python-all.ru/3/whatsnew/changelog.html): В [`code.InteractiveInterpreter`](https://python-all.ru/3/library/code.html#code.InteractiveInterpreter) обрабатываются исключения, вызванные вызовом нестандартного [`sys.excepthook()`](https://python-all.ru/3/library/sys.html#sys.excepthook). Раньше исключение всплывало к вызывающей стороне, завершая [REPL](https://python-all.ru/3/glossary.html#term-REPL).
- [gh-122272](https://python-all.ru/3/whatsnew/changelog.html): На некоторых платформах, таких как Linux, год с веком не дополнялся нулями при форматировании [`strftime()`](https://python-all.ru/3/library/datetime.html#datetime.datetime.strftime) с использованием C99-специфичных спецификаторов `'%C'` или `'%F'`. Теперь дополнение нулями гарантируется, если спецификаторы формата `'%C'` и `'%F'` поддерживаются библиотекой C. Исправление от Ben Hsing.
- [gh-122400](https://python-all.ru/3/whatsnew/changelog.html): Обрабатываются [`ValueError`](https://python-all.ru/3/library/exceptions.html#ValueError)s, возбуждаемые [`os.stat()`](https://python-all.ru/3/library/os.html#os.stat) в [`filecmp.dircmp`](https://python-all.ru/3/library/filecmp.html#filecmp.dircmp) и [`filecmp.cmpfiles()`](https://python-all.ru/3/library/filecmp.html#filecmp.cmpfiles). Исправление от Bénédikt Tran.
- [gh-122311](https://python-all.ru/3/whatsnew/changelog.html): Исправлены некоторые сообщения об ошибках в [`pickle`](https://python-all.ru/3/library/pickle.html#module-pickle).
- [gh-121650](https://python-all.ru/3/whatsnew/changelog.html): [`email`](https://python-all.ru/3/library/email.html#module-email) заголовки с внедрёнными символами новой строки теперь заключаются в кавычки при выводе. [`generator`](https://python-all.ru/3/library/email.generator.html#module-email.generator) теперь отказывается сериализовать (записывать) заголовки, которые небезопасно свёрнуты или разделены; см. [`verify_generated_headers`](https://python-all.ru/3/library/email.policy.html#email.policy.Policy.verify_generated_headers). (Авторы: Bas Bloemsaat и Petr Viktorin в [gh-121650](https://python-all.ru/3/whatsnew/changelog.html).)
- [gh-122332](https://python-all.ru/3/whatsnew/changelog.html): Исправлен segfault с [`asyncio.Task.get_coro()`](https://python-all.ru/3/library/asyncio-task.html#asyncio.Task.get_coro) при использовании нетерпеливой фабрики задач.
- [gh-105733](https://python-all.ru/3/whatsnew/changelog.html): [`ctypes.ARRAY()`](https://python-all.ru/3/library/ctypes.html#ctypes.ARRAY) теперь [мягко устарел](https://python-all.ru/3/glossary.html#term-soft-deprecated): он больше не выдаёт предупреждений об устаревании и не запланирован к удалению.
- [gh-122213](https://python-all.ru/3/whatsnew/changelog.html): Добавлены примечания для ошибок сериализации pickle, позволяющие идентифицировать источник ошибки.
- [gh-119180](https://python-all.ru/3/whatsnew/changelog.html): В рамках [**PEP 749**](https://python-all.ru/3/whatsnew/changelog.html) добавлены следующие атрибуты для настройки вычисления областей видимости аннотаций:

  - `evaluate_value` на [`typing.TypeAliasType`](https://python-all.ru/3/library/typing.html#typing.TypeAliasType)
  - `evaluate_bound`, `evaluate_constraints` и `evaluate_default` на [`typing.TypeVar`](https://python-all.ru/3/library/typing.html#typing.TypeVar)
  - `evaluate_default` на [`typing.ParamSpec`](https://python-all.ru/3/library/typing.html#typing.ParamSpec)
  - `evaluate_default` на [`typing.TypeVarTuple`](https://python-all.ru/3/library/typing.html#typing.TypeVarTuple)
- [gh-119180](https://python-all.ru/3/whatsnew/changelog.html): Исправлена обработка классов с пользовательскими метаклассами в `annotationlib.get_annotations`.
- [gh-122170](https://python-all.ru/3/whatsnew/changelog.html): Обработка исключений [`ValueError`](https://python-all.ru/3/library/exceptions.html#ValueError), возбуждаемых [`os.stat()`](https://python-all.ru/3/library/os.html#os.stat) в [`linecache`](https://python-all.ru/3/library/linecache.html#module-linecache). Патч от Bénédikt Tran.
- [gh-122163](https://python-all.ru/3/whatsnew/changelog.html): Добавлены примечания к ошибкам сериализации JSON, позволяющие определить источник ошибки.
- [gh-122129](https://python-all.ru/3/whatsnew/changelog.html): Улучшена поддержка дескрипторов и обёрток методов в заголовке справки.
- [gh-122145](https://python-all.ru/3/whatsnew/changelog.html): Исправлена проблема при выводе трассировки для кода Python, порождающего пустое тело AST. Патч от Nikita Sobolev и Bénédikt Tran.
- [gh-121723](https://python-all.ru/3/whatsnew/changelog.html): Функция [`logging.config.dictConfig()`](https://python-all.ru/3/library/logging.config.html#logging.config.dictConfig) теперь принимает любой объект, реализующий публичный API Queue. Подробнее см. раздел [конфигурация очереди](https://python-all.ru/3/library/logging.config.html#configure-queue). Патч от Bénédikt Tran.
- [gh-82951](https://python-all.ru/3/whatsnew/changelog.html): Сериализация объектов со сложными `__qualname__` (такими как несвязанные методы и вложенные классы) по имени больше не требует сериализации родительских объектов по значению в протоколах pickle \< 4.
- [gh-120754](https://python-all.ru/3/whatsnew/changelog.html): `Pathlib.read_bytes` больше не открывает файл в буферизованном режиме ввода-вывода Python. Это снижает накладные расходы, так как код читает файл целиком, что приводит к небольшому ускорению.
- [gh-113785](https://python-all.ru/3/whatsnew/changelog.html): [`csv`](https://python-all.ru/3/library/csv.html#module-csv) теперь корректно разбирает числовые поля (при использовании с [`csv.QUOTE_NONNUMERIC`](https://python-all.ru/3/library/csv.html#csv.QUOTE_NONNUMERIC) или [`csv.QUOTE_STRINGS`](https://python-all.ru/3/library/csv.html#csv.QUOTE_STRINGS)), которые начинаются с escape-символа.
- [gh-122088](https://python-all.ru/3/whatsnew/changelog.html): [`@warnings.deprecated`](https://python-all.ru/3/library/warnings.html#warnings.deprecated) теперь копирует статус корутины функций и методов, чтобы [`inspect.iscoroutinefunction()`](https://python-all.ru/3/library/inspect.html#inspect.iscoroutinefunction) возвращал корректный результат.
- [gh-122081](https://python-all.ru/3/whatsnew/changelog.html): Исправлено аварийное завершение в `decimal.IEEEContext()` – опциональной функции, доступной через флаг конфигурации `EXTRA_FUNCTIONALITY`.
- [gh-73991](https://python-all.ru/3/whatsnew/changelog.html): Добавлена [`pathlib.Path.move()`](https://python-all.ru/3/library/pathlib.html#pathlib.Path.move), которая перемещает файл или дерево каталогов.
- [gh-121268](https://python-all.ru/3/whatsnew/changelog.html): Удалены обходные пути для систем без IEEE 754 в [`cmath`](https://python-all.ru/3/library/cmath.html#module-cmath).
- [gh-119698](https://python-all.ru/3/whatsnew/changelog.html): Из-за отсутствия интереса к [`symtable.Class.get_methods()`](https://python-all.ru/3/library/symtable.html#symtable.Class.get_methods) метод помечен как устаревший и будет удалён в Python 3.16. Патч от Bénédikt Tran.
- [gh-121889](https://python-all.ru/3/whatsnew/changelog.html): Адаптация `cmath.acosh(complex('0+nanj'))` под новые стандарты C.
- [gh-121804](https://python-all.ru/3/whatsnew/changelog.html): Корректное отображение расположения ошибок, когда [`SyntaxError`](https://python-all.ru/3/library/exceptions.html#SyntaxError) возбуждается в новой REPL. Патч от Sergey B Kirpichev.
- [gh-121797](https://python-all.ru/3/whatsnew/changelog.html): Добавлен альтернативный конструктор [`Fraction`](https://python-all.ru/3/library/fractions.html#fractions.Fraction): [`Fraction.from_number()`](https://python-all.ru/3/library/fractions.html#fractions.Fraction.from_number).
- [gh-121798](https://python-all.ru/3/whatsnew/changelog.html): Добавлен альтернативный конструктор [`Decimal`](https://python-all.ru/3/library/decimal.html#decimal.Decimal): [`Decimal.from_number()`](https://python-all.ru/3/library/decimal.html#decimal.Decimal.from_number).
- [gh-120930](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка, внесённая [gh-92081](https://python-all.ru/3/whatsnew/changelog.html), которая добавляла лишний пробел к закодированным словам в перенесённых заголовках.
- [gh-57141](https://python-all.ru/3/whatsnew/changelog.html): Аргумент *shallow* функции [`filecmp.dircmp`](https://python-all.ru/3/library/filecmp.html#filecmp.dircmp) (новый в Python 3.13) теперь является только ключевым.
- [gh-121245](https://python-all.ru/3/whatsnew/changelog.html): Упрощена обработка файла истории во вспомогательной функции `site.register_readline()`. Переменная `CAN_USE_PYREPL` теперь будет инициализироваться при импорте. Патч от Sergey B Kirpichev.
- [gh-121249](https://python-all.ru/3/whatsnew/changelog.html): Поддержка типов C float complex и double complex в модуле [`struct`](https://python-all.ru/3/library/struct.html#module-struct) при наличии у компилятора арифметики комплексных чисел C11. Патч от Sergey B Kirpichev.
- [gh-121486](https://python-all.ru/3/whatsnew/changelog.html): Функции [`math`](https://python-all.ru/3/library/math.html#module-math): [`isqrt()`](https://python-all.ru/3/library/math.html#math.isqrt), [`log()`](https://python-all.ru/3/library/math.html#math.log), [`log2()`](https://python-all.ru/3/library/math.html#math.log2) и [`log10()`](https://python-all.ru/3/library/math.html#math.log10) теперь поддерживают целые числа больше `2**2**32` на 32-разрядных платформах.
- [gh-121474](https://python-all.ru/3/whatsnew/changelog.html): Исправлено отсутствие проверки корректности аргумента `parties` в конструкторе [`threading.Barrier`](https://python-all.ru/3/library/threading.html#threading.Barrier). Патч от Clinton Christian (pygeek).
- [gh-121450](https://python-all.ru/3/whatsnew/changelog.html): Жёстко заданные точки останова ([`breakpoint()`](https://python-all.ru/3/library/functions.html#breakpoint) и [`pdb.set_trace()`](https://python-all.ru/3/library/pdb.html#pdb.set_trace)) теперь повторно используют последний экземпляр `Pdb`, который вызывает `Pdb.set_trace()`, вместо создания нового каждый раз. В результате все данные, специфичные для экземпляра, такие как `display` и `commands`, сохраняются между жёстко заданными точками останова.
- [gh-119169](https://python-all.ru/3/whatsnew/changelog.html): Небольшое ускорение [`os.walk()`](https://python-all.ru/3/library/os.html#os.walk) за счёт упрощения обработки исключений.
- [gh-121423](https://python-all.ru/3/whatsnew/changelog.html): Улучшено время импорта [`socket`](https://python-all.ru/3/library/socket.html#module-socket) за счёт ленивого импорта модулей и записи `socket.errorTab` в качестве константы.
- [gh-59110](https://python-all.ru/3/whatsnew/changelog.html): [`zipimport`](https://python-all.ru/3/library/zipimport.html#module-zipimport) теперь поддерживает пакеты пространства имён, когда запись каталога отсутствует.
- [gh-119004](https://python-all.ru/3/whatsnew/changelog.html): Исправлено аварийное завершение в [OrderedDict.\_\_eq\_\_](https://python-all.ru/3/library/collections.html#collections-ordereddict-eq) при изменении операндов во время проверки. Патч от Bénédikt Tran.
- [gh-121313](https://python-all.ru/3/whatsnew/changelog.html): Ограничен размер чтения в классе [`multiprocessing.connection.Connection`](https://python-all.ru/3/library/multiprocessing.html#multiprocessing.connection.Connection) до 64 КиБ для предотвращения избыточного выделения памяти и лишних системных вызовов управления памятью.
- [gh-121332](https://python-all.ru/3/whatsnew/changelog.html): Исправлен конструктор узлов [`ast`](https://python-all.ru/3/library/ast.html#module-ast) с пользовательскими `_attributes`. Ранее передача пользовательских атрибутов приводила к возбуждению [`DeprecationWarning`](https://python-all.ru/3/library/exceptions.html#DeprecationWarning). Передача аргументов конструктору, которых нет в `_fields` или `_attributes`, остаётся устаревшей. Патч от Jelle Zijlstra.
- [gh-121245](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка в обработке истории команд нового [REPL](https://python-all.ru/3/glossary.html#term-REPL), из-за которой файл истории очищался при выходе из REPL.
- [gh-121210](https://python-all.ru/3/whatsnew/changelog.html): Обработаны узлы AST с отсутствующими полями или атрибутами времени выполнения в [`ast.compare()`](https://python-all.ru/3/library/ast.html#ast.compare). Патч от Bénédikt Tran.
- [gh-121163](https://python-all.ru/3/whatsnew/changelog.html): Добавлена поддержка `all` в качестве допустимого `action` для [`warnings.simplefilter()`](https://python-all.ru/3/library/warnings.html#warnings.simplefilter) и [`warnings.filterwarnings()`](https://python-all.ru/3/library/warnings.html#warnings.filterwarnings).
- [gh-121151](https://python-all.ru/3/whatsnew/changelog.html): Исправлен перенос длинного текста справки для аргументов во взаимоисключающей группе в [`argparse`](https://python-all.ru/3/library/argparse.html#module-argparse).
- [gh-121141](https://python-all.ru/3/whatsnew/changelog.html): Добавлена поддержка [`copy.replace()`](https://python-all.ru/3/library/copy.html#copy.replace) для узлов AST. Патч от Bénédikt Tran.
- [gh-87744](https://python-all.ru/3/whatsnew/changelog.html): Исправлено состояние гонки в waitpid при вызове [`send_signal()`](https://python-all.ru/3/library/asyncio-subprocess.html#asyncio.subprocess.Process.send_signal) в asyncio. Патч от Kumar Aditya.
- [gh-121027](https://python-all.ru/3/whatsnew/changelog.html): Добавлено предупреждение FutureWarning в `functools.partial.__get__()`. В будущих версиях Python [`functools.partial`](https://python-all.ru/3/library/functools.html#functools.partial) станет дескриптором метода.
- [gh-121027](https://python-all.ru/3/whatsnew/changelog.html): Объект [`functools.partial`](https://python-all.ru/3/library/functools.html#functools.partial) сделан дескриптором метода.
- [gh-117784](https://python-all.ru/3/whatsnew/changelog.html): CPython теперь определяет, поддерживает ли связанная библиотека TLS аутентификацию после рукопожатия TLSv1.3, и отключает эту функцию, если поддержка отсутствует.
- [gh-121025](https://python-all.ru/3/whatsnew/changelog.html): Улучшена [`__repr__()`](https://python-all.ru/3/reference/datamodel.html#object.__repr__) у [`functools.partialmethod`](https://python-all.ru/3/library/functools.html#functools.partialmethod). Патч от Bénédikt Tran.
- [gh-121018](https://python-all.ru/3/whatsnew/changelog.html): Исправлены проблемы, при которых `argparse.ArgumentParser.parse_args()` не учитывал `exit_on_error=False`. На основе патча от Ben Hsing.
- [gh-119614](https://python-all.ru/3/whatsnew/changelog.html): Исправлено усечение строк со встроенными нулевыми символами в некоторых внутренних операциях в [`tkinter`](https://python-all.ru/3/library/tkinter.html#module-tkinter).
- [gh-120910](https://python-all.ru/3/whatsnew/changelog.html): При чтении установленных файлов из egg используется `relative_to(walk_up=True)` для учёта файлов, установленных за пределами корневого каталога установки.
- [gh-61103](https://python-all.ru/3/whatsnew/changelog.html): Поддержка типов C float complex, double complex и long double complex в [`ctypes`](https://python-all.ru/3/library/ctypes.html#module-ctypes) как [`c_float_complex`](https://python-all.ru/3/library/ctypes.html#ctypes.c_float_complex), [`c_double_complex`](https://python-all.ru/3/library/ctypes.html#ctypes.c_double_complex) и [`c_longdouble_complex`](https://python-all.ru/3/library/ctypes.html#ctypes.c_longdouble_complex), если компилятор поддерживает комплексную арифметику C11. Патч от Sergey B Kirpichev.
- [gh-120888](https://python-all.ru/3/whatsnew/changelog.html): Обновление pip wheel, поставляемого с ensurepip (pip 24.1.1)
- [gh-101830](https://python-all.ru/3/whatsnew/changelog.html): Доступ к строковому представлению объекта [`tkinter`](https://python-all.ru/3/library/tkinter.html#module-tkinter) больше не преобразует базовый объект Tcl в строку в Windows.
- [gh-120678](https://python-all.ru/3/whatsnew/changelog.html): Исправлен регресс в новом REPL, из-за которого глобальные переменные из файлов, переданных с помощью аргумента `-i`, не включались в глобальное пространство имён REPL. Патч от Alex Waygood.
- [gh-120811](https://python-all.ru/3/whatsnew/changelog.html): Исправлена возможная утечка памяти в [`contextvars.Context.run()`](https://python-all.ru/3/library/contextvars.html#contextvars.Context.run).
- [gh-120782](https://python-all.ru/3/whatsnew/changelog.html): Исправлены неверные ссылки на типы [`datetime`](https://python-all.ru/3/library/datetime.html#module-datetime) после перезагрузки модуля.
- [gh-120713](https://python-all.ru/3/whatsnew/changelog.html): [`datetime.datetime.strftime()`](https://python-all.ru/3/library/datetime.html#datetime.datetime.strftime) теперь дополняет года нулями слева для годов с менее чем четырьмя цифрами для спецификаторов формата `%Y` и `%G` в Linux. Патч от Ben Hsing.
- [gh-120769](https://python-all.ru/3/whatsnew/changelog.html): Пустая строка в [`pdb`](https://python-all.ru/3/library/pdb.html#module-pdb) теперь повторяет последнюю команду, даже если команда из `cmdqueue`.
- [gh-120780](https://python-all.ru/3/whatsnew/changelog.html): Показывать строковое значение LOAD\_SPECIAL oparg в выводе [`dis`](https://python-all.ru/3/library/dis.html#module-dis).
- [gh-41431](https://python-all.ru/3/whatsnew/changelog.html): Добавлены [`datetime.time.strptime()`](https://python-all.ru/3/library/datetime.html#datetime.time.strptime) и [`datetime.date.strptime()`](https://python-all.ru/3/library/datetime.html#datetime.date.strptime). Предоставлено Wannes Boeykens.
- [gh-120743](https://python-all.ru/3/whatsnew/changelog.html): [Мягкое устаревание](https://python-all.ru/3/glossary.html#term-soft-deprecated) функций [`os.popen()`](https://python-all.ru/3/library/os.html#os.popen) и [`os.spawn*`](https://python-all.ru/3/library/os.html#os.spawnl). Их больше не следует использовать для написания нового кода. Вместо них рекомендуется модуль [`subprocess`](https://python-all.ru/3/library/subprocess.html#module-subprocess). Патч от Victor Stinner.
- [gh-120732](https://python-all.ru/3/whatsnew/changelog.html): Исправлена передача `name` объекту [`unittest.mock.Mock`](https://python-all.ru/3/library/unittest.mock.html#unittest.mock.Mock) при использовании [`unittest.mock.create_autospec()`](https://python-all.ru/3/library/unittest.mock.html#unittest.mock.create_autospec).
- [gh-111259](https://python-all.ru/3/whatsnew/changelog.html): [`re`](https://python-all.ru/3/library/re.html#module-re) теперь обрабатывает шаблоны вроде `"[\s\S]"` или `"\s|\S"`, которые совпадают с любым символом так же эффективно, как точка с модификатором `DOTALL` (`"(?s:.)"`).
- [gh-120683](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка в [`logging.LogRecord`](https://python-all.ru/3/library/logging.html#logging.LogRecord), когда целая часть метки времени округлялась вверх, а вычисление миллисекунд усекалось, из-за чего метка времени в логе была неверна на величину до 999 мс (затрагивало примерно 1 из 8 миллионов меток времени).
- [gh-118710](https://python-all.ru/3/whatsnew/changelog.html): Атрибуты [`ipaddress.IPv4Address`](https://python-all.ru/3/library/ipaddress.html#ipaddress.IPv4Address) и [`ipaddress.IPv6Address`](https://python-all.ru/3/library/ipaddress.html#ipaddress.IPv6Address): `version` и `max_prefixlen` теперь доступны на классе.
- [gh-120633](https://python-all.ru/3/whatsnew/changelog.html): Переместить полосу прокрутки и убрать открепляемые меню в turtledemo.
- [gh-120606](https://python-all.ru/3/whatsnew/changelog.html): Разрешить пользователям использовать EOF для выхода из определения `commands` в [`pdb`](https://python-all.ru/3/library/pdb.html#module-pdb)
- [gh-120284](https://python-all.ru/3/whatsnew/changelog.html): Разрешено [`asyncio.Runner.run()`](https://python-all.ru/3/library/asyncio-runner.html#asyncio.Runner.run) принимать [ожидаемые](https://python-all.ru/3/glossary.html#term-awaitable) объекты вместо просто [корутин](https://python-all.ru/3/glossary.html#term-coroutine).
- [gh-120541](https://python-all.ru/3/whatsnew/changelog.html): Улучшено приглашение в программе просмотра «less» при вызове [`help()`](https://python-all.ru/3/library/functions.html#help) с аргументом не строкового типа.
- [gh-120495](https://python-all.ru/3/whatsnew/changelog.html): Исправлена неверная обработка исключений в Tab Nanny. Патч от Wulian233.
- [gh-120388](https://python-all.ru/3/whatsnew/changelog.html): Улучшено предупреждение, когда тестовый метод в [`unittest`](https://python-all.ru/3/library/unittest.html#module-unittest) возвращает не `None`. Теперь выводится тип возвращённого объекта и необязательная подсказка, связанная с asyncio.
- [gh-120381](https://python-all.ru/3/whatsnew/changelog.html): Исправлено [`inspect.ismethoddescriptor()`](https://python-all.ru/3/library/inspect.html#inspect.ismethoddescriptor), чтобы также проверять отсутствие [`__delete__()`](https://python-all.ru/3/reference/datamodel.html#object.__delete__). Патч от Jan Kaliszewski.
- [gh-90425](https://python-all.ru/3/whatsnew/changelog.html): Байт ОС в заголовках gzip теперь всегда устанавливается в 255 при использовании [`gzip.compress()`](https://python-all.ru/3/library/gzip.html#gzip.compress).
- [gh-120343](https://python-all.ru/3/whatsnew/changelog.html): Исправлено указание смещения столбца для токенов, следующих за многострочными f-строками в модуле [`tokenize`](https://python-all.ru/3/library/tokenize.html#module-tokenize).
- [gh-119180](https://python-all.ru/3/whatsnew/changelog.html): В рамках реализации [**PEP 649**](https://python-all.ru/3/whatsnew/changelog.html) и [**PEP 749**](https://python-all.ru/3/whatsnew/changelog.html) добавлен новый модуль `annotationlib`. Добавлена поддержка неразрешённых прямых ссылок в аннотациях для [`dataclasses`](https://python-all.ru/3/library/dataclasses.html#module-dataclasses), [`typing.TypedDict`](https://python-all.ru/3/library/typing.html#typing.TypedDict) и [`typing.NamedTuple`](https://python-all.ru/3/library/typing.html#typing.NamedTuple).
- [gh-119600](https://python-all.ru/3/whatsnew/changelog.html): Исправлено [`unittest.mock.patch()`](https://python-all.ru/3/library/unittest.mock.html#unittest.mock.patch), чтобы не читать атрибуты цели, когда установлен `new_callable`. Патч от Robert Collins.
- [gh-120289](https://python-all.ru/3/whatsnew/changelog.html): Исправлена проблема использования после освобождения (use-after-free) в [`cProfile`](https://python-all.ru/3/library/profile.html#module-cProfile) путём запрета `disable()` и `clear()` во внешних таймерах.
- [gh-82017](https://python-all.ru/3/whatsnew/changelog.html): Добавлена поддержка преобразования любых объектов, имеющих метод `as_integer_ratio()`, в [`Fraction`](https://python-all.ru/3/library/fractions.html#fractions.Fraction).
- [gh-114053](https://python-all.ru/3/whatsnew/changelog.html): Исправлена редкая ошибка, когда [`typing.get_type_hints()`](https://python-all.ru/3/library/typing.html#typing.get_type_hints) давал неверные результаты, если параметры типа в области видимости класса переопределялись присваиваниями в той же области и были включены семантики `from __future__ import annotations`. Патч от Alex Waygood.
- [gh-114053](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибочная [`NameError`](https://python-all.ru/3/library/exceptions.html#NameError) при вызове [`inspect.get_annotations()`](https://python-all.ru/3/library/inspect.html#inspect.get_annotations) с `` eval_str=True` `` для класса, который использовал параметры типа [**PEP 695**](https://python-all.ru/3/whatsnew/changelog.html) в модуле, содержащем `from __future__ import annotations` в начале файла. Патч от Alex Waygood.
- [gh-120268](https://python-all.ru/3/whatsnew/changelog.html): Запрещена передача `None` в чистую Python-реализацию [`datetime.date.fromtimestamp()`](https://python-all.ru/3/library/datetime.html#datetime.date.fromtimestamp) для согласованности с реализацией на C-расширении.
- [gh-120244](https://python-all.ru/3/whatsnew/changelog.html): Исправлена утечка памяти в [`re.sub()`](https://python-all.ru/3/library/re.html#re.sub), когда строка замены содержит обратные ссылки.
- [gh-120254](https://python-all.ru/3/whatsnew/changelog.html): Добавлен аргумент `commands` в [`pdb.set_trace()`](https://python-all.ru/3/library/pdb.html#pdb.set_trace), позволяющий отправлять команды отладчика из исходного файла.
- [gh-120211](https://python-all.ru/3/whatsnew/changelog.html): Исправлено [`tkinter.ttk`](https://python-all.ru/3/library/tkinter.ttk.html#module-tkinter.ttk) при использовании Tcl/Tk 9.0.
- [gh-71587](https://python-all.ru/3/whatsnew/changelog.html): Исправлено падение в C-версии [`datetime.datetime.strptime()`](https://python-all.ru/3/library/datetime.html#datetime.datetime.strptime) при повторном вызове на перезапущенном интерпретаторе.
- [gh-117983](https://python-all.ru/3/whatsnew/changelog.html): Импорт `threading` в `importlib.util` отложен до момента использования ленивой загрузки.
- [gh-120157](https://python-all.ru/3/whatsnew/changelog.html): Удалена неиспользуемая константа `concurrent.futures._base._FUTURE_STATES` в [`concurrent.futures`](https://python-all.ru/3/library/concurrent.futures.html#module-concurrent.futures). Патч от Clinton Christian (pygeek).
- [gh-120161](https://python-all.ru/3/whatsnew/changelog.html): [`datetime`](https://python-all.ru/3/library/datetime.html#module-datetime) больше не падает в некоторых сложных ситуациях с циклическими ссылками.
- [gh-119698](https://python-all.ru/3/whatsnew/changelog.html): Исправлено [`symtable.Class.get_methods()`](https://python-all.ru/3/library/symtable.html#symtable.Class.get_methods) и задокументировано его поведение. Патч от Bénédikt Tran.
- [gh-120121](https://python-all.ru/3/whatsnew/changelog.html): Добавлен [`concurrent.futures.InvalidStateError`](https://python-all.ru/3/library/concurrent.futures.html#concurrent.futures.InvalidStateError) в `__all__` модуля.
- [gh-119933](https://python-all.ru/3/whatsnew/changelog.html): Добавлено перечисление [`symtable.SymbolTableType`](https://python-all.ru/3/library/symtable.html#symtable.SymbolTableType) для представления возможных результатов метода [`symtable.SymbolTable.get_type`](https://python-all.ru/3/library/symtable.html#symtable.SymbolTable.get_type). Патч от Bénédikt Tran.
- [gh-120029](https://python-all.ru/3/whatsnew/changelog.html): Открыты методы [`symtable.Symbol`](https://python-all.ru/3/library/symtable.html#symtable.Symbol): [`is_free_class()`](https://python-all.ru/3/library/symtable.html#symtable.Symbol.is_free_class), [`is_comp_iter()`](https://python-all.ru/3/library/symtable.html#symtable.Symbol.is_comp_iter) и [`is_comp_cell()`](https://python-all.ru/3/library/symtable.html#symtable.Symbol.is_comp_cell). Патч от Bénédikt Tran.
- [gh-120108](https://python-all.ru/3/whatsnew/changelog.html): Исправлен вызов [`copy.deepcopy()`](https://python-all.ru/3/library/copy.html#copy.deepcopy) на деревьях [`ast`](https://python-all.ru/3/library/ast.html#module-ast), которые были изменены так, что содержат ссылки на родительские узлы. Патч от Jelle Zijlstra.
- [gh-120056](https://python-all.ru/3/whatsnew/changelog.html): Добавлены константы `socket.IP_RECVERR` и `socket.IP_RECVTTL` (доступны с Linux 2.2). А также константа `socket.IP_RECVORIGDSTADDR` (доступна с Linux 2.6.29).
- [gh-112672](https://python-all.ru/3/whatsnew/changelog.html): Поддержка сборки [`tkinter`](https://python-all.ru/3/library/tkinter.html#module-tkinter) с Tcl 9.0.
- [gh-120057](https://python-all.ru/3/whatsnew/changelog.html): Добавлен метод [`os.environ.refresh()`](https://python-all.ru/3/library/os.html#os.environ) для обновления `os.environ` в соответствии с изменениями окружения, внесёнными [`os.putenv()`](https://python-all.ru/3/library/os.html#os.putenv), [`os.unsetenv()`](https://python-all.ru/3/library/os.html#os.unsetenv) или вне Python в том же процессе. Патч от Victor Stinner.
- [gh-120029](https://python-all.ru/3/whatsnew/changelog.html): Открыт [`symtable.Symbol.is_type_parameter()`](https://python-all.ru/3/library/symtable.html#symtable.Symbol.is_type_parameter) в модуле [`symtable`](https://python-all.ru/3/library/symtable.html#module-symtable). Патч от Bénédikt Tran.
- [gh-119819](https://python-all.ru/3/whatsnew/changelog.html): Исправлен регресс, чтобы разрешить настройку логирования с типами очередей multiprocessing.
- [gh-65454](https://python-all.ru/3/whatsnew/changelog.html): [`unittest.mock.Mock.attach_mock()`](https://python-all.ru/3/library/unittest.mock.html#unittest.mock.Mock.attach_mock) больше не инициирует вызов к присоединяемому `PropertyMock`.
- [gh-117142](https://python-all.ru/3/whatsnew/changelog.html): Модуль [`ctypes`](https://python-all.ru/3/library/ctypes.html#module-ctypes) теперь можно импортировать во всех подинтерпретаторах, включая те, у которых есть собственный GIL.
- [gh-118835](https://python-all.ru/3/whatsnew/changelog.html): Исправлен сбой \_pyrepl при использовании кастомного приглашения с ANSI-escape последовательностями.
- [gh-81936](https://python-all.ru/3/whatsnew/changelog.html): Методы `help()` и `showtopic()` теперь учитывают аргумент *output*, переданный в `pydoc.Helper`, и не используют пейджер в таких случаях. Патч от Enrico Tröger.
- [gh-117398](https://python-all.ru/3/whatsnew/changelog.html): Модуль `_datetime` (C-реализация для [`datetime`](https://python-all.ru/3/library/datetime.html#module-datetime)) теперь поддерживает импорт в нескольких интерпретаторах.
- [gh-119824](https://python-all.ru/3/whatsnew/changelog.html): Вывод записи стека в [`pdb`](https://python-all.ru/3/library/pdb.html#module-pdb) осуществляется только при необходимости ввода пользователя.
- [gh-119838](https://python-all.ru/3/whatsnew/changelog.html): В смешанных арифметических операциях с [`Fraction`](https://python-all.ru/3/library/fractions.html#fractions.Fraction) и комплексными числами дробь теперь преобразуется в [`float`](https://python-all.ru/3/library/functions.html#float) вместо [`complex`](https://python-all.ru/3/library/functions.html#complex).
- [gh-119770](https://python-all.ru/3/whatsnew/changelog.html): Сделать константы [`termios`](https://python-all.ru/3/library/termios.html#module-termios) `ioctl()` положительными. Патч от Victor Stinner.
- [gh-89727](https://python-all.ru/3/whatsnew/changelog.html): Исправлена проблема с [`shutil.rmtree()`](https://python-all.ru/3/library/shutil.html#shutil.rmtree), при которой возникало [`RecursionError`](https://python-all.ru/3/library/exceptions.html#RecursionError) при глубоких деревьях каталогов.
- [gh-119577](https://python-all.ru/3/whatsnew/changelog.html): [`DeprecationWarning`](https://python-all.ru/3/library/exceptions.html#DeprecationWarning), выдаваемое при проверке истинности значения [`xml.etree.ElementTree.Element`](https://python-all.ru/3/library/xml.etree.elementtree.html#xml.etree.ElementTree.Element), теперь описывает безусловное возвращение `True` в будущей версии вместо возбуждения исключения в Python 3.14.
- [gh-89727](https://python-all.ru/3/whatsnew/changelog.html): Частично исправлена проблема с [`shutil.rmtree()`](https://python-all.ru/3/library/shutil.html#shutil.rmtree), при которой возникало [`RecursionError`](https://python-all.ru/3/library/exceptions.html#RecursionError) при глубоких деревьях каталогов. Ошибка рекурсии больше не возникает, когда `rmtree.avoids_symlink_attacks` равно false.
- [gh-93963](https://python-all.ru/3/whatsnew/changelog.html): Удалены устаревшие имена из `importlib.abc`, как указано в `importlib.resources.abc`.
- [gh-119118](https://python-all.ru/3/whatsnew/changelog.html): Исправлена регрессия производительности в модуле [`tokenize`](https://python-all.ru/3/library/tokenize.html#module-tokenize) путем кэширования атрибута `line` токена и более эффективного вычисления смещения столбца.
- [gh-89727](https://python-all.ru/3/whatsnew/changelog.html): Исправлена проблема с [`os.fwalk()`](https://python-all.ru/3/library/os.html#os.fwalk), при которой [`RecursionError`](https://python-all.ru/3/library/exceptions.html#RecursionError) возникало при глубоких деревьях каталогов, путём изменения реализации с рекурсивной на итеративную.
- [gh-119594](https://python-all.ru/3/whatsnew/changelog.html): При вызове pow(fractions.Fraction, x, module) с модулем, не равным None, сообщение об ошибке теперь говорит о несовместимости типов, а не о том, что pow принимает только 2 аргумента. Патч от Wim Jeantine-Glenn и Mark Dickinson.
- [gh-119588](https://python-all.ru/3/whatsnew/changelog.html): `zipfile.Path.is_symlink` теперь определяет, является ли указанный путь символической ссылкой.
- [gh-119562](https://python-all.ru/3/whatsnew/changelog.html): Удалены `ast.Num`, `ast.Str`, `ast.Bytes`, `ast.NameConstant` и `ast.Ellipsis`. Все они выдавали предупреждения об устаревании, начиная с Python 3.12. Патч от Alex Waygood.
- [gh-119555](https://python-all.ru/3/whatsnew/changelog.html): Перехват [`SyntaxError`](https://python-all.ru/3/library/exceptions.html#SyntaxError) из [`compile()`](https://python-all.ru/3/library/functions.html#compile) в методе runsource() класса InteractiveColoredConsole. Патч от Sergey B Kirpichev.
- [gh-118908](https://python-all.ru/3/whatsnew/changelog.html): Ограничены глобальные переменные, доступные из внутренних импортов и определений при запуске нового REPL. Патч от Eugene Triguba и Pablo Galindo.
- [gh-117865](https://python-all.ru/3/whatsnew/changelog.html): Улучшено время импорта модуля [`ast`](https://python-all.ru/3/library/ast.html#module-ast) за счёт отложенного импорта [`re`](https://python-all.ru/3/library/re.html#module-re). Патч от Jelle Zijlstra.
- [gh-119127](https://python-all.ru/3/whatsnew/changelog.html): Позиционные аргументы объектов [`functools.partial()`](https://python-all.ru/3/library/functools.html#functools.partial) теперь поддерживают заполнители через [`functools.Placeholder`](https://python-all.ru/3/library/functools.html#functools.Placeholder).
- [gh-113892](https://python-all.ru/3/whatsnew/changelog.html): Теперь метод `sock_connect` класса [`asyncio.ProactorEventLoop`](https://python-all.ru/3/library/asyncio-eventloop.html#asyncio.ProactorEventLoop) возбуждает [`ValueError`](https://python-all.ru/3/library/exceptions.html#ValueError), если переданный сокет не находится в неблокирующем режиме, как и в других реализациях цикла.
- [gh-119506](https://python-all.ru/3/whatsnew/changelog.html): Исправлено, что метод `io.TextIOWrapper.write()` нарушает внутренний буфер, если этот метод вызывается снова во время сброса внутреннего буфера.
- [gh-69214](https://python-all.ru/3/whatsnew/changelog.html): Исправлен параметр *request* в `fcntl.ioctl()`: используется `unsigned long` вместо `unsigned int` для параметра *request* в [`fcntl.ioctl()`](https://python-all.ru/3/library/fcntl.html#fcntl.ioctl), чтобы поддерживать запросы размером более `UINT_MAX`. Патч от Victor Stinner.
- [gh-119105](https://python-all.ru/3/whatsnew/changelog.html): `difflib`.`DIffer.compare()` (а следовательно, и `ndiff`) больше не может быть вынужден работать за кубическое время или входить в бесконечную рекурсию, и в обычных случаях также должен работать быстрее. Результаты могут изменяться в некоторых случаях, хотя это должно быть редко. Корректность различий не затрагивается. Некоторые похожие строки, расположенные далеко друг от друга, могут быть показаны как удаление одной и добавление другой, тогда как раньше они отображались на соседних строках вывода с разметкой, показывающей различия внутри строк.
- [gh-119443](https://python-all.ru/3/whatsnew/changelog.html): Интерактивный REPL больше не запускается с включённым `from __future__ import annotations`. Патч от Jelle Zijlstra.
- [gh-119461](https://python-all.ru/3/whatsnew/changelog.html): Добавлена константа `socket.VMADDR_CID_LOCAL`. Патч от Victor Stinner.
- [gh-117398](https://python-all.ru/3/whatsnew/changelog.html): Объекты в datetime C-API теперь полностью статически выделены, что означает лучшую безопасность памяти, особенно при перезагрузке модуля. Это не должно быть заметно пользователям.
- [gh-118894](https://python-all.ru/3/whatsnew/changelog.html): REPL [`asyncio`](https://python-all.ru/3/library/asyncio.html#module-asyncio) теперь обладает теми же возможностями, что и PyREPL.
- [gh-118830](https://python-all.ru/3/whatsnew/changelog.html): Повышен протокол по умолчанию для [`pickle`](https://python-all.ru/3/library/pickle.html#module-pickle) до `5`.
- [gh-118911](https://python-all.ru/3/whatsnew/changelog.html): В PyREPL обновлена логика `maybe-accept` так, что если пользователь нажимает `Enter` дважды, он может завершить блок, даже если есть пробелы в конце строки. Кроме того, теперь при нажатии стрелки вверх курсор оказывается на последней функциональной строке. Это соответствует поведению IPython. Патч от Aya Elsayed.
- [gh-115225](https://python-all.ru/3/whatsnew/changelog.html): Возбуждается ошибка для некоторых технически корректных, но патологических строк ISO 8601, переданных в [`datetime.time.fromisoformat()`](https://python-all.ru/3/library/datetime.html#datetime.time.fromisoformat), которые ранее парсились некорректно.
- [gh-111201](https://python-all.ru/3/whatsnew/changelog.html): Удалена зависимость от [`readline`](https://python-all.ru/3/library/readline.html#module-readline) из нового Python REPL.
- [gh-119189](https://python-all.ru/3/whatsnew/changelog.html): При использовании оператора `**` или [`pow()`](https://python-all.ru/3/library/functions.html#pow) с [`Fraction`](https://python-all.ru/3/library/fractions.html#fractions.Fraction) в качестве основания и показателем степени, который не является рациональным числом, float или комплексным, дробь больше не преобразуется в float.
- [gh-119174](https://python-all.ru/3/whatsnew/changelog.html): Исправлено размытие окон turtledemo (примеры с графикой черепашки) при высоком DPI. Исправление от Wulian233 и Terry Jan Reedy.
- [gh-119121](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка NameError, возникающая в `asyncio.staggered.staggered_race`. Теперь эта функция тестируется.
- [gh-119105](https://python-all.ru/3/whatsnew/changelog.html): `difflib.Differ` работает намного быстрее для некоторых случаев различий, когда множество пар строк одинаково похожи.
- [gh-119113](https://python-all.ru/3/whatsnew/changelog.html): Исправлена проблема, при которой [`pathlib.PurePath.with_suffix()`](https://python-all.ru/3/library/pathlib.html#pathlib.PurePath.with_suffix) не вызывал [`TypeError`](https://python-all.ru/3/library/exceptions.html#TypeError), если в качестве суффикса был указан `None`.
- [gh-118643](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка AttributeError в модуле [`email`](https://python-all.ru/3/library/email.html#module-email) при повторном сворачивании длинного списка адресов. Также исправлены дополнительные случаи неправильной кодировки разделителя адресов в списке адресов.
- [gh-73991](https://python-all.ru/3/whatsnew/changelog.html): Добавлена функция [`pathlib.Path.copy()`](https://python-all.ru/3/library/pathlib.html#pathlib.Path.copy), копирующая файл или каталог в другое место.
- [gh-58933](https://python-all.ru/3/whatsnew/changelog.html): Исправлено корректное возвращение [`pdb`](https://python-all.ru/3/library/pdb.html#module-pdb) к фрейму вызывающей стороны, когда `f_trace` фрейма вызывающей стороны не установлен.
- [gh-82805](https://python-all.ru/3/whatsnew/changelog.html): Добавлена поддержка расширений файлов с одной точкой в [`pathlib.PurePath.suffix`](https://python-all.ru/3/library/pathlib.html#pathlib.PurePath.suffix) и связанных атрибутах и методах. Например, [`suffixes`](https://python-all.ru/3/library/pathlib.html#pathlib.PurePath.suffixes) для `PurePath('foo.bar.')` теперь возвращает `['.bar', '.']` вместо `[]`. Это приводит разделение расширений файлов в соответствие с [`os.path.splitext()`](https://python-all.ru/3/library/os.path.html#os.path.splitext).
- [gh-118924](https://python-all.ru/3/whatsnew/changelog.html): Удалены `version` и `version_info` из [`sqlite3`](https://python-all.ru/3/library/sqlite3.html#module-sqlite3). Исправление от Hugo van Kemenade.
- [gh-118928](https://python-all.ru/3/whatsnew/changelog.html): Запрещено использовать последовательность параметров с именованными плейсхолдерами в запросах [`sqlite3`](https://python-all.ru/3/library/sqlite3.html#module-sqlite3). Исправление от Erlend E. Aasland.
- [gh-118895](https://python-all.ru/3/whatsnew/changelog.html): Установка атрибутов на [`typing.NoDefault`](https://python-all.ru/3/library/typing.html#typing.NoDefault) теперь вызывает [`AttributeError`](https://python-all.ru/3/library/exceptions.html#AttributeError) вместо [`TypeError`](https://python-all.ru/3/library/exceptions.html#TypeError).
- [gh-118868](https://python-all.ru/3/whatsnew/changelog.html): Исправлена проблема, при которой kwargs больше не передавались обработчику логов QueueHandler.
- [gh-118827](https://python-all.ru/3/whatsnew/changelog.html): Удалён устаревший класс `Quoter` из [`urllib.parse`](https://python-all.ru/3/library/urllib.parse.html#module-urllib.parse). Ранее он вызывал [`DeprecationWarning`](https://python-all.ru/3/library/exceptions.html#DeprecationWarning) начиная с Python 3.11. Исправление от Nikita Sobolev.
- [gh-118824](https://python-all.ru/3/whatsnew/changelog.html): Удалены устаревшие `pty.master_open()` и `pty.slave_open()`. Вместо них используйте [`pty.openpty()`](https://python-all.ru/3/library/pty.html#pty.openpty). Исправление от Nikita Sobolev.
- [gh-118851](https://python-all.ru/3/whatsnew/changelog.html): Аргументы `ctx` для конструкторов классов узлов [`ast`](https://python-all.ru/3/library/ast.html#module-ast) теперь по умолчанию равны [`ast.Load()`](https://python-all.ru/3/library/ast.html#ast.Load). Исправление от Jelle Zijlstra.
- [gh-101588](https://python-all.ru/3/whatsnew/changelog.html): Из itertools удалены copy, deepcopy и pickle. Ранее они вызывали DeprecationWarning начиная с Python 3.12.
- [gh-118805](https://python-all.ru/3/whatsnew/changelog.html): Удалены параметры *type*, *choices* и *metavar* из `argparse.BooleanOptionalAction`. Они были устаревшими начиная с Python 3.12.
- [gh-118803](https://python-all.ru/3/whatsnew/changelog.html): `typing.ByteString` и `collections.abc.ByteString` удалены. Ранее они вызывали [`DeprecationWarning`](https://python-all.ru/3/library/exceptions.html#DeprecationWarning) начиная с Python 3.12.
- [gh-118798](https://python-all.ru/3/whatsnew/changelog.html): Параметр *isdst* удалён из [`email.utils.localtime()`](https://python-all.ru/3/library/email.utils.html#email.utils.localtime). Исправление от Hugo van Kemenade.
- [gh-118760](https://python-all.ru/3/whatsnew/changelog.html): Восстановлено значение по умолчанию `tkiter.wantobjects` до `1`.
- [gh-118760](https://python-all.ru/3/whatsnew/changelog.html): Исправлены ошибки при вызове биндингов Tkinter в Windows.
- [gh-74033](https://python-all.ru/3/whatsnew/changelog.html): Прекращена поддержка передачи именованных аргументов в [`pathlib.Path`](https://python-all.ru/3/library/pathlib.html#pathlib.Path).
- [gh-101357](https://python-all.ru/3/whatsnew/changelog.html): Подавляются все исключения [`OSError`](https://python-all.ru/3/library/exceptions.html#OSError) из методов [`pathlib.Path.exists()`](https://python-all.ru/3/library/pathlib.html#pathlib.Path.exists) и `is_*()`, а не только выборка наиболее распространённых ошибок. Новое поведение согласовано с [`os.path.exists()`](https://python-all.ru/3/library/os.path.html#os.path.exists), [`os.path.isdir()`](https://python-all.ru/3/library/os.path.html#os.path.isdir) и т.д. Используйте [`pathlib.Path.stat()`](https://python-all.ru/3/library/pathlib.html#pathlib.Path.stat) для получения состояния файла без подавления исключений.
- [gh-78707](https://python-all.ru/3/whatsnew/changelog.html): Прекращена поддержка передачи дополнительных позиционных аргументов в [`pathlib.PurePath.relative_to()`](https://python-all.ru/3/library/pathlib.html#pathlib.PurePath.relative_to) и [`is_relative_to()`](https://python-all.ru/3/library/pathlib.html#pathlib.PurePath.is_relative_to).
- [gh-118507](https://python-all.ru/3/whatsnew/changelog.html): Исправлена [`os.path.isfile()`](https://python-all.ru/3/library/os.path.html#os.path.isfile) в Windows для каналов. Ускорены [`os.path.isjunction()`](https://python-all.ru/3/library/os.path.html#os.path.isjunction) и [`os.path.lexists()`](https://python-all.ru/3/library/os.path.html#os.path.lexists) в Windows с помощью собственной реализации.
- [gh-118772](https://python-all.ru/3/whatsnew/changelog.html): Разрешено экземплярам [`typing.TypeVar`](https://python-all.ru/3/library/typing.html#typing.TypeVar) без значения по умолчанию следовать за экземплярами без значения по умолчанию в некоторых случаях. Исправление от Jelle Zijlstra.
- [gh-118714](https://python-all.ru/3/whatsnew/changelog.html): Разрешено `restart` при посмертной отладке [`pdb`](https://python-all.ru/3/library/pdb.html#module-pdb). Удалено сообщение о перезапуске при выходе пользователя из pdb в посмертном режиме.
- [gh-118673](https://python-all.ru/3/whatsnew/changelog.html): Удалены биты исполняемого файла и shebang из модулей стандартной библиотеки.
- [gh-110863](https://python-all.ru/3/whatsnew/changelog.html): [`os.path.realpath()`](https://python-all.ru/3/library/os.path.html#os.path.realpath) теперь подавляет любые [`OSError`](https://python-all.ru/3/library/exceptions.html#OSError) из [`os.readlink()`](https://python-all.ru/3/library/os.html#os.readlink), когда отключён строгий режим *strict* (по умолчанию).
- [gh-118263](https://python-all.ru/3/whatsnew/changelog.html): Ускорены [`os.path.splitroot()`](https://python-all.ru/3/library/os.path.html#os.path.splitroot) и [`os.path.normpath()`](https://python-all.ru/3/library/os.path.html#os.path.normpath) с помощью прямого вызова C.
- [gh-110190](https://python-all.ru/3/whatsnew/changelog.html): Исправлены структуры ctypes с массивом на SPARC путём установки `MAX_STRUCT_SIZE` в 32 в stgdict. Исправление от Jakub Kulik.
- [gh-118033](https://python-all.ru/3/whatsnew/changelog.html): Исправлена [`dataclasses.dataclass()`](https://python-all.ru/3/library/dataclasses.html#dataclasses.dataclass), не создававшая слот `__weakref__` при наследовании от [`typing.Generic`](https://python-all.ru/3/library/typing.html#typing.Generic).
- [gh-117766](https://python-all.ru/3/whatsnew/changelog.html): Всегда используйте [`str()`](https://python-all.ru/3/library/stdtypes.html#str) для вывода `choices` в [`argparse`](https://python-all.ru/3/library/argparse.html#module-argparse).
- [gh-106531](https://python-all.ru/3/whatsnew/changelog.html): В [`importlib.resources`](https://python-all.ru/3/library/importlib.resources.html#module-importlib.resources) синхронизировано с [importlib\_resources 6.3.2](https://python-all.ru/3/whatsnew/changelog.html), включая: `MultiplexedPath` теперь ожидает пути `Traversable`, устарели строковые аргументы для `MultiplexedPath`; Включена поддержка ресурсов в пакетах пространств имён в zip-файлах; Исправлен `NotADirectoryError` при вызове files для подкаталога пакета пространства имён.
- [gh-115937](https://python-all.ru/3/whatsnew/changelog.html): Удалена лишняя предварительная обработка для атрибута `__signature__` : код просто проверяет, является ли он экземпляром [`inspect.Signature`](https://python-all.ru/3/library/inspect.html#inspect.Signature) . Исправление от Sergey B Kirpichev.
- [gh-115808](https://python-all.ru/3/whatsnew/changelog.html): Добавлены функции [`operator.is_none()`](https://python-all.ru/3/library/operator.html#operator.is_none) и [`operator.is_not_none()`](https://python-all.ru/3/library/operator.html#operator.is_not_none) .
- [gh-114264](https://python-all.ru/3/whatsnew/changelog.html): Улучшена производительность [`copy.deepcopy()`](https://python-all.ru/3/library/copy.html#copy.deepcopy) за счёт добавления быстрого пути для атомарных типов.
- [gh-113878](https://python-all.ru/3/whatsnew/changelog.html): Добавлен параметр *doc* в [`dataclasses.field()`](https://python-all.ru/3/library/dataclasses.html#dataclasses.field), чтобы его можно было хранить и отображать как документацию/метаданные. Если используется `@dataclass(slots=True)`, то переданная строка доступна в словаре [`__slots__`](https://python-all.ru/3/reference/datamodel.html#object.__slots__). В противном случае переданная строка доступна только в соответствующем объекте [`dataclasses.Field`](https://python-all.ru/3/library/dataclasses.html#dataclasses.Field).

  Для поддержки этой функции мы меняем формат `__slots__` в dataclasses с [`tuple`](https://python-all.ru/3/library/stdtypes.html#tuple) на [`dict`](https://python-all.ru/3/library/stdtypes.html#dict), когда присутствует документация/метаданные.
- [gh-113978](https://python-all.ru/3/whatsnew/changelog.html): Игнорировать предупреждения при автодополнении текста в REPL.
- [gh-113008](https://python-all.ru/3/whatsnew/changelog.html): Исправлен вывод usage в argparse для обязательных, взаимоисключающих групп, содержащих позиционный аргумент.
- [gh-108172](https://python-all.ru/3/whatsnew/changelog.html): `webbrowser` учитывает предпочтительный браузер ОС в Linux, когда имя его desktop entry содержит текст известного браузера.
- [gh-109109](https://python-all.ru/3/whatsnew/changelog.html): Теперь можно получить raw цепочки сертификатов TLS из TLS-соединений через методы [`ssl.SSLSocket.get_verified_chain()`](https://python-all.ru/3/library/ssl.html#ssl.SSLSocket.get_verified_chain) и [`ssl.SSLSocket.get_unverified_chain()`](https://python-all.ru/3/library/ssl.html#ssl.SSLSocket.get_unverified_chain).

  Автор: Mateusz Nowak.
- [gh-105623](https://python-all.ru/3/whatsnew/changelog.html): Исправлено снижение производительности в [`logging.handlers.RotatingFileHandler`](https://python-all.ru/3/library/logging.handlers.html#logging.handlers.RotatingFileHandler). Исправление от Craig Robson.
- [gh-102450](https://python-all.ru/3/whatsnew/changelog.html): Добавлена отсутствующая альтернатива ISO-8601 24:00 (полночь следующего дня) в [`datetime.datetime.fromisoformat()`](https://python-all.ru/3/library/datetime.html#datetime.datetime.fromisoformat) и [`datetime.time.fromisoformat()`](https://python-all.ru/3/library/datetime.html#datetime.time.fromisoformat). Исправление от Izan “TizzySaurus” Robinson ([tizzysaurus@gmail.com](https://python-all.ru/3/whatsnew/changelog.html)).
- [gh-103956](https://python-all.ru/3/whatsnew/changelog.html): Исправлено отсутствие символов новой строки в выводе модуля [`trace`](https://python-all.ru/3/library/trace.html#module-trace), когда включена трассировка строк, но строка исходного кода для текущего кадра недоступна.
- [gh-92081](https://python-all.ru/3/whatsnew/changelog.html): Исправлены пропущенные пробелы в заголовках email, когда пробелы смешаны с закодированными 8-битными символами.
- [gh-103194](https://python-all.ru/3/whatsnew/changelog.html): Подготовка Tkinter к изменениям C API в Tcl 8.7/9.0, чтобы избежать неожиданного возврата `_tkinter.Tcl_Obj` вместо [`bool`](https://python-all.ru/3/library/functions.html#bool), [`str`](https://python-all.ru/3/library/stdtypes.html#str), [`bytearray`](https://python-all.ru/3/library/stdtypes.html#bytearray) или [`int`](https://python-all.ru/3/library/functions.html#int).
- [gh-87106](https://python-all.ru/3/whatsnew/changelog.html): Исправлена обработка в [`inspect.Signature.bind()`](https://python-all.ru/3/library/inspect.html#inspect.Signature.bind) именованных аргументов, имеющих то же имя, что и позиционно-только аргументы, когда присутствует вариативный именованный аргумент (например, `**kwargs`).
- [gh-103134](https://python-all.ru/3/whatsnew/changelog.html): Добавлены дополнительные методы к [прокси-объектам](https://python-all.ru/3/library/multiprocessing.html#multiprocessing-proxy-objects) в модуле `multiprocessing`:

  - `clear()` и `copy()` для прокси [`list`](https://python-all.ru/3/library/stdtypes.html#list)
  - [`fromkeys()`](https://python-all.ru/3/library/stdtypes.html#dict.fromkeys), `reversed(d)`, `d | {}`, `{} | d`, `d |= {'b': 2}` для прокси [`dict`](https://python-all.ru/3/library/stdtypes.html#dict)
- [bpo-45767](https://python-all.ru/3/whatsnew/changelog.html): Исправлено преобразование целых чисел в [`os.major()`](https://python-all.ru/3/library/os.html#os.major), [`os.minor()`](https://python-all.ru/3/library/os.html#os.minor) и [`os.makedev()`](https://python-all.ru/3/library/os.html#os.makedev). Поддержка номеров устройств больше `2**63-1`. Поддержка несуществующего номера устройства (`NODEV`).
- [bpo-44864](https://python-all.ru/3/whatsnew/changelog.html): Не переводить строки, предоставленные пользователем, в [`argparse.ArgumentParser`](https://python-all.ru/3/library/argparse.html#argparse.ArgumentParser).
- [bpo-41843](https://python-all.ru/3/whatsnew/changelog.html): Solaris теперь использует системный вызов быстрого копирования [`os.sendfile()`](https://python-all.ru/3/library/os.html#os.sendfile) для более эффективных функций копирования файлов [`shutil`](https://python-all.ru/3/library/shutil.html#module-shutil).
- [bpo-15987](https://python-all.ru/3/whatsnew/changelog.html): Реализован [`ast.compare()`](https://python-all.ru/3/library/ast.html#ast.compare) для сравнения двух AST. Исправление от Batuhan Taskaya при некоторой помощи от Jeremy Hylton.
- [gh-67693](https://python-all.ru/3/whatsnew/changelog.html): Исправлены [`urllib.parse.urlunparse()`](https://python-all.ru/3/library/urllib.parse.html#urllib.parse.urlunparse) и [`urllib.parse.urlunsplit()`](https://python-all.ru/3/library/urllib.parse.html#urllib.parse.urlunsplit) для URI с путём, начинающимся с нескольких слешей и без authority. На основе исправления от Ashwin Ramaswami.
- [bpo-14074](https://python-all.ru/3/whatsnew/changelog.html): Исправлена обработка metavar в [`argparse`](https://python-all.ru/3/library/argparse.html#module-argparse), чтобы разрешить позиционным аргументам иметь кортеж metavar.

### IDLE

- [gh-122392](https://python-all.ru/3/whatsnew/changelog.html): Увеличено недостаточное вертикальное расстояние для браузеров IDLE (путь, модуль и стек) на мониторах с высоким разрешением.
- [gh-112938](https://python-all.ru/3/whatsnew/changelog.html): Исправлено непрерываемое зависание при получении Shell быстрого непрерывного вывода.
- [gh-122482](https://python-all.ru/3/whatsnew/changelog.html): Изменено «О IDLE», чтобы направлять пользователей на discuss.python.org вместо ныне неиспользуемого idle-dev email и списка рассылки.
- [gh-78889](https://python-all.ru/3/whatsnew/changelog.html): Остановлены зависания Shell путём блокировки доступа пользователя к атрибутам sys.stdout.shell, не являющимся методами, которые являются частными.
- [gh-120083](https://python-all.ru/3/whatsnew/changelog.html): Добавлен явный черный цвет текста всплывающей подсказки IDLE, необходимый для новых версий macOS. Исправляет в Sonoma отображение нечитаемого белого на бледно-желтом. Исправление от Джона Ригглза.
- [gh-120104](https://python-all.ru/3/whatsnew/changelog.html): Исправлены отступы в окнах конфигурации и поиска в IDLE.

### Документация

- [gh-124872](https://python-all.ru/3/whatsnew/changelog.html): Добавлены определения для [контекст](https://python-all.ru/3/glossary.html#term-context), [текущий контекст](https://python-all.ru/3/glossary.html#term-current-context), и [протокол управления контекстом](https://python-all.ru/3/glossary.html#term-context-management-protocol), обновлены связанные определения для согласованности, и расширена документация для [`contextvars.Context`](https://python-all.ru/3/library/contextvars.html#contextvars.Context).
- [gh-125018](https://python-all.ru/3/whatsnew/changelog.html): Документация [`importlib.metadata`](https://python-all.ru/3/library/importlib.metadata.html#module-importlib.metadata) теперь включает семантические цели перекрестных ссылок для значимых задокументированных API. Это означает, что intersphinx-ссылки вида [`importlib.metadata.version()`](https://python-all.ru/3/library/importlib.metadata.html#importlib.metadata.version) теперь будут работать как ожидается.
- [gh-124720](https://python-all.ru/3/whatsnew/changelog.html): Обновлен раздел «Использование Python на Mac» документа «Установка и использование Python» и добавлена информация об установке поддержки свободной многопоточности (free-threading).
- [gh-124457](https://python-all.ru/3/whatsnew/changelog.html): Удален Coverity Scan из репозитория CPython. Он не использовался с 2020 года и в настоящее время не поддерживается.
- [gh-116622](https://python-all.ru/3/whatsnew/changelog.html): Добавлено руководство по платформе Android и отмечены модули, недоступные на Android.
- [gh-123976](https://python-all.ru/3/whatsnew/changelog.html): Обновлена документация по пользовательским провайдерам.
- [gh-70870](https://python-all.ru/3/whatsnew/changelog.html): Уточнено двойное использование термина «свободная переменная» (как формальное значение – любая ссылка на имена, определенные вне локальной области, так и более узкое прагматическое значение – нелокальные переменные, указанные в `co_freevars`).
- [gh-121277](https://python-all.ru/3/whatsnew/changelog.html): Авторы документации CPython теперь могут использовать `next` в качестве версии для директив `versionchanged`, `versionadded`, `deprecated`.
- [gh-117765](https://python-all.ru/3/whatsnew/changelog.html): Улучшена документация для [`unittest.mock.patch.dict()`](https://python-all.ru/3/library/unittest.mock.html#unittest.mock.patch.dict)
- [gh-121749](https://python-all.ru/3/whatsnew/changelog.html): Исправлена документация для [`PyModule_AddObjectRef()`](https://python-all.ru/3/c-api/module.html#c.PyModule_AddObjectRef).
- [gh-120012](https://python-all.ru/3/whatsnew/changelog.html): Уточнено поведение [`multiprocessing.Queue.empty()`](https://python-all.ru/3/library/multiprocessing.html#multiprocessing.Queue.empty) и [`multiprocessing.SimpleQueue.empty()`](https://python-all.ru/3/library/multiprocessing.html#multiprocessing.SimpleQueue.empty) для закрытых очередей. Исправление от Bénédikt Tran.
- [gh-119574](https://python-all.ru/3/whatsnew/changelog.html): Добавлены некоторые отсутствовавшие переменные окружения в вывод [`--help-env`](https://python-all.ru/3/using/cmdline.html#cmdoption-help-env).
- [bpo-34008](https://python-all.ru/3/whatsnew/changelog.html): Документация [`Py_Main()`](https://python-all.ru/3/c-api/interp-lifecycle.html#c.Py_Main) перенесена из раздела «Very High Level API» в раздел «Initialization and Finalization».

  Также явно указано, что `Py_Main` обычно должен вызываться вместо `Py_Initialize`, а не после него (поскольку `Py_Main` сам вызывает `Py_Initialize`). Документировано, что вызов обоих поддерживается, но зависит от версии, какие настройки будут применены корректно.

### Ядро и встроенные модули

- [gh-124375](https://python-all.ru/3/whatsnew/changelog.html): Исправлен сбой в сборке со свободной многопоточностью, когда сборщик мусора выполняется одновременно с запуском нового потока.
- [gh-125221](https://python-all.ru/3/whatsnew/changelog.html): Исправлена возможная ошибка гонки при первом вызове [`__reduce_ex__()`](https://python-all.ru/3/library/pickle.html#object.__reduce_ex__) в сборке со свободной многопоточностью.
- [gh-125174](https://python-all.ru/3/whatsnew/changelog.html): Сделано более надежным управление счетчиками ссылок бессмертных объектов. Бессмертные объекты, счетчики ссылок которых отклоняются от исходного значения до миллиарда (полмиллиарда для 32-битных сборок), все еще считаются бессмертными.
- [gh-125039](https://python-all.ru/3/whatsnew/changelog.html): Сделать `this_instr` и `prev_instr` константными в cases generator.

### Библиотека

- [gh-125008](https://python-all.ru/3/whatsnew/changelog.html): Исправлено [`tokenize.untokenize()`](https://python-all.ru/3/library/tokenize.html#tokenize.untokenize), который порождал неверный синтаксис для двойных фигурных скобок, перед которыми стоят определенные экранирующие символы.

### Ядро и встроенные модули

- [gh-124871](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка компилятора (в некоторых версиях 3.13), когда утверждение не выполнялось во время анализа достижимости.
- [gh-123378](https://python-all.ru/3/whatsnew/changelog.html): Исправлен сбой в методе [`__str__()`](https://python-all.ru/3/reference/datamodel.html#object.__str__) объектов [`UnicodeError`](https://python-all.ru/3/library/exceptions.html#UnicodeError), когда значения [`UnicodeError.start`](https://python-all.ru/3/library/exceptions.html#UnicodeError.start) и [`UnicodeError.end`](https://python-all.ru/3/library/exceptions.html#UnicodeError.end) недопустимы или выходят за диапазон. Исправление от Bénédikt Tran.
- [gh-118093](https://python-all.ru/3/whatsnew/changelog.html): Улучшена способность экспериментального JIT-компилятора оставаться «на трассе» при встрече с сильно смещенными ветвлениями.
- [gh-124642](https://python-all.ru/3/whatsnew/changelog.html): Исправлена проблема масштабируемости в сборках со свободной многопоточностью для блокировочно-свободных чтений из словарей в многопоточных сценариях.
- [gh-116510](https://python-all.ru/3/whatsnew/changelog.html): Исправлен сбой, вызванный тем, что бессмертные интернированные строки разделяются между суб-интерпретаторами, использующими базовую однофазную инициализацию. В этом случае строка может использоваться интерпретатором, который переживает интерпретатор, создавший и интернировавший ее. Для интерпретаторов, разделяющих состояние obmalloc, также разделяйте словарь интернированных строк с главным интерпретатором.
- [gh-116510](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка, которая может вызвать сбой, когда суб-интерпретаторы используют «базовые» однофазные модули расширения. Разделяемые объекты могли ссылаться на узлы PyGC\_Head, которые были освобождены в ходе очистки интерпретатора.
- [gh-119180](https://python-all.ru/3/whatsnew/changelog.html): Модуль `__main__` больше не всегда содержит словарь `__annotations__` в своем глобальном пространстве имен.
- [gh-124547](https://python-all.ru/3/whatsnew/changelog.html): При освобождении объекта с встроенными значениями, чей `__dict__` ещё жив: если выделение памяти для встроенных значений не удаётся, очищайте словарь. Предотвращает аварию интерпретатора.
- [gh-124513](https://python-all.ru/3/whatsnew/changelog.html): Исправлена авария в конструкторе FrameLocalsProxy: проверка количества аргументов. Патч от Victor Stinner.
- [gh-124442](https://python-all.ru/3/whatsnew/changelog.html): Исправлена недетерминированность в компиляции – сортировка значения [`__static_attributes__`](https://python-all.ru/3/reference/datamodel.html#type.__static_attributes__). Патч от kp2pml30.
- [gh-124285](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка, из-за которой `bool(a)` мог вызываться более одного раза при вычислении составного булева выражения.
- [gh-123856](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка PyREPL, когда после использования поиска по истории срабатывает прерывание с клавиатуры.
- [gh-65961](https://python-all.ru/3/whatsnew/changelog.html): Устарела установка и использование `__package__` и `__cached__`.
- [gh-119726](https://python-all.ru/3/whatsnew/changelog.html): JIT теперь генерирует более эффективный код для вызовов C-функций, что приводит к экономии памяти до 0,8% и ускорению на 1,5% на AArch64. Патч от Diego Russo.
- [gh-122878](https://python-all.ru/3/whatsnew/changelog.html): Используйте двоичный файл `pager`, если он доступен (например, в Debian и производных), для отображения `help()` REPL.
- [gh-124188](https://python-all.ru/3/whatsnew/changelog.html): Исправлено чтение и декодирование строки из исходного файла в кодировке, отличной от UTF-8, для синтаксических ошибок, возникающих в компиляторе.
- [gh-124027](https://python-all.ru/3/whatsnew/changelog.html): Поддержка клавиш `<page up>`, `<page down>` и `<delete>` в Python REPL, когда `$TERM` установлен в `vt100`.
- [gh-124022](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка, из-за которой docstring удалялся из классов в интерактивном режиме.
- [gh-123958](https://python-all.ru/3/whatsnew/changelog.html): Докстроки теперь удаляются из оптимизированного AST на уровне оптимизации 2.
- [gh-123923](https://python-all.ru/3/whatsnew/changelog.html): Поле `f_executable` во внутренней структуре [`_PyInterpreterFrame`](https://python-all.ru/3/c-api/frame.html#c._PyInterpreterFrame) теперь использует тегированный указатель. Профилировщики и отладчики, использующие это поле, должны очищать младший значащий бит для восстановления указателя на [PyObject](https://python-all.ru/3/c-api/structures.html#c.PyObject)\*.
- [gh-77894](https://python-all.ru/3/whatsnew/changelog.html): Исправлена возможная авария в сборщике мусора при попытке разорвать цикл ссылок, содержащий объект [`memoryview`](https://python-all.ru/3/library/stdtypes.html#memoryview). Теперь объект `memoryview` может быть очищен только в том случае, если на него не ссылаются буферы.
- [gh-120221](https://python-all.ru/3/whatsnew/changelog.html): REPL asyncio теперь снова правильно обрабатывает KeyboardInterrupt. Исправлено отображение исключений, возникающих во вторичных потоках.
- [gh-119310](https://python-all.ru/3/whatsnew/changelog.html): Новая интерактивная оболочка теперь может читать файлы истории, записанные библиотекой editline, которые содержат записи в юникод-экранированном виде. Патч от aorcajo и Łukasz Langa.
- [gh-123572](https://python-all.ru/3/whatsnew/changelog.html): Исправлены назначения клавиш для различных F-клавиш в Windows для новой REPL. Патч от devdanzin.

### Библиотека

- [gh-123614](https://python-all.ru/3/whatsnew/changelog.html): Добавлен [`turtle.save()`](https://python-all.ru/3/library/turtle.html#turtle.save) для простого сохранения рисунков Turtle в файлы PostScript. Патч от Marie Roald и Yngve Mardal Moe.

### Ядро и встроенные модули

- [gh-123339](https://python-all.ru/3/whatsnew/changelog.html): Установка атрибута `__module__` для класса теперь удаляет элемент `__firstlineno__` из словаря типа, так что они больше не будут несогласованными.
- [gh-119034](https://python-all.ru/3/whatsnew/changelog.html): Изменены клавиши `<page up>` и `<page down>` Python REPL на поиск по истории вперёд/назад. Патч от Victor Stinner.
- [gh-123562](https://python-all.ru/3/whatsnew/changelog.html): Улучшено сообщение [`SyntaxError`](https://python-all.ru/3/library/exceptions.html#SyntaxError) при использовании `case ... as ...` не с именем.
- [gh-123545](https://python-all.ru/3/whatsnew/changelog.html): Исправлен двойной decref в редких случаях в экспериментальных сборках JIT.
- [gh-123484](https://python-all.ru/3/whatsnew/changelog.html): Исправлен `_Py_DebugOffsets` для длинных объектов: он теперь считается относительно начала объекта, а не начала подобъекта.
- [gh-123446](https://python-all.ru/3/whatsnew/changelog.html): Исправлено пустое имя функции в [`TypeError`](https://python-all.ru/3/library/exceptions.html#TypeError), когда встроенные магические методы используются без обязательных аргументов.
- [gh-123440](https://python-all.ru/3/whatsnew/changelog.html): Улучшено сообщение [/](https://python-all.ru/3/library/exceptions.html#SyntaxError) при использовании `/` не с именем.
- [gh-116017](https://python-all.ru/3/whatsnew/changelog.html): Улучшено потребление памяти JIT за счёт периодического освобождения памяти, используемой редко выполняемым кодом. Это изменение особенно заметно улучшает объём памяти для долго работающих программ.
- [gh-123344](https://python-all.ru/3/whatsnew/changelog.html): Добавлены оптимизации AST для параметров по умолчанию у параметров типа.
- [gh-123321](https://python-all.ru/3/whatsnew/changelog.html): Предотвращено возникновение ошибки сегментации из-за состояния гонки в Parser/myreadline при многопоточном использовании. Патч от Bar Harel и Amit Wienner.
- [gh-123177](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка, из-за которой в новой REPL появлялись случайные приглашения в середине перенесённых строк.
- [gh-122982](https://python-all.ru/3/whatsnew/changelog.html): Продлён срок устаревания для инверсии bool (`~`) на два года.
- [gh-123271](https://python-all.ru/3/whatsnew/changelog.html): Обеспечить безопасность параллельных итераций по одному и тому же итератору [`zip()`](https://python-all.ru/3/library/functions.html#zip) в условиях свободной многопоточности.
- [gh-123275](https://python-all.ru/3/whatsnew/changelog.html): Поддержка [`-X gil=1`](https://python-all.ru/3/using/cmdline.html#cmdoption-X) и [`PYTHON_GIL=1`](https://python-all.ru/3/using/cmdline.html#envvar-PYTHON_GIL) в сборках без свободной многопоточности.
- [gh-123177](https://python-all.ru/3/whatsnew/changelog.html): Отключение переноса строк в Apple Terminal с помощью ANSI escape-кода. Патч от Pablo Galindo.
- [gh-123229](https://python-all.ru/3/whatsnew/changelog.html): Исправление предупреждения valgrind путем инициализации буферов f-строк нулями в токенизаторе. Патч от Pablo Galindo.
- [gh-122298](https://python-all.ru/3/whatsnew/changelog.html): Восстановление вывода статистики GC при вызове `gc.set_debug(gc.DEBUG_STATS)`. Эта возможность была случайно удалена при реализации инкрементального GC.
- [gh-121804](https://python-all.ru/3/whatsnew/changelog.html): Корректное отображение местоположения ошибки при возбуждении [`SyntaxError`](https://python-all.ru/3/library/exceptions.html#SyntaxError) в базовом REPL. Патч от Sergey B Kirpichev.
- [gh-115776](https://python-all.ru/3/whatsnew/changelog.html): Включение встраиваемых значений (аналог скрытых классов в Python) для любого класса, экземпляры которого имеют фиксированный размер.
- [gh-123142](https://python-all.ru/3/whatsnew/changelog.html): Исправление слишком широкого указания источника в трассировках исключений, возникающих из-за сломанных итерируемых объектов в генераторах списков.
- [gh-123048](https://python-all.ru/3/whatsnew/changelog.html): Исправление ошибки, при которой код сопоставления с образцом мог породить [`JUMP_FORWARD`](https://python-all.ru/3/library/dis.html#opcode-JUMP_FORWARD) без указания источника.
- [gh-118093](https://python-all.ru/3/whatsnew/changelog.html): Разбиение `CALL_ALLOC_AND_ENTER_INIT` на микрооперации и ослабление требования точных аргументов для увеличения объёма кода, поддерживаемого уровнем 2.
- [gh-123123](https://python-all.ru/3/whatsnew/changelog.html): Исправление отображения многострочных исключений [`SyntaxError`](https://python-all.ru/3/library/exceptions.html#SyntaxError). Патч от Pablo Galindo.
- [gh-123083](https://python-all.ru/3/whatsnew/changelog.html): Исправление потенциального использования после освобождения (use-after-free) в `STORE_ATTR_WITH_HINT`.
- [gh-123022](https://python-all.ru/3/whatsnew/changelog.html): Исправление краха в сборке со свободной многопоточностью при вызове [`Py_Initialize()`](https://python-all.ru/3/c-api/interp-lifecycle.html#c.Py_Initialize) из непотока main.
- [gh-118093](https://python-all.ru/3/whatsnew/changelog.html): Добавление трёх специализаций для [`CALL_KW`](https://python-all.ru/3/library/dis.html#opcode-CALL_KW):

  - `CALL_KW_PY` для вызовов функций Python
  - `CALL_KW_BOUND_METHOD` для вызовов связанных методов
  - `CALL_KW_NON_PY` для всех остальных вызовов
- [gh-122821](https://python-all.ru/3/whatsnew/changelog.html): Обеспечение согласованности смещений для [`sys.monitoring`](https://python-all.ru/3/library/sys.monitoring.html#module-sys.monitoring) в ветвях операторов [`while`](https://python-all.ru/3/reference/compound_stmts.html#while). Операторы `while` теперь компилируются с простым переходом в конце тела, вместо дублирования проверки.
- [gh-122907](https://python-all.ru/3/whatsnew/changelog.html): Сборка с `HAVE_DYNAMIC_LOADING` теперь работает так же хорошо, как в версии 3.12. Существующие недостатки будут устранены отдельно. (См. [https://github.com/python/cpython/issues/122950](https://python-all.ru/3/whatsnew/changelog.html).)
- [gh-122888](https://python-all.ru/3/whatsnew/changelog.html): Исправление краха при некоторых вызовах `str()` с позиционными аргументами неверного типа. Патч от Jelle Zijlstra.
- [gh-118093](https://python-all.ru/3/whatsnew/changelog.html): Улучшение обработки полиморфного кода в экспериментальном JIT.
- [gh-122697](https://python-all.ru/3/whatsnew/changelog.html): Исправлены утечки памяти при завершении интерпретатора в сборке со свободной многопоточностью, а также улучшен вывод информации об утечках через [`-X showrefcount`](https://python-all.ru/3/using/cmdline.html#cmdoption-X).
- [gh-116622](https://python-all.ru/3/whatsnew/changelog.html): Исправление усечения или потери сообщений stdout и stderr на Android.
- [gh-122527](https://python-all.ru/3/whatsnew/changelog.html): Исправление краха, возникающего при освобождении `PyStructSequence` после очистки словаря его типа сборщиком мусора. Теперь [`tp_basicsize`](https://python-all.ru/3/c-api/typeobj.html#c.PyTypeObject.tp_basicsize) типа учитывает не последовательностные поля, не входящие в [`Py_SIZE`](https://python-all.ru/3/c-api/structures.html#c.Py_SIZE) последовательности.
- [gh-122445](https://python-all.ru/3/whatsnew/changelog.html): Добавление только тех полей, которые изменяются через self.\*, в [`__static_attributes__`](https://python-all.ru/3/reference/datamodel.html#type.__static_attributes__).
- [gh-122417](https://python-all.ru/3/whatsnew/changelog.html): В сборке со свободной многопоточностью счётчики ссылок для объектов кучи теперь частично хранятся распределённо в потоко-локальных массивах. Это уменьшает конкуренцию за поля счётчика ссылок типа кучи при одновременном создании или уничтожении экземпляров одного типа из нескольких потоков.
- [gh-116090](https://python-all.ru/3/whatsnew/changelog.html): Исправление проблемы в JIT-сборках, из-за которой некоторые циклы [`for`](https://python-all.ru/3/reference/compound_stmts.html#for) некорректно генерировали события мониторинга [`RAISE`](https://python-all.ru/3/library/sys.monitoring.html#monitoring-event-RAISE).
- [gh-122300](https://python-all.ru/3/whatsnew/changelog.html): Сохранение узлов AST для f-строк с одноэлементными спецификаторами формата. Патч от Pablo Galindo.
- [gh-120906](https://python-all.ru/3/whatsnew/changelog.html): [`frame.f_locals`](https://python-all.ru/3/reference/datamodel.html#frame.f_locals) теперь поддерживает произвольные хешируемые объекты в качестве ключей.
- [gh-122239](https://python-all.ru/3/whatsnew/changelog.html): При распаковке [`list`](https://python-all.ru/3/library/stdtypes.html#list), [`tuple`](https://python-all.ru/3/library/stdtypes.html#tuple) или [`dict`](https://python-all.ru/3/library/stdtypes.html#dict) со слишком большим количеством элементов теперь отображается фактическая длина в сообщении об ошибке.
- [gh-122245](https://python-all.ru/3/whatsnew/changelog.html): Обнаружение записи в `__debug__` перенесено с этапа генерации кода компилятора в символьную таблицу. Это означает, что такие ошибки теперь обнаруживаются даже в коде, который оптимизируется до генерации кода (например, в assert с опцией командной строки [`-O`](https://python-all.ru/3/using/cmdline.html#cmdoption-O)).
- [gh-122234](https://python-all.ru/3/whatsnew/changelog.html): Специализации для суммирования с float и complex в [`sum()`](https://python-all.ru/3/library/functions.html#sum) теперь всегда используют компенсированное суммирование. Кроме того, для целочисленных элементов в указанных специализациях используется [`PyLong_AsDouble()`](https://python-all.ru/3/c-api/long.html#c.PyLong_AsDouble) вместо [`PyLong_AsLongAndOverflow()`](https://python-all.ru/3/c-api/long.html#c.PyLong_AsLongAndOverflow). Патч от Sergey B Kirpichev.
- [gh-122208](https://python-all.ru/3/whatsnew/changelog.html): Наблюдатели за словарями теперь отправляют событие PyDict\_EVENT\_ADDED только тогда, когда вставка находится в заведомо корректном состоянии для успешного выполнения.
- [gh-122160](https://python-all.ru/3/whatsnew/changelog.html): Удалён код операции `BUILD_CONST_KEY_MAP`. Вместо него используйте [`BUILD_MAP`](https://python-all.ru/3/library/dis.html#opcode-BUILD_MAP).
- [gh-122029](https://python-all.ru/3/whatsnew/changelog.html): Генерировать события `c_call` в [`sys.setprofile()`](https://python-all.ru/3/library/sys.html#sys.setprofile) при вызове `PyMethodObject`, указывающего на `PyCFunction`.
- [gh-122026](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка, из-за которой токенизатор в некоторых ситуациях некорректно определял непарные скобки внутри f-строк. Исправление от Pablo Galindo.
- [gh-99108](https://python-all.ru/3/whatsnew/changelog.html): Модуль hashlib в Python теперь безусловно использует встроенную библиотеку HACL\* для Blake2. Python больше не принимает libb2 в качестве опциональной зависимости для Blake2.

  Мы обновили HACL\* до последней версии и теперь включаем 128-битные и 256-битные векторные реализации HACL\* для Blake2, которые используются в инструментальных цепочках x86/x64, если во время выполнения доступны необходимые возможности процессора.

  128-битная векторная реализация HACL\* для Blake2 также может работать на ARM NEON и Power8, но из-за отсутствия подтверждённого прироста производительности эти варианты пока не включены.

### Библиотеки

- [gh-121999](https://python-all.ru/3/whatsnew/changelog.html): Фильтр извлечения по умолчанию для модуля [`tarfile`](https://python-all.ru/3/library/tarfile.html#module-tarfile) теперь установлен в [`'data'`](https://python-all.ru/3/library/tarfile.html#tarfile.data_filter).

### Ядро и встроенные объекты

- [gh-121860](https://python-all.ru/3/whatsnew/changelog.html): Исправлен сбой при восстановлении управляемого словаря после его удаления.
- [gh-121795](https://python-all.ru/3/whatsnew/changelog.html): Улучшена производительность проверки принадлежности множеству, `set.remove()` и `set.discard()`, когда аргумент является множеством.
- [gh-121814](https://python-all.ru/3/whatsnew/changelog.html): Исправлен SegFault при использовании [`PyEval_SetTrace()`](https://python-all.ru/3/c-api/profiling.html#c.PyEval_SetTrace), когда в стеке нет фрейма Python.
- [gh-121295](https://python-all.ru/3/whatsnew/changelog.html): Исправлена проблема, при которой консоль PyREPL переходила в заблокированное состояние после прерывания длинной вставки.
- [gh-121794](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка в свободно-поточной сборке Python, в которой воскрешённый объект мог приводить к ошибке утверждения (assertion failure) с отрицательным счётчиком ссылок.
- [gh-121657](https://python-all.ru/3/whatsnew/changelog.html): Улучшено сообщение [`SyntaxError`](https://python-all.ru/3/library/exceptions.html#SyntaxError), если пользователь пытается использовать [`yield from`](https://python-all.ru/3/reference/simple_stmts.html#yield) вне функции.
- [gh-121609](https://python-all.ru/3/whatsnew/changelog.html): Исправлена вставка символов, содержащих объединители символов юникода (unicode character joiners), в новой REPL. Исправление от Marta Gomez Macias.
- [gh-121297](https://python-all.ru/3/whatsnew/changelog.html): Ранее некорректное использование [`await`](https://python-all.ru/3/reference/expressions.html#await) или асинхронных генераторов списков (comprehensions) в коде, удалённом опцией [`-O`](https://python-all.ru/3/using/cmdline.html#cmdoption-O), не отмечалось компилятором Python. Теперь такой код вызывает [`SyntaxError`](https://python-all.ru/3/library/exceptions.html#SyntaxError). Исправление от Jelle Zijlstra.
- [gh-117482](https://python-all.ru/3/whatsnew/changelog.html): В суб-интерпретаторах больше не создаются неожиданные обёртки (slot wrappers) для встроенных статических типов.
- [gh-121562](https://python-all.ru/3/whatsnew/changelog.html): Оптимизирована производительность hex\_from\_char путём замены switch-case на таблицу поиска.
- [gh-121499](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка, влиявшая на отображение многострочной истории в новой REPL после взаимодействия с новым кэшем экрана. Исправление от Pablo Galindo.
- [gh-121497](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка, из-за которой REPL не учитывала историю, если был установлен хук ввода (input hook). Исправление от Pablo Galindo.
- [gh-121012](https://python-all.ru/3/whatsnew/changelog.html): Исполнение второго уровня (Tier 2) теперь гарантирует, что итераторы списка остаются исчерпанными после того, как они стали таковыми.
- [gh-121439](https://python-all.ru/3/whatsnew/changelog.html): Разрешено повторное использование кортежей длины 20 из списка свободных блоков (freelist).
- [gh-121288](https://python-all.ru/3/whatsnew/changelog.html): Сообщения [`ValueError`](https://python-all.ru/3/library/exceptions.html#ValueError) для [`list.index()`](https://python-all.ru/3/library/stdtypes.html#list.index), [`range.index()`](https://python-all.ru/3/library/stdtypes.html#range.index), `deque.index()`, `deque.remove()` и `ShareableList.index()` больше не содержат repr искомого значения (которое может быть произвольно большим) и согласованы с сообщениями об ошибках для других методов [`index()`](https://python-all.ru/3/library/stdtypes.html#sequence.index) и [`remove()`](https://python-all.ru/3/library/stdtypes.html#sequence.remove).
- [gh-121368](https://python-all.ru/3/whatsnew/changelog.html): Исправлено состояние гонки в `_PyType_Lookup` в свободно-поточной сборке из-за отсутствия барьера памяти. Это могло приводить к тому, что `_PyType_Lookup` возвращал неверные результаты на arm64.
- [gh-121149](https://python-all.ru/3/whatsnew/changelog.html): Добавлена специализация для суммирования комплексных чисел; это также улучшает точность встроенной функции [`sum()`](https://python-all.ru/3/library/functions.html#sum) для таких входных данных. Исправление от Sergey B Kirpichev.
- [gh-121130](https://python-all.ru/3/whatsnew/changelog.html): Исправлены f-строки с отладочными выражениями в спецификаторах формата. Исправление от Pablo Galindo.

### Библиотеки

- [gh-121381](https://python-all.ru/3/whatsnew/changelog.html): Удалён код и документация `subprocess._USE_VFORK` – «запасного люка» (escape hatch). Он был добавлен на всякий случай, и нет известных случаев, требующих его.

### Ядро и встроенные объекты

- [gh-119726](https://python-all.ru/3/whatsnew/changelog.html): Оптимизировано расположение кода для вызовов C-функций из JIT на AArch64. Исправление от Diego Russo.
- [gh-121115](https://python-all.ru/3/whatsnew/changelog.html): [`PyLong_AsNativeBytes()`](https://python-all.ru/3/c-api/long.html#c.PyLong_AsNativeBytes) больше не использует методы [`__index__()`](https://python-all.ru/3/reference/datamodel.html#object.__index__) по умолчанию. Добавлен флаг `Py_ASNATIVEBYTES_ALLOW_INDEX`, чтобы это разрешить.
- [gh-120838](https://python-all.ru/3/whatsnew/changelog.html): [`Py_Finalize()`](https://python-all.ru/3/c-api/interp-lifecycle.html#c.Py_Finalize) и [`Py_FinalizeEx()`](https://python-all.ru/3/c-api/interp-lifecycle.html#c.Py_FinalizeEx) теперь всегда выполняются с активным основным интерпретатором.
- [gh-113433](https://python-all.ru/3/whatsnew/changelog.html): Суб-интерпретаторы теперь автоматически очищаются при финализации выполнения.
- [gh-119726](https://python-all.ru/3/whatsnew/changelog.html): Улучшена скорость и использование памяти при вызовах C-функций из JIT-кода на AArch64. Исправление от Diego Russo.
- [gh-116017](https://python-all.ru/3/whatsnew/changelog.html): Упрощён механизм прогрева, используемый для «побочных выходов» в JIT-коде, что привело к небольшому улучшению производительности и небольшому снижению использования памяти на большинстве платформ.
- [gh-98442](https://python-all.ru/3/whatsnew/changelog.html): Исправлены слишком широкие исходные позиции инструкций очистки оператора with.
- [gh-120754](https://python-all.ru/3/whatsnew/changelog.html): Уменьшено количество системных вызовов при чтении целого файла (напр. `open('a.txt').read()`). Для примера программы, которая читает содержимое более 400 файлов `.rst` в папке `Doc` репозитория cpython, количество системных вызовов сократилось более чем на 10%.
- [gh-119462](https://python-all.ru/3/whatsnew/changelog.html): Обеспечить соблюдение инвариантов версионирования типов: \* Суперклассы всегда получают номер версии перед подклассами. \* Тег версии всегда равен нулю, если тег недействителен. \* Тег версии всегда ненулевой, если тег действителен.
- [gh-120437](https://python-all.ru/3/whatsnew/changelog.html): Исправлены проблемы оптимизации `_CHECK_STACK_SPACE`, введённые в [gh-118322](https://python-all.ru/3/whatsnew/changelog.html).
- [gh-120722](https://python-all.ru/3/whatsnew/changelog.html): Правильно устанавливать позицию байткода на инструкциях return внутри лямбд. Исправление от Jelle Zijlstra.
- [gh-120367](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка, при которой компилятор создаёт избыточный переход при замене псевдооперации. Может произойти только с синтетическим AST, где try находится на той же строке, что и инструкция после обработчика исключений.
- [gh-120507](https://python-all.ru/3/whatsnew/changelog.html): Удалены инструкции `BEFORE_WITH` и `BEFORE_ASYNC_WITH`. Добавлена новая инструкция [`LOAD_SPECIAL`](https://python-all.ru/3/library/dis.html#opcode-LOAD_SPECIAL). Генерировать код для операторов `with` и `async with` с использованием новой инструкции.
- [gh-113993](https://python-all.ru/3/whatsnew/changelog.html): Строки, интернированные с помощью [`sys.intern()`](https://python-all.ru/3/library/sys.html#sys.intern), снова собираются сборщиком мусора, когда больше не используются, как указано в документации. Строки, интернированные с помощью C-функции [`PyUnicode_InternInPlace()`](https://python-all.ru/3/c-api/unicode.html#c.PyUnicode_InternInPlace), по-прежнему бессмертны. Внутренняя механика интернирования строк была изменена. Это может повлиять на производительность и идентификаторы объектов [`str`](https://python-all.ru/3/library/stdtypes.html#str).

### Библиотека

- [gh-120485](https://python-all.ru/3/whatsnew/changelog.html): Добавлено переопределение `allow_reuse_port` в классах, наследующих `socketserver.TCPServer`, где также переопределён `allow_reuse_address`.

### Ядро и встроенные модули

- [gh-120384](https://python-all.ru/3/whatsnew/changelog.html): Исправлен выход за границы массива в `list_ass_subscript`, который мог быть вызван специально подготовленными входными данными: включая одновременное изменение объекта списка, когда один поток присваивает срез, а другой его очищает.
- [gh-120367](https://python-all.ru/3/whatsnew/changelog.html): Исправлен сбой компилятора на коде с избыточными инструкциями NOP и JUMP (пустые операции и переходы), которые появляются после перемещения обработчиков исключений в конец кода.

### Библиотека

- [gh-120380](https://python-all.ru/3/whatsnew/changelog.html): Исправлена реализация на Python [`pickle.Pickler`](https://python-all.ru/3/library/pickle.html#pickle.Pickler) для объектов [`bytes`](https://python-all.ru/3/library/stdtypes.html#bytes) и [`bytearray`](https://python-all.ru/3/library/stdtypes.html#bytearray) при использовании версии протокола 5. Исправление от Bénédikt Tran.

### Ядро и встроенные модули

- [gh-120397](https://python-all.ru/3/whatsnew/changelog.html): Улучшена пропускная способность до двух раз для методов [`str.count()`](https://python-all.ru/3/library/stdtypes.html#str.count), [`bytes.count()`](https://python-all.ru/3/library/stdtypes.html#bytes.count) и [`bytearray.count()`](https://python-all.ru/3/library/stdtypes.html#bytearray.count) при подсчёте одиночных символов.
- [gh-120221](https://python-all.ru/3/whatsnew/changelog.html): Передавать реальные сигналы при Ctrl-C и Ctrl-Z в новом REPL. Исправление от Pablo Galindo
- [gh-120346](https://python-all.ru/3/whatsnew/changelog.html): Учитывать [`PYTHON_BASIC_REPL`](https://python-all.ru/3/using/cmdline.html#envvar-PYTHON_BASIC_REPL) при работе в интерактивном режиме inspect (`python -i`). Исправление от Pablo Galindo
- [gh-93691](https://python-all.ru/3/whatsnew/changelog.html): Исправлены исходные позиции инструкций, генерируемых для итератора оператора for.
- [gh-120198](https://python-all.ru/3/whatsnew/changelog.html): Исправлен сбой, когда несколько потоков одновременно читают и записывают в одно и то же `__class__` объекта.
- [gh-120298](https://python-all.ru/3/whatsnew/changelog.html): Исправлено использование после освобождения в `list_richcompare_impl`, которое может быть вызвано специально подготовленными вредоносными входными данными.
- [gh-119666](https://python-all.ru/3/whatsnew/changelog.html): Исправлен сбой компилятора в случае, когда два включения в области класса ссылаются на `__class__`.
- [gh-119726](https://python-all.ru/3/whatsnew/changelog.html): JIT: повторное использование трамплинов на AArch64 при создании шаблонов. Исправление от Diego Russo
- [gh-120225](https://python-all.ru/3/whatsnew/changelog.html): Исправлен сбой компилятора при пустом блоке в конце обработчика исключений.
- [gh-93691](https://python-all.ru/3/whatsnew/changelog.html): Исправлены исходные позиции инструкций, генерируемых для операторов with.
- [gh-120097](https://python-all.ru/3/whatsnew/changelog.html): `FrameLocalsProxy` теперь наследует `collections.abc.Mapping` и может сопоставляться как отображение в операторах `match`
- [gh-120080](https://python-all.ru/3/whatsnew/changelog.html): Теперь в `int.__round__()` можно передавать `None` в качестве аргумента.
- [gh-119933](https://python-all.ru/3/whatsnew/changelog.html): Улучшены сообщения [`SyntaxError`](https://python-all.ru/3/library/exceptions.html#SyntaxError) для некорректных выражений в границах параметров типа, кортеже ограничений параметра типа или значении параметра типа по умолчанию. Исправление от Bénédikt Tran.
- [gh-119724](https://python-all.ru/3/whatsnew/changelog.html): Отменены улучшения сообщений об ошибках для операторов `elif`/`else`, которые не соответствуют ни одному допустимому оператору, так как это усложняло поиск синтаксических ошибок внутри блоков `elif`/`else`.
- [gh-119879](https://python-all.ru/3/whatsnew/changelog.html): Поиск строк стал немного быстрее в некоторых случаях. Теперь используется последний символ с разрывом (правило хорошего суффикса) для двусторонних периодических иголок.
- [gh-119842](https://python-all.ru/3/whatsnew/changelog.html): Учитывается [`PyOS_InputHook()`](https://python-all.ru/3/c-api/veryhigh.html#c.PyOS_InputHook) в новой REPL. Исправление от Pablo Galindo.
- [gh-119180](https://python-all.ru/3/whatsnew/changelog.html): [`classmethod()`](https://python-all.ru/3/library/functions.html#classmethod) и [`staticmethod()`](https://python-all.ru/3/library/functions.html#staticmethod) теперь лениво оборачивают атрибуты [`__annotations__`](https://python-all.ru/3/reference/datamodel.html#object.__annotations__) и [`__annotate__`](https://python-all.ru/3/reference/datamodel.html#object.__annotate__) своих вызываемых объектов. См. [**PEP 649**](https://python-all.ru/3/whatsnew/changelog.html). Исправление от Jelle Zijlstra.
- [gh-119821](https://python-all.ru/3/whatsnew/changelog.html): Исправлено выполнение [областей аннотаций](https://python-all.ru/3/reference/executionmodel.html#annotation-scopes) внутри классов, когда `globals` установлен в не-словарь. Исправление от Jelle Zijlstra.
- [gh-118934](https://python-all.ru/3/whatsnew/changelog.html): `PyEval_GetLocals` теперь возвращает заимствованную ссылку.
- [gh-119740](https://python-all.ru/3/whatsnew/changelog.html): Удалено ранее устаревшее делегирование [`int()`](https://python-all.ru/3/library/functions.html#int) к [`__trunc__()`](https://python-all.ru/3/reference/datamodel.html#object.__trunc__).
- [gh-119689](https://python-all.ru/3/whatsnew/changelog.html): Генерация метаданных эффектов стека для псевдоинструкций из bytecodes.c.
- [gh-109218](https://python-all.ru/3/whatsnew/changelog.html): [`complex()`](https://python-all.ru/3/library/functions.html#complex) теперь принимает строку только как позиционный аргумент. Передача комплексного числа в качестве аргумента «real» или «imag» устарела; его следует передавать только как единственный позиционный аргумент.
- [gh-119548](https://python-all.ru/3/whatsnew/changelog.html): Добавлена команда `clear` в REPL. Исправление от Pablo Galindo.
- [gh-111999](https://python-all.ru/3/whatsnew/changelog.html): Исправлена сигнатура [`str.format_map()`](https://python-all.ru/3/library/stdtypes.html#str.format_map).
- [gh-119560](https://python-all.ru/3/whatsnew/changelog.html): Удалено некорректное утверждение в бета-версии 1. Оно могло приводить к сбою, если `PyState_FindModule()` использовалось в функции инициализации модуля расширения до инициализации определения модуля.
- [gh-119369](https://python-all.ru/3/whatsnew/changelog.html): Исправлена взаимная блокировка при удалении потока в многопоточной сборке без GIL, которая могла возникать при включённом GIL во время выполнения.
- [gh-119525](https://python-all.ru/3/whatsnew/changelog.html): Исправлена взаимная блокировка с участием кеша `_PyType_Lookup()` в многопоточной сборке без GIL, когда GIL динамически включается во время выполнения.
- [gh-119258](https://python-all.ru/3/whatsnew/changelog.html): Устранены защитные проверки версий типов в интерпретаторе второго уровня.

  Обратите внимание, что ручная установка `tp_version_tag` (которая никогда не поддерживалась) может привести к сбоям.
- [gh-119311](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка, из-за которой имена неожиданно искажались в базовых классах обобщённых классов.
- [gh-119395](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка, из-за которой имена, следующие за обобщённым классом, искажались так, будто они находятся в этом обобщённом классе.
- [gh-119372](https://python-all.ru/3/whatsnew/changelog.html): Исправлены некорректные крайние случаи в комплексном делении (приводили к выводу `(nan+nanj)`), например `1/complex('(inf+infj)')`. Исправление от Sergey B Kirpichev.
- [gh-119180](https://python-all.ru/3/whatsnew/changelog.html): Вычисление аннотаций теперь отложено. Подробности см. в [**PEP 649**](https://python-all.ru/3/whatsnew/changelog.html).
- [gh-119180](https://python-all.ru/3/whatsnew/changelog.html): Заменён опкод `LOAD_ASSERTION_ERROR` на [`LOAD_COMMON_CONSTANT`](https://python-all.ru/3/library/dis.html#opcode-LOAD_COMMON_CONSTANT) и добавлена поддержка [`NotImplementedError`](https://python-all.ru/3/library/exceptions.html#NotImplementedError).
- [gh-119213](https://python-all.ru/3/whatsnew/changelog.html): Модули, не являющиеся встроенными, собранные с Argument Clinic, вызывали сбой при использовании в подынтерпретаторе до основного интерпретатора. Объекты, небрежно передаваемые между интерпретаторами и вызывавшие проблему, были исправлены.
- [gh-119011](https://python-all.ru/3/whatsnew/changelog.html): Исправлено `type.__type_params__` для возврата пустого кортежа вместо дескриптора.
- [gh-118692](https://python-all.ru/3/whatsnew/changelog.html): Избегание создания лишних экземпляров [`StopIteration`](https://python-all.ru/3/library/exceptions.html#StopIteration) для мониторинга.
- [gh-119180](https://python-all.ru/3/whatsnew/changelog.html): Добавлен атрибут `__annotate__` для функций, классов и модулей в рамках [**PEP 649**](https://python-all.ru/3/whatsnew/changelog.html). Исправление от Jelle Zijlstra.
- [gh-119049](https://python-all.ru/3/whatsnew/changelog.html): Исправлено отображение строки исходного кода для предупреждений, создаваемых C API, если модуль [`warnings`](https://python-all.ru/3/library/warnings.html#module-warnings) ещё не был импортирован.
- [gh-119057](https://python-all.ru/3/whatsnew/changelog.html): Улучшено сообщение об ошибке [`ZeroDivisionError`](https://python-all.ru/3/library/exceptions.html#ZeroDivisionError). Теперь все сообщения об ошибках согласованы: для операций `/`, `//` и `%` используется сообщение «division by zero», а для операции `0 ** -1` – «zero to a negative power».
- [gh-118844](https://python-all.ru/3/whatsnew/changelog.html): Исправлены ошибки сборки при конфигурировании с обоими `--disable-gil` и `--enable-experimental-jit`.
- [gh-118921](https://python-all.ru/3/whatsnew/changelog.html): Добавлен метод `copy()` для `FrameLocalsProxy`, который возвращает снимок `dict` для локальных переменных.
- [gh-117657](https://python-all.ru/3/whatsnew/changelog.html): Исправлены гонки данных в поле, хранящем указатель на главный поток интерпретатора, возникающие в многопоточных сборках без GIL.
- [gh-118750](https://python-all.ru/3/whatsnew/changelog.html): Если доступна C-версия модуля `decimal`, то `int(str)` теперь использует её для асимптотически гораздо более быстрого преобразования. Однако это применяется только если строка содержит более примерно 2 миллионов цифр.
- [gh-118767](https://python-all.ru/3/whatsnew/changelog.html): Использование [`NotImplemented`](https://python-all.ru/3/library/constants.html#NotImplemented) в логическом контексте теперь вызывает [`TypeError`](https://python-all.ru/3/library/exceptions.html#TypeError). Вклад: Jelle Zijlstra.
- [gh-118561](https://python-all.ru/3/whatsnew/changelog.html): Исправление состояния гонки в сборке со свободными потоками, где [`list.extend()`](https://python-all.ru/3/library/stdtypes.html#list.extend) могло раскрыть неинициализированную память параллельным читателям.
- [gh-117139](https://python-all.ru/3/whatsnew/changelog.html): Преобразование стека вычислений Python для использования внутренних ссылок на стек. Цель – поддержка тегированных указателей. В [**PEP 703**](https://python-all.ru/3/whatsnew/changelog.html) это позволит реализовать форму отложенного подсчёта ссылок. Как для сборки по умолчанию, так и для сборки со свободными потоками это создаёт инфраструктуру для будущих распакованных целых чисел.

### Библиотека

- [gh-115801](https://python-all.ru/3/whatsnew/changelog.html): Возбуждается `TypeError` при передаче строки в [`difflib.unified_diff()`](https://python-all.ru/3/library/difflib.html#difflib.unified_diff) и [`difflib.context_diff()`](https://python-all.ru/3/library/difflib.html#difflib.context_diff).

### Ядро и встроенные модули

- [gh-117558](https://python-all.ru/3/whatsnew/changelog.html): Улучшение сообщений об ошибках, когда ожидается строка, объект bytes или bytearray длиной 1.
- [gh-117195](https://python-all.ru/3/whatsnew/changelog.html): Предотвращение ошибки утверждения в отладочных сборках при вызове `object.__sizeof__(1)`
- [gh-116022](https://python-all.ru/3/whatsnew/changelog.html): Улучшение вывода [`__repr__()`](https://python-all.ru/3/reference/datamodel.html#object.__repr__) для узлов [`AST`](https://python-all.ru/3/library/ast.html#ast.AST).
- [gh-114091](https://python-all.ru/3/whatsnew/changelog.html): Изменено сообщение об ошибке для ожидания (await) того, что нельзя ожидать, с “object \<type\> can’t be used in an await expression” на “’\<type\>’ object can’t be awaited”.
- [gh-113190](https://python-all.ru/3/whatsnew/changelog.html): [`Py_Finalize()`](https://python-all.ru/3/c-api/interp-lifecycle.html#c.Py_Finalize) теперь удаляет все интернированные строки.
- [gh-84978](https://python-all.ru/3/whatsnew/changelog.html): Добавление методов класса [`float.from_number()`](https://python-all.ru/3/library/stdtypes.html#float.from_number) и [`complex.from_number()`](https://python-all.ru/3/library/stdtypes.html#complex.from_number).
- [gh-95144](https://python-all.ru/3/whatsnew/changelog.html): Улучшение сообщения об ошибке от `a in b`, когда `b` не является контейнером, с упоминанием термина «контейнер».
- [bpo-24766](https://python-all.ru/3/whatsnew/changelog.html): Исправление обработки аргумента `doc` в подклассах `property`.

### C API

- [gh-123961](https://python-all.ru/3/whatsnew/changelog.html): Преобразование статического типа [curses.window](https://python-all.ru/3/library/curses.html#curses-window-objects), предоставляемого макросом `PyCursesWindow_Type` в `Include/py_curses.h`, в [кучный тип](https://python-all.ru/3/c-api/typeobj.html#heap-types). Патч от Bénédikt Tran.
- [gh-124502](https://python-all.ru/3/whatsnew/changelog.html): Добавление функции [`PyUnicode_Equal()`](https://python-all.ru/3/c-api/unicode.html#c.PyUnicode_Equal) в ограниченный C API: проверка равенства двух строк. Патч от Victor Stinner.
- [gh-124296](https://python-all.ru/3/whatsnew/changelog.html): [`PyDictObject`](https://python-all.ru/3/c-api/dict.html#c.PyDictObject) больше не поддерживает приватное поле тега версии `ma_version_tag` для каждого [**PEP 699**](https://python-all.ru/3/whatsnew/changelog.html). Это поле было изначально добавлено в Python 3.6 ([**PEP 509**](https://python-all.ru/3/whatsnew/changelog.html)) и объявлено устаревшим в Python 3.12.
- [gh-124160](https://python-all.ru/3/whatsnew/changelog.html): Исправление краха при импорте модулей, содержащих состояние и однофазную инициализацию, в подынтерпретаторе.
- [gh-124153](https://python-all.ru/3/whatsnew/changelog.html): Добавление слотов [`PyType_GetBaseByToken()`](https://python-all.ru/3/c-api/type.html#c.PyType_GetBaseByToken) и [`Py_tp_token`](https://python-all.ru/3/c-api/type.html#c.Py_tp_token) для упрощения проверки типов, связанных с [**PEP 489**](https://python-all.ru/3/whatsnew/changelog.html) и [**PEP 630**](https://python-all.ru/3/whatsnew/changelog.html).
- [gh-124127](https://python-all.ru/3/whatsnew/changelog.html): В ограниченном C API 3.14 и новее, [`Py_REFCNT()`](https://python-all.ru/3/c-api/refcounting.html#c.Py_REFCNT) теперь реализован как непрозрачный вызов функции для сокрытия деталей реализации. Патч от Victor Stinner.
- [gh-123880](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка, которая препятствовала циклическому импорту модулей расширения, использующих однофазную инициализацию.
- [gh-123909](https://python-all.ru/3/whatsnew/changelog.html): [`PyType_FromSpec()`](https://python-all.ru/3/c-api/type.html#c.PyType_FromSpec), [`PyType_FromSpecWithBases()`](https://python-all.ru/3/c-api/type.html#c.PyType_FromSpecWithBases) и [`PyType_FromModuleAndSpec()`](https://python-all.ru/3/c-api/type.html#c.PyType_FromModuleAndSpec) теперь будут завершаться ошибкой, если метакласс нового типа имеет пользовательский [`tp_new`](https://python-all.ru/3/c-api/typeobj.html#c.PyTypeObject.tp_new).
- [gh-107954](https://python-all.ru/3/whatsnew/changelog.html): Добавление функций для настройки инициализации Python ([**PEP 741**](https://python-all.ru/3/whatsnew/changelog.html)):

  - [`PyInitConfig_Create()`](https://python-all.ru/3/c-api/init_config.html#c.PyInitConfig_Create)
  - [`PyInitConfig_Free()`](https://python-all.ru/3/c-api/init_config.html#c.PyInitConfig_Free)
  - [`PyInitConfig_GetError()`](https://python-all.ru/3/c-api/init_config.html#c.PyInitConfig_GetError)
  - [`PyInitConfig_GetExitCode()`](https://python-all.ru/3/c-api/init_config.html#c.PyInitConfig_GetExitCode)
  - [`PyInitConfig_HasOption()`](https://python-all.ru/3/c-api/init_config.html#c.PyInitConfig_HasOption)
  - [`PyInitConfig_GetInt()`](https://python-all.ru/3/c-api/init_config.html#c.PyInitConfig_GetInt)
  - [`PyInitConfig_GetStr()`](https://python-all.ru/3/c-api/init_config.html#c.PyInitConfig_GetStr)
  - [`PyInitConfig_GetStrList()`](https://python-all.ru/3/c-api/init_config.html#c.PyInitConfig_GetStrList)
  - [`PyInitConfig_FreeStrList()`](https://python-all.ru/3/c-api/init_config.html#c.PyInitConfig_FreeStrList)
  - [`PyInitConfig_SetInt()`](https://python-all.ru/3/c-api/init_config.html#c.PyInitConfig_SetInt)
  - [`PyInitConfig_SetStr()`](https://python-all.ru/3/c-api/init_config.html#c.PyInitConfig_SetStr)
  - [`PyInitConfig_SetStrList()`](https://python-all.ru/3/c-api/init_config.html#c.PyInitConfig_SetStrList)
  - [`PyInitConfig_AddModule()`](https://python-all.ru/3/c-api/init_config.html#c.PyInitConfig_AddModule)
  - [`Py_InitializeFromInitConfig()`](https://python-all.ru/3/c-api/init_config.html#c.Py_InitializeFromInitConfig)

  Патч от Victor Stinner.
- [gh-107954](https://python-all.ru/3/whatsnew/changelog.html): Добавление функций для получения и установки текущей конфигурации времени выполнения Python:

  - [`PyConfig_Get()`](https://python-all.ru/3/c-api/init_config.html#c.PyConfig_Get)
  - [`PyConfig_GetInt()`](https://python-all.ru/3/c-api/init_config.html#c.PyConfig_GetInt)
  - [`PyConfig_Set()`](https://python-all.ru/3/c-api/init_config.html#c.PyConfig_Set)
  - [`PyConfig_Names()`](https://python-all.ru/3/c-api/init_config.html#c.PyConfig_Names)

  Патч от Victor Stinner.
- [gh-123465](https://python-all.ru/3/whatsnew/changelog.html): [`Py_RELATIVE_OFFSET`](https://python-all.ru/3/c-api/structures.html#c.Py_RELATIVE_OFFSET) теперь разрешён в [`PyMemberDef`](https://python-all.ru/3/c-api/structures.html#c.PyMemberDef) для специального члена смещения `"__vectorcalloffset__"`, а также для устаревших специальных членов смещения `"__dictoffset__"` и `"__weaklistoffset__"`.
- [gh-100554](https://python-all.ru/3/whatsnew/changelog.html): Добавлен слот `Py_tp_vectorcall` для установки [`tp_vectorcall`](https://python-all.ru/3/c-api/typeobj.html#c.PyTypeObject.tp_vectorcall) через семейство функций [`PyType_FromSpec()`](https://python-all.ru/3/c-api/type.html#c.PyType_FromSpec). Расширения ограниченного API могут использовать эту возможность для предоставления более эффективной реализации на основе векторных вызовов для `__new__` и `__init__`.
- [gh-122854](https://python-all.ru/3/whatsnew/changelog.html): Добавление [`Py_HashBuffer()`](https://python-all.ru/3/c-api/hash.html#c.Py_HashBuffer) для вычисления и возврата хеш-значения буфера. Патч от Antoine Pitrou и Victor Stinner.
- [gh-122728](https://python-all.ru/3/whatsnew/changelog.html): Исправление [`PyEval_GetLocals()`](https://python-all.ru/3/c-api/reflection.html#c.PyEval_GetLocals) для предотвращения [`SystemError`](https://python-all.ru/3/library/exceptions.html#SystemError) («неверный аргумент внутренней функции»). Патч от Victor Stinner.
- [gh-116622](https://python-all.ru/3/whatsnew/changelog.html): [`PyObject_Print`](https://python-all.ru/3/c-api/object.html#c.PyObject_Print) теперь обходит баг в Android и OpenBSD, который мешал ему выбрасывать исключение при попытке записи в поток, доступный только для чтения.
- [gh-105201](https://python-all.ru/3/whatsnew/changelog.html): Добавлен [`PyIter_NextItem()`](https://python-all.ru/3/c-api/iter.html#c.PyIter_NextItem) для замены [`PyIter_Next()`](https://python-all.ru/3/c-api/iter.html#c.PyIter_Next), у которого неоднозначное возвращаемое значение. Патч от Irit Katriel и Erlend Aasland.
- [gh-121489](https://python-all.ru/3/whatsnew/changelog.html): Приватный `_PyBytes_Join()` снова экспортируется.
- [gh-121645](https://python-all.ru/3/whatsnew/changelog.html): Добавлена функция [`PyBytes_Join(sep, iterable)`](https://python-all.ru/3/c-api/bytes.html#c.PyBytes_Join), похожая на `sep.join(iterable)` в Python. Патч от Victor Stinner.
- [gh-89364](https://python-all.ru/3/whatsnew/changelog.html): Экспортируется функция [`PySignal_SetWakeupFd()`](https://python-all.ru/3/c-api/exceptions.html#c.PySignal_SetWakeupFd). Ранее функция была документирована, но не могла использоваться в стороннем коде. Патч от Victor Stinner.
- [gh-113993](https://python-all.ru/3/whatsnew/changelog.html): [`PyUnicode_InternInPlace()`](https://python-all.ru/3/c-api/unicode.html#c.PyUnicode_InternInPlace) больше не препятствует сборке мусора для своего аргумента.

  В документации нескольких функций, принимающих `char *`, теперь указано, что они могут препятствовать сборке мусора для строковых объектов; подробнее см. в документации: [`PyUnicode_InternFromString()`](https://python-all.ru/3/c-api/unicode.html#c.PyUnicode_InternFromString), [`PyDict_SetItemString()`](https://python-all.ru/3/c-api/dict.html#c.PyDict_SetItemString), [`PyObject_SetAttrString()`](https://python-all.ru/3/c-api/object.html#c.PyObject_SetAttrString), [`PyObject_DelAttrString()`](https://python-all.ru/3/c-api/object.html#c.PyObject_DelAttrString), `PyUnicode_InternFromString()`, и `PyModule_Add*` (вспомогательные функции).
- [gh-113601](https://python-all.ru/3/whatsnew/changelog.html): Удалены утверждения отладочной сборки, связанные с интернированием строк, которые ложно срабатывали из-за расширений стабильного ABI.
- [gh-112136](https://python-all.ru/3/whatsnew/changelog.html): Восстановлены приватная структура `_PyArg_Parser` и приватная функция `_PyArg_ParseTupleAndKeywordsFast()`, ранее удалённые в Python 3.13 alpha 1. Патч от Victor Stinner.
- [gh-120642](https://python-all.ru/3/whatsnew/changelog.html): Удалён приватный тип `_Py_CODEUNIT` из публичного C API. Теперь для получения этого внутреннего типа следует использовать внутренний заголовочный файл `pycore_code.h`. Патч от Victor Stinner.
- [gh-120858](https://python-all.ru/3/whatsnew/changelog.html): [`PyDict_Next()`](https://python-all.ru/3/c-api/dict.html#c.PyDict_Next) больше не блокирует словарь в сборке со свободными потоками. Блокировка должна выполняться вызывающим кодом вокруг всего цикла итерации.
- [gh-120642](https://python-all.ru/3/whatsnew/changelog.html): Удалены следующие нестабильные функции:

  - `PyUnstable_Replace_Executor()`
  - `PyUnstable_SetOptimizer()`
  - `PyUnstable_GetOptimizer()`
  - `PyUnstable_GetExecutor()`
  - `PyUnstable_Optimizer_NewCounter()`
  - `PyUnstable_Optimizer_NewUOpOptimizer()`

  Патч от Victor Stinner.
- [gh-120389](https://python-all.ru/3/whatsnew/changelog.html): Добавлены новые функции для преобразования C-чисел `<stdint.h>` в/из Python [`int`](https://python-all.ru/3/library/functions.html#int):

  - [`PyLong_FromInt32()`](https://python-all.ru/3/c-api/long.html#c.PyLong_FromInt32)
  - [`PyLong_FromUInt32()`](https://python-all.ru/3/c-api/long.html#c.PyLong_FromUInt32)
  - [`PyLong_FromInt64()`](https://python-all.ru/3/c-api/long.html#c.PyLong_FromInt64)
  - [`PyLong_FromUInt64()`](https://python-all.ru/3/c-api/long.html#c.PyLong_FromUInt64)
  - [`PyLong_AsInt32()`](https://python-all.ru/3/c-api/long.html#c.PyLong_AsInt32)
  - [`PyLong_AsUInt32()`](https://python-all.ru/3/c-api/long.html#c.PyLong_AsUInt32)
  - [`PyLong_AsInt64()`](https://python-all.ru/3/c-api/long.html#c.PyLong_AsInt64)
  - [`PyLong_AsUInt64()`](https://python-all.ru/3/c-api/long.html#c.PyLong_AsUInt64)

  Патч от Victor Stinner.
- [gh-120600](https://python-all.ru/3/whatsnew/changelog.html): В ограниченном C API версии 3.14 и новее [`Py_TYPE()`](https://python-all.ru/3/c-api/structures.html#c.Py_TYPE) теперь реализован как непрозрачный вызов функции для сокрытия деталей реализации. Патч от Victor Stinner.
- [gh-70278](https://python-all.ru/3/whatsnew/changelog.html): [`PyUnicode_FromFormat()`](https://python-all.ru/3/c-api/unicode.html#c.PyUnicode_FromFormat) больше не добавляет завершающий символ `\ufffd` для усечённой C-строки при использовании точности с `%s` и `%V`. Теперь строка усекается до начала усечённых многобайтовых последовательностей.
- [gh-119771](https://python-all.ru/3/whatsnew/changelog.html): Устанавливается [`errno`](https://python-all.ru/3/library/errno.html#module-errno) в [`_Py_c_pow()`](https://python-all.ru/3/c-api/complex.html#c._Py_c_pow) при переполнениях. Патч от Sergey B Kirpichev.
- [gh-119182](https://python-all.ru/3/whatsnew/changelog.html): Добавлен новый API [`PyUnicodeWriter`](https://python-all.ru/3/c-api/unicode.html#c.PyUnicodeWriter) для создания объекта Python [`str`](https://python-all.ru/3/library/stdtypes.html#str):

  - [`PyUnicodeWriter_Create()`](https://python-all.ru/3/c-api/unicode.html#c.PyUnicodeWriter_Create).
  - [`PyUnicodeWriter_Discard()`](https://python-all.ru/3/c-api/unicode.html#c.PyUnicodeWriter_Discard).
  - [`PyUnicodeWriter_Finish()`](https://python-all.ru/3/c-api/unicode.html#c.PyUnicodeWriter_Finish).
  - [`PyUnicodeWriter_WriteChar()`](https://python-all.ru/3/c-api/unicode.html#c.PyUnicodeWriter_WriteChar).
  - [`PyUnicodeWriter_WriteUTF8()`](https://python-all.ru/3/c-api/unicode.html#c.PyUnicodeWriter_WriteUTF8).
  - [`PyUnicodeWriter_WriteUCS4()`](https://python-all.ru/3/c-api/unicode.html#c.PyUnicodeWriter_WriteUCS4).
  - [`PyUnicodeWriter_WriteWideChar()`](https://python-all.ru/3/c-api/unicode.html#c.PyUnicodeWriter_WriteWideChar).
  - [`PyUnicodeWriter_WriteStr()`](https://python-all.ru/3/c-api/unicode.html#c.PyUnicodeWriter_WriteStr).
  - [`PyUnicodeWriter_WriteRepr()`](https://python-all.ru/3/c-api/unicode.html#c.PyUnicodeWriter_WriteRepr).
  - [`PyUnicodeWriter_WriteSubstring()`](https://python-all.ru/3/c-api/unicode.html#c.PyUnicodeWriter_WriteSubstring).
  - [`PyUnicodeWriter_Format()`](https://python-all.ru/3/c-api/unicode.html#c.PyUnicodeWriter_Format).
  - [`PyUnicodeWriter_DecodeUTF8Stateful()`](https://python-all.ru/3/c-api/unicode.html#c.PyUnicodeWriter_DecodeUTF8Stateful).

  Патч от Victor Stinner.
- [gh-119613](https://python-all.ru/3/whatsnew/changelog.html): Мягко устаревает макрос [`Py_MEMCPY`](https://python-all.ru/3/c-api/intro.html#c.Py_MEMCPY): вместо него следует напрямую использовать `memcpy()`. Патч от Victor Stinner.
- [gh-119775](https://python-all.ru/3/whatsnew/changelog.html): Создание [`immutable types`](https://python-all.ru/3/c-api/typeobj.html#c.Py_TPFLAGS_IMMUTABLETYPE) с изменяемыми базовыми классами было объявлено устаревшим начиная с 3.12, и теперь вызывает [`TypeError`](https://python-all.ru/3/library/exceptions.html#TypeError).
- [gh-119585](https://python-all.ru/3/whatsnew/changelog.html): Исправлен сбой, возникающий, когда состояние потока, созданное [`PyGILState_Ensure()`](https://python-all.ru/3/c-api/threads.html#c.PyGILState_Ensure), вызывает деструктор, который во время [`PyThreadState_Clear()`](https://python-all.ru/3/c-api/threads.html#c.PyThreadState_Clear) вызывает обратно `PyGILState_Ensure()` и [`PyGILState_Release()`](https://python-all.ru/3/c-api/threads.html#c.PyGILState_Release). Это может происходить в сборке со свободными потоками или при использовании локальных переменных потока, чьи деструкторы вызывают `PyGILState_Ensure()`.
- [gh-119613](https://python-all.ru/3/whatsnew/changelog.html): Макросы `Py_IS_NAN`, `Py_IS_INFINITY` и `Py_IS_FINITE` [мягко устарели](https://python-all.ru/3/glossary.html#term-soft-deprecated).
- [gh-119336](https://python-all.ru/3/whatsnew/changelog.html): Восстановлена удалённая функция `_PyLong_NumBits()`. Она используется проектом pywin32. Патч от Ethan Smith
- [gh-119344](https://python-all.ru/3/whatsnew/changelog.html): API критической секции теперь публичен как часть неограниченного C API.
- [gh-119333](https://python-all.ru/3/whatsnew/changelog.html): Добавлены API [`PyContext_AddWatcher()`](https://python-all.ru/3/c-api/contextvars.html#c.PyContext_AddWatcher) и [`PyContext_ClearWatcher()`](https://python-all.ru/3/c-api/contextvars.html#c.PyContext_ClearWatcher) для регистрации колбэков, получающих уведомления о входе и выходе из контекстных объектов.
- [gh-119247](https://python-all.ru/3/whatsnew/changelog.html): Добавлены макросы `Py_BEGIN_CRITICAL_SECTION_SEQUENCE_FAST` и `Py_END_CRITICAL_SECTION_SEQUENCE_FAST`, позволяющие безопасно использовать API PySequence\_Fast при свободных потоках, и обновлён str.join для работы без GIL с их помощью.
- [gh-111389](https://python-all.ru/3/whatsnew/changelog.html): Добавлена константа [`PyHASH_MULTIPLIER`](https://python-all.ru/3/c-api/hash.html#c.PyHASH_MULTIPLIER): простой множитель, используемый в строковых и различных других хешах. Патч от Victor Stinner.
- [gh-118771](https://python-all.ru/3/whatsnew/changelog.html): Несколько C-объявлений с именами, не начинающимися с префиксов `Py` или `_Py`, которые были ошибочно добавлены в альфа- и бета-выпусках 3.13, перемещены во внутренние заголовочные файлы.
- [gh-116984](https://python-all.ru/3/whatsnew/changelog.html): Сделаны включения mimalloc относительными к текущему файлу, чтобы встраивающие приложения или расширения не нуждались во включении `Internal/mimalloc`, если они уже включают внутренние заголовки CPython.
- [gh-118789](https://python-all.ru/3/whatsnew/changelog.html): Добавлен [`PyUnstable_Object_ClearWeakRefsNoCallbacks()`](https://python-all.ru/3/c-api/weakref.html#c.PyUnstable_Object_ClearWeakRefsNoCallbacks), который очищает слабые ссылки без вызова их колбэков.
- [gh-118789](https://python-all.ru/3/whatsnew/changelog.html): Восстановлен `_PyWeakref_ClearRef`, который был удалён в Python 3.13 alpha 1.
- [gh-117511](https://python-all.ru/3/whatsnew/changelog.html): Сделать [`PyMutex`](https://python-all.ru/3/c-api/synchronization.html#c.PyMutex) общедоступным в неограниченном C API.
- [gh-116560](https://python-all.ru/3/whatsnew/changelog.html): Добавлена функция [`PyLong_GetSign()`](https://python-all.ru/3/c-api/long.html#c.PyLong_GetSign). Patch by Sergey B Kirpichev.
- [gh-97588](https://python-all.ru/3/whatsnew/changelog.html): Исправлено создание битовых полей в структурах и объединениях [`ctypes`](https://python-all.ru/3/library/ctypes.html#module-ctypes). Поля больше не перекрываются.
- [gh-87135](https://python-all.ru/3/whatsnew/changelog.html): Попытка захватить GIL после начала финализации времени выполнения в другом потоке теперь приводит к зависанию потока, а не к его завершению. Это предотвращает потенциальные сбои или повреждение памяти из-за попытки завершить поток, выполняющий код, не предназначенный для поддержки принудительного завершения. В большинстве случаев такое зависание безвредно, так как процесс вскоре всё равно завершится.

  Функция `PyThread_exit_thread` теперь устарела. Её поведение неодинаково на разных платформах, и её можно безопасно использовать только в том маловероятном случае, когда каждая функция во всём стеке вызовов спроектирована с учётом поддержки платформозависимого механизма завершения. Рекомендуется пользователям этой функции изменить архитектуру так, чтобы не требовать завершения потока. В маловероятном случае, когда завершение потока необходимо и может быть выполнено безопасно, пользователи могут перейти на вызов платформозависимых API, таких как `pthread_exit` (POSIX) или `_endthreadex` (Windows) напрямую.
- [bpo-34008](https://python-all.ru/3/whatsnew/changelog.html): Добавлен `Py_IsInitialized` в список API, которые можно безопасно вызывать до инициализации интерпретатора, и обновлены встраивающие тесты для его покрытия.

### Сборка

- [gh-125269](https://python-all.ru/3/whatsnew/changelog.html): Исправлено определение необходимости `-latomic` при кросс-компиляции CPython с помощью скрипта configure.
- [gh-123990](https://python-all.ru/3/whatsnew/changelog.html): Удалены макрос `WITH_FREELISTS` и конфигурация сборки `--without-freelists`
- [gh-124102](https://python-all.ru/3/whatsnew/changelog.html): Обновлена внутренняя документация в PCbuild, теперь в ней правильно указано, что для Windows требуется VS2017 или новее и Python 3.10 или новее
- [gh-124043](https://python-all.ru/3/whatsnew/changelog.html): Сборка с использованием [`--with-trace-refs`](https://python-all.ru/3/using/configure.html#cmdoption-with-trace-refs) (временно) запрещена, когда GIL отключён.
- [gh-123418](https://python-all.ru/3/whatsnew/changelog.html): Обновлена сборка для Android для использования OpenSSL 3.0.15.
- [gh-123297](https://python-all.ru/3/whatsnew/changelog.html): Передаётся значение `LDFLAGS` в `LDCXXSHARED` внутри [`sysconfig`](https://python-all.ru/3/library/sysconfig.html#module-sysconfig). Patch by Pablo Galindo
- [gh-121634](https://python-all.ru/3/whatsnew/changelog.html): Добавлена возможность указывать целевую тройку компиляции для WASI.
- [gh-122578](https://python-all.ru/3/whatsnew/changelog.html): Используется WASI SDK 24 для тестирования.
- [gh-116622](https://python-all.ru/3/whatsnew/changelog.html): Переименование переменной сборки `MODULE_LDFLAGS` обратно в `LIBPYTHON`, поскольку она используется системами сборки пакетов (например, Meson).
- [gh-118943](https://python-all.ru/3/whatsnew/changelog.html): Исправлена проблема, при которой экспериментальный JIT мог собираться несколько раз целью `make regen-all`, что приводило к возможным состояниям гонки при сильно распараллеленных сборках.
- [gh-121996](https://python-all.ru/3/whatsnew/changelog.html): Введены опции ./configure –disable-safety и –enable-slower-safety. Patch by Donghee Na.
- [gh-120522](https://python-all.ru/3/whatsnew/changelog.html): Добавлена опция [`--with-app-store-compliance`](https://python-all.ru/3/using/configure.html#cmdoption-with-app-store-compliance) для обхода известных проблем с процессами проверки App Store для macOS/iOS.
- [gh-120371](https://python-all.ru/3/whatsnew/changelog.html): Поддержка WASI SDK 22 за счёт явного пропуска функций, которые являются всего лишь заглушками в wasi-libc.
- [gh-121731](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка компиляции mimalloc на GNU/Hurd
- [gh-121487](https://python-all.ru/3/whatsnew/changelog.html): Исправлено предупреждение об устаревании для ATOMIC\_VAR\_INIT в mimalloc.
- [gh-121467](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка в Makefile, из-за которой заголовочные файлы mimalloc не устанавливались.
- [gh-121103](https://python-all.ru/3/whatsnew/changelog.html): В системах POSIX, за исключением установок macOS framework, каталог lib для сборки со свободными потоками (free-threaded) теперь содержит суффикс «t», чтобы избежать конфликтов с установкой стандартной сборки в том же месте.
- [gh-120831](https://python-all.ru/3/whatsnew/changelog.html): Минимальная версия iOS по умолчанию увеличена до 13.0.
- [gh-121082](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка сборки, когда разработчик использует аргументы `--enable-pystats` в команде конфигурации после #118450.
- [gh-120671](https://python-all.ru/3/whatsnew/changelog.html): Исправлены сбои тестов configure из-за пропущенного пробела при добавлении к CFLAGS.
- [gh-120602](https://python-all.ru/3/whatsnew/changelog.html): Корректная обработка установок LLVM с `LLVM_VERSION_SUFFIX` при сборке с `--enable-experimental-jit`.
- [gh-120688](https://python-all.ru/3/whatsnew/changelog.html): В режиме отладки на WASI Python теперь собирается с флагом компилятора `-O3` вместо `-Og`, чтобы поддержать больше рекурсивных вызовов. Patch by Victor Stinner.
- [gh-118943](https://python-all.ru/3/whatsnew/changelog.html): Исправлено возможное состояние гонки, затрагивающее параллельные сборки, настроенные с `--enable-experimental-jit`, при котором [`FileNotFoundError`](https://python-all.ru/3/library/exceptions.html#FileNotFoundError) могло быть вызвано другим процессом, уже перемещающим `jit_stencils.h.new` в `jit_stencils.h`.
- [gh-120326](https://python-all.ru/3/whatsnew/changelog.html): В Windows исправлена ошибка сборки, когда опции `--disable-gil` и `--experimental-jit` объединены.
- [gh-120291](https://python-all.ru/3/whatsnew/changelog.html): Сделать `python-config` shell-скрипт совместимым с оболочками, отличными от bash.
- [gh-113565](https://python-all.ru/3/whatsnew/changelog.html): Улучшить проверки зависимостей [`curses`](https://python-all.ru/3/library/curses.html#module-curses) и [`curses.panel`](https://python-all.ru/3/library/curses.panel.html#module-curses.panel) в **configure**.
- [gh-119729](https://python-all.ru/3/whatsnew/changelog.html): В системах POSIX имена файлов pkg-config (`.pc`) теперь включают флаги ABI, которые могут содержать debug («d») и free-threaded («t»). Например: \* `python-3.14.pc` (сборка по умолчанию, без отладки) \* `python-3.14d.pc` (сборка по умолчанию, с отладкой) \* `python-3.14t.pc` (сборка со свободными потоками)
- [gh-119400](https://python-all.ru/3/whatsnew/changelog.html): `make_ssl_certs`, скрипт, подготавливающий данные сертификатов для набора тестов, теперь позволяет указывать даты истечения срока действия.
- [gh-115119](https://python-all.ru/3/whatsnew/changelog.html): Использовать встроенную libmpdec, если системная версия не найдена.
- [gh-119132](https://python-all.ru/3/whatsnew/changelog.html): Обновить [`sys.version`](https://python-all.ru/3/library/sys.html#sys.version) для определения типа сборки: стандартная или со свободными потоками. Исправление от Donghee Na.
- [gh-118836](https://python-all.ru/3/whatsnew/changelog.html): Исправить `AssertionError` при сборке с `--enable-experimental-jit`, когда компилятор выдает секцию `SHT_NOTE`.
- [gh-118943](https://python-all.ru/3/whatsnew/changelog.html): Исправить возможное состояние гонки, затрагивающее параллельные сборки, настроенные с `--enable-experimental-jit`, при котором ошибки компиляции могли быть вызваны не полностью сгенерированным заголовочным файлом.

## Python 3.13.0 beta 1

*Дата выпуска: 2024-05-08*

### Безопасность

- [gh-116741](https://python-all.ru/3/whatsnew/changelog.html): Обновить встроенную libexpat до версии 2.6.2
- [gh-117233](https://python-all.ru/3/whatsnew/changelog.html): Определять поддержку BLAKE2, SHA3, Shake и усечённого SHA512 в библиотеке libcrypto, похожей на OpenSSL, во время сборки. Это позволяет использовать [`hashlib`](https://python-all.ru/3/library/hashlib.html#module-hashlib) с библиотеками, которые не поддерживают все алгоритмы, поддерживаемые основным OpenSSL.

### Ядро и встроенные функции

- [gh-118414](https://python-all.ru/3/whatsnew/changelog.html): Добавить инструментированные опкоды в утверждение YIELD\_VALUE для случаев трассировки.
- [gh-117953](https://python-all.ru/3/whatsnew/changelog.html): Когда встроенный модуль или модуль расширения импортируется впервые, пока активен подынтерпретатор, теперь функция init модуля сначала выполняется главным интерпретатором, прежде чем импорт продолжится в подынтерпретаторе. Следовательно, модули с однофазной инициализацией теперь завершаются ошибкой в изолированном подынтерпретаторе без выполнения функции init в этом интерпретаторе, тогда как раньше она выполнялась в подынтерпретаторе *до* завершения с ошибкой, потенциально оставляя глобальное состояние и колбэки и иначе приводя модуль в несогласованное состояние.
- [gh-117549](https://python-all.ru/3/whatsnew/changelog.html): Не использовать синтаксис именованных инициализаторов во встраиваемых функциях во внутренних заголовках. Это вызывает проблемы у пользователей C++ или MSVC, которые ещё не используют новейший стандарт C++ (C++20). Хотя pycore\_backoff.h является внутренним, он включается (косвенно, через pycore\_code.h) некоторым ключевым сторонним программным обеспечением ради скорости.

### Библиотека

- [gh-95382](https://python-all.ru/3/whatsnew/changelog.html): Улучшить производительность [`json.dumps()`](https://python-all.ru/3/library/json.html#json.dumps) и [`json.dump()`](https://python-all.ru/3/library/json.html#json.dump) при использовании аргумента *indent*. В зависимости от данных кодирование с помощью `json.dumps()` с *indent* может быть до 2–3 раз быстрее.

### Ядро и встроенные функции

- [gh-116322](https://python-all.ru/3/whatsnew/changelog.html): В сборках `--disable-gil` GIL будет включён во время загрузки модулей расширений на C. Если модуль указывает, что поддерживает работу без GIL, GIL будет отключён после завершения загрузки. В противном случае GIL останется включённым на весь оставшийся срок жизни интерпретатора. Это поведение не применяется, если GIL был явно включён или отключён с помощью `PYTHON_GIL` или `-Xgil`.
- [gh-118513](https://python-all.ru/3/whatsnew/changelog.html): Исправить неверный [`UnboundLocalError`](https://python-all.ru/3/library/exceptions.html#UnboundLocalError), когда два включения в одной функции ссылаются на одно и то же имя, и в одном включении имя связано, а в другом является неявной глобальной переменной.
- [gh-118518](https://python-all.ru/3/whatsnew/changelog.html): Разрешить поддержке Linux perf работать без указателей кадров, используя расширенную поддержку JIT от perf. Функция активируется при использовании переменной окружения `PYTHON_PERF_JIT_SUPPORT` или при запуске Python с `-Xperf_jit`. Исправление от Pablo Galindo.
- [gh-117514](https://python-all.ru/3/whatsnew/changelog.html): Добавить функцию `sys._is_gil_enabled()`, которая возвращает, включён ли в данный момент GIL. В сборке по умолчанию она всегда возвращает `True`, поскольку GIL всегда включён. В сборке со свободными потоками она может вернуть `True` или `False`.
- [gh-118164](https://python-all.ru/3/whatsnew/changelog.html): Разорвать цикл между реализацией на Python модуля [`decimal`](https://python-all.ru/3/library/decimal.html#module-decimal) и кодом Python для преобразования целых чисел в строки. Также оптимизировать преобразование целых чисел в строки для значений от 9 000 до 135 000 десятичных цифр.
- [gh-118473](https://python-all.ru/3/whatsnew/changelog.html): Исправить [`sys.set_asyncgen_hooks()`](https://python-all.ru/3/library/sys.html#sys.set_asyncgen_hooks), чтобы он не был частично установлен при возбуждении [`TypeError`](https://python-all.ru/3/library/exceptions.html#TypeError).
- [gh-118465](https://python-all.ru/3/whatsnew/changelog.html): Компилятор заполняет новое поле `__firstlineno__` класса номером строки первой строки определения класса.
- [gh-118492](https://python-all.ru/3/whatsnew/changelog.html): Исправить проблему, при которой кэш типов может раскрыть ранее полученный атрибут при выполнении финализатора.
- [gh-117714](https://python-all.ru/3/whatsnew/changelog.html): обновить `async_generator.athrow().close()` и `async_generator.asend().close()` для закрытия своей части нижележащего асинхронного генератора
- [gh-111201](https://python-all.ru/3/whatsnew/changelog.html): [Интерактивный](https://python-all.ru/3/glossary.html#term-interactive) интерпретатор теперь реализован на Python, что позволяет использовать ряд новых возможностей, таких как цвета, многострочный ввод, просмотр истории и режим вставки. Разработан Pablo Galindo, Łukasz Langa и Lysandros Nikolaou на основе кода из проекта PyPy.
- [gh-74929](https://python-all.ru/3/whatsnew/changelog.html): Реализовать PEP 667: преобразованы [`FrameType.f_locals`](https://python-all.ru/3/reference/datamodel.html#frame.f_locals) и [`PyFrame_GetLocals()`](https://python-all.ru/3/c-api/frame.html#c.PyFrame_GetLocals) для возврата прокси-объекта со сквозной записью, когда фрейм ссылается на функцию или включение.
- [gh-116767](https://python-all.ru/3/whatsnew/changelog.html): Исправить крах компилятора при использовании 'async with' с большим количеством контекстных менеджеров.
- [gh-118335](https://python-all.ru/3/whatsnew/changelog.html): Изменён способ использования интерпретатора второго уровня. Вместо запуска Python с `-X uops` или установки переменной окружения `PYTHON_UOPS=1`, теперь этот выбор делается на этапе сборки с помощью настройки `--enable-experimental-jit=interpreter`.

  **Внимание!** Это изменяет переменную окружения для включения или отключения микроопераций на `PYTHON_JIT`. Старая `PYTHON_UOPS` больше не используется.
- [gh-118306](https://python-all.ru/3/whatsnew/changelog.html): Обновление JIT-компиляции для использования LLVM 18
- [gh-118160](https://python-all.ru/3/whatsnew/changelog.html): [Области видимости аннотаций](https://python-all.ru/3/reference/executionmodel.html#annotation-scopes) внутри классов теперь могут содержать генераторы списков. Однако такие генераторы не встраиваются в родительскую область видимости во время выполнения. Исправление от Jelle Zijlstra.
- [gh-118272](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка, при которой `generator.close` не освобождает локальные переменные фрейма генератора.
- [gh-118216](https://python-all.ru/3/whatsnew/changelog.html): Не учитывать [`__future__`](https://python-all.ru/3/library/__future__.html#module-__future__) импорты с точками перед именем модуля.
- [gh-118074](https://python-all.ru/3/whatsnew/changelog.html): Гарантировать, что объекты-исполнители в массиве COLD\_EXITS не считаются пригодными для сборки мусора (это привело бы к доступу к байтам за пределами объекта).
- [gh-107674](https://python-all.ru/3/whatsnew/changelog.html): Ленивая загрузка номера строки фрейма для повышения производительности трассировки
- [gh-118082](https://python-all.ru/3/whatsnew/changelog.html): Улучшено сообщение [`SyntaxError`](https://python-all.ru/3/library/exceptions.html#SyntaxError) для импортов без имён, например в случаях `from x import` и `import`. Теперь оно указывает пользователям, что [`import`](https://python-all.ru/3/reference/simple_stmts.html#import) ожидает как минимум одно имя после себя.
- [gh-118090](https://python-all.ru/3/whatsnew/changelog.html): Улучшено сообщение [`SyntaxError`](https://python-all.ru/3/library/exceptions.html#SyntaxError) для пустых скобок параметров типа.
- [gh-117958](https://python-all.ru/3/whatsnew/changelog.html): Added a `get_jit_code()` method to access JIT compiled machine code from the UOp Executor when the experimental JIT is enabled. Patch by Anthony Shaw.
- [gh-117901](https://python-all.ru/3/whatsnew/changelog.html): Добавлена опция для генерации кода компилятора для сохранения вложенных последовательностей инструкций для интроспекции.
- [gh-116622](https://python-all.ru/3/whatsnew/changelog.html): Перенаправление stdout и stderr в системный журнал при встраивании в приложение Android.
- [gh-109118](https://python-all.ru/3/whatsnew/changelog.html): [Область видимости аннотации](https://python-all.ru/3/reference/executionmodel.html#annotation-scopes) внутри областей видимости классов теперь может содержать лямбды.
- [gh-117894](https://python-all.ru/3/whatsnew/changelog.html): Предотвращение повторного использования объектов `agen.aclose()` после `.throw()`.
- [gh-117881](https://python-all.ru/3/whatsnew/changelog.html): предотвращение одновременного доступа к асинхронному генератору через athrow().throw() или asend().throw()
- [gh-117536](https://python-all.ru/3/whatsnew/changelog.html): Исправлен [`RuntimeWarning`](https://python-all.ru/3/library/exceptions.html#RuntimeWarning) при вызове `agen.aclose().throw(Exception)`.
- [gh-117755](https://python-all.ru/3/whatsnew/changelog.html): Исправление аллокатора mimalloc для огромных выделений памяти (около 8 589 934 592 GiB) на s390x. Исправление от Victor Stinner.
- [gh-117750](https://python-all.ru/3/whatsnew/changelog.html): Исправлена проблема, при которой словарь объекта рассинхронизировался с внутренними значениями объекта при очистке. `obj.__dict__.clear()` теперь очищает внутренние значения, но оставляет словарь привязанным к объекту.
- [gh-117431](https://python-all.ru/3/whatsnew/changelog.html): Повышена производительность следующих методов [`bytes`](https://python-all.ru/3/library/stdtypes.html#bytes) и [`bytearray`](https://python-all.ru/3/library/stdtypes.html#bytearray) за счёт их адаптации к соглашению о вызовах [`METH_FASTCALL`](https://python-all.ru/3/c-api/structures.html#c.METH_FASTCALL):

  - `count()`
  - `find()`
  - `index()`
  - `rfind()`
  - `rindex()`
- [gh-117709](https://python-all.ru/3/whatsnew/changelog.html): Ускорение вызовов [`str()`](https://python-all.ru/3/library/stdtypes.html#str) с позиционно-только аргументом за счёт использования соглашения о вызовах [**PEP 590**](https://python-all.ru/3/whatsnew/changelog.html) `vectorcall`. Исправление от Erlend Aasland.
- [gh-117680](https://python-all.ru/3/whatsnew/changelog.html): Добавление `_PyInstructionSequence` Python-интерфейса и его использование в тестах.
- [gh-115776](https://python-all.ru/3/whatsnew/changelog.html): Статически выделенные объекты по определению бессмертны, поэтому должны быть помечены как таковые независимо от того, находятся ли они в модулях расширения или нет.
- [gh-117385](https://python-all.ru/3/whatsnew/changelog.html): Удалены необрабатываемые события `PY_MONITORING_EVENT_BRANCH` и `PY_MONITORING_EVENT_EXCEPTION_HANDLED` из [`sys.settrace()`](https://python-all.ru/3/library/sys.html#sys.settrace).
- [gh-116322](https://python-all.ru/3/whatsnew/changelog.html): Модули расширения могут указать среде выполнения, что они могут работать без GIL. Модули с многофазной инициализацией делают это, предоставляя `Py_MOD_GIL_NOT_USED` для слота `Py_mod_gil`, а модули с однофазной инициализацией вызывают `PyUnstable_Module_SetGIL(mod, Py_MOD_GIL_NOT_USED)` из своей функции инициализации.
- [gh-116129](https://python-all.ru/3/whatsnew/changelog.html): Реализация [**PEP 696**](https://python-all.ru/3/whatsnew/changelog.html), добавлена поддержка значений по умолчанию для параметров типа. Исправление от Jelle Zijlstra.
- [gh-93502](https://python-all.ru/3/whatsnew/changelog.html): Добавлены две новые функции в C-API, [`PyRefTracer_SetTracer()`](https://python-all.ru/3/c-api/profiling.html#c.PyRefTracer_SetTracer) и [`PyRefTracer_GetTracer()`](https://python-all.ru/3/c-api/profiling.html#c.PyRefTracer_GetTracer), которые позволяют отслеживать создание и уничтожение объектов так же, как это делает модуль [`tracemalloc`](https://python-all.ru/3/library/tracemalloc.html#module-tracemalloc). Исправление от Pablo Galindo
- [gh-107674](https://python-all.ru/3/whatsnew/changelog.html): Значительно улучшена производительность [`sys.settrace()`](https://python-all.ru/3/library/sys.html#sys.settrace)
- [gh-95754](https://python-all.ru/3/whatsnew/changelog.html): Улучшено сообщение об ошибке, когда скрипт, затеняющий модуль из стандартной библиотеки, вызывает [`AttributeError`](https://python-all.ru/3/library/exceptions.html#AttributeError). Аналогично, улучшено сообщение об ошибке, когда скрипт, затеняющий сторонний модуль, пытается получить доступ к атрибуту этого стороннего модуля, пока он ещё инициализируется.
- [gh-99180](https://python-all.ru/3/whatsnew/changelog.html): Сокрытие неинформативных индикаторов трассировки в `return` и простых инструкциях `assignment`. Исправление от Pablo Galindo.
- [gh-105879](https://python-all.ru/3/whatsnew/changelog.html): Разрешена передача аргументов *globals* и *locals* в [`exec()`](https://python-all.ru/3/library/functions.html#exec) и [`eval()`](https://python-all.ru/3/library/functions.html#eval) в качестве именованных.

### Библиотека

- [gh-118418](https://python-all.ru/3/whatsnew/changelog.html): Теперь [`DeprecationWarning`](https://python-all.ru/3/library/exceptions.html#DeprecationWarning) генерируется, если не передать значение новому параметру *type\_params* в `typing._eval_type()` или `typing.ForwardRef._evaluate()`. (Использование любой из этих частных и недокументированных функций в принципе не рекомендуется, но отсутствие значения для параметра `type_params` может привести к некорректному поведению на Python 3.12 и новее.)
- [gh-118660](https://python-all.ru/3/whatsnew/changelog.html): Добавлен необязательный второй параметр типа в [`typing.ContextManager`](https://python-all.ru/3/library/typing.html#typing.ContextManager) и [`typing.AsyncContextManager`](https://python-all.ru/3/library/typing.html#typing.AsyncContextManager), представляющий возвращаемые типы [`__exit__()`](https://python-all.ru/3/reference/datamodel.html#object.__exit__) и [`__aexit__()`](https://python-all.ru/3/reference/datamodel.html#object.__aexit__) соответственно. По умолчанию этот параметр равен `bool | None`.
- [gh-118650](https://python-all.ru/3/whatsnew/changelog.html): Модуль `enum` позволяет определять метод с именем `_repr_*` для типов `Enum`.
- [gh-118648](https://python-all.ru/3/whatsnew/changelog.html): Добавлены значения по умолчанию для параметров типа в [`typing.Generator`](https://python-all.ru/3/library/typing.html#typing.Generator) и [`typing.AsyncGenerator`](https://python-all.ru/3/library/typing.html#typing.AsyncGenerator).
- [gh-101137](https://python-all.ru/3/whatsnew/changelog.html): MIME-тип `text/x-rst` теперь поддерживается [`mimetypes`](https://python-all.ru/3/library/mimetypes.html#module-mimetypes).
- [gh-118164](https://python-all.ru/3/whatsnew/changelog.html): Реализация модуля `decimal` на Python могла зависать в случаях с относительно небольшими степенями (например, `2**117`), если точность контекста была установлена на очень высокое значение. Теперь используется другой метод проверки точности представления результатов, который не требует вычисления `10**precision` (которое может быть слишком большим для вычисления).
- [gh-111744](https://python-all.ru/3/whatsnew/changelog.html): `breakpoint()` и `pdb.set_trace()` теперь входят в отладчик сразу после вызова, а не перед выполнением следующей строки.
- [gh-118500](https://python-all.ru/3/whatsnew/changelog.html): Добавлена поддержка [`pdb`](https://python-all.ru/3/library/pdb.html#module-pdb) для zip-приложений
- [gh-118406](https://python-all.ru/3/whatsnew/changelog.html): Добавлена сигнатура для объектов [`sqlite3.Connection`](https://python-all.ru/3/library/sqlite3.html#sqlite3.Connection).
- [gh-101732](https://python-all.ru/3/whatsnew/changelog.html): Используется совместимая с Y2038 функция времени OpenSSL, если она доступна.
- [gh-118404](https://python-all.ru/3/whatsnew/changelog.html): Исправлено [`inspect.signature()`](https://python-all.ru/3/library/inspect.html#inspect.signature) для несравнимых вызываемых объектов.
- [gh-118402](https://python-all.ru/3/whatsnew/changelog.html): Исправлено [`inspect.signature()`](https://python-all.ru/3/library/inspect.html#inspect.signature) для результата вызова [`functools.cmp_to_key()`](https://python-all.ru/3/library/functools.html#functools.cmp_to_key).
- [gh-116622](https://python-all.ru/3/whatsnew/changelog.html): На Android [`sysconfig.get_platform`](https://python-all.ru/3/library/sysconfig.html#sysconfig.get_platform) теперь возвращает формат, указанный в [**PEP 738**](https://python-all.ru/3/whatsnew/changelog.html).
- [gh-118285](https://python-all.ru/3/whatsnew/changelog.html): Позволяет задавать сигнатуру пользовательских вызываемых экземпляров типа-расширения с помощью атрибута `__text_signature__`. Заданы сигнатуры экземпляров [`operator.attrgetter`](https://python-all.ru/3/library/operator.html#operator.attrgetter), [`operator.itemgetter`](https://python-all.ru/3/library/operator.html#operator.itemgetter) и [`operator.methodcaller`](https://python-all.ru/3/library/operator.html#operator.methodcaller).
- [gh-118314](https://python-all.ru/3/whatsnew/changelog.html): Исправлен крайний случай в строгом режиме [`binascii.a2b_base64()`](https://python-all.ru/3/library/binascii.html#binascii.a2b_base64), когда избыточное дополнение не обнаруживается, хотя дополнение не требуется.
- [gh-118271](https://python-all.ru/3/whatsnew/changelog.html): Добавлены методы `PhotoImage`: `read()` для чтения изображения из файла и `data()` для получения данных изображения. Добавлены параметры *background* и *grayscale* в метод `PhotoImage` `write()`.
- [gh-118225](https://python-all.ru/3/whatsnew/changelog.html): Добавлен метод `PhotoImage` `copy_replace()` для копирования области из одного изображения в другое, возможно, с масштабированием пикселей и/или субдискретизацией. Добавлен параметр *from\_coords* в методы `PhotoImage` `copy()`, `zoom()` и `subsample()`. Добавлены параметры *zoom* и *subsample* в метод `PhotoImage` `copy()`.
- [gh-118221](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка, из-за которой [`sqlite3.Connection.iterdump()`](https://python-all.ru/3/library/sqlite3.html#sqlite3.Connection.iterdump) могла завершаться ошибкой при использовании пользовательского [`row factory`](https://python-all.ru/3/library/sqlite3.html#sqlite3.Connection.row_factory). Исправление от Erlend Aasland.
- [gh-118013](https://python-all.ru/3/whatsnew/changelog.html): Исправлен регресс, внесённый в [gh-103193](https://python-all.ru/3/whatsnew/changelog.html), из-за которого вызов [`inspect.getattr_static()`](https://python-all.ru/3/library/inspect.html#inspect.getattr_static) для экземпляра приводил к тому, что сильная ссылка на класс этого экземпляра сохранялась во внутреннем кеше модуля [`inspect`](https://python-all.ru/3/library/inspect.html#module-inspect). Это вызывало неожиданное потребление памяти, если класс создавался динамически, класс содержал сильные ссылки на другие объекты, занимающие значительный объём памяти, и кеш содержал единственную сильную ссылку на класс. Исправление регресса приводит к замедлению `getattr_static()`, но функция всё равно должна быть значительно быстрее, чем в Python 3.11. Исправление от Alex Waygood.
- [gh-118218](https://python-all.ru/3/whatsnew/changelog.html): Ускорение [`itertools.pairwise()`](https://python-all.ru/3/library/itertools.html#itertools.pairwise) в типичном случае до 1.8 раза.
- [gh-117486](https://python-all.ru/3/whatsnew/changelog.html): Улучшено поведение пользовательских подклассов [`ast.AST`](https://python-all.ru/3/library/ast.html#ast.AST). Теперь такие классы в обычном случае не требуют изменений для соответствия изменениям поведения модуля [`ast`](https://python-all.ru/3/library/ast.html#module-ast) в Python 3.13. Исправление от Jelle Zijlstra.
- [gh-90848](https://python-all.ru/3/whatsnew/changelog.html): Исправлено [`unittest.mock.create_autospec()`](https://python-all.ru/3/library/unittest.mock.html#unittest.mock.create_autospec) для настройки родительского мока с помощью именованных аргументов.
- [gh-118168](https://python-all.ru/3/whatsnew/changelog.html): Исправлена некорректная подстановка аргументов при использовании [`typing.Unpack`](https://python-all.ru/3/library/typing.html#typing.Unpack) со встроенной [`tuple`](https://python-all.ru/3/library/stdtypes.html#tuple). Теперь `typing.Unpack` вызывает [`TypeError`](https://python-all.ru/3/library/exceptions.html#TypeError) при использовании с некоторыми недопустимыми типами. Исправление от Jelle Zijlstra.
- [gh-118131](https://python-all.ru/3/whatsnew/changelog.html): Добавлен интерфейс командной строки для модуля [`random`](https://python-all.ru/3/library/random.html#module-random). Исправление от Hugo van Kemenade.
- [gh-118107](https://python-all.ru/3/whatsnew/changelog.html): Исправлено [`zipimport`](https://python-all.ru/3/library/zipimport.html#module-zipimport) чтение ZIP64-файлов с записями файлов, которые слишком велики или имеют слишком большое смещение.
- [gh-102511](https://python-all.ru/3/whatsnew/changelog.html): Исправлено [`os.path.normpath()`](https://python-all.ru/3/library/os.path.html#os.path.normpath) для UNC-путей в Windows. Ускорено [`os.path.splitroot()`](https://python-all.ru/3/library/os.path.html#os.path.splitroot) с помощью нативной реализации.
- [gh-117535](https://python-all.ru/3/whatsnew/changelog.html): Изменено неизвестное имя файла для [`warnings`](https://python-all.ru/3/library/warnings.html#module-warnings) с `sys` на `<sys>`, чтобы уточнить, что это не настоящее имя файла.
- [gh-114053](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибочная [`NameError`](https://python-all.ru/3/library/exceptions.html#NameError) при вызове [`typing.get_type_hints()`](https://python-all.ru/3/library/typing.html#typing.get_type_hints) для класса, который использовал параметры типа [**PEP 695**](https://python-all.ru/3/whatsnew/changelog.html) в модуле, в начале файла которого было `from __future__ import annotations`. Исправление от Alex Waygood.
- [gh-116931](https://python-all.ru/3/whatsnew/changelog.html): Добавлена проверка параметра *fileobj* для [`tarfile.TarFile.addfile()`](https://python-all.ru/3/library/tarfile.html#tarfile.TarFile.addfile)
- [gh-117995](https://python-all.ru/3/whatsnew/changelog.html): Не вызывать [`DeprecationWarning`](https://python-all.ru/3/library/exceptions.html#DeprecationWarning), когда [последовательность](https://python-all.ru/3/glossary.html#term-sequence) параметров используется для привязки индексированных безымянных плейсхолдеров. См. также [gh-100668](https://python-all.ru/3/whatsnew/changelog.html).
- [gh-80361](https://python-all.ru/3/whatsnew/changelog.html): Исправлен TypeError в [`email.message.Message.get_payload()`](https://python-all.ru/3/library/email.compat32-message.html#email.message.Message.get_payload), когда кодировка закодирована по [**RFC 2231**](https://python-all.ru/3/whatsnew/changelog.html).
- [gh-86650](https://python-all.ru/3/whatsnew/changelog.html): Исправлен IndexError при разборе некоторых писем с недопустимым Message-ID (включая одноразовые адреса, созданные Microsoft Outlook).
- [gh-117691](https://python-all.ru/3/whatsnew/changelog.html): Улучшены сообщения об ошибках, выдаваемые [`tarfile`](https://python-all.ru/3/library/tarfile.html#module-tarfile) предупреждениями об устаревании, связанными с PEP 706. Если аргумент `filter` не передан в `extract()` или `extractall`, предупреждение об устаревании теперь указывает на строку в коде пользователя, где была вызвана соответствующая функция. Исправление от Alex Waygood.
- [gh-115874](https://python-all.ru/3/whatsnew/changelog.html): Исправлена возможная ошибка сегментации при сборке мусора объектов `_asyncio.FutureIter`. Исправление от Savannah Ostrowski.
- [gh-115060](https://python-all.ru/3/whatsnew/changelog.html): Ускорение [`pathlib.Path.glob()`](https://python-all.ru/3/library/pathlib.html#pathlib.Path.glob) за счёт пропуска начального вызова [`is_dir()`](https://python-all.ru/3/library/pathlib.html#pathlib.Path.is_dir). В результате этого изменения `glob()` больше не может вызывать [`OSError`](https://python-all.ru/3/library/exceptions.html#OSError).
- [gh-77102](https://python-all.ru/3/whatsnew/changelog.html): [`site`](https://python-all.ru/3/library/site.html#module-site) module now parses `.pth` file with UTF-8 first, and [locale encoding](https://python-all.ru/3/glossary.html#term-locale-encoding) if `UnicodeDecodeError` happened. It supported only locale encoding before.
- [gh-76785](https://python-all.ru/3/whatsnew/changelog.html): We’ve exposed the low-level `_interpreters` module for the sake of the PyPI implementation of [**PEP 734**](https://python-all.ru/3/whatsnew/changelog.html). It was sometimes available as the `_xxsubinterpreters` module and was formerly used only for testing. For the most part, it should be considered an internal module, like `_thread` and `_imp`. See [https://discuss.python.org/t/pep-734-multiple-interpreters-in-the-stdlib/41147/26](https://python-all.ru/3/whatsnew/changelog.html).
- [gh-115060](https://python-all.ru/3/whatsnew/changelog.html): Ускорение [`pathlib.Path.glob()`](https://python-all.ru/3/library/pathlib.html#pathlib.Path.glob) за счёт отказа от сканирования каталогов для сегментов шаблона, не содержащих подстановочных знаков.
- [gh-117727](https://python-all.ru/3/whatsnew/changelog.html): Ускорение [`pathlib.Path.iterdir()`](https://python-all.ru/3/library/pathlib.html#pathlib.Path.iterdir) за счёт внутреннего использования [`os.scandir()`](https://python-all.ru/3/library/os.html#os.scandir).
- [gh-117586](https://python-all.ru/3/whatsnew/changelog.html): Ускорение [`pathlib.Path.walk()`](https://python-all.ru/3/library/pathlib.html#pathlib.Path.walk) за счёт внутренней работы со строками.
- [gh-117722](https://python-all.ru/3/whatsnew/changelog.html): Изменение поддержки нескольких разделителей в [`asyncio.StreamReader.readuntil()`](https://python-all.ru/3/library/asyncio-stream.html#asyncio.StreamReader.readuntil) – теперь принимаются только кортежи разделителей, а не произвольные итерируемые объекты.
- [gh-117692](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка, когда [`doctest.DocTestFinder`](https://python-all.ru/3/library/doctest.html#doctest.DocTestFinder) давал сбой на обёрнутом `builtin_function_or_method`.
- [gh-117348](https://python-all.ru/3/whatsnew/changelog.html): В значительной степени восстановлена производительность импорта configparser за счёт отказа от dataclasses.
- [gh-117641](https://python-all.ru/3/whatsnew/changelog.html): Ускорение [`os.path.commonpath()`](https://python-all.ru/3/library/os.path.html#os.path.commonpath) в Unix.
- [gh-117663](https://python-all.ru/3/whatsnew/changelog.html): Исправление `_simple_enum` для обнаружения псевдонимов, когда присутствует несколько аргументов, но только один является значением элемента.
- [gh-117636](https://python-all.ru/3/whatsnew/changelog.html): Ускорение [`os.path.join()`](https://python-all.ru/3/library/os.path.html#os.path.join).
- [gh-117618](https://python-all.ru/3/whatsnew/changelog.html): Поддержка `package.module` в качестве `filename` для команды `break` в [`pdb`](https://python-all.ru/3/library/pdb.html#module-pdb)
- [gh-102247](https://python-all.ru/3/whatsnew/changelog.html): перечисление кодов состояния с константами в http.HTTPStatus обновлено, чтобы включить имена из RFC9110. Этот RFC включает некоторые статусы HTTP, ранее использовавшиеся только для WEBDAV, и присваивает им более общие имена.

  Старые константы сохранены для обратной совместимости.
- [gh-117607](https://python-all.ru/3/whatsnew/changelog.html): Ускорение [`os.path.relpath()`](https://python-all.ru/3/library/os.path.html#os.path.relpath).
- [gh-117586](https://python-all.ru/3/whatsnew/changelog.html): Ускорение [`pathlib.Path.glob()`](https://python-all.ru/3/library/pathlib.html#pathlib.Path.glob) за счёт внутренней работы со строками.
- [gh-117225](https://python-all.ru/3/whatsnew/changelog.html): Добавлена цветовая подсветка вывода doctest. Исправление от Hugo van Kemenade.
- [gh-117566](https://python-all.ru/3/whatsnew/changelog.html): [`ipaddress.IPv6Address.is_loopback()`](https://python-all.ru/3/library/ipaddress.html#ipaddress.IPv6Address.is_loopback) теперь возвращает `True` для IPv4-отображённых адресов loopback, т.е. адресов в адресном пространстве `::ffff:127.0.0.0/104`.
- [gh-117546](https://python-all.ru/3/whatsnew/changelog.html): Исправлена проблема, когда [`os.path.realpath()`](https://python-all.ru/3/library/os.path.html#os.path.realpath) переставал разрешать симлинки после обнаружения цикла симлинков в POSIX.
- [gh-116720](https://python-all.ru/3/whatsnew/changelog.html): Улучшено поведение [`asyncio.TaskGroup`](https://python-all.ru/3/library/asyncio-task.html#asyncio.TaskGroup) при пересечении внешней отмены с внутренней. Например, когда вложены две группы задач и обе одновременно получают исключение в дочерней задаче, внешняя группа могла работать некорректно, потому что её внутренняя отмена была поглощена внутренней группой.

  В случае, когда группа задач отменяется извне и также должна вызвать [`ExceptionGroup`](https://python-all.ru/3/library/exceptions.html#ExceptionGroup), теперь она вызывает метод [`cancel()`](https://python-all.ru/3/library/asyncio-task.html#asyncio.Task.cancel) родительской задачи. Это гарантирует, что [`asyncio.CancelledError`](https://python-all.ru/3/library/asyncio-exceptions.html#asyncio.CancelledError) будет возбуждено при следующем [`await`](https://python-all.ru/3/reference/expressions.html#await), и отмена не будет потеряна.

  Дополнительное преимущество этих изменений – группы задач теперь сохраняют счётчик отмен ([`asyncio.Task.cancelling()`](https://python-all.ru/3/library/asyncio-task.html#asyncio.Task.cancelling)).

  Для обработки некоторых крайних случаев [`asyncio.Task.uncancel()`](https://python-all.ru/3/library/asyncio-task.html#asyncio.Task.uncancel) может теперь сбрасывать недокументированный флаг `_must_cancel`, когда счётчик отмен достигает нуля.
- [gh-117516](https://python-all.ru/3/whatsnew/changelog.html): Add [`typing.TypeIs`](https://python-all.ru/3/library/typing.html#typing.TypeIs), implementing [**PEP 742**](https://python-all.ru/3/whatsnew/changelog.html). Patch by Jelle Zijlstra.
- [gh-117503](https://python-all.ru/3/whatsnew/changelog.html): Исправлена поддержка не-ASCII имён пользователей в путях в виде байтов в [`os.path.expanduser()`](https://python-all.ru/3/library/os.path.html#os.path.expanduser) в Posix.
- [gh-117394](https://python-all.ru/3/whatsnew/changelog.html): [`os.path.ismount()`](https://python-all.ru/3/library/os.path.html#os.path.ismount) теперь в 2–3 раза быстрее, если у пользователя есть права.
- [gh-117313](https://python-all.ru/3/whatsnew/changelog.html): При переформатировании сообщений [`email`](https://python-all.ru/3/library/email.html#module-email) рассматривать как разделители строк только `'\n'`, `'\r'` и `'\r\n'`. Сохранять управляющие символы `'\v'`, `'\f'`, `'\x1c'`, `'\x1d'` и `'\x1e'` и разделители строк Unicode `'\x85'`, `'\u2028'` и `'\u2029'` без изменений.
- [gh-117142](https://python-all.ru/3/whatsnew/changelog.html): Convert `_ctypes` to multi-phase initialisation ([**PEP 489**](https://python-all.ru/3/whatsnew/changelog.html)).
- [gh-66543](https://python-all.ru/3/whatsnew/changelog.html): Add the [`mimetypes.guess_file_type()`](https://python-all.ru/3/library/mimetypes.html#mimetypes.guess_file_type) function which works with file path. Passing file path instead of URL in [`guess_type()`](https://python-all.ru/3/library/mimetypes.html#mimetypes.guess_type) is [soft deprecated](https://python-all.ru/3/glossary.html#term-soft-deprecated).
- [gh-68583](https://python-all.ru/3/whatsnew/changelog.html): CLI модуля webbrowser: замена getopt на argparse, добавлены длинные опции. Патч от Hugo van Kemenade.
- [gh-116871](https://python-all.ru/3/whatsnew/changelog.html): Предложения имён для [`AttributeError`](https://python-all.ru/3/library/exceptions.html#AttributeError) и [`ImportError`](https://python-all.ru/3/library/exceptions.html#ImportError) теперь включают имена с подчёркиванием только в том случае, если исходное имя содержало подчёркивание.
- [gh-116023](https://python-all.ru/3/whatsnew/changelog.html): Пустые поля (значение `None` или `[]`) по умолчанию не отображаются в [`ast.dump()`](https://python-all.ru/3/library/ast.html#ast.dump). Добавлен параметр `show_empty=False` для их опционального отображения.
- [gh-115961](https://python-all.ru/3/whatsnew/changelog.html): Добавлены атрибуты `name` и `mode` для сжатых и архивированных файлоподобных объектов в модулях [`bz2`](https://python-all.ru/3/library/bz2.html#module-bz2), [`lzma`](https://python-all.ru/3/library/lzma.html#module-lzma), [`tarfile`](https://python-all.ru/3/library/tarfile.html#module-tarfile) и [`zipfile`](https://python-all.ru/3/library/zipfile.html#module-zipfile). Значение атрибута `mode` объекта [`gzip.GzipFile`](https://python-all.ru/3/library/gzip.html#gzip.GzipFile) изменено с целого числа (`1` или `2`) на строку (`'rb'` или `'wb'`). Значение атрибута `mode` читаемого файлоподобного объекта, возвращаемого [`zipfile.ZipFile.open()`](https://python-all.ru/3/library/zipfile.html#zipfile.ZipFile.open), изменено с `'r'` на `'rb'`.
- [gh-82062](https://python-all.ru/3/whatsnew/changelog.html): Исправлена [`inspect.signature()`](https://python-all.ru/3/library/inspect.html#inspect.signature) – теперь она корректно обрабатывает значения параметров по умолчанию в методах модулей расширения, использующих имена, определённые в пространстве имён модуля.
- [gh-83856](https://python-all.ru/3/whatsnew/changelog.html): Соблюдается [`atexit`](https://python-all.ru/3/library/atexit.html#module-atexit) для всех методов запуска [`multiprocessing`](https://python-all.ru/3/library/multiprocessing.html#module-multiprocessing)
- [gh-113081](https://python-all.ru/3/whatsnew/changelog.html): Цветное отображение исключений, как и при встроенной трассировке, в [`pdb`](https://python-all.ru/3/library/pdb.html#module-pdb)
- [gh-112855](https://python-all.ru/3/whatsnew/changelog.html): Ускорена сериализация объектов [`pathlib.PurePath`](https://python-all.ru/3/library/pathlib.html#pathlib.PurePath). Патч от Barney Gale.
- [gh-111744](https://python-all.ru/3/whatsnew/changelog.html): Поддержка событий опкодов в [`bdb`](https://python-all.ru/3/library/bdb.html#module-bdb)
- [gh-109617](https://python-all.ru/3/whatsnew/changelog.html): `ncurses`: исправлен сбой, который мог возникать в macOS 13 или новее при сборке Python с SDK от Apple Xcode 15.
- [gh-83151](https://python-all.ru/3/whatsnew/changelog.html): В оболочке [`pdb`](https://python-all.ru/3/library/pdb.html#module-pdb) теперь допускаются произвольные инструкции и выражения, позволяющие обращаться к локальным переменным текущего фрейма, благодаря чему стал возможен код с несколькими областями видимости, например генераторы и вложенные функции.
- [gh-110209](https://python-all.ru/3/whatsnew/changelog.html): Добавлены [`__class_getitem__()`](https://python-all.ru/3/reference/datamodel.html#object.__class_getitem__) в [`types.GeneratorType`](https://python-all.ru/3/library/types.html#types.GeneratorType) и [`types.CoroutineType`](https://python-all.ru/3/library/types.html#types.CoroutineType) для целей аннотации типов. Патч от James Hilton-Balfe.
- [gh-108191](https://python-all.ru/3/whatsnew/changelog.html): [`types.SimpleNamespace`](https://python-all.ru/3/library/types.html#types.SimpleNamespace) теперь принимает необязательный позиционный аргумент, который задаёт начальные значения атрибутов в виде словаря или итерируемого объекта с парами ключ-значение.
- [gh-62090](https://python-all.ru/3/whatsnew/changelog.html): Исправлены ошибки утверждения, вызванные пробелами в метапеременных или группах с `SUPPRESS` в [`argparse`](https://python-all.ru/3/library/argparse.html#module-argparse), путём упрощения форматирования описания использования. Патч от Ali Hamdan.
- [gh-102402](https://python-all.ru/3/whatsnew/changelog.html): Настроена `logging.LogRecord` для использования `time.time_ns()` и исправлена небольшая ошибка, связанная с арифметикой чисел с плавающей запятой.
- [gh-100242](https://python-all.ru/3/whatsnew/changelog.html): Реализация на чистом Python `functools.partial.__new__` приведена в большее соответствие с C-реализацией: теперь проверка наличия атрибута `'func'` у первого аргумента `partial` выполняется не всегда, а только по необходимости. Вместо этого обе версии – и Python, и C – выполняют проверку `isinstance(func, partial)` на первом аргументе `partial`.
- [gh-99730](https://python-all.ru/3/whatsnew/changelog.html): HEAD-запросы больше не преобразуются в GET-запросы при перенаправлениях в urllib.
- [gh-66410](https://python-all.ru/3/whatsnew/changelog.html): Установка глобальной переменной модуля `tkinter` `wantobjects` в `2` перед созданием объекта [`Tk`](https://python-all.ru/3/library/tkinter.html#tkinter.Tk) или вызовом метода `wantobjects()` объекта `Tk` с аргументом `2` теперь приводит к тому, что аргументы колбэков, зарегистрированных в модуле [`tkinter`](https://python-all.ru/3/library/tkinter.html#module-tkinter), передаются в виде различных объектов Python (`int`, `float`, `bytes`, `tuple`) в зависимости от их внутреннего представления в Tcl, а не всегда `str`. `tkinter.wantobjects` теперь по умолчанию установлено в `2`.
- [bpo-40943](https://python-all.ru/3/whatsnew/changelog.html): Исправлено несколько IndexError при разборе писем с усечённым Message-ID, адресом, маршрутом и т.д., например `example@`.
- [bpo-39324](https://python-all.ru/3/whatsnew/changelog.html): Добавлено соответствие MIME-типа для .md ↔ text/markdown
- [bpo-18108](https://python-all.ru/3/whatsnew/changelog.html): [`shutil.chown()`](https://python-all.ru/3/library/shutil.html#shutil.chown) теперь поддерживает именованные аргументы *dir\_fd* и *follow\_symlinks*.
- [bpo-30988](https://python-all.ru/3/whatsnew/changelog.html): Исправлен разбор писем с некорректными заголовками адресов, содержащими точку в начале или в конце. Патч от tsufeki.
- [bpo-32839](https://python-all.ru/3/whatsnew/changelog.html): Добавлен метод `after_info()` для виджетов Tkinter.

### Документация

- [gh-117928](https://python-all.ru/3/whatsnew/changelog.html): Минимальная версия Sphinx, необходимая для документации, теперь – 6.2.1.

### Сборка

- [gh-118734](https://python-all.ru/3/whatsnew/changelog.html): Исправлена сборка Windows при прямом вызове (не через скрипт `build.bat`) без указания значения для `UseTIER2`.
- [gh-115119](https://python-all.ru/3/whatsnew/changelog.html): Опция `configure` [`--with-system-libmpdec`](https://python-all.ru/3/using/configure.html#cmdoption-with-system-libmpdec) теперь по умолчанию равна `yes`. Встроенная копия `libmpdecimal` будет удалена в Python 3.15.
- [gh-117845](https://python-all.ru/3/whatsnew/changelog.html): Исправлена сборка с новыми версиями libedit: сигнатуры хуков readline обнаруживаются в **configure**.
- [gh-116622](https://python-all.ru/3/whatsnew/changelog.html): Добавлен тестовый проект для запуска набора тестов на Android.
- [gh-117645](https://python-all.ru/3/whatsnew/changelog.html): Размер стека WASI увеличен с 512 КиБ до 8 МиБ, начальный объём памяти – с 10 МиБ до 20 МиБ. Патч от Victor Stinner.
- [gh-115119](https://python-all.ru/3/whatsnew/changelog.html): **configure** теперь использует **pkg-config** для обнаружения зависимостей [`decimal`](https://python-all.ru/3/library/decimal.html#module-decimal), если задана опция [`--with-system-libmpdec`](https://python-all.ru/3/using/configure.html#cmdoption-with-system-libmpdec).

### Windows

- [gh-115119](https://python-all.ru/3/whatsnew/changelog.html): Обновлён установщик Windows: теперь используется libmpdecimal 4.0.0.
- [gh-118486](https://python-all.ru/3/whatsnew/changelog.html): [`os.mkdir()`](https://python-all.ru/3/library/os.html#os.mkdir) теперь принимает *режим* `0o700` для ограничения новой директории текущим пользователем.
- [gh-118347](https://python-all.ru/3/whatsnew/changelog.html): Исправлена проблема с установкой обновлений лаунчера.
- [gh-118293](https://python-all.ru/3/whatsnew/changelog.html): Модуль `multiprocessing` теперь передаёт флаг `STARTF_FORCEOFFFEEDBACK` при запуске процессов, чтобы указать Windows не изменять указатель мыши.
- [gh-115009](https://python-all.ru/3/whatsnew/changelog.html): Обновлён установщик Windows: теперь используется SQLite 3.45.3.
- [gh-90329](https://python-all.ru/3/whatsnew/changelog.html): Подавление предупреждения, отображаемого при создании виртуального окружения, когда запрошенный и созданный пути различаются только коротким именем (в стиле 8.3). Предупреждения продолжат отображаться, если точка соединения или символическая ссылка в пути привели к созданию venv в месте, отличном от изначально запрошенного.
- [gh-117786](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка запуска виртуальных окружений, созданных из установки через Store.

### macOS

- [gh-115119](https://python-all.ru/3/whatsnew/changelog.html): Обновлён установщик macOS: теперь используется libmpdecimal 4.0.0.
- [gh-114099](https://python-all.ru/3/whatsnew/changelog.html): Обеспечена совместимость символов препроцессора iOS со старыми SDK macOS.
- [gh-115009](https://python-all.ru/3/whatsnew/changelog.html): Обновлён установщик macOS: теперь используется SQLite 3.45.3.
- [gh-91629](https://python-all.ru/3/whatsnew/changelog.html): Использование конфигураций `~/.config/fish/conf.d` и **fish\_add\_path** для установки `PATH` при установке для Fish shell.

### IDLE

- [bpo-34774](https://python-all.ru/3/whatsnew/changelog.html): Использовать выбранную пользователем цветовую тему для Help =\> IDLE Doc.

### C API

- [gh-118124](https://python-all.ru/3/whatsnew/changelog.html): Исправление [`Py_BUILD_ASSERT`](https://python-all.ru/3/c-api/intro.html#c.Py_BUILD_ASSERT) и [`Py_BUILD_ASSERT_EXPR`](https://python-all.ru/3/c-api/intro.html#c.Py_BUILD_ASSERT_EXPR) для неконстантных выражений: используйте `static_assert()` на C11 и новее. Исправление от Victor Stinner.
- [gh-110850](https://python-all.ru/3/whatsnew/changelog.html): Добавлен вариант "Raw" функций PyTime

  - [`PyTime_MonotonicRaw()`](https://python-all.ru/3/c-api/time.html#c.PyTime_MonotonicRaw)
  - [`PyTime_PerfCounterRaw()`](https://python-all.ru/3/c-api/time.html#c.PyTime_PerfCounterRaw)
  - [`PyTime_TimeRaw()`](https://python-all.ru/3/c-api/time.html#c.PyTime_TimeRaw)

  Исправление от Victor Stinner.
- [gh-117987](https://python-all.ru/3/whatsnew/changelog.html): Восстановлены функции, удалённые в Python 3.13 alpha 1:

  - [`Py_SetPythonHome()`](https://python-all.ru/3/c-api/interp-lifecycle.html#c.Py_SetPythonHome)
  - [`Py_SetProgramName()`](https://python-all.ru/3/c-api/interp-lifecycle.html#c.Py_SetProgramName)
  - [`PySys_SetArgvEx()`](https://python-all.ru/3/c-api/interp-lifecycle.html#c.PySys_SetArgvEx)
  - [`PySys_SetArgv()`](https://python-all.ru/3/c-api/interp-lifecycle.html#c.PySys_SetArgv)

  Исправление от Victor Stinner.
- [gh-117929](https://python-all.ru/3/whatsnew/changelog.html): Восстановлена удалённая функция [`PyEval_InitThreads()`](https://python-all.ru/3/c-api/threads.html#c.PyEval_InitThreads). Исправление от Victor Stinner.
- [gh-117534](https://python-all.ru/3/whatsnew/changelog.html): Улучшена логика валидации в C-реализации [`datetime.datetime.fromisoformat()`](https://python-all.ru/3/library/datetime.html#datetime.datetime.fromisoformat) для лучшей обработки некорректных годов. Исправление от Vlad Efanov.
- [gh-68114](https://python-all.ru/3/whatsnew/changelog.html): Исправлена обработка старых форматтеров 'w' и 'w#' в skipitem(). Они больше не поддерживаются, и теперь при их использовании вызывается исключение.
- [gh-111997](https://python-all.ru/3/whatsnew/changelog.html): Добавлен C-API для запуска событий мониторинга.

## Python 3.13.0 alpha 6

*Дата выпуска: 2024-04-09*

### Ядро и встроенные модули

- [gh-117494](https://python-all.ru/3/whatsnew/changelog.html): Выполнен рефакторинг структуры данных последовательности инструкций: перемещена из compile.c в instruction\_sequence.c.
- [gh-116968](https://python-all.ru/3/whatsnew/changelog.html): Введён унифицированный 16-битный тип счётчика выдержки (`_Py_BackoffCounter`), общий для адаптивного специализатора первого уровня и оптимизатора второго уровня. API, используемый для счётчиков адаптивной специализации, изменён, но поведение (предположительно) идентично.

  Поведение счётчиков второго уровня изменено:

  - Больше нет динамических порогов (мы их никогда не изменяли).
  - Все счётчики теперь используют одну и ту же экспоненциальную отсрочку.
  - Счётчик для `JUMP_BACKWARD` начинает отсчёт с 16.
  - Счётчик `temperature` при побочных выходах начинает отсчёт с 64.
- [gh-117431](https://python-all.ru/3/whatsnew/changelog.html): Повышена производительность следующих методов [`bytes`](https://python-all.ru/3/library/stdtypes.html#bytes) и [`bytearray`](https://python-all.ru/3/library/stdtypes.html#bytearray) за счёт их адаптации к соглашению о вызовах [`METH_FASTCALL`](https://python-all.ru/3/c-api/structures.html#c.METH_FASTCALL):

  - `endswith()`
  - `startswith()`
- [gh-117431](https://python-all.ru/3/whatsnew/changelog.html): Повышена производительность следующих методов [`str`](https://python-all.ru/3/library/stdtypes.html#str) за счёт их адаптации к соглашению о вызовах [`METH_FASTCALL`](https://python-all.ru/3/c-api/structures.html#c.METH_FASTCALL):

  - [`count()`](https://python-all.ru/3/library/stdtypes.html#str.count)
  - [`endswith()`](https://python-all.ru/3/library/stdtypes.html#str.endswith)
  - [`find()`](https://python-all.ru/3/library/stdtypes.html#str.find)
  - [`index()`](https://python-all.ru/3/library/stdtypes.html#str.index)
  - [`rfind()`](https://python-all.ru/3/library/stdtypes.html#str.rfind)
  - [`rindex()`](https://python-all.ru/3/library/stdtypes.html#str.rindex)
  - [`startswith()`](https://python-all.ru/3/library/stdtypes.html#str.startswith)
- [gh-117411](https://python-all.ru/3/whatsnew/changelog.html): Перенесён `PyFutureFeatures` во внутренний заголовочный файл и сделан закрытым.
- [gh-109120](https://python-all.ru/3/whatsnew/changelog.html): Добавлена обработка некорректных выражений со звёздочкой, например `f(3, *)`. Патч от Grigoryev Semyon
- [gh-117266](https://python-all.ru/3/whatsnew/changelog.html): Исправлены падения для некоторых пользовательских подклассов [`ast.AST`](https://python-all.ru/3/library/ast.html#ast.AST). Теперь от таких классов ожидается, что они устанавливают атрибут `_field_types`.
- [gh-99108](https://python-all.ru/3/whatsnew/changelog.html): Обновлён встроенный [`hashlib`](https://python-all.ru/3/library/hashlib.html#module-hashlib) – код на C из вышестоящего [проекта HACL\*](https://python-all.ru/3/whatsnew/changelog.html), который мы используем для многих реализаций, когда они не доступны через OpenSSL в конкретной сборке. Это также устраняет редкую возможность проблемы компоновки из-за правила единственного определения (ODR) для имён символов C.
- [gh-117108](https://python-all.ru/3/whatsnew/changelog.html): Бит старого пространства объектов в молодом поколении изменён с 0 на gcstate-\>visited, чтобы объекты, создаваемые во время сборки мусора, имели корректно установленный бит старого, если они перемещаются в старое поколение.
- [gh-117108](https://python-all.ru/3/whatsnew/changelog.html): Циклический сборщик мусора теперь выбирает размер инкрементов на основе общего размера кучи, а не скорости создания объектов. Это гарантирует, что он будет успевать за растущими кучами.
- [gh-116735](https://python-all.ru/3/whatsnew/changelog.html): Для `INSTRUMENTED_CALL_FUNCTION_EX` установить `arg0` в `sys.monitoring.MISSING` вместо `None` для события [`CALL`](https://python-all.ru/3/library/sys.monitoring.html#monitoring-event-CALL).
- [gh-113964](https://python-all.ru/3/whatsnew/changelog.html): Запуск новых потоков и создание процессов через [`os.fork()`](https://python-all.ru/3/library/os.html#os.fork) теперь блокируются только после завершения всех не-демонных потоков.
- [gh-116626](https://python-all.ru/3/whatsnew/changelog.html): Обеспечить, чтобы `INSTRUMENTED_CALL_FUNCTION_EX` всегда выдавал [`CALL`](https://python-all.ru/3/library/sys.monitoring.html#monitoring-event-CALL)
- [gh-116554](https://python-all.ru/3/whatsnew/changelog.html): `list.sort()` теперь использует больше случаев частичного упорядочивания, особенно с длинными нисходящими последовательностями, содержащими подпоследовательности равных значений. Теперь они распознаются как единые последовательности (ранее каждый блок повторяющихся значений приводил к созданию новой последовательности).
- [gh-114099](https://python-all.ru/3/whatsnew/changelog.html): Добавлен загрузчик, способный обнаруживать модули расширения в папке Frameworks в стиле iOS.
- [gh-115775](https://python-all.ru/3/whatsnew/changelog.html): Компилятор заполняет новое поле `__static_attributes__` класса именами атрибутов этого класса, к которым обращаются через self.X из любой функции в его теле.
- [gh-115776](https://python-all.ru/3/whatsnew/changelog.html): Массив значений – структура `PyDictValues` – теперь встраивается в объект во время выделения памяти. Это обеспечивает лучшую производительность в типичном случае и меньше деградирует при материализации `__dict__` объекта.
- [gh-108362](https://python-all.ru/3/whatsnew/changelog.html): Реализован инкрементальный циклический сборщик мусора. Благодаря сборке старого поколения инкрементами отпадает необходимость в полном сканировании кучи. Это может значительно сократить максимальное время паузы для программ с большими кучами.

  Количество поколений сокращено с трёх до двух. Старое поколение разделено на два пространства: “visited” и “pending”.

  Сборка происходит в два этапа: \* Инкремент формируется из молодого поколения и небольшой части пространства pending. \* Этот инкремент сканируется, а выжившие объекты перемещаются в конец пространства visited.

  Когда собираемое пространство становится пустым, два пространства меняются местами.

### Библиотека

- [gh-109870](https://python-all.ru/3/whatsnew/changelog.html): Dataclasses теперь вызывает [`exec()`](https://python-all.ru/3/library/functions.html#exec) один раз на dataclass, а не один раз на каждый добавляемый метод. Это может ускорить создание dataclass до 20%.
- [gh-97901](https://python-all.ru/3/whatsnew/changelog.html): MIME-тип `text/rtf` теперь поддерживается в [`mimetypes`](https://python-all.ru/3/library/mimetypes.html#module-mimetypes).

### Ядро и встроенные функции

- [bpo-24612](https://python-all.ru/3/whatsnew/changelog.html): Улучшено [`SyntaxError`](https://python-all.ru/3/library/exceptions.html#SyntaxError), происходящее, когда ‘not’ стоит после оператора. Патч от Pablo Galindo

### Библиотека

- [gh-117648](https://python-all.ru/3/whatsnew/changelog.html): Повышена производительность [`os.path.join()`](https://python-all.ru/3/library/os.path.html#os.path.join) и [`os.path.expanduser()`](https://python-all.ru/3/library/os.path.html#os.path.expanduser).
- [gh-117584](https://python-all.ru/3/whatsnew/changelog.html): Возбуждать [`TypeError`](https://python-all.ru/3/library/exceptions.html#TypeError) для не-путей в [`posixpath.relpath`](https://python-all.ru/3/library/os.path.html#os.path.relpath).
- [gh-117467](https://python-all.ru/3/whatsnew/changelog.html): Сохранение владения почтовым ящиком при перезаписи в [`mailbox.mbox.flush`](https://python-all.ru/3/library/mailbox.html#mailbox.Mailbox.flush). Патч от Tony Mountifield.
- [gh-114848](https://python-all.ru/3/whatsnew/changelog.html): Возбуждать [`FileNotFoundError`](https://python-all.ru/3/library/exceptions.html#FileNotFoundError), когда `getcwd()` возвращает ‘(unreachable)’, что может происходить на Linux \>= 2.6.36 с glibc \< 2.27.
- [gh-117459](https://python-all.ru/3/whatsnew/changelog.html): `asyncio.asyncio.run_coroutine_threadsafe()` теперь сохраняет трассировку `CancelledError`, [`TimeoutError`](https://python-all.ru/3/library/exceptions.html#TimeoutError) и `InvalidStateError`, которые возбуждаются в корутине.
- [gh-117381](https://python-all.ru/3/whatsnew/changelog.html): Исправлено сообщение об ошибке для `ntpath.commonpath()`.
- [gh-117337](https://python-all.ru/3/whatsnew/changelog.html): Устарели недокументированные функции `glob.glob0()` и `glob.glob1()`. Вместо них используйте [`glob.glob()`](https://python-all.ru/3/library/glob.html#glob.glob) и передавайте каталог в его аргумент *root\_dir*.
- [gh-117349](https://python-all.ru/3/whatsnew/changelog.html): Оптимизировано несколько функций в [`os.path`](https://python-all.ru/3/library/os.path.html#module-os.path).
- [gh-117348](https://python-all.ru/3/whatsnew/changelog.html): Выполнен рефакторинг `configparser.RawConfigParser._read()` для снижения цикломатической сложности и улучшения понятности.
- [gh-117335](https://python-all.ru/3/whatsnew/changelog.html): Возбуждается TypeError для не-последовательностей в `ntpath.commonpath()`.
- [gh-66449](https://python-all.ru/3/whatsnew/changelog.html): [`configparser.ConfigParser`](https://python-all.ru/3/library/configparser.html#configparser.ConfigParser) теперь принимает безымянные секции перед именованными, если это настроено.
- [gh-88014](https://python-all.ru/3/whatsnew/changelog.html): В документации [`gzip.GzipFile`](https://python-all.ru/3/library/gzip.html#gzip.GzipFile) в модуле gzip объясняется тип данных необязательного аргумента конструктора *mtime* и рекомендуется `mtime = 0` для создания детерминированных потоков данных.
- [gh-117310](https://python-all.ru/3/whatsnew/changelog.html): Исправлена маловероятная аварийная остановка на раннем этапе, вызванная `Py_DECREF` в [`ssl`](https://python-all.ru/3/library/ssl.html#module-ssl) при создании нового `_ssl._SSLContext`, если CPython был собран неправдоподобным образом, так что список шифров по умолчанию пуст **or** библиотека SSL, с которой он слинкован, сообщает об ошибке из своего C `SSL_CTX_set_cipher_list()` API.
- [gh-117294](https://python-all.ru/3/whatsnew/changelog.html): `DocTestCase` теперь сообщается как пропущенный, если все примеры в doctest пропущены.
- [gh-98966](https://python-all.ru/3/whatsnew/changelog.html): В [`subprocess`](https://python-all.ru/3/library/subprocess.html#module-subprocess) возбуждается более информативное сообщение, когда `stdout=STDOUT`.
- [gh-117225](https://python-all.ru/3/whatsnew/changelog.html): doctest: печатать «and X failed» только при ненулевом значении, не склонять «1 items». Исправление от Hugo van Kemenade.
- [gh-117205](https://python-all.ru/3/whatsnew/changelog.html): Ускорение [`compileall.compile_dir()`](https://python-all.ru/3/library/compileall.html#compileall.compile_dir) на 20% при использовании multiprocessing за счёт увеличения `chunksize`.
- [gh-117178](https://python-all.ru/3/whatsnew/changelog.html): Исправлена регрессия в ленивой загрузке самоссылающихся модулей, появившаяся в [gh-114781](https://python-all.ru/3/whatsnew/changelog.html).
- [gh-112383](https://python-all.ru/3/whatsnew/changelog.html): Исправлена обработка инструкций `ENTER_EXECUTOR` в модуле [`dis`](https://python-all.ru/3/library/dis.html#module-dis).
- [gh-117182](https://python-all.ru/3/whatsnew/changelog.html): Ленивая загрузка модулей, изменяющих собственный `__class__`, больше не возвращает `__class__` к [`types.ModuleType`](https://python-all.ru/3/library/types.html#types.ModuleType).
- [gh-117084](https://python-all.ru/3/whatsnew/changelog.html): Исправлено извлечение [`zipfile`](https://python-all.ru/3/library/zipfile.html#module-zipfile) для записей каталогов, имена которых содержат обратную косую черту в Windows.
- [gh-117114](https://python-all.ru/3/whatsnew/changelog.html): Сделать [`os.path.isdevdrive()`](https://python-all.ru/3/library/os.path.html#os.path.isdevdrive) доступным на всех платформах. Для тех, которые не поддерживают Dev Drives, он всегда будет возвращать `False`.
- [gh-117110](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка, которая не позволяла создавать экземпляры подклассов [`typing.Any`](https://python-all.ru/3/library/typing.html#typing.Any) с аргументами. Исправление от Chris Fu.
- [gh-109653](https://python-all.ru/3/whatsnew/changelog.html): Отложенные выборочные импорты в importlib.metadata и importlib.resources для ускорения на 14%.
- [gh-70647](https://python-all.ru/3/whatsnew/changelog.html): Начат период устаревания текущего поведения [`datetime.datetime.strptime()`](https://python-all.ru/3/library/datetime.html#datetime.datetime.strptime) и [`time.strptime()`](https://python-all.ru/3/library/time.html#time.strptime), которое всегда не может разобрать строку даты с [`ValueError`](https://python-all.ru/3/library/exceptions.html#ValueError), включающим день месяца, например `strptime("02-29", "%m-%d")`, если год **не** указан и дата приходится на 29 февраля. Это должно помочь избежать обнаружения пользователями новых ошибок каждые четыре года из-за естественного ошибочного предположения об API при разборе частичных значений даты.
- [gh-116987](https://python-all.ru/3/whatsnew/changelog.html): Исправлен `inspect.findsource()` для объектов кода классов.
- [gh-114099](https://python-all.ru/3/whatsnew/changelog.html): Изменена стандартная библиотека для учёта особенностей платформы iOS.
- [gh-90872](https://python-all.ru/3/whatsnew/changelog.html): В Windows [`subprocess.Popen.wait()`](https://python-all.ru/3/library/subprocess.html#subprocess.Popen.wait) больше не вызывает `WaitForSingleObject()` с отрицательным таймаутом: передаётся `0` мс, если таймаут отрицательный. Исправление от Victor Stinner.
- [gh-116957](https://python-all.ru/3/whatsnew/changelog.html): configparser: не оставлять значения ConfigParser в недопустимом состоянии (хранящиеся как список вместо str) после того, как предыдущее чтение вызвало DuplicateSectionError или DuplicateOptionError.
- [gh-115538](https://python-all.ru/3/whatsnew/changelog.html): `_io.WindowsConsoleIO` теперь выводит предупреждение, если логическое значение передаётся в качестве аргумента файлового дескриптора.
- [gh-90095](https://python-all.ru/3/whatsnew/changelog.html): Игнорируются пустые строки и комментарии в `.pdbrc`
- [gh-106531](https://python-all.ru/3/whatsnew/changelog.html): Обновлён zipfile.\_path из [zipp 3.18](https://python-all.ru/3/whatsnew/changelog.html), что обеспечивает лучшую совместимость с PyPy, лучшую производительность glob для глубоко вложенных zip-файлов, а также предоставляет внутренний доступ к `CompleteDirs.inject` для использования в других тестах (как importlib.resources).
- [gh-63207](https://python-all.ru/3/whatsnew/changelog.html): В Windows [`time.time()`](https://python-all.ru/3/library/time.html#time.time) теперь использует часы `GetSystemTimePreciseAsFileTime()` для обеспечения разрешения лучше 1 мкс вместо часов `GetSystemTimeAsFileTime()`, разрешение которых составляет 15,6 мс. Исправление от Victor Stinner.
- [gh-116764](https://python-all.ru/3/whatsnew/changelog.html): Восстановлена поддержка `None` и других ложных значений в функциях [`urllib.parse`](https://python-all.ru/3/library/urllib.parse.html#module-urllib.parse) [`parse_qs()`](https://python-all.ru/3/library/urllib.parse.html#urllib.parse.parse_qs) и [`parse_qsl()`](https://python-all.ru/3/library/urllib.parse.html#urllib.parse.parse_qsl). Кроме того, теперь они возбуждают TypeError для ненулевых целых и непустых последовательностей.
- [gh-116811](https://python-all.ru/3/whatsnew/changelog.html): В `PathFinder.invalidate_caches` делегируется вызов `MetadataPathFinder.invalidate_caches`.
- [gh-116647](https://python-all.ru/3/whatsnew/changelog.html): Исправлен рекурсивный дочерний элемент в dataclasses
- [gh-113171](https://python-all.ru/3/whatsnew/changelog.html): Исправлены различные ложноположительные и ложноотрицательные срабатывания в

  - [`ipaddress.IPv4Address.is_private`](https://python-all.ru/3/library/ipaddress.html#ipaddress.IPv4Address.is_private) (см. документацию для подробностей)
  - [`ipaddress.IPv4Address.is_global`](https://python-all.ru/3/library/ipaddress.html#ipaddress.IPv4Address.is_global)
  - [`ipaddress.IPv6Address.is_private`](https://python-all.ru/3/library/ipaddress.html#ipaddress.IPv6Address.is_private)
  - [`ipaddress.IPv6Address.is_global`](https://python-all.ru/3/library/ipaddress.html#ipaddress.IPv6Address.is_global)

  А также в соответствующих атрибутах [`ipaddress.IPv4Network`](https://python-all.ru/3/library/ipaddress.html#ipaddress.IPv4Network) и [`ipaddress.IPv6Network`](https://python-all.ru/3/library/ipaddress.html#ipaddress.IPv6Network).
- [gh-63283](https://python-all.ru/3/whatsnew/changelog.html): В [`encodings.idna`](https://python-all.ru/3/library/codecs.html#module-encodings.idna) теперь допускается любое написание префикса ACE (`xn--`). Патч от Pepijn de Vos и Zackery Spytz.
- [gh-71042](https://python-all.ru/3/whatsnew/changelog.html): Добавлен [`platform.android_ver()`](https://python-all.ru/3/library/platform.html#platform.android_ver), предоставляющий информацию об устройстве и ОС на Android.
- [gh-73468](https://python-all.ru/3/whatsnew/changelog.html): Добавлена новая функция [`math.fma()`](https://python-all.ru/3/library/math.html#math.fma), обёртка над операцией `fma()` из C99: fused multiply-add. Патч от Mark Dickinson и Victor Stinner.
- [gh-116608](https://python-all.ru/3/whatsnew/changelog.html): Функции [`importlib.resources`](https://python-all.ru/3/library/importlib.resources.html#module-importlib.resources) [`is_resource()`](https://python-all.ru/3/library/importlib.resources.html#importlib.resources.is_resource), [`open_binary()`](https://python-all.ru/3/library/importlib.resources.html#importlib.resources.open_binary), [`open_text()`](https://python-all.ru/3/library/importlib.resources.html#importlib.resources.open_text), [`path()`](https://python-all.ru/3/library/importlib.resources.html#importlib.resources.path), [`read_binary()`](https://python-all.ru/3/library/importlib.resources.html#importlib.resources.read_binary) и [`read_text()`](https://python-all.ru/3/library/importlib.resources.html#importlib.resources.read_text) больше не являются устаревшими и поддерживают подкаталоги через несколько позиционных аргументов. Функция [`contents()`](https://python-all.ru/3/library/importlib.resources.html#importlib.resources.contents) также допускает подкаталоги, но остаётся устаревшей.
- [gh-116484](https://python-all.ru/3/whatsnew/changelog.html): Изменены автоматически генерируемые имена виджетов [`tkinter.Checkbutton`](https://python-all.ru/3/library/tkinter.html#tkinter.Checkbutton) во избежание конфликтов с автоматически генерируемыми именами виджетов [`tkinter.ttk.Checkbutton`](https://python-all.ru/3/library/tkinter.ttk.html#tkinter.ttk.Checkbutton) внутри одного родительского виджета.
- [gh-114314](https://python-all.ru/3/whatsnew/changelog.html): В [`ctypes`](https://python-all.ru/3/library/ctypes.html#module-ctypes) данные ctype теперь хранятся непосредственно в объектах типа, а не в подклассе dict. Это внутреннее изменение, которое не должно повлиять на использование.
- [gh-116401](https://python-all.ru/3/whatsnew/changelog.html): Исправлена блокировка [`os.fwalk()`](https://python-all.ru/3/library/os.html#os.fwalk) и [`shutil.rmtree()`](https://python-all.ru/3/library/shutil.html#shutil.rmtree) при открытии именованного канала.
- [gh-71052](https://python-all.ru/3/whatsnew/changelog.html): Реализован [`ctypes.util.find_library()`](https://python-all.ru/3/library/ctypes.html#ctypes.util.find_library) на Android.
- [gh-90535](https://python-all.ru/3/whatsnew/changelog.html): Исправлена поддержка значений *interval* \> 1 в `logging.TimedRotatingFileHandler` для `when='MIDNIGHT'` и `when='Wx'`.
- [gh-113308](https://python-all.ru/3/whatsnew/changelog.html): Удалены некоторые внутренние защищённые части из [`uuid`](https://python-all.ru/3/library/uuid.html#module-uuid): `_has_uuid_generate_time_safe`, `_netbios_getnode`, `_ipconfig_getnode` и `_load_system_functions`. Они не использовались.
- [gh-115627](https://python-all.ru/3/whatsnew/changelog.html): Исправлена обработка ошибок модуля [`ssl`](https://python-all.ru/3/library/ssl.html#module-ssl) при завершении соединения удалённой стороной. Теперь он выбрасывает OSError с соответствующим кодом ошибки вместо EOFError.
- [gh-114847](https://python-all.ru/3/whatsnew/changelog.html): Ускорен [`os.path.realpath()`](https://python-all.ru/3/library/os.path.html#os.path.realpath) на платформах, отличных от Windows.
- [gh-114271](https://python-all.ru/3/whatsnew/changelog.html): Исправлено состояние гонки в `threading.Thread.join()`.

  `threading._MainThread` теперь всегда представляет главный поток главного интерпретатора.

  `PyThreadState.on_delete` и `PyThreadState.on_delete_data` были удалены.
- [gh-113538](https://python-all.ru/3/whatsnew/changelog.html): Добавлены методы [`asyncio.Server.close_clients()`](https://python-all.ru/3/library/asyncio-eventloop.html#asyncio.Server.close_clients) и [`asyncio.Server.abort_clients()`](https://python-all.ru/3/library/asyncio-eventloop.html#asyncio.Server.abort_clients), позволяющие более жёстко закрывать asyncio-сервер.
- [gh-85287](https://python-all.ru/3/whatsnew/changelog.html): Изменены кодеки Unicode: теперь они возвращают UnicodeEncodeError или UnicodeDecodeError, а не просто UnicodeError.
- [gh-113548](https://python-all.ru/3/whatsnew/changelog.html): [`pdb`](https://python-all.ru/3/library/pdb.html#module-pdb) теперь допускает аргументы командной строки для `pdb -m`.
- [gh-112948](https://python-all.ru/3/whatsnew/changelog.html): Поведение автодополнения [`pdb`](https://python-all.ru/3/library/pdb.html#module-pdb) приведено в соответствие с REPL Python
- [gh-105866](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка `_get_slots`, из-за которой возникала ошибка при определении классов данных со слотами и слотом для слабой ссылки.
- [gh-96471](https://python-all.ru/3/whatsnew/changelog.html): Добавлено завершение [`asyncio.Queue`](https://python-all.ru/3/library/asyncio-queue.html#asyncio.Queue) с помощью метода [`shutdown()`](https://python-all.ru/3/library/asyncio-queue.html#asyncio.Queue.shutdown).
- [gh-89739](https://python-all.ru/3/whatsnew/changelog.html): Модуль [`zipimport`](https://python-all.ru/3/library/zipimport.html#module-zipimport) теперь умеет читать ZIP64-файлы.
- [bpo-33533](https://python-all.ru/3/whatsnew/changelog.html): [`asyncio.as_completed()`](https://python-all.ru/3/library/asyncio-task.html#asyncio.as_completed) теперь возвращает объект, являющийся одновременно асинхронным и обычным итератором. Новый асинхронный шаблон итерации упрощает сопоставление предыдущих задач и их завершённых результатов. Это больше соответствует шаблону итерации [`concurrent.futures.as_completed()`](https://python-all.ru/3/library/concurrent.futures.html#concurrent.futures.as_completed). Патч от Justin Arthur.
- [bpo-27578](https://python-all.ru/3/whatsnew/changelog.html): [`inspect.getsource()`](https://python-all.ru/3/library/inspect.html#inspect.getsource) (и связанные функции) работают с пустыми файлами модулей, возвращая `'\n'` (или разумный эквивалент) вместо возбуждения `OSError`. Патч от Kernc.
- [bpo-37141](https://python-all.ru/3/whatsnew/changelog.html): В [`asyncio.StreamReader.readuntil()`](https://python-all.ru/3/library/asyncio-stream.html#asyncio.StreamReader.readuntil) принимается итерируемый объект разделителей; остановка происходит при обнаружении любого из них.
- [gh-66543](https://python-all.ru/3/whatsnew/changelog.html): Исправлен парсинг URL, содержащих только имя хоста, фрагмент или запрос, а также имён файлов с общей сетевой папкой UNC в Windows функцией [`mimetypes.guess_type()`](https://python-all.ru/3/library/mimetypes.html#mimetypes.guess_type). Основано на патче от Dong-hee Na.
- [bpo-15010](https://python-all.ru/3/whatsnew/changelog.html): [`unittest.TestLoader.discover()`](https://python-all.ru/3/library/unittest.html#unittest.TestLoader.discover) теперь сохраняет исходное значение `unittest.TestLoader._top_level_dir` и восстанавливает его в конце вызова.

### Документация

- [gh-115977](https://python-all.ru/3/whatsnew/changelog.html): Удалены ссылки на совместимость с Emscripten.
- [gh-114099](https://python-all.ru/3/whatsnew/changelog.html): Добавлено руководство по платформе iOS, а также отмечены модули, недоступные на iOS.
- [gh-91565](https://python-all.ru/3/whatsnew/changelog.html): Изменения в файлах документации и выводах конфигурации, чтобы отразить новое место для сообщения об ошибках – то есть GitHub, а не bugs.python.org.

### Тесты

- [gh-83434](https://python-all.ru/3/whatsnew/changelog.html): Отключён вывод в формате JUnit XML (опция командной строки `--junit-xml=FILE`) в regrtest при поиске утечек ссылок (опция `-R`). Патч от Виктора Стиннера.
- [gh-117187](https://python-all.ru/3/whatsnew/changelog.html): Исправлены XML-тесты для обычного Expat \<2.6.0.
- [gh-116333](https://python-all.ru/3/whatsnew/changelog.html): Тесты, связанные с TLS (коды ошибок и т.д.), были обновлены, чтобы быть более терпимыми к конкретным строкам сообщений об ошибках и поведению, наблюдаемому в форках OpenSSL BoringSSL и AWS-LC.
- [gh-117089](https://python-all.ru/3/whatsnew/changelog.html): Объединены тесты для importlib.metadata в собственный пакет `metadata`.
- [gh-115979](https://python-all.ru/3/whatsnew/changelog.html): Обновлён test\_importlib, чтобы он проходил под WASI SDK 21.
- [gh-112536](https://python-all.ru/3/whatsnew/changelog.html): Добавлен параметр –tsan в test.regrtest для запуска TSAN-тестов за приемлемое время выполнения. Патч от Донхи На.
- [gh-116307](https://python-all.ru/3/whatsnew/changelog.html): Добавлен вспомогательный импорт `isolated_modules`, так как `CleanImport` не удаляет модули, импортированные во время контекста. Используется в тестах importlib.resources, чтобы избежать оставления `mod`, мешающего тестам importlib.metadata.

### Сборка

- [gh-114736](https://python-all.ru/3/whatsnew/changelog.html): Сборки WASI теперь используют WASI SDK 21.
- [gh-115983](https://python-all.ru/3/whatsnew/changelog.html): Пропуск сборки тестовых модулей, которые должны быть собраны как разделяемые в WASI.
- [gh-71052](https://python-all.ru/3/whatsnew/changelog.html): Добавлен сценарий сборки и инструкции для Android.

### Windows

- [gh-117267](https://python-all.ru/3/whatsnew/changelog.html): Обеспечить согласованное поведение `DirEntry.stat().st_ctime` с [`os.stat()`](https://python-all.ru/3/library/os.html#os.stat) в период устаревания `st_ctime`, содержа то же значение, что и `st_birthtime`. После периода устаревания `st_ctime` будет временем изменения метаданных (или недоступно через `DirEntry`), и только `st_birthtime` будет содержать время создания.
- [gh-116195](https://python-all.ru/3/whatsnew/changelog.html): Улучшена производительность [`os.getppid()`](https://python-all.ru/3/library/os.html#os.getppid) за счёт использования альтернативного системного API, когда это доступно. Предложено vxiiduu.
- [gh-88494](https://python-all.ru/3/whatsnew/changelog.html): В Windows [`time.monotonic()`](https://python-all.ru/3/library/time.html#time.monotonic) теперь использует тактовую частоту `QueryPerformanceCounter()` для разрешения лучше 1 мкс, вместо тактовой частоты `GetTickCount64()` с разрешением 15.6 мс. Патч от Виктора Стиннера.
- [gh-116773](https://python-all.ru/3/whatsnew/changelog.html): Исправлены случаи `<_overlapped.Overlapped object at 0xXXX> still has pending operation at deallocation, the process may crash`.
- [gh-91227](https://python-all.ru/3/whatsnew/changelog.html): Исправлена реализация asyncio ProactorEventLoop так, чтобы отправка дейтаграммы на адрес, который не слушает, не препятствовала получению последующих дейтаграмм.
- [gh-115119](https://python-all.ru/3/whatsnew/changelog.html): Переход с встроенного кода `libmpdecimal` на внешний пакет, размещённый отдельно в репозитории `cpython-source-deps`, при сборке модуля `_decimal`.

### C API

- [gh-117642](https://python-all.ru/3/whatsnew/changelog.html): Исправлена реализация [**PEP 737**](https://python-all.ru/3/whatsnew/changelog.html) для `%#T` и `%#N`.
- [gh-87193](https://python-all.ru/3/whatsnew/changelog.html): [`_PyBytes_Resize()`](https://python-all.ru/3/c-api/bytes.html#c._PyBytes_Resize) теперь можно вызывать для объектов bytes со счётчиком ссылок \> 1, включая однобайтовые объекты bytes. Он создаёт новый объект bytes и уничтожает старый, если счётчик ссылок \> 1.
- [gh-117021](https://python-all.ru/3/whatsnew/changelog.html): Исправлено целочисленное переполнение в [`PyLong_AsPid()`](https://python-all.ru/3/c-api/long.html#c.PyLong_AsPid) на 64-битных платформах, отличных от Windows.
- [gh-115756](https://python-all.ru/3/whatsnew/changelog.html): `PyCode_GetFirstFree()` теперь является нестабильным API и был переименован в [`PyUnstable_Code_GetFirstFree()`](https://python-all.ru/3/c-api/code.html#c.PyUnstable_Code_GetFirstFree). (Предложено Bogdan Romanyuk в [gh-115781](https://python-all.ru/3/whatsnew/changelog.html))
- [gh-116869](https://python-all.ru/3/whatsnew/changelog.html): Добавлен тест `test_cext`: сборка C-расширения для проверки, что C API Python не выдаёт предупреждений компилятора C. Патч от Виктора Стиннера.
- [gh-116869](https://python-all.ru/3/whatsnew/changelog.html): C API снова совместим с флагом компилятора `-Werror=declaration-after-statement`. Патч от Виктора Стиннера.
- [gh-116936](https://python-all.ru/3/whatsnew/changelog.html): Добавлен [`PyType_GetModuleByDef()`](https://python-all.ru/3/c-api/type.html#c.PyType_GetModuleByDef) в ограниченный C API. Патч от Виктора Стиннера.
- [gh-116809](https://python-all.ru/3/whatsnew/changelog.html): Восстановлена удалённая приватная функция `_PyErr_ChainExceptions1()`. Патч от Виктора Стиннера.
- [gh-115754](https://python-all.ru/3/whatsnew/changelog.html): В ограниченном C API версии 3.13 получение синглтонов `Py_None`, `Py_False`, `Py_True`, `Py_Ellipsis` и `Py_NotImplemented` теперь реализовано как вызовы функций на уровне стабильного ABI для скрытия деталей реализации. Получение этих констант по-прежнему возвращает заимствованные ссылки. Патч от Виктора Стиннера.
- [gh-115754](https://python-all.ru/3/whatsnew/changelog.html): Добавлены функции [`Py_GetConstant()`](https://python-all.ru/3/c-api/object.html#c.Py_GetConstant) и [`Py_GetConstantBorrowed()`](https://python-all.ru/3/c-api/object.html#c.Py_GetConstantBorrowed) для получения констант. Например, `Py_GetConstant(Py_CONSTANT_ZERO)` возвращает [сильную ссылку](https://python-all.ru/3/glossary.html#term-strong-reference) на константу ноль. Патч от Виктора Стиннера.
- [gh-111696](https://python-all.ru/3/whatsnew/changelog.html): Добавлена поддержка форматов `%T`, `%T#`, `%N` и `%N#` в [`PyUnicode_FromFormat()`](https://python-all.ru/3/c-api/unicode.html#c.PyUnicode_FromFormat): форматирует полное квалифицированное имя типа объекта и типа: вызов [`PyType_GetModuleName()`](https://python-all.ru/3/c-api/type.html#c.PyType_GetModuleName). См. [**PEP 737**](https://python-all.ru/3/whatsnew/changelog.html) для дополнительной информации. Исправление от Victor Stinner.
- [gh-111696](https://python-all.ru/3/whatsnew/changelog.html): Добавлена функция [`PyType_GetModuleName()`](https://python-all.ru/3/c-api/type.html#c.PyType_GetModuleName) для получения имени модуля типа. Эквивалентно получению атрибута `type.__module__`. Исправление от Eric Snow и Victor Stinner.
- [gh-111696](https://python-all.ru/3/whatsnew/changelog.html): Добавлена функция [`PyType_GetFullyQualifiedName()`](https://python-all.ru/3/c-api/type.html#c.PyType_GetFullyQualifiedName) для получения полного квалифицированного имени типа. Эквивалентно `f"{type.__module__}.{type.__qualname__}"`, или `type.__qualname__`, если `type.__module__` не является строкой или равно `"builtins"`. Исправление от Victor Stinner.
- [gh-85283](https://python-all.ru/3/whatsnew/changelog.html): Расширения C `fcntl`, `grp`, `pwd`, `termios`, `_statistics` и `_testconsole` теперь собираются с [ограниченным C API](https://python-all.ru/3/c-api/stable.html#limited-c-api). Исправление от Victor Stinner.
- [gh-111140](https://python-all.ru/3/whatsnew/changelog.html): Добавлены дополнительные флаги в [`PyLong_AsNativeBytes()`](https://python-all.ru/3/c-api/long.html#c.PyLong_AsNativeBytes) и [`PyLong_FromNativeBytes()`](https://python-all.ru/3/c-api/long.html#c.PyLong_FromNativeBytes), чтобы позволить вызывающей стороне определять, как обрабатывать крайние случаи со значениями, заполняющими весь буфер.
- [gh-113024](https://python-all.ru/3/whatsnew/changelog.html): Добавлена функция [`PyObject_GenericHash()`](https://python-all.ru/3/c-api/hash.html#c.PyObject_GenericHash).

## Python 3.13.0 alpha 5

*Дата выпуска: 2024-03-12*

### Безопасность

- [gh-115398](https://python-all.ru/3/whatsnew/changelog.html): Добавлена возможность управления откладыванием повторного разбора Expat \>=2.6.0 ([**CVE 2023-52425**](https://python-all.ru/3/whatsnew/changelog.html)) путем добавления пяти новых методов:

  - [`xml.etree.ElementTree.XMLParser.flush()`](https://python-all.ru/3/library/xml.etree.elementtree.html#xml.etree.ElementTree.XMLParser.flush)
  - [`xml.etree.ElementTree.XMLPullParser.flush()`](https://python-all.ru/3/library/xml.etree.elementtree.html#xml.etree.ElementTree.XMLPullParser.flush)
  - [`xml.parsers.expat.xmlparser.GetReparseDeferralEnabled()`](https://python-all.ru/3/library/pyexpat.html#xml.parsers.expat.xmlparser.GetReparseDeferralEnabled)
  - [`xml.parsers.expat.xmlparser.SetReparseDeferralEnabled()`](https://python-all.ru/3/library/pyexpat.html#xml.parsers.expat.xmlparser.SetReparseDeferralEnabled)
  - `xml.sax.expatreader.ExpatParser.flush()`
- [gh-114572](https://python-all.ru/3/whatsnew/changelog.html): [`ssl.SSLContext.cert_store_stats()`](https://python-all.ru/3/library/ssl.html#ssl.SSLContext.cert_store_stats) и [`ssl.SSLContext.get_ca_certs()`](https://python-all.ru/3/library/ssl.html#ssl.SSLContext.get_ca_certs) теперь корректно блокируют доступ к хранилищу сертификатов, когда [`ssl.SSLContext`](https://python-all.ru/3/library/ssl.html#ssl.SSLContext) используется совместно несколькими потоками.

### Ядро и встроенные объекты

- [gh-116604](https://python-all.ru/3/whatsnew/changelog.html): Учитывается статус сборщика мусора при косвенных вызовах через [`PyErr_CheckSignals()`](https://python-all.ru/3/c-api/exceptions.html#c.PyErr_CheckSignals) и прерыватель вычислений. Исправление от Pablo Galindo
- [gh-112087](https://python-all.ru/3/whatsnew/changelog.html): [`list`](https://python-all.ru/3/library/stdtypes.html#list) теперь совместим с реализацией [**PEP 703**](https://python-all.ru/3/whatsnew/changelog.html).
- [gh-116381](https://python-all.ru/3/whatsnew/changelog.html): Добавлена специализация для `CONTAINS_OP`.
- [gh-116296](https://python-all.ru/3/whatsnew/changelog.html): Исправлена возможная утечка ссылок в обработке внутренних ошибок `object.__reduce__()`.
- [gh-115823](https://python-all.ru/3/whatsnew/changelog.html): Корректный расчет диапазонов ошибок в анализаторе при возбуждении исключений [`SyntaxError`](https://python-all.ru/3/library/exceptions.html#SyntaxError), вызванных недопустимыми последовательностями байтов. Исправление от Pablo Galindo
- [gh-115778](https://python-all.ru/3/whatsnew/changelog.html): Добавлена аннотация `tierN` для определения инструкций в DSL интерпретатора.
- [gh-115733](https://python-all.ru/3/whatsnew/changelog.html): Исправлен сбой при вызове `next()` на истощенных итераторах списка.
- [gh-115700](https://python-all.ru/3/whatsnew/changelog.html): Этап сборки regen-cases теперь работает в Windows.
- [gh-115347](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка, при которой docstring заменялся избыточной NOP, когда Python запускается с `-OO`.
- [gh-115323](https://python-all.ru/3/whatsnew/changelog.html): Сообщение об ошибке стало более информативным для случая, когда [`bytearray.extend()`](https://python-all.ru/3/library/stdtypes.html#bytearray.extend) вызывается с объектом [`str`](https://python-all.ru/3/library/stdtypes.html#str).
- [gh-112175](https://python-all.ru/3/whatsnew/changelog.html): Каждый `PyThreadState` теперь имеет собственный `eval_breaker`, что позволяет прерывать отдельные потоки.

### Библиотека

- [gh-115154](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка, из-за которой функция [`tokenize.untokenize()`](https://python-all.ru/3/library/tokenize.html#tokenize.untokenize) неправильно обрабатывала именованные литералы Unicode. Исправление от Pablo Galindo

### Ядро и встроенные объекты

- [gh-112433](https://python-all.ru/3/whatsnew/changelog.html): Добавлена возможность принудительного выравнивания [`ctypes.Structure`](https://python-all.ru/3/library/ctypes.html#ctypes.Structure) с помощью нового атрибута `_align_` в классе.

### Библиотека

- [gh-104090](https://python-all.ru/3/whatsnew/changelog.html): Отслеживатель ресурсов multiprocessing теперь завершается с ненулевым кодом возврата, если обнаружена утечка ресурсов. В противном случае он по-прежнему завершается с кодом 0.

### Ядро и встроенные объекты

- [gh-105858](https://python-all.ru/3/whatsnew/changelog.html): Улучшены конструкторы узлов [`ast`](https://python-all.ru/3/library/ast.html#module-ast). Аргументы типов списков теперь по умолчанию принимают пустой список, если опущены, а необязательные поля по умолчанию принимают `None`. Узлы AST теперь имеют атрибут `__annotations__`, содержащий ожидаемые типы их атрибутов. Передача нераспознанных дополнительных аргументов узлам AST устарела и станет ошибкой в Python 3.15. Пропуск обязательного аргумента узла AST устарел и станет ошибкой в Python 3.15. Исправление от Jelle Zijlstra.
- [gh-101860](https://python-all.ru/3/whatsnew/changelog.html): Открыт доступ к атрибуту `__name__` у свойства.
- [gh-96497](https://python-all.ru/3/whatsnew/changelog.html): Исправлено некорректное разрешение искажённых переменных класса, используемых в выражениях присваивания в генераторах.

### Библиотека

- [gh-116600](https://python-all.ru/3/whatsnew/changelog.html): Исправлен [`repr()`](https://python-all.ru/3/library/functions.html#repr) для глобальных элементов [`Flag`](https://python-all.ru/3/library/enum.html#enum.Flag).
- [gh-116349](https://python-all.ru/3/whatsnew/changelog.html): [`platform.java_ver()`](https://python-all.ru/3/library/platform.html#platform.java_ver) объявлен устаревшим и будет удалён в версии 3.15. Он был почти не протестирован, имел запутанный API и был полезен только для поддержки Jython.
- [gh-116143](https://python-all.ru/3/whatsnew/changelog.html): Исправлено состояние гонки в pydoc `_start_server`, устранён промежуток, в котором `_start_server` мог вернуть поток, находящийся в состоянии «обслуживание», но без установленного `docserver`.
- [gh-116127](https://python-all.ru/3/whatsnew/changelog.html): [`typing`](https://python-all.ru/3/library/typing.html#module-typing): реализован [**PEP 705**](https://python-all.ru/3/whatsnew/changelog.html), который добавляет поддержку [`typing.ReadOnly`](https://python-all.ru/3/library/typing.html#typing.ReadOnly) в [`typing.TypedDict`](https://python-all.ru/3/library/typing.html#typing.TypedDict).
- [gh-116325](https://python-all.ru/3/whatsnew/changelog.html): [`typing`](https://python-all.ru/3/library/typing.html#module-typing): возбуждать [`SyntaxError`](https://python-all.ru/3/library/exceptions.html#SyntaxError) вместо [`AttributeError`](https://python-all.ru/3/library/exceptions.html#AttributeError) для прямых ссылок в виде пустых строк.
- [gh-115957](https://python-all.ru/3/whatsnew/changelog.html): Когда `asyncio.TaskGroup.create_task` вызывается для неактивного `asyncio.TaskGroup`, переданная корутина будет закрыта (что предотвращает `RuntimeWarning`).
- [gh-115978](https://python-all.ru/3/whatsnew/changelog.html): Отключены preadv(), readv(), pwritev() и writev() на WASI.

  В wasmtime для WASI 0.2 эти функции не проходят test\_posix ([https://github.com/bytecodealliance/wasmtime/issues/7830](https://python-all.ru/3/whatsnew/changelog.html)).
- [gh-88352](https://python-all.ru/3/whatsnew/changelog.html): Исправлено вычисление времени следующего переключения в обработчике `logging.TimedRotatingFileHandler`. `computeRollover()` теперь всегда возвращает метку времени, большую указанного времени, и работает корректно при переходе на летнее время. `doRollover()` больше не перезаписывает уже переключенный файл, что предотвращает потерю данных при запуске в полночь или во время повторного времени при переходе на летнее время.
- [gh-87115](https://python-all.ru/3/whatsnew/changelog.html): Установка `__main__.__spec__` в `None` при запуске скрипта с [`pdb`](https://python-all.ru/3/library/pdb.html#module-pdb)
- [gh-76511](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка UnicodeEncodeError в `email.Message.as_string()`, возникающая, когда сообщение, якобы находящееся в наборе символов ascii, на самом деле содержит не-ASCII символы. Теперь не-ASCII символы заменяются на символ замены U+FFFD, как в обработчике ошибок `replace`.
- [gh-89547](https://python-all.ru/3/whatsnew/changelog.html): Добавлена поддержка вложенных специальных форм типов, таких как Final\[ClassVar\[int\]\].
- [gh-65824](https://python-all.ru/3/whatsnew/changelog.html): Улучшено приглашение `less` в [`pydoc`](https://python-all.ru/3/library/pydoc.html#module-pydoc).
- [gh-116040](https://python-all.ru/3/whatsnew/changelog.html): \[Enum\] исправлены вызовы по значению, когда второе значение ложно; например, Cardinal(1, 0)
- [gh-115821](https://python-all.ru/3/whatsnew/changelog.html): \[Enum\] Улучшено сообщение об ошибке при вызове super().\_\_new\_\_() в пользовательском \_\_new\_\_.
- [gh-85644](https://python-all.ru/3/whatsnew/changelog.html): Использовать переменную окружения `XDG_CURRENT_DESKTOP` в [`webbrowser`](https://python-all.ru/3/library/webbrowser.html#module-webbrowser) для проверки рабочего стола. Предпочитать её устаревшей `GNOME_DESKTOP_SESSION_ID` для обнаружения GNOME.
- [gh-75988](https://python-all.ru/3/whatsnew/changelog.html): Исправлен [`unittest.mock.create_autospec()`](https://python-all.ru/3/library/unittest.mock.html#unittest.mock.create_autospec): теперь вызов передаётся обёрнутому объекту, чтобы возвращался реальный результат.
- [gh-115881](https://python-all.ru/3/whatsnew/changelog.html): Исправлена проблема, при которой [`ast.parse()`](https://python-all.ru/3/library/ast.html#ast.parse) ошибочно помечал условные менеджеры контекста (например, `with (x() if y else z()): ...`) как недопустимый синтаксис, если был передан `feature_version=(3, 8)`. Это отменяет изменения грамматики, внесённые в рамках [gh-94949](https://python-all.ru/3/whatsnew/changelog.html).
- [gh-115886](https://python-all.ru/3/whatsnew/changelog.html): Исправлено незаметное усечение имени со встроенным нулевым символом в [`multiprocessing.shared_memory.SharedMemory`](https://python-all.ru/3/library/multiprocessing.shared_memory.html#multiprocessing.shared_memory.SharedMemory).
- [gh-115532](https://python-all.ru/3/whatsnew/changelog.html): Добавлена оценка плотности ядра в модуль statistics.
- [gh-115714](https://python-all.ru/3/whatsnew/changelog.html): На WASI модуль [`time`](https://python-all.ru/3/library/time.html#module-time) больше не получает время процесса через `times()` или `CLOCK_PROCESS_CPUTIME_ID` – системный API ненадёжен и, скорее всего, будет удалён из WASI. Затронутые функции часов переходят на вызов `clock()`.
- [gh-115809](https://python-all.ru/3/whatsnew/changelog.html): Улучшен алгоритм определения, какие переключенные файлы журнала удалять в `logging.TimedRotatingFileHandler`. Теперь он надёжен для обработчиков без `namer` и с произвольным детерминированным `namer`, который оставляет часть даты и времени в имени файла без изменений.
- [gh-74668](https://python-all.ru/3/whatsnew/changelog.html): Функции [`urllib.parse`](https://python-all.ru/3/library/urllib.parse.html#module-urllib.parse) [`parse_qs()`](https://python-all.ru/3/library/urllib.parse.html#urllib.parse.parse_qs) и [`parse_qsl()`](https://python-all.ru/3/library/urllib.parse.html#urllib.parse.parse_qsl) теперь поддерживают аргументы типа bytes, содержащие сырые и процентно-кодированные не-ASCII данные.
- [gh-67044](https://python-all.ru/3/whatsnew/changelog.html): [`csv.writer()`](https://python-all.ru/3/library/csv.html#csv.writer) теперь всегда заключает в кавычки или экранирует `'\r'` и `'\n'`, независимо от значения *lineterminator*.
- [gh-115712](https://python-all.ru/3/whatsnew/changelog.html): Восстановлена поддержка разделителя-пробела с `skipinitialspace=True` в [`csv`](https://python-all.ru/3/library/csv.html#module-csv). Теперь [`csv.writer()`](https://python-all.ru/3/library/csv.html#csv.writer) заключает пустые поля в кавычки, если разделителем является пробел и skipinitialspace равно true, и возбуждает исключение, если цитирование невозможно.
- [gh-112364](https://python-all.ru/3/whatsnew/changelog.html): Исправлен [`ast.unparse()`](https://python-all.ru/3/library/ast.html#ast.unparse) для обработки format\_spec с `"`, `'` или `\\`. Исправление от Frank Hoffmann.
- [gh-112997](https://python-all.ru/3/whatsnew/changelog.html): Прекращено логирование потенциально чувствительных аргументов колбэка в [`asyncio`](https://python-all.ru/3/library/asyncio.html#module-asyncio), если не активен режим отладки.
- [gh-114914](https://python-all.ru/3/whatsnew/changelog.html): Исправлена проблема, при которой покинутый `StreamWriter` не удалялся сборщиком мусора.
- [gh-111358](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка в `asyncio.BaseEventLoop.shutdown_default_executor()`, чтобы гарантировать, что тайм-аут, переданный корутине, работает как ожидается.
- [gh-115618](https://python-all.ru/3/whatsnew/changelog.html): Исправлено некорректное уменьшение счётчика ссылок для аргумента `None` в методах [`property`](https://python-all.ru/3/library/functions.html#property) [`getter()`](https://python-all.ru/3/library/functions.html#property.getter), [`setter()`](https://python-all.ru/3/library/functions.html#property.setter) и [`deleter()`](https://python-all.ru/3/library/functions.html#property.deleter).
- [gh-112720](https://python-all.ru/3/whatsnew/changelog.html): Рефакторинг `dis.ArgResolver`, чтобы сделать возможным наследование и изменение способа интерпретации аргументов jump.
- [gh-112006](https://python-all.ru/3/whatsnew/changelog.html): Исправлена [`inspect.unwrap()`](https://python-all.ru/3/library/inspect.html#inspect.unwrap) для типов с дескриптором данных `__wrapper__`. Исправлена [`inspect.Signature.from_callable()`](https://python-all.ru/3/library/inspect.html#inspect.Signature.from_callable) для встроенных [`classmethod()`](https://python-all.ru/3/library/functions.html#classmethod) и [`staticmethod()`](https://python-all.ru/3/library/functions.html#staticmethod).
- [gh-101293](https://python-all.ru/3/whatsnew/changelog.html): Добавлена поддержка вызываемых объектов с методом `__call__()` и типов, у которых методы `__new__()` и `__init__()` установлены в методы класса, статические методы, связанные методы, частичные функции и другие типы методов и дескрипторов в [`inspect.Signature.from_callable()`](https://python-all.ru/3/library/inspect.html#inspect.Signature.from_callable).
- [gh-103092](https://python-all.ru/3/whatsnew/changelog.html): Изоляция `_lsprof` (применён [**PEP 687**](https://python-all.ru/3/whatsnew/changelog.html)).
- [gh-113942](https://python-all.ru/3/whatsnew/changelog.html): [`pydoc`](https://python-all.ru/3/library/pydoc.html#module-pydoc) больше не пропускает глобальные функции, реализованные как встроенные методы, например, `MethodDescriptorType` и `WrapperDescriptorType`.
- [gh-115256](https://python-all.ru/3/whatsnew/changelog.html): Добавлено предупреждение DeprecationWarning при обращении к атрибуту tarfile объектов TarInfo. Этот атрибут никогда не используется внутри и присоединяется к объектам TarInfo только при открытии tarfile в режиме записи, а не чтения. Атрибут создаёт ненужную циклическую ссылку, которая может привести к повреждению, если не закрывать дескриптор после записи tarfile.
- [gh-115197](https://python-all.ru/3/whatsnew/changelog.html): `urllib.request` больше не разрешает имя хоста перед проверкой его по списку исключений прокси системы на macOS и Windows.
- [gh-113812](https://python-all.ru/3/whatsnew/changelog.html): `DatagramTransport.sendto()` теперь будет отправлять датаграммы нулевой длины, если вызвана с пустым объектом bytes. Управление потоком транспорта также теперь учитывает заголовок датаграммы при расчёте размера буфера.
- [gh-114763](https://python-all.ru/3/whatsnew/changelog.html): Защита модулей, загруженных с помощью [`importlib.util.LazyLoader`](https://python-all.ru/3/library/importlib.html#importlib.util.LazyLoader), от состояний гонки, когда несколько потоков пытаются получить доступ к атрибутам до завершения загрузки.
- [gh-114709](https://python-all.ru/3/whatsnew/changelog.html): `posixpath.commonpath()` теперь вызывает исключение [`ValueError`](https://python-all.ru/3/library/exceptions.html#ValueError) при передаче пустой итерируемой последовательности. Ранее вызывалось [`IndexError`](https://python-all.ru/3/library/exceptions.html#IndexError).

  `posixpath.commonpath()` теперь вызывает исключение [`TypeError`](https://python-all.ru/3/library/exceptions.html#TypeError) при передаче `None`. Ранее вызывалось [`ValueError`](https://python-all.ru/3/library/exceptions.html#ValueError).
- [gh-114610](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка, при которой [`pathlib.PurePath.with_stem()`](https://python-all.ru/3/library/pathlib.html#pathlib.PurePath.with_stem) преобразовывал непустой суффикс пути в основное имя (stem) при передаче пустого аргумента *stem*. Теперь вызывается исключение [`ValueError`](https://python-all.ru/3/library/exceptions.html#ValueError), как и [`pathlib.PurePath.with_suffix()`](https://python-all.ru/3/library/pathlib.html#pathlib.PurePath.with_suffix) при вызове на пути с пустым основным именем и непустым аргументом *suffix*.
- [gh-107361](https://python-all.ru/3/whatsnew/changelog.html): Добавлены [`ssl.VERIFY_X509_PARTIAL_CHAIN`](https://python-all.ru/3/library/ssl.html#ssl.VERIFY_X509_PARTIAL_CHAIN) и `VERIFY_X509_STRICT` в контекст SSL по умолчанию, создаваемый с помощью [`ssl.create_default_context()`](https://python-all.ru/3/library/ssl.html#ssl.create_default_context).
- [gh-112281](https://python-all.ru/3/whatsnew/changelog.html): Разрешено создание [объединения типов](https://python-all.ru/3/library/stdtypes.html#types-union) для [`typing.Annotated`](https://python-all.ru/3/library/typing.html#typing.Annotated) с нехешируемыми метаданными.
- [gh-111775](https://python-all.ru/3/whatsnew/changelog.html): Исправлена `importlib.resources.simple.ResourceHandle.open()` для текстового режима, добавлен пропущенный аргумент `stream`.
- [gh-90095](https://python-all.ru/3/whatsnew/changelog.html): Обеспечена работа .pdbrc и -c с любыми допустимыми командами pdb.
- [gh-107625](https://python-all.ru/3/whatsnew/changelog.html): Вызывать [`configparser.ParsingError`](https://python-all.ru/3/library/configparser.html#configparser.ParsingError) из методов [`read()`](https://python-all.ru/3/library/configparser.html#configparser.ConfigParser.read) и [`read_file()`](https://python-all.ru/3/library/configparser.html#configparser.ConfigParser.read_file) объекта [`configparser.ConfigParser`](https://python-all.ru/3/library/configparser.html#configparser.ConfigParser), если ключ без соответствующего значения продолжается (то есть, за ним следует строка с отступом).
- [gh-107155](https://python-all.ru/3/whatsnew/changelog.html): Исправлен некорректный вывод `help(x)` в случае, когда `x` является функцией [`lambda`](https://python-all.ru/3/reference/expressions.html#lambda), у которой есть атрибут-словарь `__annotations__` с ключом `"return"`.
- [gh-57141](https://python-all.ru/3/whatsnew/changelog.html): Добавлена опция для *неповерхностных* сравнений в [`filecmp.dircmp`](https://python-all.ru/3/library/filecmp.html#filecmp.dircmp), как в [`filecmp.cmp()`](https://python-all.ru/3/library/filecmp.html#filecmp.cmp). Оригинальный патч Стивена Уорда. Улучшено Тобиасом Раутенкранцем.
- [gh-69990](https://python-all.ru/3/whatsnew/changelog.html): `Profile.print_stats()` улучшен для принятия нескольких аргументов сортировки. Патч от Chiu-Hsiang Hsu и Furkan Onder.
- [gh-104061](https://python-all.ru/3/whatsnew/changelog.html): Добавлена константа `socket.SO_BINDTOIFINDEX`.
- [gh-60346](https://python-all.ru/3/whatsnew/changelog.html): Исправлена несогласованность ArgumentParser с parse\_known\_args.
- [gh-102389](https://python-all.ru/3/whatsnew/changelog.html): Добавлен `windows_31j` в псевдонимы для кодека `cp932`.
- [gh-72249](https://python-all.ru/3/whatsnew/changelog.html): Всегда включать [имя модуля](https://python-all.ru/3/glossary.html#term-module) в [`repr()`](https://python-all.ru/3/library/functions.html#repr) объектов [`functools.partial()`](https://python-all.ru/3/library/functools.html#functools.partial). Патч от Furkan Onder и Anilyka Barry.
- [gh-100985](https://python-all.ru/3/whatsnew/changelog.html): Обновление HTTPSConnection для последовательного заключения IPv6-адресов в скобки при использовании прокси.
- [gh-100884](https://python-all.ru/3/whatsnew/changelog.html): email: исправлено неправильное свёртывание запятой в списках адресов на нескольких строках в сочетании с кодировкой Unicode.
- [gh-95782](https://python-all.ru/3/whatsnew/changelog.html): Исправлена возможность `io.BufferedReader.tell()`, `io.BufferedReader.seek()`, `_pyio.BufferedReader.tell()`, `io.BufferedRandom.tell()`, `io.BufferedRandom.seek()` и `_pyio.BufferedRandom.tell()` возвращать отрицательные смещения.
- [gh-96310](https://python-all.ru/3/whatsnew/changelog.html): Исправлена трассировка (traceback) в [`argparse`](https://python-all.ru/3/library/argparse.html#module-argparse), когда все опции во взаимоисключающей группе скрыты.
- [gh-93205](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка в [`logging.handlers.TimedRotatingFileHandler`](https://python-all.ru/3/library/logging.handlers.html#logging.handlers.TimedRotatingFileHandler), когда несколько экземпляров вращающегося обработчика, указывающих на файлы с одинаковым именем, но разными расширениями, конфликтовали и не удаляли нужные файлы.
- [bpo-31116](https://python-all.ru/3/whatsnew/changelog.html): Добавлено кодирование Z85 в `base64`.
- [bpo-44865](https://python-all.ru/3/whatsnew/changelog.html): Добавлен пропущенный вызов функции локализации в [`argparse`](https://python-all.ru/3/library/argparse.html#module-argparse).
- [bpo-43952](https://python-all.ru/3/whatsnew/changelog.html): Исправлено [`multiprocessing.connection.Listener.accept()`](https://python-all.ru/3/library/multiprocessing.html#multiprocessing.connection.Listener.accept) для принятия пустых bytes в качестве authkey. Отказ от принятия пустых bytes в качестве ключа приводит к бесконечному зависанию.
- [bpo-42125](https://python-all.ru/3/whatsnew/changelog.html): linecache: получать имя модуля из `__spec__`, если доступно. Это позволяет получать исходный код для модуля `__main__` при использовании пользовательского загрузчика.
- [bpo-41122](https://python-all.ru/3/whatsnew/changelog.html): Неправильная передача аргументов в [`functools.singledispatchmethod()`](https://python-all.ru/3/library/functools.html#functools.singledispatchmethod) теперь вызывает TypeError вместо внутреннего выхода индекса за границы.
- [bpo-40818](https://python-all.ru/3/whatsnew/changelog.html): REPL asyncio теперь запускает [`sys.__interactivehook__`](https://python-all.ru/3/library/sys.html#sys.__interactivehook__) при старте. Стандартная реализация `sys.__interactivehook__` обеспечивает автодополнение для REPL asyncio. Патч предоставлен Rémi Lapeyre.
- [bpo-33775](https://python-all.ru/3/whatsnew/changelog.html): Добавить текст справки для ‘default’ и ‘version’ для локализации в argparse.

### Документация

- [gh-115399](https://python-all.ru/3/whatsnew/changelog.html): Документировать [**CVE 2023-52425**](https://python-all.ru/3/whatsnew/changelog.html) из Expat \<2.6.0 в разделе «XML vulnerabilities».
- [gh-109653](https://python-all.ru/3/whatsnew/changelog.html): Улучшить время импорта [`uuid`](https://python-all.ru/3/library/uuid.html#module-uuid) на Linux.

### Тесты

- [gh-71052](https://python-all.ru/3/whatsnew/changelog.html): Добавить исключения тестов для поддержки запуска набора тестов на Android.
- [gh-71052](https://python-all.ru/3/whatsnew/changelog.html): Включить `test_concurrent_futures` на платформах, которые поддерживают threading, но не multiprocessing.
- [gh-115796](https://python-all.ru/3/whatsnew/changelog.html): Сделать так, чтобы ‘\_testinternalcapi.assemble\_code\_object’ создавал таблицу исключений для объекта кода.
- [gh-115720](https://python-all.ru/3/whatsnew/changelog.html): Тесты на утечки (`-R`, `--huntrleaks`) теперь показывают сводку количества утечек, найденных на каждой итерации.
- [gh-115122](https://python-all.ru/3/whatsnew/changelog.html): Добавить опцию `--bisect` в test runner regrtest: запускать упавшие тесты с `test.bisect_cmd` для выявления неудачных тестов. Патч от Victor Stinner.
- [gh-115596](https://python-all.ru/3/whatsnew/changelog.html): Исправить `ProgramPriorityTests` в `test_os`, постоянно изменяющий приоритет процесса.
- [gh-115556](https://python-all.ru/3/whatsnew/changelog.html): В Windows запятые, передаваемые в аргументах в `Tools\buildbot\test.bat` и `PCbuild\\rt.bat`, теперь обрабатываются корректно.
- [gh-115420](https://python-all.ru/3/whatsnew/changelog.html): Исправить трансляцию целей обработчиков исключений в `_testinternalcapi.optimize_cfg`.
- [gh-115376](https://python-all.ru/3/whatsnew/changelog.html): Исправить segfault в `_testinternalcapi.compiler_codegen` при некорректном вводе.

### Сборка

- [gh-116313](https://python-all.ru/3/whatsnew/changelog.html): Обеспечить работу сборок WASI под wasmtime 18 с примитивами WASI 0.2/preview2.
- [gh-71052](https://python-all.ru/3/whatsnew/changelog.html): Изменить [`sys.platform`](https://python-all.ru/3/library/sys.html#sys.platform) Android с `"linux"` на `"android"`.
- [gh-116117](https://python-all.ru/3/whatsnew/changelog.html): Перенести PR #42 из `libb2` для исправления компиляции CPython на 32-битной Windows с `clang-cl`.
- [gh-71052](https://python-all.ru/3/whatsnew/changelog.html): Исправить несколько проблем сборки Android
- [gh-114099](https://python-all.ru/3/whatsnew/changelog.html): Добавлен тестовый проект для запуска набора тестов на iOS.
- [gh-115350](https://python-all.ru/3/whatsnew/changelog.html): Исправить сборку модуля ctypes с определённым -DWIN32\_LEAN\_AND\_MEAN
- [gh-111225](https://python-all.ru/3/whatsnew/changelog.html): Линковать модули расширения с libpython на Android.
- [gh-115737](https://python-all.ru/3/whatsnew/changelog.html): Имя установки для libPython теперь корректно устанавливается для сборок macOS без framework.
- [gh-114099](https://python-all.ru/3/whatsnew/changelog.html): Добавлены цели Makefile для поддержки компиляции сборки framework, совместимой с iOS.

### Windows

- [gh-116012](https://python-all.ru/3/whatsnew/changelog.html): Обеспечить сохранение значения `GetLastError()` при операциях GIL.
- [gh-115582](https://python-all.ru/3/whatsnew/changelog.html): Сборка расширений, предназначенных для сборок CPython со свободной многопоточностью, теперь требует компиляции с `/DPy_GIL_DISABLED` вручную при использовании обычной установки. Ожидается, что это изменится в будущих версиях.
- [gh-115554](https://python-all.ru/3/whatsnew/changelog.html): Установщик теперь имеет более строгие правила обновления [менеджера установки Python](https://python-all.ru/3/using/windows.html#launcher). В целом, у большинства пользователей установлен только один лаунчер, и они не увидят разницы. Когда установлено несколько лаунчеров, возможность установки лаунчера отключается, пока не останется только один. Понижение версии лаунчера (что никогда не разрешалось) теперь блокируется более явно.
- [gh-115543](https://python-all.ru/3/whatsnew/changelog.html): [Менеджер установки Python](https://python-all.ru/3/using/windows.html#launcher) теперь может обнаружить Python 3.13, установленный из Microsoft Store, и будет устанавливать Python 3.12 по умолчанию, когда установлен `PYLAUNCHER_ALLOW_INSTALL`.

### macOS

- [gh-116145](https://python-all.ru/3/whatsnew/changelog.html): Обновление установщика macOS до Tcl/Tk 8.6.14.

### IDLE

- [gh-88516](https://python-all.ru/3/whatsnew/changelog.html): В macOS отображается значок прокси в строке заголовка окон редактора для соответствия поведению платформы.

### Tools/Demos

- [gh-100176](https://python-all.ru/3/whatsnew/changelog.html): Удалены устаревшие Tools/{io,cc,string}bench
- [bpo-45101](https://python-all.ru/3/whatsnew/changelog.html): Добавление согласованности в сообщении об использовании IO между двумя версиями python-config.

### C API

- [gh-114626](https://python-all.ru/3/whatsnew/changelog.html): Снова добавлено имя `_PyCFunctionFastWithKeywords`, удалённое в Python 3.13 alpha 4 по ошибке. Сохранено старое приватное имя `_PyCFunctionFastWithKeywords` (Python 3.7) как псевдоним для нового публичного имени `PyCFunctionFastWithKeywords` (Python 3.13a4). Патч от Victor Stinner.
- [gh-111418](https://python-all.ru/3/whatsnew/changelog.html): Добавлены [`PyHASH_MODULUS`](https://python-all.ru/3/c-api/hash.html#c.PyHASH_MODULUS), [`PyHASH_BITS`](https://python-all.ru/3/c-api/hash.html#c.PyHASH_BITS), [`PyHASH_INF`](https://python-all.ru/3/c-api/hash.html#c.PyHASH_INF) и [`PyHASH_IMAG`](https://python-all.ru/3/c-api/hash.html#c.PyHASH_IMAG) C-макросы. Патч от Sergey B Kirpichev.

## Python 3.13.0 alpha 4

*Дата выпуска: 2024-02-15*

### Безопасность

- [gh-115399](https://python-all.ru/3/whatsnew/changelog.html): Обновление встроенного libexpat до 2.6.0
- [gh-115243](https://python-all.ru/3/whatsnew/changelog.html): Исправление возможных сбоев в [`collections.deque.index()`](https://python-all.ru/3/library/collections.html#collections.deque.index) при одновременном изменении deque.

### Ядро и встроенные модули

- [gh-112087](https://python-all.ru/3/whatsnew/changelog.html): Пустой обратный итератор списка будет сведён к [`reversed()`](https://python-all.ru/3/library/functions.html#reversed). Патч от Donghee Na.
- [gh-114570](https://python-all.ru/3/whatsnew/changelog.html): Добавлено исключение [`PythonFinalizationError`](https://python-all.ru/3/library/exceptions.html#PythonFinalizationError). Это исключение, производное от [`RuntimeError`](https://python-all.ru/3/library/exceptions.html#RuntimeError), возникает, когда операция блокируется во время [финализации Python](https://python-all.ru/3/glossary.html#term-interpreter-shutdown). Патч от Victor Stinner.
- [gh-114695](https://python-all.ru/3/whatsnew/changelog.html): Добавлен [`sys._clear_internal_caches()`](https://python-all.ru/3/library/sys.html#sys._clear_internal_caches), который очищает все внутренние кеши, связанные с производительностью (и устаревает менее общая функция [`sys._clear_type_cache()`](https://python-all.ru/3/library/sys.html#sys._clear_type_cache)).
- [gh-114828](https://python-all.ru/3/whatsnew/changelog.html): Исправление сбоев компиляции в нестандартных примерах кода, использующих [`super()`](https://python-all.ru/3/library/functions.html#super) внутри включения в теле класса.
- [gh-112069](https://python-all.ru/3/whatsnew/changelog.html): Адаптация методов [`set`](https://python-all.ru/3/library/stdtypes.html#set) и [`frozenset`](https://python-all.ru/3/library/stdtypes.html#frozenset) для Argument Clinic.
- [gh-115011](https://python-all.ru/3/whatsnew/changelog.html): Сеттеры для членов с беззнаковым целым типом теперь поддерживают тот же диапазон допустимых значений для объектов, имеющих метод [`__index__()`](https://python-all.ru/3/reference/datamodel.html#object.__index__), что и для [`int`](https://python-all.ru/3/library/functions.html#int).
- [gh-114887](https://python-all.ru/3/whatsnew/changelog.html): Изменена проверка типа сокета в [`create_datagram_endpoint()`](https://python-all.ru/3/library/asyncio-eventloop.html#asyncio.loop.create_datagram_endpoint), чтобы принимать все не-потоковые сокеты. Это исправляет регрессию в совместимости с сырыми сокетами.
- [gh-114944](https://python-all.ru/3/whatsnew/changelog.html): Исправление гонки между `PyParkingLot_Park` и `_PyParkingLot_UnparkAll`.
- [gh-113462](https://python-all.ru/3/whatsnew/changelog.html): Ограничение количества версий, которые может использовать один класс. Это предотвращает исчерпание всех номеров версий несколькими проблемными классами.
- [gh-76763](https://python-all.ru/3/whatsnew/changelog.html): Встроенная функция [`chr()`](https://python-all.ru/3/library/functions.html#chr) теперь всегда вызывает [`ValueError`](https://python-all.ru/3/library/exceptions.html#ValueError) для значений вне допустимого диапазона. Ранее она вызывала [`OverflowError`](https://python-all.ru/3/library/exceptions.html#OverflowError) для очень больших или малых значений.
- [gh-114806](https://python-all.ru/3/whatsnew/changelog.html): Больше не специализируются вызовы классов, если эти классы имеют метаклассы. Исправляет ошибку, при которой метод `__call__` метакласса не вызывался.
- [gh-107944](https://python-all.ru/3/whatsnew/changelog.html): Улучшение сообщения об ошибке для вызовов функций с неправильными ключевыми аргументами через getargs.
- [gh-112529](https://python-all.ru/3/whatsnew/changelog.html): Free-threaded сборка больше не выделяет память для структуры `PyGC_Head` в объектах, поддерживающих циклическую сборку мусора. В качестве замены используется ряд других полей и структур данных, включая `ob_gc_bits`, `ob_tid` и внутренние структуры данных mimalloc.
- [gh-114456](https://python-all.ru/3/whatsnew/changelog.html): Понижение предела рекурсии в отладочной сборке WASI.
- [gh-114083](https://python-all.ru/3/whatsnew/changelog.html): Компилятор применяет свёртывание LOAD\_CONST с последующей инструкцией на отдельном проходе перед другими оптимизациями. Это позволяет потоковую передачу прыжков в определённых обстоятельствах.
- [gh-114388](https://python-all.ru/3/whatsnew/changelog.html): Исправление [`RuntimeWarning`](https://python-all.ru/3/library/exceptions.html#RuntimeWarning), возникающего при присваивании целочисленного значения, не являющегося экземпляром [`int`](https://python-all.ru/3/library/functions.html#int), атрибуту, который соответствует члену структуры C типа [type](https://python-all.ru/3/c-api/structures.html#pymemberdef-types) T\_UINT и T\_ULONG. Исправление двойного `RuntimeWarning`, возникающего при присваивании отрицательного целочисленного значения атрибуту, соответствующему члену структуры C типа T\_UINT.
- [gh-114265](https://python-all.ru/3/whatsnew/changelog.html): Компилятор распространяет номера строк перед оптимизацией, что даёт больше возможностей для оптимизации и устраняет необходимость в `guarantee_lineno_for_exits`-хаке.
- [gh-112529](https://python-all.ru/3/whatsnew/changelog.html): Free-threaded сборка теперь имеет собственную потокобезопасную реализацию сборщика мусора, использующую mimalloc для поиска объектов, отслеживаемых GC. Она не является поколенческой, в отличие от существующей реализации GC.
- [gh-114050](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка сегментации, вызванная неправильной строкой формата в `TypeError` исключении при передаче более двух аргументов в `int`.
- [gh-112354](https://python-all.ru/3/whatsnew/changelog.html): Инструкция `END_FOR` теперь извлекает только одно значение. Это сделано для лучшей поддержки побочных выходов из циклов.
- [gh-113884](https://python-all.ru/3/whatsnew/changelog.html): Сделать [`queue.SimpleQueue`](https://python-all.ru/3/library/queue.html#queue.SimpleQueue) потокобезопасным при отключённом GIL.
- [gh-114058](https://python-all.ru/3/whatsnew/changelog.html): Реализованы основы для Tier 2 redundancy eliminator.
- [gh-113939](https://python-all.ru/3/whatsnew/changelog.html): frame.clear(): очищает также frame.f\_locals, а не только быстрые локальные переменные. Это актуально после обращения к frame.f\_locals, поскольку он также содержит ссылки на все локальные переменные.
- [gh-112050](https://python-all.ru/3/whatsnew/changelog.html): Перевести [`collections.deque`](https://python-all.ru/3/library/collections.html#collections.deque) на использование Argument Clinic.
- [gh-112050](https://python-all.ru/3/whatsnew/changelog.html): Сделать методы [`collections.deque`](https://python-all.ru/3/library/collections.html#collections.deque) потокобезопасными при отключённом GIL.
- [gh-113464](https://python-all.ru/3/whatsnew/changelog.html): Добавлена опция (`--enable-experimental-jit` для сборок на основе `configure` или `--experimental-jit` для сборок на основе `PCbuild`) для сборки *экспериментального* JIT-компилятора, основанного на [copy-and-patch](https://python-all.ru/3/whatsnew/changelog.html).
- [gh-113055](https://python-all.ru/3/whatsnew/changelog.html): Сделать interp-\>obmalloc указателем. Для интерпретаторов, разделяющих состояние с главным интерпретатором, он указывает на ту же статическую структуру памяти. Для интерпретаторов с собственным состоянием obmalloc он выделяется в куче. Добавлена free\_obmalloc\_arenas(), которая освобождает арены obmalloc и структуры radix tree для интерпретаторов с собственным состоянием obmalloc.
- [gh-55664](https://python-all.ru/3/whatsnew/changelog.html): Добавлено предупреждение при создании [`type`](https://python-all.ru/3/library/functions.html#type) с использованием словаря пространства имён с нестроковыми ключами. Исправлено Дэниелом Урбаном и Фурканом Ондером.
- [gh-104530](https://python-all.ru/3/whatsnew/changelog.html): Использовать нативные условные переменные Win32.

### Библиотека

- [gh-115392](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка в [`doctest`](https://python-all.ru/3/library/doctest.html#module-doctest), при которой для декорированных функций сообщались неверные номера строк.
- [gh-114563](https://python-all.ru/3/whatsnew/changelog.html): Исправлено несколько ошибок [`format()`](https://python-all.ru/3/library/functions.html#format) при использовании C-реализации [`Decimal`](https://python-all.ru/3/library/decimal.html#decimal.Decimal): \* утечка памяти в редких случаях при использовании опции форматирования `z` (coerce negative 0) \* неверный вывод при применении опции форматирования `z` к типу `F` (фиксированная точка с заглавной `NAN` / `INF`) \* неверный вывод при применении опции форматирования `#` (альтернативная форма).
- [gh-102840](https://python-all.ru/3/whatsnew/changelog.html): Исправлена путаница в traceback при выполнении операций floordiv, mod или divmod между экземплярами [`fractions.Fraction`](https://python-all.ru/3/library/fractions.html#fractions.Fraction) и [`complex`](https://python-all.ru/3/library/functions.html#complex).
- [gh-115165](https://python-all.ru/3/whatsnew/changelog.html): Теперь игнорируются большинство исключений при попытке установить атрибут `__orig_class__` на объектах, возвращаемых при вызове [`typing`](https://python-all.ru/3/library/typing.html#module-typing) generic aliases (включая generic aliases, созданные с помощью [`typing.Annotated`](https://python-all.ru/3/library/typing.html#typing.Annotated)). Ранее игнорировалось только [`AttributeError`](https://python-all.ru/3/library/exceptions.html#AttributeError). Исправление от Dave Shawley.
- [gh-112903](https://python-all.ru/3/whatsnew/changelog.html): Исправлены ошибки «issubclass() arg 1 must be a class» в определённых случаях множественного наследования с generic aliases (регрессия в ранних альфа-версиях 3.13).
- [gh-115133](https://python-all.ru/3/whatsnew/changelog.html): Исправлены тесты для [`XMLPullParser`](https://python-all.ru/3/library/xml.etree.elementtree.html#xml.etree.ElementTree.XMLPullParser) с Expat 2.6.0.
- [gh-115059](https://python-all.ru/3/whatsnew/changelog.html): `io.BufferedRandom.read1()` теперь сбрасывает нижележащий буфер записи.
- [gh-79382](https://python-all.ru/3/whatsnew/changelog.html): Замыкающий `**` больше не позволяет сопоставлять файлы и несуществующие пути в рекурсивном [`glob()`](https://python-all.ru/3/library/glob.html#glob.glob).
- [gh-67837](https://python-all.ru/3/whatsnew/changelog.html): Устранены состояния гонки при создании каталогов во время одновременного извлечения в [`tarfile`](https://python-all.ru/3/library/tarfile.html#module-tarfile) и [`zipfile`](https://python-all.ru/3/library/zipfile.html#module-zipfile).
- [gh-115060](https://python-all.ru/3/whatsnew/changelog.html): Ускорение [`pathlib.Path.glob()`](https://python-all.ru/3/library/pathlib.html#pathlib.Path.glob) за счёт удаления избыточного сопоставления с регулярными выражениями.
- [gh-97928](https://python-all.ru/3/whatsnew/changelog.html): Частично отменено поведение [`tkinter.Text.count()`](https://python-all.ru/3/library/tkinter.html#tkinter.Text.count). По умолчанию сохраняется поведение старых версий Python, за исключением того, что установка `wantobjects` в 0 больше не имеет эффекта. Добавлен новый параметр *return\_ints*: указание `return_ints=True` заставляет `Text.count()` всегда возвращать единственное значение счётчика в виде целого числа вместо 1-кортежа или `None`.
- [gh-114628](https://python-all.ru/3/whatsnew/changelog.html): При возбуждении csv.Error во время обработки TypeError не выводить traceback для TypeError.
- [gh-85984](https://python-all.ru/3/whatsnew/changelog.html): Добавлен `_POSIX_VDISABLE` из C’s `<unistd.h>` в [`termios`](https://python-all.ru/3/library/termios.html#module-termios).
- [gh-114965](https://python-all.ru/3/whatsnew/changelog.html): Обновлён встроенный pip до версии 24.0.
- [gh-114959](https://python-all.ru/3/whatsnew/changelog.html): [`tarfile`](https://python-all.ru/3/library/tarfile.html#module-tarfile) больше не игнорирует ошибки при попытке извлечь каталог поверх файла.
- [gh-114894](https://python-all.ru/3/whatsnew/changelog.html): Добавлен [`array.array.clear()`](https://python-all.ru/3/library/array.html#array.array.clear).
- [gh-114071](https://python-all.ru/3/whatsnew/changelog.html): Поддержка подклассов кортежей, использующих auto() для значения элемента перечисления.
- [gh-109475](https://python-all.ru/3/whatsnew/changelog.html): Исправлена поддержка явного значения опции «–» в [`argparse`](https://python-all.ru/3/library/argparse.html#module-argparse) (например, `--option=--`).
- [gh-49766](https://python-all.ru/3/whatsnew/changelog.html): Исправлено сравнение [`date`](https://python-all.ru/3/library/datetime.html#datetime.date)-[`datetime`](https://python-all.ru/3/library/datetime.html#datetime.datetime). Теперь специальные методы сравнения, такие как `__eq__` и `__lt__`, возвращают [`NotImplemented`](https://python-all.ru/3/library/constants.html#NotImplemented), если один из сравниваемых объектов является `date`, а другой `datetime`, вместо игнорирования временной части и часового пояса, принудительного возврата «не равно» или возбуждения [`TypeError`](https://python-all.ru/3/library/exceptions.html#TypeError). Это делает сравнение подклассов `date` и `datetime` более симметричным и позволяет изменить поведение по умолчанию, переопределяя специальные методы сравнения в подклассах.
- [gh-110190](https://python-all.ru/3/whatsnew/changelog.html): Исправлена работа ctypes-структур с массивами на платформе Windows ARM64: установлено значение `MAX_STRUCT_SIZE` равным 32 в stgdict. Патч от Diego Russo.
- [gh-114678](https://python-all.ru/3/whatsnew/changelog.html): Обеспечено, что предупреждение об устаревании для спецификатора 'N' в формате [`Decimal`](https://python-all.ru/3/library/decimal.html#decimal.Decimal) не возбуждается, если 'N' встречается в других местах спецификатора формата. На основе патча от Stefan Krah.
- [gh-70303](https://python-all.ru/3/whatsnew/changelog.html): Возвращать и файлы, и каталоги из [`pathlib.Path.glob()`](https://python-all.ru/3/library/pathlib.html#pathlib.Path.glob), если шаблон заканчивается на «`**`». Ранее возвращались только каталоги.
- [gh-109653](https://python-all.ru/3/whatsnew/changelog.html): Улучшено время импорта модулей [`importlib.metadata`](https://python-all.ru/3/library/importlib.metadata.html#module-importlib.metadata) и [`email.utils`](https://python-all.ru/3/library/email.utils.html#module-email.utils).
- [gh-113280](https://python-all.ru/3/whatsnew/changelog.html): Исправлена утечка открытого сокета в редких случаях, когда возникает ошибка при создании [`ssl.SSLSocket`](https://python-all.ru/3/library/ssl.html#ssl.SSLSocket).
- [gh-77749](https://python-all.ru/3/whatsnew/changelog.html): [`email.policy.EmailPolicy.fold()`](https://python-all.ru/3/library/email.policy.html#email.policy.EmailPolicy.fold) теперь всегда кодирует не-ASCII символы в заголовках, если [`utf8`](https://python-all.ru/3/library/email.policy.html#email.policy.EmailPolicy.utf8) равно false.
- [gh-83383](https://python-all.ru/3/whatsnew/changelog.html): Синхронизация базы данных [`dbm.dumb`](https://python-all.ru/3/library/dbm.html#module-dbm.dumb) теперь ничего не делает, если с момента открытия или последней синхронизации не было изменений. Файл каталога для только что созданной пустой базы данных `dbm.dumb` теперь создаётся сразу после открытия, а не откладывается до синхронизации или закрытия.
- [gh-91602](https://python-all.ru/3/whatsnew/changelog.html): Добавлен ключевой параметр *filter* (только по ключу) в [`sqlite3.Connection.iterdump()`](https://python-all.ru/3/library/sqlite3.html#sqlite3.Connection.iterdump) для фильтрации объектов базы данных при дампе. Патч от Mariusz Felisiak.
- [gh-112451](https://python-all.ru/3/whatsnew/changelog.html): Запрещено наследование от чисто Python-реализации [`datetime.timezone`](https://python-all.ru/3/library/datetime.html#datetime.timezone). Это согласуется с реализацией в виде C-расширения. Патч от Mariusz Felisiak.
- [gh-69893](https://python-all.ru/3/whatsnew/changelog.html): Добавлен метод `close()` для итератора, возвращаемого функцией [`xml.etree.ElementTree.iterparse()`](https://python-all.ru/3/library/xml.etree.elementtree.html#xml.etree.ElementTree.iterparse).
- [gh-109653](https://python-all.ru/3/whatsnew/changelog.html): Сокращено время импорта модуля [`threading`](https://python-all.ru/3/library/threading.html#module-threading) примерно на 50%. Патч от Daniel Hollas.
- [gh-114492](https://python-all.ru/3/whatsnew/changelog.html): Результат [`termios.tcgetattr()`](https://python-all.ru/3/library/termios.html#termios.tcgetattr) теперь воспроизводим на Alpine Linux. Ранее в некоторых полях мог оставаться случайный мусор.
- [gh-114315](https://python-all.ru/3/whatsnew/changelog.html): [`threading.Lock`](https://python-all.ru/3/library/threading.html#threading.Lock) теперь стал полноценным классом, а не фабричной функцией. Добавлен `__new__` в тип `_thread.lock`.
- [gh-100414](https://python-all.ru/3/whatsnew/changelog.html): Добавлен [`dbm.sqlite3`](https://python-all.ru/3/library/dbm.html#module-dbm.sqlite3) в качестве бэкенда для [`dbm`](https://python-all.ru/3/library/dbm.html#module-dbm), и он стал новым бэкендом по умолчанию для `dbm`. Патч от Raymond Hettinger и Erlend E. Aasland.
- [gh-113267](https://python-all.ru/3/whatsnew/changelog.html): Откат изменений из [gh-106584](https://python-all.ru/3/whatsnew/changelog.html), которые привели к несбалансированности вызовов методов `TestResult`: `startTest()` и `stopTest()`.
- [gh-75128](https://python-all.ru/3/whatsnew/changelog.html): Игнорировать [`OSError`](https://python-all.ru/3/library/exceptions.html#OSError) в `asyncio.BaseEventLoop.create_server()`, если IPv6 доступен, но интерфейс на самом деле его не поддерживает.
- [gh-114423](https://python-all.ru/3/whatsnew/changelog.html): Записи `_DummyThread` в `threading._active` теперь автоматически удаляются при завершении связанного потока.
- [gh-114257](https://python-all.ru/3/whatsnew/changelog.html): Игнорировать ошибку `FileNotFound` в [`ctypes.util.find_library()`](https://python-all.ru/3/library/ctypes.html#ctypes.util.find_library) и просто возвращать `None` на Linux.
- [gh-114321](https://python-all.ru/3/whatsnew/changelog.html): Добавлены дополнительные платформенно-зависимые константы в модуль [`fcntl`](https://python-all.ru/3/library/fcntl.html#module-fcntl) на Linux, macOS, FreeBSD и NetBSD.
- [gh-114328](https://python-all.ru/3/whatsnew/changelog.html): [`tty.setcbreak()`](https://python-all.ru/3/library/tty.html#tty.setcbreak) и новый [`tty.cfmakecbreak()`](https://python-all.ru/3/library/tty.html#tty.cfmakecbreak) больше не сбрасывают флаг ICRLF терминального ввода. Это исправляет регрессию, внесённую в 3.12, которая больше не соответствовала тому, как ОС определяют режим cbreak в своих man-страницах `stty(1)`.
- [gh-114281](https://python-all.ru/3/whatsnew/changelog.html): Удалены подсказки типов из `Lib/asyncio/staggered.py`. Вместо этого следует использовать аннотации из проекта [typeshed](https://python-all.ru/3/whatsnew/changelog.html).
- [gh-101438](https://python-all.ru/3/whatsnew/changelog.html): Устранён циклический ссылочный цикл в ElementTree.iterparse. Итератор, возвращаемый `ElementTree.iterparse`, может удерживать файловый дескриптор. Циклическая ссылка препятствовала своевременной очистке файлового дескриптора, если возвращённый итератор не был исчерпан.
- [gh-114198](https://python-all.ru/3/whatsnew/changelog.html): Сигнатура метода `__replace__` в [`dataclasses`](https://python-all.ru/3/library/dataclasses.html#module-dataclasses) теперь имеет первый аргумент с именем `self` вместо `obj`.
- [gh-104522](https://python-all.ru/3/whatsnew/changelog.html): [`OSError`](https://python-all.ru/3/library/exceptions.html#OSError), возбуждаемое при запуске подпроцесса, теперь устанавливает атрибут *filename* равным *cwd* только в том случае, если ошибка была вызвана неудачной попыткой сменить текущий каталог.
- [gh-114149](https://python-all.ru/3/whatsnew/changelog.html): Enum: теперь корректно обрабатываются подклассы кортежа в пользовательском `__new__`.
- [gh-83648](https://python-all.ru/3/whatsnew/changelog.html): Поддержка объявления параметров, позиционных аргументов и подкоманд устаревшими в [`argparse`](https://python-all.ru/3/library/argparse.html#module-argparse).
- [gh-114087](https://python-all.ru/3/whatsnew/changelog.html): Ускорение `dataclasses.asdict` до 1.35x.
- [gh-109534](https://python-all.ru/3/whatsnew/changelog.html): Исправлена утечка ссылки в `asyncio.selector_events.BaseSelectorEventLoop` при сбое рукопожатия SSL. Патч предоставлен Jamie Phan.
- [gh-79634](https://python-all.ru/3/whatsnew/changelog.html): Принимать [объекты, подобные пути](https://python-all.ru/3/glossary.html#term-path-like-object) в качестве шаблонов в [`pathlib.Path.glob()`](https://python-all.ru/3/library/pathlib.html#pathlib.Path.glob) и [`rglob()`](https://python-all.ru/3/library/pathlib.html#pathlib.Path.rglob).
- [gh-112202](https://python-all.ru/3/whatsnew/changelog.html): Обеспечить, чтобы вызов [`asyncio.Condition.notify()`](https://python-all.ru/3/library/asyncio-sync.html#asyncio.Condition.notify) не терялся, если пробуждённый `Task` одновременно отменяется или сталкивается с любой другой ошибкой.
- [gh-113951](https://python-all.ru/3/whatsnew/changelog.html): Исправлено поведение методов `tag_unbind()` классов [`tkinter.Text`](https://python-all.ru/3/library/tkinter.html#tkinter.Text) и [`tkinter.Canvas`](https://python-all.ru/3/library/tkinter.html#tkinter.Canvas) с тремя аргументами. Ранее `widget.tag_unbind(tag, sequence, funcid)` уничтожал текущую привязку для *sequence*, оставляя *sequence* несвязанным, и удалял команду *funcid*. Теперь он удаляет только *funcid* из привязки для *sequence*, сохраняя другие команды, и удаляет команду *funcid*. Он оставляет *sequence* несвязанным только в том случае, если *funcid* была последней связанной командой.
- [gh-97959](https://python-all.ru/3/whatsnew/changelog.html): Исправлено отображение методов класса, связанных методов, псевдонимов методов и функций в [`pydoc`](https://python-all.ru/3/library/pydoc.html#module-pydoc). У методов класса больше нет примечания "method of builtins.type instance". Соответствующие примечания теперь добавляются для методов класса и несвязанных методов. Псевдонимы методов и функций теперь содержат ссылки на модуль или класс, где был определён оригинал, если он отличается от текущего. Связанные методы теперь перечислены в разделе статических методов. Методы встроенных классов теперь поддерживаются, как и методы классов Python.
- [gh-113796](https://python-all.ru/3/whatsnew/changelog.html): Добавлены дополнительные проверки валидации в конструктор [`csv.Dialect`](https://python-all.ru/3/library/csv.html#csv.Dialect). Теперь возбуждается [`ValueError`](https://python-all.ru/3/library/exceptions.html#ValueError), если один и тот же символ используется в разных ролях.
- [gh-113732](https://python-all.ru/3/whatsnew/changelog.html): Исправлена поддержка [`QUOTE_NOTNULL`](https://python-all.ru/3/library/csv.html#csv.QUOTE_NOTNULL) и [`QUOTE_STRINGS`](https://python-all.ru/3/library/csv.html#csv.QUOTE_STRINGS) в [`csv.reader()`](https://python-all.ru/3/library/csv.html#csv.reader).
- [gh-113225](https://python-all.ru/3/whatsnew/changelog.html): Ускорение [`pathlib.Path.walk()`](https://python-all.ru/3/library/pathlib.html#pathlib.Path.walk) за счёт использования [`os.DirEntry.path`](https://python-all.ru/3/library/os.html#os.DirEntry.path) там, где это возможно.
- [gh-89039](https://python-all.ru/3/whatsnew/changelog.html): При вызове метода replace() для подкласса datetime, date или time теперь корректно вызывается конструктор производного класса. Ранее вызывался только конструктор базового класса.

  Также обеспечена передача ненулевых значений fold при создании подклассов в различных методах. Ранее fold игнорировался без предупреждения.
- [gh-112919](https://python-all.ru/3/whatsnew/changelog.html): Ускорение [`datetime.datetime.replace()`](https://python-all.ru/3/library/datetime.html#datetime.datetime.replace), [`datetime.date.replace()`](https://python-all.ru/3/library/datetime.html#datetime.date.replace) и [`datetime.time.replace()`](https://python-all.ru/3/library/datetime.html#datetime.time.replace).
- [gh-59013](https://python-all.ru/3/whatsnew/changelog.html): Точка останова теперь устанавливается на первой исполняемой строке функции, а не на строке определения функции, когда пользователь выполняет `break func` с помощью [`pdb`](https://python-all.ru/3/library/pdb.html#module-pdb).
- [gh-112343](https://python-all.ru/3/whatsnew/changelog.html): Улучшена обработка вспомогательных переменных pdb, чтобы избежать замены содержимого строк.
- [gh-112240](https://python-all.ru/3/whatsnew/changelog.html): Добавлена опция в CLI модуля calendar для указания дня недели, с которого начинается каждая неделя. Исправление от Steven Ward.
- [gh-111741](https://python-all.ru/3/whatsnew/changelog.html): `image/webp` теперь распознаётся как стандартный формат в модуле [`mimetypes`](https://python-all.ru/3/library/mimetypes.html#module-mimetypes).
- [gh-43457](https://python-all.ru/3/whatsnew/changelog.html): Исправлен метод `wm_attributes()` виджета [`tkinter`](https://python-all.ru/3/library/tkinter.html#module-tkinter). Теперь он принимает имя атрибута без префикса минус для получения атрибутов окна и позволяет указывать атрибуты и значения для установки в качестве именованных аргументов. Добавлен новый необязательный именованный аргумент *return\_python\_dict*: вызов `w.wm_attributes(return_python_dict=True)` возвращает атрибуты в виде словаря вместо кортежа. Вызов `w.wm_attributes()` теперь возвращает кортеж вместо строки, если *wantobjects* был установлен в 0.
- [gh-82626](https://python-all.ru/3/whatsnew/changelog.html): Многие функции теперь выводят предупреждение, если в качестве аргумента с файловым дескриптором передаётся логическое значение.
- [gh-111051](https://python-all.ru/3/whatsnew/changelog.html): Добавлена проверка изменения файла во время отладки с [`pdb`](https://python-all.ru/3/library/pdb.html#module-pdb).
- [gh-110345](https://python-all.ru/3/whatsnew/changelog.html): Показывать уровень исправлений Tcl/Tk (а не версию) в `tkinter._test()`.
- [gh-38807](https://python-all.ru/3/whatsnew/changelog.html): Исправлено состояние гонки в [`trace`](https://python-all.ru/3/library/trace.html#module-trace). Вместо проверки существования каталога и его создания теперь напрямую вызывается [`os.makedirs()`](https://python-all.ru/3/library/os.html#os.makedirs) с аргументом kwarg `exist_ok=True`.
- [gh-75705](https://python-all.ru/3/whatsnew/changelog.html): Установка конверта unixfrom в [`mailbox.mbox`](https://python-all.ru/3/library/mailbox.html#mailbox.mbox) и [`mailbox.MMDF`](https://python-all.ru/3/library/mailbox.html#mailbox.MMDF).
- [gh-106233](https://python-all.ru/3/whatsnew/changelog.html): Исправлен уровень стека (stacklevel) в `InvalidTZPathWarning` при импорте модуля [`zoneinfo`](https://python-all.ru/3/library/zoneinfo.html#module-zoneinfo).
- [gh-105102](https://python-all.ru/3/whatsnew/changelog.html): Разрешено вложение [`ctypes.Union`](https://python-all.ru/3/library/ctypes.html#ctypes.Union) в [`ctypes.Structure`](https://python-all.ru/3/library/ctypes.html#ctypes.Structure), когда порядок байтов системы противоположен порядку байтов классов.
- [gh-104282](https://python-all.ru/3/whatsnew/changelog.html): Исправлено разыменование нулевого указателя в `lzma._decode_filter_properties()` из-за некорректной обработки фильтров BCJ со свойствами нулевой длины. Исправление от Radislav Chugunov.
- [gh-96471](https://python-all.ru/3/whatsnew/changelog.html): Добавлено завершение [`queue.Queue`](https://python-all.ru/3/library/queue.html#queue.Queue) с помощью [`shutdown()`](https://python-all.ru/3/library/queue.html#queue.Queue.shutdown).
- [gh-101599](https://python-all.ru/3/whatsnew/changelog.html): Изменено форматирование опций-флагов argparse для устранения избыточности.
- [gh-85984](https://python-all.ru/3/whatsnew/changelog.html): Добавлены функции POSIX псевдотерминалов: [`os.posix_openpt()`](https://python-all.ru/3/library/os.html#os.posix_openpt), [`os.grantpt()`](https://python-all.ru/3/library/os.html#os.grantpt), [`os.unlockpt()`](https://python-all.ru/3/library/os.html#os.unlockpt) и [`os.ptsname()`](https://python-all.ru/3/library/os.html#os.ptsname).
- [gh-102512](https://python-all.ru/3/whatsnew/changelog.html): Когда [`os.fork()`](https://python-all.ru/3/library/os.html#os.fork) вызывается из внешнего потока (также известного как `_DummyThread`), тип потока в дочернем процессе изменяется на `_MainThread`. Также изменены его имя и статус демона, теперь его можно присоединить.
- [gh-88569](https://python-all.ru/3/whatsnew/changelog.html): Добавлена функция [`os.path.isreserved()`](https://python-all.ru/3/library/os.path.html#os.path.isreserved), которая определяет зарезервированные имена путей, такие как "NUL", "AUX" и "CON". Эта функция доступна только в Windows.

  Устарело [`pathlib.PurePath.is_reserved()`](https://python-all.ru/3/library/pathlib.html#pathlib.PurePath.is_reserved).
- [bpo-38364](https://python-all.ru/3/whatsnew/changelog.html): Функции `inspect`: `isgeneratorfunction`, `iscoroutinefunction`, `isasyncgenfunction` теперь поддерживают обёрнутые функции `functools.partialmethod` так же, как они поддерживают `functools.partial`.

### Документация

- [gh-115233](https://python-all.ru/3/whatsnew/changelog.html): Исправлен пример для [`LoggerAdapter`](https://python-all.ru/3/library/logging.html#logging.LoggerAdapter) в книге рецептов по логированию (Logging Cookbook).
- [gh-114123](https://python-all.ru/3/whatsnew/changelog.html): Перенесена строка документации модуля [`csv`](https://python-all.ru/3/library/csv.html#module-csv) в модуль `csv` вместо реэкспорта из внутреннего модуля `_csv`, и удалён `__doc__` из `csv.__all__`.

  Перенесён `csv.__version__` в модуль `csv` вместо реэкспорта из внутреннего модуля `_csv`, и удалён `__version__` из `csv.__all__`.

### Тесты

- [gh-114099](https://python-all.ru/3/whatsnew/changelog.html): Добавлены исключения тестов, необходимые для запуска набора тестов на iOS.
- [gh-105089](https://python-all.ru/3/whatsnew/changelog.html): Исправление `test.test_zipfile.test_core.TestWithDirectory.test_create_directory_with_write` теста в AIX путём побитового И с 0xFFFF для mode, чтобы он был синхронизирован с `zinfo.external_attr`

### Сборка

- [gh-115167](https://python-all.ru/3/whatsnew/changelog.html): Избегать включения `vcruntime140_threads.dll` в состав при сборке с Visual Studio 2022 версии 17.8.
- [gh-113632](https://python-all.ru/3/whatsnew/changelog.html): Повысить WASI до платформы второго уровня и исключить Emscripten из третьего уровня в configure.ac.
- [gh-114099](https://python-all.ru/3/whatsnew/changelog.html): Файлы configure и Makefile были реорганизованы для поддержки сборок фреймворков на платформах Apple, отличных от macOS.
- [gh-114875](https://python-all.ru/3/whatsnew/changelog.html): Добавить `getgrent()` в качестве обязательной зависимости для сборки модуля [`grp`](https://python-all.ru/3/library/grp.html#module-grp).

### Windows

- [gh-115049](https://python-all.ru/3/whatsnew/changelog.html): Исправлена проблема с запуском `py.exe` у пользователей, не имеющих пользовательских профилей.
- [gh-115009](https://python-all.ru/3/whatsnew/changelog.html): Обновлён установщик Windows для использования SQLite 3.45.1.
- [gh-109991](https://python-all.ru/3/whatsnew/changelog.html): Обновление сборки Windows для использования OpenSSL 3.0.13.
- [gh-111239](https://python-all.ru/3/whatsnew/changelog.html): Обновление сборок Windows для использования zlib v1.3.1.
- [gh-100107](https://python-all.ru/3/whatsnew/changelog.html): Программа запуска `py.exe` больше не будет пытаться запустить перенаправитель Microsoft Store при запуске сценария, содержащего `/usr/bin/env` shebang
- [gh-112984](https://python-all.ru/3/whatsnew/changelog.html): Добавление free-threaded двоичных файлов в установщик Windows в качестве необязательного компонента.
- [gh-89240](https://python-all.ru/3/whatsnew/changelog.html): Позволяет [`multiprocessing`](https://python-all.ru/3/library/multiprocessing.html#module-multiprocessing) создавать пулы из более чем 62 процессов.

### macOS

- [gh-115009](https://python-all.ru/3/whatsnew/changelog.html): Обновление установщика macOS для использования SQLite 3.45.1.
- [gh-109991](https://python-all.ru/3/whatsnew/changelog.html): Обновление установщика macOS для использования OpenSSL 3.0.13.
- [gh-114490](https://python-all.ru/3/whatsnew/changelog.html): Добавление поддержки компоновки Mach-O для [`platform.architecture()`](https://python-all.ru/3/library/platform.html#platform.architecture).
- [gh-87804](https://python-all.ru/3/whatsnew/changelog.html): На macOS результат `os.statvfs` и `os.fstatvfs` теперь корректно сообщает размер очень больших дисков; в предыдущих версиях сообщаемое количество блоков было неверным для дисков с размером не менее 2\*\*32 блоков.

### IDLE

- [gh-96905](https://python-all.ru/3/whatsnew/changelog.html): В коде idlelib прекратить переопределение встроенных функций dict и object.
- [gh-103820](https://python-all.ru/3/whatsnew/changelog.html): Изменить привязки IDLE так, чтобы события от кнопок мыши 4/5 на оконных системах, отличных от X11 (т.е. Win32 и Aqua), не ошибочно воспринимались как прокрутка.

### Tools/Demos

- [gh-113516](https://python-all.ru/3/whatsnew/changelog.html): Не устанавливать `LDSHARED` при сборке для WASI.
- [gh-109991](https://python-all.ru/3/whatsnew/changelog.html): Обновление рабочих процессов GitHub CI для использования OpenSSL 3.0.13 и multissltests для использования 1.1.1w, 3.0.13, 3.1.5 и 3.2.1.
- [gh-115015](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка в Argument Clinic, из-за которой генерировался некорректный код для методов без параметров, использующих соглашение о вызове [METH\_METHOD | METH\_FASTCALL | METH\_KEYWORDS](https://python-all.ru/3/c-api/structures.html#meth-method-meth-fastcall-meth-keywords). Проверялось только количество позиционных параметров; любые переданные именованные аргументы молча принимались.

### C API

- [gh-111140](https://python-all.ru/3/whatsnew/changelog.html): Добавляет функции [`PyLong_AsNativeBytes()`](https://python-all.ru/3/c-api/long.html#c.PyLong_AsNativeBytes), [`PyLong_FromNativeBytes()`](https://python-all.ru/3/c-api/long.html#c.PyLong_FromNativeBytes) и [`PyLong_FromUnsignedNativeBytes()`](https://python-all.ru/3/c-api/long.html#c.PyLong_FromUnsignedNativeBytes).
- [gh-114685](https://python-all.ru/3/whatsnew/changelog.html): [`PyBuffer_FillInfo()`](https://python-all.ru/3/c-api/buffer.html#c.PyBuffer_FillInfo) теперь вызывает [`SystemError`](https://python-all.ru/3/library/exceptions.html#SystemError), если вызван с [`PyBUF_READ`](https://python-all.ru/3/c-api/memoryview.html#c.PyBUF_READ) или [`PyBUF_WRITE`](https://python-all.ru/3/c-api/memoryview.html#c.PyBUF_WRITE) в качестве флагов. Эти флаги следует использовать только с `PyMemoryView_*` C API.
- [gh-114685](https://python-all.ru/3/whatsnew/changelog.html): [`PyObject_GetBuffer()`](https://python-all.ru/3/c-api/buffer.html#c.PyObject_GetBuffer) теперь вызывает [`SystemError`](https://python-all.ru/3/library/exceptions.html#SystemError), если вызван с [`PyBUF_READ`](https://python-all.ru/3/c-api/memoryview.html#c.PyBUF_READ) или [`PyBUF_WRITE`](https://python-all.ru/3/c-api/memoryview.html#c.PyBUF_WRITE) в качестве флагов. Эти флаги следует использовать только с `PyMemoryView_*` C API.
- [gh-114626](https://python-all.ru/3/whatsnew/changelog.html): Добавить typedefs `PyCFunctionFast` и `PyCFunctionFastWithKeywords` (идентичные существующим typedefs `_PyCFunctionFast` и `_PyCFunctionFastWithKeywords`, только без ведущего префикса `_` ).
- [gh-114329](https://python-all.ru/3/whatsnew/changelog.html): Add [`PyList_GetItemRef()`](https://python-all.ru/3/c-api/list.html#c.PyList_GetItemRef), which is similar to [`PyList_GetItem()`](https://python-all.ru/3/c-api/list.html#c.PyList_GetItem) but returns a [strong reference](https://python-all.ru/3/glossary.html#term-strong-reference) instead of a [borrowed reference](https://python-all.ru/3/glossary.html#term-borrowed-reference).
- [gh-110850](https://python-all.ru/3/whatsnew/changelog.html): Добавлен PyTime C API:

  - Тип [`PyTime_t`](https://python-all.ru/3/c-api/time.html#c.PyTime_t).
  - Константы [`PyTime_MIN`](https://python-all.ru/3/c-api/time.html#c.PyTime_MIN) и [`PyTime_MAX`](https://python-all.ru/3/c-api/time.html#c.PyTime_MAX).
  - Функции [`PyTime_AsSecondsDouble()`](https://python-all.ru/3/c-api/time.html#c.PyTime_AsSecondsDouble), [`PyTime_Monotonic()`](https://python-all.ru/3/c-api/time.html#c.PyTime_Monotonic), [`PyTime_PerfCounter()`](https://python-all.ru/3/c-api/time.html#c.PyTime_PerfCounter) и [`PyTime_Time()`](https://python-all.ru/3/c-api/time.html#c.PyTime_Time).

  Патч от Victor Stinner.
- [gh-112066](https://python-all.ru/3/whatsnew/changelog.html): Добавлена [`PyDict_SetDefaultRef()`](https://python-all.ru/3/c-api/dict.html#c.PyDict_SetDefaultRef): вставляет ключ и значение в словарь, если ключ ещё не присутствует. Это похоже на [`dict.setdefault()`](https://python-all.ru/3/library/stdtypes.html#dict.setdefault), но возвращает целочисленное значение, указывающее, был ли ключ уже присутствующим. Также похоже на [`PyDict_SetDefault()`](https://python-all.ru/3/c-api/dict.html#c.PyDict_SetDefault), но возвращает сильную ссылку вместо заимствованной.

## Python 3.13.0 alpha 3

*Дата выпуска: 2024-01-17*

### Безопасность

- [gh-113659](https://python-all.ru/3/whatsnew/changelog.html): Пропускать файлы `.pth`, имена которых начинаются с точки или имеют скрытый атрибут.
- [gh-112302](https://python-all.ru/3/whatsnew/changelog.html): Создан документ Software Bill-of-Materials и инструменты для отслеживания зависимостей.

### Ядро и встроенные модули

- [gh-107901](https://python-all.ru/3/whatsnew/changelog.html): Компилятор дублирует базовые блоки, имеющие проверку eval breaker, не имеющие номера строки и имеющие несколько предшественников.
- [gh-107901](https://python-all.ru/3/whatsnew/changelog.html): Переход из обработчика исключения обратно в обычный код больше не проверяет eval breaker.
- [gh-113655](https://python-all.ru/3/whatsnew/changelog.html): Установлен лимит рекурсии C равным 4000 в Windows и 10000 в Linux/OSX. Это кажется близким к оптимальному значению для обеспечения безопасности без ущерба для обратной совместимости.
- [gh-113710](https://python-all.ru/3/whatsnew/changelog.html): Добавлены типизированные эффекты стека в DSL интерпретатора, а также различные аннотации инструкций.
- [gh-77046](https://python-all.ru/3/whatsnew/changelog.html): On Windows, file descriptors wrapping Windows handles are now created non inheritable by default ([**PEP 446**](https://python-all.ru/3/whatsnew/changelog.html)). Patch by Zackery Spytz and Victor Stinner.
- [gh-113853](https://python-all.ru/3/whatsnew/changelog.html): Гарантируется, что все исполнители (executors) выполняют прогресс. Это, в свою очередь, гарантирует, что выполнение второго уровня всегда прогрессирует.
- [gh-113753](https://python-all.ru/3/whatsnew/changelog.html): Исправлена проблема, из-за которой финализатор объектов `PyAsyncGenASend` мог не вызываться, если они были выделены из списка свободных блоков.
- [gh-107901](https://python-all.ru/3/whatsnew/changelog.html): Изменён компилятор: синтетические переходы, находящиеся не в конце цикла, больше не проверяют eval breaker.
- [gh-113703](https://python-all.ru/3/whatsnew/changelog.html): Исправлена регрессия в модуле [`codeop`](https://python-all.ru/3/library/codeop.html#module-codeop), приводившая к неверному определению незавершённых f-строк. Патч от Pablo Galindo.
- [gh-89811](https://python-all.ru/3/whatsnew/changelog.html): Проверять корректность `tp_version_tag` перед выполнением специализаций байт-кода, которые полагаются на возможность использования этого значения.
- [gh-111488](https://python-all.ru/3/whatsnew/changelog.html): Изменено сообщение об ошибке в случае отсутствия ключевого слова ‘in’ после ‘for’ в списковых включениях.
- [gh-113657](https://python-all.ru/3/whatsnew/changelog.html): Исправлена проблема, из-за которой важные обновления указателя инструкции оптимизировались из трасс второго уровня.
- [gh-113603](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка, из-за которой избыточная NOP не удалялась, что приводило к сбою утверждения в компиляторе в режиме отладки.
- [gh-113602](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка, из-за которой парсер пытался перезаписать существующие ошибки и аварийно завершал работу. Патч от Pablo Galindo.
- [gh-113486](https://python-all.ru/3/whatsnew/changelog.html): Больше не выдаются ложные события `PY_UNWIND` для оптимизированных вызовов классов.
- [gh-113297](https://python-all.ru/3/whatsnew/changelog.html): Исправлен segfault в компиляторе для оператора with с 19 менеджерами контекста.
- [gh-113212](https://python-all.ru/3/whatsnew/changelog.html): Улучшены сообщения об ошибках [`super`](https://python-all.ru/3/library/functions.html#super).
- [gh-111375](https://python-all.ru/3/whatsnew/changelog.html): Использовать `NULL` в стеке исключений только для указания, что исключение было обработано. Патч от Carey Metcalfe.
- [gh-112215](https://python-all.ru/3/whatsnew/changelog.html): Увеличен лимит рекурсии C в 3 раза для сборок без отладки, за исключением платформ webassembly и s390, которые остались без изменений. Это смягчает некоторые регрессии в 3.12 при глубокой рекурсии, смешивающей встроенный (C) и Python код.
- [gh-113054](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка, при которой лишний NOP не удалялся, что приводило к сбою утверждения в компиляторе в режиме отладки.
- [gh-106905](https://python-all.ru/3/whatsnew/changelog.html): Использование состояния на каждый парсер AST вместо глобального для отслеживания глубины рекурсии внутри парсера AST, чтобы предотвратить возможное состояние гонки из-за одновременного разбора.

  Проблема в основном проявлялась в 3.11 у многопоточных пользователей [`ast.parse()`](https://python-all.ru/3/library/ast.html#ast.parse). В 3.12 изменение времени, когда может быть запущена сборка мусора, предотвратило возникновение состояния гонки.
- [gh-108866](https://python-all.ru/3/whatsnew/changelog.html): Изменение API и контракта `_PyExecutorObject`: теперь возвращается указатель next\_instr вместо фрейма, и всегда выполняется хотя бы одна инструкция.
- [gh-90350](https://python-all.ru/3/whatsnew/changelog.html): Оптимизация встроенных функций [`min()`](https://python-all.ru/3/library/functions.html#min) и [`max()`](https://python-all.ru/3/library/functions.html#max).
- [gh-112943](https://python-all.ru/3/whatsnew/changelog.html): Корректное вычисление конечных смещений столбцов для многострочных токенов в модуле [`tokenize`](https://python-all.ru/3/library/tokenize.html#module-tokenize). Исправление от Pablo Galindo.
- [gh-112125](https://python-all.ru/3/whatsnew/changelog.html): Исправление `None.__ne__(None)`, возвращавшего `NotImplemented` вместо `False`.
- [gh-74616](https://python-all.ru/3/whatsnew/changelog.html): [`input()`](https://python-all.ru/3/library/functions.html#input) теперь вызывает ValueError при выводе на терминал, если приглашение содержит встроенные нулевые символы, вместо того чтобы молча усекать их.
- [gh-112716](https://python-all.ru/3/whatsnew/changelog.html): Исправление SystemError в операторе `import` и в методах `__reduce__()` встроенных типов, когда `__builtins__` не является словарём.
- [gh-112730](https://python-all.ru/3/whatsnew/changelog.html): Использование цвета для подсветки местоположения ошибок в трассировках. Исправление от Pablo Galindo.
- [gh-112625](https://python-all.ru/3/whatsnew/changelog.html): Исправление ошибки, при которой объект bytearray мог быть очищен во время итерации по аргументу в методе `bytearray.join()`, что могло привести к чтению освобождённой памяти.
- [gh-112660](https://python-all.ru/3/whatsnew/changelog.html): Не очищать неожиданные ошибки при форматировании сообщений об ошибках ImportError и AttributeError для модулей.
- [gh-105967](https://python-all.ru/3/whatsnew/changelog.html): Обход ошибки в библиотеке zlib платформы Apple macOS, при которой [`zlib.crc32()`](https://python-all.ru/3/library/zlib.html#zlib.crc32) и [`binascii.crc32()`](https://python-all.ru/3/library/binascii.html#binascii.crc32) могли выдавать неверные результаты на входных данных размером в несколько гигабайт. В том числе при использовании [`zipfile`](https://python-all.ru/3/library/zipfile.html#module-zipfile) на zip‑архивах с большими данными.
- [gh-95754](https://python-all.ru/3/whatsnew/changelog.html): Улучшено сообщение об ошибке при обращении к недопустимым атрибутам частично инициализированных модулей. Теперь в сообщение включается источник (модуль, к которому выполняется обращение), что помогает в распространённой проблеме затенения других модулей.
- [gh-112217](https://python-all.ru/3/whatsnew/changelog.html): Добавлена проверка типа `__cause__`, возвращаемого при вызове типа `T` в `raise from T`.
- [gh-111058](https://python-all.ru/3/whatsnew/changelog.html): Изменение coro.cr\_frame/gen.gi\_frame: теперь после закрытия корутины/генератора возвращается `None`. Это исправляет ошибку, при которой [`getcoroutinestate()`](https://python-all.ru/3/library/inspect.html#inspect.getcoroutinestate) и [`getgeneratorstate()`](https://python-all.ru/3/library/inspect.html#inspect.getgeneratorstate) возвращали неправильное состояние для закрытой корутины/генератора.
- [gh-112388](https://python-all.ru/3/whatsnew/changelog.html): Исправление ошибки, приводившей к попытке парсера перезаписать ошибки токенизатора. Исправление от Pablo Galindo.
- [gh-112387](https://python-all.ru/3/whatsnew/changelog.html): Исправление позиций ошибок для декодированных строк при обратных ошибках токенизации. Исправление от Pablo Galindo.
- [gh-99606](https://python-all.ru/3/whatsnew/changelog.html): Сделать код, генерируемый для пустой f-строки, идентичным коду пустой обычной строки.
- [gh-112367](https://python-all.ru/3/whatsnew/changelog.html): Избегание неопределённого поведения при использовании перф‑трамплинов за счёт того, что арены кода не освобождаются до завершения работы. Исправление от Pablo Galindo.
- [gh-112320](https://python-all.ru/3/whatsnew/changelog.html): Транслятор второго уровня теперь отслеживает уровень уверенности в том, что выполнение останется «на трассе» (то есть не вернётся к интерпретатору первого уровня) для инструкций ветвления на основе количества установленных битов в «счётчике» ветвления. Трансляция трассы завершается, когда уверенность падает ниже 1/3.
- [gh-109598](https://python-all.ru/3/whatsnew/changelog.html): [`PyComplex_RealAsDouble()`](https://python-all.ru/3/c-api/complex.html#c.PyComplex_RealAsDouble)/[`PyComplex_ImagAsDouble()`](https://python-all.ru/3/c-api/complex.html#c.PyComplex_ImagAsDouble) теперь пытается преобразовать объект в экземпляр [`complex`](https://python-all.ru/3/library/functions.html#complex), используя его метод `__complex__()`, прежде чем перейти к методу `__float__()`. Исправление от Sergey B Kirpichev.
- [gh-94606](https://python-all.ru/3/whatsnew/changelog.html): Исправление UnicodeEncodeError, когда `email.message.get_payload()` читает сообщение с суррогатным символом Unicode и содержимое сообщения не является корректным для кодировки surrogateescape. Исправление от Sidney Markowitz.
- [bpo-21861](https://python-all.ru/3/whatsnew/changelog.html): Использование фактического имени класса объекта в `_io.FileIO.__repr__()`, `_io._WindowsConsoleIO()` и `_io.TextIOWrapper.__repr__()`, чтобы эти методы были дружественными к подклассам.
- [bpo-45369](https://python-all.ru/3/whatsnew/changelog.html): Удаление обходных путей для LibreSSL в соответствии с [**PEP 644**](https://python-all.ru/3/whatsnew/changelog.html).
- [bpo-34392](https://python-all.ru/3/whatsnew/changelog.html): Добавлен [`sys._is_interned()`](https://python-all.ru/3/library/sys.html#sys._is_interned).

### Библиотека

- [gh-114077](https://python-all.ru/3/whatsnew/changelog.html): Исправление возможной [`OverflowError`](https://python-all.ru/3/library/exceptions.html#OverflowError) в [`socket.socket.sendfile()`](https://python-all.ru/3/library/socket.html#socket.socket.sendfile) при передаче *count* больше 2 ГБ на 32‑битной платформе.
- [gh-111803](https://python-all.ru/3/whatsnew/changelog.html): [`plistlib`](https://python-all.ru/3/library/plistlib.html#module-plistlib) теперь поддерживает загрузку более глубоко вложенных списков в двоичном формате.
- [gh-114014](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка в [`fractions.Fraction`](https://python-all.ru/3/library/fractions.html#fractions.Fraction), при которой строка с недопустимым символом `d` в десятичной части приводила к другой ошибке по сравнению с другими недопустимыми буквами/символами. Исправление от Jeremiah Gabriel Pascual.
- [gh-108364](https://python-all.ru/3/whatsnew/changelog.html): [`sqlite3.Connection.iterdump()`](https://python-all.ru/3/library/sqlite3.html#sqlite3.Connection.iterdump) теперь гарантирует, что поддержка внешних ключей отключена перед дампом схемы базы данных, если есть нарушение внешнего ключа. Исправление от Erlend E. Aasland и Mariusz Felisiak.
- [gh-113971](https://python-all.ru/3/whatsnew/changelog.html): Ранее защищённый атрибут `._compresslevel` объекта [`zipfile.ZipInfo`](https://python-all.ru/3/library/zipfile.html#zipfile.ZipInfo) сделан публичным под именем `.compress_level`; старое имя `_compresslevel` остаётся доступным в виде свойства для сохранения совместимости.
- [gh-113877](https://python-all.ru/3/whatsnew/changelog.html): Исправлен метод [`tkinter`](https://python-all.ru/3/library/tkinter.html#module-tkinter) `winfo_pathname()` на 64-разрядной Windows.
- [gh-113868](https://python-all.ru/3/whatsnew/changelog.html): Добавлены [`mmap.MAP_NORESERVE`](https://python-all.ru/3/library/mmap.html#mmap.MAP_NORESERVE), [`mmap.MAP_NOEXTEND`](https://python-all.ru/3/library/mmap.html#mmap.MAP_NOEXTEND), [`mmap.MAP_HASSEMAPHORE`](https://python-all.ru/3/library/mmap.html#mmap.MAP_HASSEMAPHORE), [`mmap.MAP_NOCACHE`](https://python-all.ru/3/library/mmap.html#mmap.MAP_NOCACHE), [`mmap.MAP_JIT`](https://python-all.ru/3/library/mmap.html#mmap.MAP_JIT), [`mmap.MAP_RESILIENT_CODESIGN`](https://python-all.ru/3/library/mmap.html#mmap.MAP_RESILIENT_CODESIGN), [`mmap.MAP_RESILIENT_MEDIA`](https://python-all.ru/3/library/mmap.html#mmap.MAP_RESILIENT_MEDIA), [`mmap.MAP_32BIT`](https://python-all.ru/3/library/mmap.html#mmap.MAP_32BIT), [`mmap.MAP_TRANSLATED_ALLOW_EXECUTE`](https://python-all.ru/3/library/mmap.html#mmap.MAP_TRANSLATED_ALLOW_EXECUTE), [`mmap.MAP_UNIX03`](https://python-all.ru/3/library/mmap.html#mmap.MAP_UNIX03) и [`mmap.MAP_TPRO`](https://python-all.ru/3/library/mmap.html#mmap.MAP_TPRO). Все они являются `mmap(2)` флагами на macOS.
- [gh-113848](https://python-all.ru/3/whatsnew/changelog.html): [`asyncio.TaskGroup()`](https://python-all.ru/3/library/asyncio-task.html#asyncio.TaskGroup) и [`asyncio.timeout()`](https://python-all.ru/3/library/asyncio-task.html#asyncio.timeout) менеджеры контекста теперь обрабатывают [`CancelledError`](https://python-all.ru/3/library/asyncio-exceptions.html#asyncio.CancelledError) подклассы, а также tочные `CancelledError`.
- [gh-113661](https://python-all.ru/3/whatsnew/changelog.html): Запускатор unittest: не завершаться с кодом 5, если тесты были пропущены. Предполагалось, что завершение с кодом 5 позволяет выявить случаи, когда набор тестов вообще не был обнаружен. Если тесты были пропущены, значит набор был обнаружен верно.
- [gh-96037](https://python-all.ru/3/whatsnew/changelog.html): Вставить [`TimeoutError`](https://python-all.ru/3/library/exceptions.html#TimeoutError) в контекст исключения, возникшего при выходе из истекшего блока [`asyncio.timeout()`](https://python-all.ru/3/library/asyncio-task.html#asyncio.timeout).
- [gh-113781](https://python-all.ru/3/whatsnew/changelog.html): Подавлен невыбрасываемый AttributeError, возникающий при выводе предупреждений во время финализации Python.
- [gh-113238](https://python-all.ru/3/whatsnew/changelog.html): Добавлен `Anchor` в `importlib.resources` (чтобы код соответствовал документации).
- [gh-111693](https://python-all.ru/3/whatsnew/changelog.html): [`asyncio.Condition.wait()`](https://python-all.ru/3/library/asyncio-sync.html#asyncio.Condition.wait) теперь повторно возбуждает тот же экземпляр `CancelledError`, который мог вызвать его прерывание. Исправлено состояние гонки в [`asyncio.Semaphore.acquire()`](https://python-all.ru/3/library/asyncio-sync.html#asyncio.Semaphore.acquire) при прерывании с помощью `CancelledError`.
- [gh-113791](https://python-all.ru/3/whatsnew/changelog.html): Добавлены `CLOCK_MONOTONIC_RAW_APPROX` и `CLOCK_UPTIME_RAW_APPROX` в [`time`](https://python-all.ru/3/library/time.html#module-time) на macOS. Это часы, доступные на macOS 10.12 и новее.
- [gh-112932](https://python-all.ru/3/whatsnew/changelog.html): Восстановлена возможность [`zipfile`](https://python-all.ru/3/library/zipfile.html#module-zipfile) `extractall` из zip-файлов, содержащих записи каталогов с символом «/», которые часто добавляют в zip-архивы некоторые экспортёры данных из wiki или баг-трекеров.
- [gh-113568](https://python-all.ru/3/whatsnew/changelog.html): Выдавать предупреждения об устаревании из [`pathlib.PurePath`](https://python-all.ru/3/library/pathlib.html#pathlib.PurePath), а не из его закрытого базового класса `PurePathBase`.
- [gh-113594](https://python-all.ru/3/whatsnew/changelog.html): Исправлена [`UnicodeEncodeError`](https://python-all.ru/3/library/exceptions.html#UnicodeEncodeError) в [`email`](https://python-all.ru/3/library/email.html#module-email) при повторном сворачивании строк, содержащих часть, закодированную в unknown-8bit, за которой следует часть, закодированная не в unknown-8bit.
- [gh-113538](https://python-all.ru/3/whatsnew/changelog.html): В `asyncio.StreamReaderProtocol.connection_made()` есть колбэк, который записывает ошибку, если задача, оборачивающая «колбэк подключения», завершается с ошибкой. Этот колбэк сам бы завершался с ошибкой, если бы задача была отменена. Чтобы этого избежать, добавлена проверка: если задача была отменена, транспорт закрывается без записи ошибки.
- [gh-113626](https://python-all.ru/3/whatsnew/changelog.html): Добавлена поддержка аргумента *allow\_code* в модуль [`marshal`](https://python-all.ru/3/library/marshal.html#module-marshal). Передача `allow_code=False` предотвращает сериализацию и десериализацию объектов кода, которые несовместимы между версиями Python.
- [gh-85567](https://python-all.ru/3/whatsnew/changelog.html): Исправлены предупреждения о ресурсах для незакрытых файлов в интерфейсах командной строки [`pickle`](https://python-all.ru/3/library/pickle.html#module-pickle) и [`pickletools`](https://python-all.ru/3/library/pickletools.html#module-pickletools).
- [gh-113537](https://python-all.ru/3/whatsnew/changelog.html): Добавлена поддержка загрузки `str` в [`plistlib.loads()`](https://python-all.ru/3/library/plistlib.html#plistlib.loads).
- [gh-89850](https://python-all.ru/3/whatsnew/changelog.html): Добавлены реализации по умолчанию методов [`pickle.Pickler.persistent_id()`](https://python-all.ru/3/library/pickle.html#pickle.Pickler.persistent_id) и [`pickle.Unpickler.persistent_load()`](https://python-all.ru/3/library/pickle.html#pickle.Unpickler.persistent_load) в C-реализации. Вызов `super().persistent_id()` и `super().persistent_load()` в подклассах C-реализации классов [`pickle.Pickler`](https://python-all.ru/3/library/pickle.html#pickle.Pickler) и [`pickle.Unpickler`](https://python-all.ru/3/library/pickle.html#pickle.Unpickler) больше не вызывает бесконечную рекурсию.
- [gh-113569](https://python-all.ru/3/whatsnew/changelog.html): Теперь при неудаче [`assert_has_calls()`](https://python-all.ru/3/library/unittest.mock.html#unittest.mock.Mock.assert_has_calls) в unittest указывается, если не было фактических вызовов.
- [gh-101225](https://python-all.ru/3/whatsnew/changelog.html): Увеличен backlog для объектов [`multiprocessing.connection.Listener`](https://python-all.ru/3/library/multiprocessing.html#multiprocessing.connection.Listener), создаваемых `multiprocessing.manager` и `multiprocessing.resource_sharer`, чтобы значительно снизить риск получения ошибки «отказ в соединении» при создании [`multiprocessing.connection.Connection`](https://python-all.ru/3/library/multiprocessing.html#multiprocessing.connection.Connection) к ним.
- [gh-113568](https://python-all.ru/3/whatsnew/changelog.html): Генерировать аудит-события из [`pathlib.Path`](https://python-all.ru/3/library/pathlib.html#pathlib.Path), а не из его закрытого базового класса `PathBase`.
- [gh-113543](https://python-all.ru/3/whatsnew/changelog.html): Обеспечить, чтобы `webbrowser.MacOSXOSAScript` отправлял событие аудита `webbrowser.open`.
- [gh-113028](https://python-all.ru/3/whatsnew/changelog.html): Когда во входных данных [`pickle`](https://python-all.ru/3/library/pickle.html#module-pickle) встречается вторая ссылка на строку и используется реализация на Python, гарантируется, что будет сериализована одна копия и при загрузке будет использоваться один объект. Ранее в протоколе 0, если строка содержала определённые символы (например, перевод строки), это приводило к дублированию объектов.
- [gh-113421](https://python-all.ru/3/whatsnew/changelog.html): Исправлен логгер multiprocessing для `%(filename)s`.
- [gh-111784](https://python-all.ru/3/whatsnew/changelog.html): Исправлены segfault'ы в модуле `_elementtree`. Первый segfault во время освобождения экземпляров `_elementtree.XMLParser` исправлен путём сохранения сильной ссылки на модуль `pyexpat` в состоянии модуля на время жизни капсулы. Второй segfault, возникающий в том же процессе освобождения, исправлен путём сохранения сильной ссылки на модуль `_elementtree` в структуре `XMLParser` на время жизни модуля `_elementtree`.
- [gh-113407](https://python-all.ru/3/whatsnew/changelog.html): Исправлен импорт [`unittest.mock`](https://python-all.ru/3/library/unittest.mock.html#module-unittest.mock) при сборке CPython без строк документации.
- [gh-113320](https://python-all.ru/3/whatsnew/changelog.html): Исправлена регрессия в Python 3.12, из-за которой классы [`Protocol`](https://python-all.ru/3/library/typing.html#typing.Protocol), не помеченные как [`runtime-checkable`](https://python-all.ru/3/library/typing.html#typing.runtime_checkable), излишне интроспектировались, что могло приводить к исключениям, если протокол содержал проблемные члены. Патч от Alex Waygood.
- [gh-53502](https://python-all.ru/3/whatsnew/changelog.html): Добавлена новая опция `aware_datetime` в [`plistlib`](https://python-all.ru/3/library/plistlib.html#module-plistlib) для загрузки и выгрузки осведомлённого времени (aware datetime).
- [gh-113358](https://python-all.ru/3/whatsnew/changelog.html): Исправлено отображение трассировок для исключений с повреждённым \_\_getattr\_\_.
- [gh-113214](https://python-all.ru/3/whatsnew/changelog.html): Исправлена `AttributeError` при прерывании протокола SSL в asyncio в сценариях SSL-over-SSL.
- [gh-113246](https://python-all.ru/3/whatsnew/changelog.html): Обновлён встроенный pip до версии 23.3.2.
- [gh-87264](https://python-all.ru/3/whatsnew/changelog.html): Исправлен метод list() модуля tarfile для отображения типа файла.
- [gh-112182](https://python-all.ru/3/whatsnew/changelog.html): `asyncio.futures.Future.set_exception()` теперь преобразует [`StopIteration`](https://python-all.ru/3/library/exceptions.html#StopIteration) в [`RuntimeError`](https://python-all.ru/3/library/exceptions.html#RuntimeError), а не зависает или ведёт себя некорректно. Патч предоставлен Jamie Phan.
- [gh-113225](https://python-all.ru/3/whatsnew/changelog.html): Ускорена работа [`pathlib.Path.glob()`](https://python-all.ru/3/library/pathlib.html#pathlib.Path.glob) за счёт использования [`os.DirEntry.path`](https://python-all.ru/3/library/os.html#os.DirEntry.path), где это возможно.
- [gh-113149](https://python-all.ru/3/whatsnew/changelog.html): Улучшено сообщение об ошибке при наличии завершающей запятой в JSON-массиве или объекте. Патч от Carson Radtke.
- [gh-113117](https://python-all.ru/3/whatsnew/changelog.html): Модуль [`subprocess`](https://python-all.ru/3/library/subprocess.html#module-subprocess) теперь может использовать функцию [`os.posix_spawn()`](https://python-all.ru/3/library/os.html#os.posix_spawn) с `close_fds=True` на платформах, где доступен `posix_spawn_file_actions_addclosefrom_np`. Патч от Jakub Kulik.
- [gh-113199](https://python-all.ru/3/whatsnew/changelog.html): `http.client.HTTPResponse.read1` и `http.client.HTTPResponse.readline` теперь закрывают IO после чтения всех данных, когда известна длина содержимого. Патч от Illia Volochii.
- [gh-113191](https://python-all.ru/3/whatsnew/changelog.html): Добавлена поддержка [`os.fchmod()`](https://python-all.ru/3/library/os.html#os.fchmod) и файлового дескриптора в [`os.chmod()`](https://python-all.ru/3/library/os.html#os.chmod) на Windows.
- [gh-113188](https://python-all.ru/3/whatsnew/changelog.html): Исправлены [`shutil.copymode()`](https://python-all.ru/3/library/shutil.html#shutil.copymode) и [`shutil.copystat()`](https://python-all.ru/3/library/shutil.html#shutil.copystat) на Windows. Ранее они работали иначе: если *dst* является символической ссылкой, то они изменяли биты разрешений самого *dst*, а не файла, на который он указывает, если *follow\_symlinks* равен true или *src* не является символической ссылкой; и не изменяли биты разрешений, если *follow\_symlinks* равен false и *src* является символической ссылкой.
- [gh-113119](https://python-all.ru/3/whatsnew/changelog.html): [`os.posix_spawn()`](https://python-all.ru/3/library/os.html#os.posix_spawn) теперь принимает `env=None`, что позволяет новому порождённому процессу использовать окружение текущего процесса. Патч от Jakub Kulik.
- [gh-113202](https://python-all.ru/3/whatsnew/changelog.html): Добавлена опция `strict` в `batched()` в модуле `itertools`.
- [gh-61648](https://python-all.ru/3/whatsnew/changelog.html): Определение номеров строк свойств в doctest.
- [gh-113175](https://python-all.ru/3/whatsnew/changelog.html): Синхронизировано с importlib\_metadata 7.0, включая улучшенные аннотации типов, исправление проблемы с пакетами-символическими ссылками в `package_distributions`, добавление `EntryPoints.__repr__`, представление скрипта `diagnose`, добавление свойства `Distribution.origin` и удаление устаревшего доступа к `EntryPoint` по числовому индексу (поведение кортежа).
- [gh-59616](https://python-all.ru/3/whatsnew/changelog.html): Добавлена поддержка [`os.lchmod()`](https://python-all.ru/3/library/os.html#os.lchmod) и аргумента *follow\_symlinks* в [`os.chmod()`](https://python-all.ru/3/library/os.html#os.chmod) на Windows. Обратите внимание, что значение по умолчанию *follow\_symlinks* в `os.lchmod()` равно `False` на Windows.
- [gh-112559](https://python-all.ru/3/whatsnew/changelog.html): [`signal.signal()`](https://python-all.ru/3/library/signal.html#signal.signal) и [`signal.getsignal()`](https://python-all.ru/3/library/signal.html#signal.getsignal) больше не вызывают `repr` для вызываемых обработчиков. [`asyncio.run()`](https://python-all.ru/3/library/asyncio-runner.html#asyncio.run) и [`asyncio.Runner.run()`](https://python-all.ru/3/library/asyncio-runner.html#asyncio.Runner.run) больше не вызывают `repr` для результатов задач. Патч от Yilei Yang.
- [gh-112962](https://python-all.ru/3/whatsnew/changelog.html): Функции модуля [`dis`](https://python-all.ru/3/library/dis.html#module-dis) добавляют информацию о кеше в экземпляр [`Instruction`](https://python-all.ru/3/library/dis.html#dis.Instruction), а не создают фиктивные экземпляры `Instruction` для представления записей кеша.
- [gh-112989](https://python-all.ru/3/whatsnew/changelog.html): Снижены накладные расходы на соединение сокетов с помощью [`asyncio`](https://python-all.ru/3/library/asyncio.html#module-asyncio) SelectorEventLoop.
- [gh-112970](https://python-all.ru/3/whatsnew/changelog.html): Используется `closefrom()` на Linux, где это доступно (например, glibc-2.34), а не только на FreeBSD.
- [gh-110190](https://python-all.ru/3/whatsnew/changelog.html): Исправлены ctypes-структуры с массивом на платформе PPC64LE путём установки `MAX_STRUCT_SIZE` равным 64 в stgdict. Патч от Diego Russo.
- [gh-112540](https://python-all.ru/3/whatsnew/changelog.html): Функция statistics.geometric\_mean() теперь возвращает ноль для наборов данных, содержащих ноль. Ранее она вызывала исключение.
- [gh-87286](https://python-all.ru/3/whatsnew/changelog.html): Добавлены `LOG_FTP`, `LOG_NETINFO`, `LOG_REMOTEAUTH`, `LOG_INSTALL`, `LOG_RAS` и `LOG_LAUNCHD` в модуль [`syslog`](https://python-all.ru/3/library/syslog.html#module-syslog), все они являются константами, используемыми в macOS.
- [gh-112800](https://python-all.ru/3/whatsnew/changelog.html): Исправлено [`asyncio`](https://python-all.ru/3/library/asyncio.html#module-asyncio) `SubprocessTransport.close()`, чтобы не выбрасывало `PermissionError` при использовании с setuid-исполняемыми файлами.
- [gh-51944](https://python-all.ru/3/whatsnew/changelog.html): Добавлены следующие константы в модуль [`termios`](https://python-all.ru/3/library/termios.html#module-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](https://python-all.ru/3/whatsnew/changelog.html): Исправлена бесконечная рекурсия в [`tempfile.TemporaryDirectory()`](https://python-all.ru/3/library/tempfile.html#tempfile.TemporaryDirectory) при очистке на Windows.
- [gh-94692](https://python-all.ru/3/whatsnew/changelog.html): [`shutil.rmtree()`](https://python-all.ru/3/library/shutil.html#shutil.rmtree) теперь перехватывает только исключения OSError. Ранее версия `shutil.rmtree()`, устойчивая к атакам через симлинки, могла игнорировать или передавать обработчику ошибок произвольное исключение при передаче недопустимых аргументов.
- [gh-112736](https://python-all.ru/3/whatsnew/changelog.html): Использование del-безопасных символов в `subprocess` было реорганизовано для применения в кросс-платформенных средах сборки.
- [gh-112727](https://python-all.ru/3/whatsnew/changelog.html): Ускорение [`pathlib.Path.absolute()`](https://python-all.ru/3/library/pathlib.html#pathlib.Path.absolute). Патч от Barney Gale.
- [gh-74690](https://python-all.ru/3/whatsnew/changelog.html): Ускорение проверок [`issubclass()`](https://python-all.ru/3/library/functions.html#issubclass) на простые [`runtime-checkable protocols`](https://python-all.ru/3/library/typing.html#typing.runtime_checkable) примерно на 6%. Патч от Alex Waygood.
- [gh-74690](https://python-all.ru/3/whatsnew/changelog.html): Ускорение проверок [`isinstance()`](https://python-all.ru/3/library/functions.html#isinstance) примерно на 20% для [`runtime-checkable protocols`](https://python-all.ru/3/library/typing.html#typing.runtime_checkable), которые имеют только один вызываемый член. Ускорение проверок [`issubclass()`](https://python-all.ru/3/library/functions.html#issubclass) для этих протоколов примерно на 10%. Патч от Alex Waygood.
- [gh-112645](https://python-all.ru/3/whatsnew/changelog.html): Устранена ошибка устаревания при передаче `onerror` в [`shutil.rmtree()`](https://python-all.ru/3/library/shutil.html#shutil.rmtree).
- [gh-112640](https://python-all.ru/3/whatsnew/changelog.html): Добавлен параметр `kwdefaults` в [`types.FunctionType`](https://python-all.ru/3/library/types.html#types.FunctionType) для установки значений аргументов по умолчанию.
- [gh-112622](https://python-all.ru/3/whatsnew/changelog.html): Обеспечена передача параметра `name` циклу событий в [`asyncio.create_task()`](https://python-all.ru/3/library/asyncio-task.html#asyncio.create_task).
- [gh-112618](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка кэширования, связанная с [`typing.Annotated`](https://python-all.ru/3/library/typing.html#typing.Annotated). `Annotated[str, True]` больше не идентичен `Annotated[str, 1]`.
- [gh-112334](https://python-all.ru/3/whatsnew/changelog.html): Исправлена регрессия производительности в [`subprocess`](https://python-all.ru/3/library/subprocess.html#module-subprocess) версии 3.12 на Linux, где она перестала использовать быстрый системный вызов `vfork()`, когда могла, из-за логической ошибки, и вместо этого откатывалась к безопасному, но более медленному `fork()`.

  Также исправлена вторая потенциальная уязвимость в 3.12.0. Если значение `extra_groups=[]` передавалось в [`subprocess.Popen`](https://python-all.ru/3/library/subprocess.html#subprocess.Popen) или связанные API, системный вызов `setgroups(0, NULL)` для очистки списка групп не выполнялся в дочернем процессе до `exec()`.

  Это было выявлено при анализе кода в процессе исправления первой ошибки.
- [gh-110190](https://python-all.ru/3/whatsnew/changelog.html): Исправлены структуры ctypes с массивом на платформе Arm путём установки `MAX_STRUCT_SIZE` в 32 в stgdict. Исправление от Diego Russo.
- [gh-81194](https://python-all.ru/3/whatsnew/changelog.html): Исправлен сбой в [`socket.if_indextoname()`](https://python-all.ru/3/library/socket.html#socket.if_indextoname) при определённом значении (UINT\_MAX). Исправлено целочисленное переполнение в `socket.if_indextoname()` на 64-битных платформах, отличных от Windows.
- [gh-112578](https://python-all.ru/3/whatsnew/changelog.html): Исправлен ложный [`RuntimeWarning`](https://python-all.ru/3/library/exceptions.html#RuntimeWarning) при выполнении модуля [`zipfile`](https://python-all.ru/3/library/zipfile.html#module-zipfile).
- [gh-112516](https://python-all.ru/3/whatsnew/changelog.html): Обновлена встроенная копия pip до версии 23.3.1.
- [gh-112510](https://python-all.ru/3/whatsnew/changelog.html): Добавлен [`readline.backend`](https://python-all.ru/3/library/readline.html#readline.backend) для бэкенда, используемого readline (`editline` или `readline`)
- [gh-112328](https://python-all.ru/3/whatsnew/changelog.html): \[Enum\] Сделать `EnumDict`, `EnumDict.member_names`, `EnumType._add_alias_` и `EnumType._add_value_alias_` публичными.
- [gh-112509](https://python-all.ru/3/whatsnew/changelog.html): Исправлены граничные случаи, которые могли приводить к наличию ключа одновременно в атрибутах `__required_keys__` и `__optional_keys__` объекта [`typing.TypedDict`](https://python-all.ru/3/library/typing.html#typing.TypedDict). Исправление от Jelle Zijlstra.
- [gh-101336](https://python-all.ru/3/whatsnew/changelog.html): Добавлен именованный параметр `keep_alive` для `AbstractEventLoop.create_server()` и `BaseEventLoop.create_server()`.
- [gh-63284](https://python-all.ru/3/whatsnew/changelog.html): Добавлена поддержка режима TLS-PSK (pre-shared key) в модуль [`ssl`](https://python-all.ru/3/library/ssl.html#module-ssl).
- [gh-112414](https://python-all.ru/3/whatsnew/changelog.html): Исправлена регрессия в Python 3.12, из-за которой вызов [`repr()`](https://python-all.ru/3/library/functions.html#repr) для модуля, импортированного с помощью пользовательского [загрузчика](https://python-all.ru/3/glossary.html#term-loader), мог завершаться ошибкой [`AttributeError`](https://python-all.ru/3/library/exceptions.html#AttributeError). Исправление от Alex Waygood.
- [gh-112358](https://python-all.ru/3/whatsnew/changelog.html): Откат изменения в инициализации [`struct.Struct`](https://python-all.ru/3/library/struct.html#struct.Struct), которое нарушало некоторые случаи наследования.
- [gh-112405](https://python-all.ru/3/whatsnew/changelog.html): Оптимизация [`pathlib.PurePath.relative_to()`](https://python-all.ru/3/library/pathlib.html#pathlib.PurePath.relative_to). Исправление от Alex Waygood.
- [gh-94722](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка, при которой сравнение экземпляров [`DocTest`](https://python-all.ru/3/library/doctest.html#doctest.DocTest) завершается неудачей, если у одного из них в качестве lineno указано `None`.
- [gh-112361](https://python-all.ru/3/whatsnew/changelog.html): Ускорение небольшого числа методов [`pathlib`](https://python-all.ru/3/library/pathlib.html#module-pathlib) за счёт удаления некоторых временных объектов.
- [gh-112345](https://python-all.ru/3/whatsnew/changelog.html): Улучшено сообщение об ошибке при попытке вызвать [`issubclass()`](https://python-all.ru/3/library/functions.html#issubclass) для [`typing.Protocol`](https://python-all.ru/3/library/typing.html#typing.Protocol), содержащего элементы, не являющиеся методами. Исправление от Randolf Scholz.
- [gh-112137](https://python-all.ru/3/whatsnew/changelog.html): Изменён вывод [`dis`](https://python-all.ru/3/library/dis.html#module-dis): теперь отсутствие номера строки отображается как «–» вместо «None».
- [gh-112332](https://python-all.ru/3/whatsnew/changelog.html): Объявлено устаревшим поле `exc_type` в [`traceback.TracebackException`](https://python-all.ru/3/library/traceback.html#traceback.TracebackException). Добавлен `exc_type_str` для его замены.
- [gh-81620](https://python-all.ru/3/whatsnew/changelog.html): Добавлены дополнительные тесты для [`random.binomialvariate()`](https://python-all.ru/3/library/random.html#random.binomialvariate)
- [gh-112292](https://python-all.ru/3/whatsnew/changelog.html): Исправлен сбой в [`readline`](https://python-all.ru/3/library/readline.html#module-readline) при импорте из подчинённого интерпретатора. Исправление от Anthony Shaw.
- [gh-77621](https://python-all.ru/3/whatsnew/changelog.html): Небольшое улучшение времени импорта модуля [`pathlib`](https://python-all.ru/3/library/pathlib.html#module-pathlib) за счёт отложенного импорта некоторых модулей. Исправление от Barney Gale.
- [gh-112137](https://python-all.ru/3/whatsnew/changelog.html): Изменён вывод [`dis`](https://python-all.ru/3/library/dis.html#module-dis): теперь вместо смещений отображаются логические метки для целей перехода.
- [gh-112139](https://python-all.ru/3/whatsnew/changelog.html): Добавлен `Signature.format()` для форматирования сигнатур в строку с дополнительными параметрами. И используется в [`pydoc`](https://python-all.ru/3/library/pydoc.html#module-pydoc) для вывода более читаемых сигнатур с переносами строк между параметрами.
- [gh-112105](https://python-all.ru/3/whatsnew/changelog.html): Обеспечена совместимость [`readline.set_completer_delims()`](https://python-all.ru/3/library/readline.html#readline.set_completer_delims) с libedit
- [gh-106922](https://python-all.ru/3/whatsnew/changelog.html): Отображение нескольких строк с помощью `traceback`, когда ошибки охватывают несколько строк.
- [gh-111874](https://python-all.ru/3/whatsnew/changelog.html): При создании класса [`typing.NamedTuple`](https://python-all.ru/3/library/typing.html#typing.NamedTuple) гарантируется вызов [`__set_name__()`](https://python-all.ru/3/reference/datamodel.html#object.__set_name__) для всех объектов, которые определяют `__set_name__` и присутствуют в значениях словаря класса `NamedTuple`. Исправление от Alex Waygood.
- [gh-68166](https://python-all.ru/3/whatsnew/changelog.html): Добавлена поддержка типа элемента «vsapi» в [`tkinter.ttk.Style.element_create()`](https://python-all.ru/3/library/tkinter.ttk.html#tkinter.ttk.Style.element_create).
- [gh-110275](https://python-all.ru/3/whatsnew/changelog.html): Методы именованного кортежа `_replace()` и `__replace__()` теперь вызывают TypeError вместо ValueError для недопустимых именованных аргументов.
- [gh-99367](https://python-all.ru/3/whatsnew/changelog.html): Не искажать `sys.path[0]` в [`pdb`](https://python-all.ru/3/library/pdb.html#module-pdb), если установлен safe\_path
- [gh-111615](https://python-all.ru/3/whatsnew/changelog.html): Исправлена регрессия, вызванная исправлением [gh-93162](https://python-all.ru/3/whatsnew/changelog.html), из-за которой невозможно было настроить `QueueHandler` без указания обработчиков.
- [gh-75666](https://python-all.ru/3/whatsnew/changelog.html): Исправлено поведение метода `unbind()` виджета [`tkinter`](https://python-all.ru/3/library/tkinter.html#module-tkinter) при вызове с двумя аргументами. Ранее `widget.unbind(sequence, funcid)` уничтожал текущую привязку для *sequence*, оставляя *sequence* непривязанным, и удалял команду *funcid*. Теперь он удаляет только *funcid* из привязки для *sequence*, сохраняя другие команды, и удаляет команду *funcid*. *sequence* остаётся непривязанным только в том случае, если *funcid* был последней привязанной командой.
- [gh-67790](https://python-all.ru/3/whatsnew/changelog.html): Реализована базовая поддержка форматирования (минимальная ширина, выравнивание, заполнение) для [`fractions.Fraction`](https://python-all.ru/3/library/fractions.html#fractions.Fraction).
- [gh-111049](https://python-all.ru/3/whatsnew/changelog.html): Исправлен сбой при сборке мусора [`io.BytesIO`](https://python-all.ru/3/library/io.html#io.BytesIO) буферного объекта.
- [gh-102980](https://python-all.ru/3/whatsnew/changelog.html): Перенаправлен вывод команды `interact` из [`pdb`](https://python-all.ru/3/library/pdb.html#module-pdb) в тот же канал, что и отладчик. Добавлены тесты и улучшена документация.
- [gh-102988](https://python-all.ru/3/whatsnew/changelog.html): Функции [`email.utils.getaddresses()`](https://python-all.ru/3/library/email.utils.html#email.utils.getaddresses) и [`email.utils.parseaddr()`](https://python-all.ru/3/library/email.utils.html#email.utils.parseaddr) теперь возвращают `('', '')` кортежи из 2 элементов в большем числе ситуаций, когда встречаются недопустимые email-адреса, вместо потенциально неточных значений. Добавлен необязательный параметр *strict* для этих двух функций: используйте `strict=False` для старого поведения – принимать некорректные входные данные. `getattr(email.utils, 'supports_strict_parsing', False)` можно использовать для проверки доступности параметра *strict*. Патч от Thomas Dwyer и Victor Stinner для улучшения исправления [**CVE 2023-27043**](https://python-all.ru/3/whatsnew/changelog.html).
- [gh-52161](https://python-all.ru/3/whatsnew/changelog.html): [`cmd.Cmd.do_help()`](https://python-all.ru/3/library/cmd.html#cmd.Cmd.do_help) теперь очищает строки документации с помощью [`inspect.cleandoc()`](https://python-all.ru/3/library/inspect.html#inspect.cleandoc) перед их записью. Патч от Filip Łapkiewicz.
- [gh-82300](https://python-all.ru/3/whatsnew/changelog.html): Добавлен параметр `track` в [`multiprocessing.shared_memory.SharedMemory`](https://python-all.ru/3/library/multiprocessing.shared_memory.html#multiprocessing.shared_memory.SharedMemory), который позволяет использовать блоки разделяемой памяти без необходимости регистрировать их в POSIX-трекере ресурсов, автоматически освобождающем их при завершении процесса.
- [gh-110109](https://python-all.ru/3/whatsnew/changelog.html): Добавлен закрытый класс `pathlib._PurePathBase`: базовый класс для [`pathlib.PurePath`](https://python-all.ru/3/library/pathlib.html#pathlib.PurePath), который опускает определённые магические методы. В будущем он может быть сделан публичным (вместе с `_PathBase`).
- [gh-109858](https://python-all.ru/3/whatsnew/changelog.html): Защита [`zipfile`](https://python-all.ru/3/library/zipfile.html#module-zipfile) от zip-бомбы с перекрывающимися записями (quoted-overlap). Теперь он вызывает BadZipFile при попытке прочитать запись, перекрывающуюся с другой записью или центральным каталогом.
- [gh-109786](https://python-all.ru/3/whatsnew/changelog.html): Исправлены возможные утечки ссылок и сбой при повторном входе в метод `__next__()` объекта [`itertools.pairwise`](https://python-all.ru/3/library/itertools.html#itertools.pairwise).
- [gh-91539](https://python-all.ru/3/whatsnew/changelog.html): Небольшое (10–20%) и тривиальное улучшение производительности `urllib.request.getproxies_environment()`, часто полезное, когда нужно перебрать много переменных окружения.
- [gh-103363](https://python-all.ru/3/whatsnew/changelog.html): Добавлен аргумент только по ключевому слову *follow\_symlinks* для [`pathlib.Path.owner()`](https://python-all.ru/3/library/pathlib.html#pathlib.Path.owner) и [`group()`](https://python-all.ru/3/library/pathlib.html#pathlib.Path.group), по умолчанию равный `True`.
- [gh-102130](https://python-all.ru/3/whatsnew/changelog.html): Поддержка автодополнения по табуляции в [`cmd`](https://python-all.ru/3/library/cmd.html#module-cmd) для `editline`.
- [gh-99437](https://python-all.ru/3/whatsnew/changelog.html): [`runpy.run_path()`](https://python-all.ru/3/library/runpy.html#runpy.run_path) теперь декодирует объекты, подобные путям, гарантируя, что \_\_file\_\_ и sys.argv\[0\] запускаемого модуля всегда являются строками.
- [gh-104003](https://python-all.ru/3/whatsnew/changelog.html): Добавлен [`warnings.deprecated()`](https://python-all.ru/3/library/warnings.html#warnings.deprecated), декоратор для пометки устаревших функций для статических проверок типов и предупреждения об использовании устаревших классов и функций. См. [**PEP 702**](https://python-all.ru/3/whatsnew/changelog.html). Патч от Jelle Zijlstra.
- [gh-103708](https://python-all.ru/3/whatsnew/changelog.html): Сделать жестко заданное имя python настраиваемым параметром, чтобы разные реализации python могли переопределить его вместо создания огромных изменений в sysconfig.py.
- [gh-66515](https://python-all.ru/3/whatsnew/changelog.html): [`mailbox.MH`](https://python-all.ru/3/library/mailbox.html#mailbox.MH) теперь поддерживает папки, не содержащие файл `.mh_sequences` (например, папки кэша IMAP Claws Mail). Патч от Serhiy Storchaka.
- [gh-83162](https://python-all.ru/3/whatsnew/changelog.html): Переименовано `re.error` в `PatternError` для ясности, и оставлено `re.error` для обратной совместимости. Патч от Matthias Bussonnier и Adam Chhina.
- [gh-91133](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка в очистке [`tempfile.TemporaryDirectory`](https://python-all.ru/3/library/tempfile.html#tempfile.TemporaryDirectory), которая теперь больше не разыменовывает символические ссылки при обходе ошибок прав доступа файловой системы.
- [bpo-43153](https://python-all.ru/3/whatsnew/changelog.html): В Windows, `tempfile.TemporaryDirectory` ранее маскировал `PermissionError` с помощью `NotADirectoryError` при очистке каталога. Теперь он корректно вызывает `PermissionError`, если ошибки не игнорируются. Патч от Andrei Kulakov и Ken Jin.
- [bpo-32731](https://python-all.ru/3/whatsnew/changelog.html): [`getpass.getuser()`](https://python-all.ru/3/library/getpass.html#getpass.getuser) теперь вызывает [`OSError`](https://python-all.ru/3/library/exceptions.html#OSError) для всех сбоев, а не [`ImportError`](https://python-all.ru/3/library/exceptions.html#ImportError) в системах без модуля [`pwd`](https://python-all.ru/3/library/pwd.html#module-pwd) или [`KeyError`](https://python-all.ru/3/library/exceptions.html#KeyError), если база данных паролей пуста.
- [bpo-34321](https://python-all.ru/3/whatsnew/changelog.html): [`mmap.mmap`](https://python-all.ru/3/library/mmap.html#mmap.mmap) теперь имеет параметр *trackfd* в Unix; если он равен `False`, файловый дескриптор, указанный *fileno*, не будет дублироваться.
- [bpo-35332](https://python-all.ru/3/whatsnew/changelog.html): Функция [`shutil.rmtree()`](https://python-all.ru/3/library/shutil.html#shutil.rmtree) теперь игнорирует ошибки при вызове [`os.close()`](https://python-all.ru/3/library/os.html#os.close), когда *ignore\_errors* равен `True`, и `os.close()` больше не повторяется после ошибки.
- [bpo-35928](https://python-all.ru/3/whatsnew/changelog.html): [`io.TextIOWrapper`](https://python-all.ru/3/library/io.html#io.TextIOWrapper) теперь корректно обрабатывает буфер декодирования после `read()` и `write()`.
- [bpo-26791](https://python-all.ru/3/whatsnew/changelog.html): [`shutil.move()`](https://python-all.ru/3/library/shutil.html#shutil.move) теперь перемещает символическую ссылку в каталог, когда этот каталог является целью символической ссылки. Это обеспечивает такое же поведение, как команда оболочки mv. Предыдущее поведение вызывало исключение. Патч от Jeffrey Kintscher.
- [bpo-41422](https://python-all.ru/3/whatsnew/changelog.html): Исправлены утечки памяти в [`pickle.Pickler`](https://python-all.ru/3/library/pickle.html#pickle.Pickler) и [`pickle.Unpickler`](https://python-all.ru/3/library/pickle.html#pickle.Unpickler), связанные с циклическими ссылками через внутреннее сопоставление memo.
- [bpo-19821](https://python-all.ru/3/whatsnew/changelog.html): Функция `pydoc.ispackage()` признана устаревшей.
- [bpo-40262](https://python-all.ru/3/whatsnew/changelog.html): Метод `ssl.SSLSocket.recv_into()` больше не требует аргумент *buffer* для реализации `__len__` и поддерживает буферы с произвольным размером элемента.
- [bpo-39912](https://python-all.ru/3/whatsnew/changelog.html): [`warnings.filterwarnings()`](https://python-all.ru/3/library/warnings.html#warnings.filterwarnings) и [`warnings.simplefilter()`](https://python-all.ru/3/library/warnings.html#warnings.simplefilter) теперь вызывают соответствующие исключения вместо `AssertionError`. Патч предоставлен Rémi Lapeyre.
- [bpo-37260](https://python-all.ru/3/whatsnew/changelog.html): Исправлено состояние гонки в [`shutil.rmtree()`](https://python-all.ru/3/library/shutil.html#shutil.rmtree), при котором записи каталога, удалённые другим процессом или потоком во время работы `shutil.rmtree()`, могут приводить к возникновению FileNotFoundError. Патч от Jeffrey Kintscher.
- [bpo-36959](https://python-all.ru/3/whatsnew/changelog.html): Исправлены некоторые сообщения об ошибках для недопустимых комбинаций строк формата ISO в `strptime()`, которые ссылались на директивы, не содержащиеся в строке формата. Патч от Gordon P. Hemsley.
- [bpo-18060](https://python-all.ru/3/whatsnew/changelog.html): Исправлена проблема наследования классов, которая может приводить к сегфолтам при создании двух или более уровней подклассов от базового класса Structure или Union.
- [bpo-29779](https://python-all.ru/3/whatsnew/changelog.html): Добавлена новая [`PYTHON_HISTORY`](https://python-all.ru/3/using/cmdline.html#envvar-PYTHON_HISTORY) переменная окружения для задания расположения файла `.python_history`.
- [bpo-21360](https://python-all.ru/3/whatsnew/changelog.html): [`mailbox.Maildir`](https://python-all.ru/3/library/mailbox.html#mailbox.Maildir) теперь игнорирует файлы, начинающиеся с точки.

### Документация

- [gh-111699](https://python-all.ru/3/whatsnew/changelog.html): Перенести уведомление об устаревании `smtpd` в отдельный раздел, а не в раздел `locale` в документе «Что нового в Python 3.12»
- [gh-110746](https://python-all.ru/3/whatsnew/changelog.html): Улучшена разметка для допустимых параметров/значений методов ttk.treeview.column и ttk.treeview.heading, а также для Layouts.
- [gh-95649](https://python-all.ru/3/whatsnew/changelog.html): Документировать, что модуль [`asyncio`](https://python-all.ru/3/library/asyncio.html#module-asyncio) содержит код, взятый из [версии 0.16.0 проекта uvloop](https://python-all.ru/3/whatsnew/changelog.html), а также необходимую информацию о лицензии MIT.

### Тесты

- [gh-111798](https://python-all.ru/3/whatsnew/changelog.html): Отключить `test_super_deep()` от `test_call` в сборках pydebug на WASI; глубина стека слишком мала, чтобы тест был полезен.
- [gh-111801](https://python-all.ru/3/whatsnew/changelog.html): Понизить лимит рекурсии в `test_isinstance` для `test_infinitely_many_bases()`. Это предотвращает переполнение стека в сборке pydebug на WASI.
- [gh-111802](https://python-all.ru/3/whatsnew/changelog.html): Указать низкую глубину рекурсии для `test_bad_getattr()` в `test.pickletester`, чтобы избежать исчерпания стека в сборке pydebug для WASI.
- [gh-44626](https://python-all.ru/3/whatsnew/changelog.html): Исправить [`os.path.isabs()`](https://python-all.ru/3/library/os.path.html#os.path.isabs), некорректно возвращающий `True`, когда задан путь, начинающийся ровно с одной обратной косой черты в Windows.

  Исправить некорректное возвращение `pathlib.PureWindowsPath.is_absolute()` `False` для некоторых путей, начинающихся с двух обратных косых черт.
- [gh-113633](https://python-all.ru/3/whatsnew/changelog.html): Использовать состояние модуля для модуля расширения \_testcapi.
- [gh-109980](https://python-all.ru/3/whatsnew/changelog.html): Исправить `test_tarfile_vs_tar` в `test_shutil` для macOS, где системный tar может включать в архив больше информации, чем [`shutil.make_archive`](https://python-all.ru/3/library/shutil.html#shutil.make_archive).
- [gh-112769](https://python-all.ru/3/whatsnew/changelog.html): Теперь тесты корректно сравнивают версию zlib, когда [`zlib.ZLIB_RUNTIME_VERSION`](https://python-all.ru/3/library/zlib.html#zlib.ZLIB_RUNTIME_VERSION) содержит нецелочисленные суффиксы. Например, zlib-ng определяет версию как `1.3.0.zlib-ng`.
- [gh-112334](https://python-all.ru/3/whatsnew/changelog.html): Добавляет регрессионный тест для проверки того, что `vfork()` используется, когда этого ожидает [`subprocess`](https://python-all.ru/3/library/subprocess.html#module-subprocess) на POSIX-системах с поддержкой vfork (Linux).
- [gh-108927](https://python-all.ru/3/whatsnew/changelog.html): Исправлена зависимость от порядка выполнения тестов в одном процессе, когда тест, имеющий подмодули (например, test\_importlib), следует за тестом, импортирующим его подмодуль (например, test\_importlib.util), и предшествует тесту (например, test\_unittest или test\_compileall), который использует этот подмодуль.
- [bpo-40648](https://python-all.ru/3/whatsnew/changelog.html): Тестировать режимы, которые файл может получить с помощью chmod() в Windows.

### Сборка

- [gh-114013](https://python-all.ru/3/whatsnew/changelog.html): Исправить `Tools/wasm/wasi.py`, чтобы не включать путь к `python.wasm` как часть `HOSTRUNNER`. Переменная окружения предназначена только для указания способа запуска хоста WASI, при этом `python.wasm` и соответствующие флаги добавляются к `HOSTRUNNER`. Это исправляет работу `make test`.
- [gh-113258](https://python-all.ru/3/whatsnew/changelog.html): Изменена сборка Windows: теперь сгенерированные замороженные модули записываются в дерево сборки, а не в дерево исходников.
- [gh-112305](https://python-all.ru/3/whatsnew/changelog.html): Исправлен шаг `check-clean-src`, выполняемый при сборках вне дерева исходников, для обнаружения ошибочных файлов `$(srcdir)/Python/frozen_modules/*.h` и рекомендации соответствующих шагов очистки дерева исходного кода для восстановления рабочей сборки.
- [gh-112536](https://python-all.ru/3/whatsnew/changelog.html): Добавить поддержку санизатора потоков (TSAN)
- [gh-112867](https://python-all.ru/3/whatsnew/changelog.html): Исправить сборку для случая, когда установлен WITH\_PYMALLOC\_RADIX\_TREE=0.
- [gh-103065](https://python-all.ru/3/whatsnew/changelog.html): Ввести `Tools/wasm/wasi.py` для упрощения сборки WASI.
- [bpo-11102](https://python-all.ru/3/whatsnew/changelog.html): Функции [`os.major()`](https://python-all.ru/3/library/os.html#os.major), [`os.makedev()`](https://python-all.ru/3/library/os.html#os.makedev) и [`os.minor()`](https://python-all.ru/3/library/os.html#os.minor) теперь доступны на HP-UX v3.
- [bpo-36351](https://python-all.ru/3/whatsnew/changelog.html): Не устанавливать ipv6type при кросс-компиляции.

### Windows

- [gh-114096](https://python-all.ru/3/whatsnew/changelog.html): Привилегии процесса, активированные для создания точек соединения каталогов, теперь восстанавливаются после этого, что позволяет избежать изменений поведения в других частях программы.
- [gh-111877](https://python-all.ru/3/whatsnew/changelog.html): Вызовы [`os.stat()`](https://python-all.ru/3/library/os.html#os.stat) возвращали неверные значения времени для файлов, к которым не было прямого доступа.
- [gh-111973](https://python-all.ru/3/whatsnew/changelog.html): Обновить установщик Windows для использования SQLite 3.44.2.
- [gh-113009](https://python-all.ru/3/whatsnew/changelog.html): [`multiprocessing`](https://python-all.ru/3/library/multiprocessing.html#module-multiprocessing): В Windows исправлено состояние гонки в `Process.terminate()`: больше не устанавливается атрибут `returncode`, чтобы всегда вызывать `WaitForSingleObject()` в `Process.wait()`. Ранее иногда процесс всё ещё выполнялся после `TerminateProcess()`, даже если `GetExitCodeProcess()` не `STILL_ACTIVE`. Исправление от Виктора Стиннера.
- [gh-86179](https://python-all.ru/3/whatsnew/changelog.html): Исправлены вычисления пути при запуске Python в Windows через символическую ссылку.
- [gh-71383](https://python-all.ru/3/whatsnew/changelog.html): Обновить Tcl/Tk в установщике Windows до версии 8.6.13 с патчем для подавления неверных предупреждений ThemeChanged.
- [gh-111650](https://python-all.ru/3/whatsnew/changelog.html): Обеспечивает определение препроцессорной переменной `Py_GIL_DISABLED` в `pyconfig.h`, чтобы расширения на C могли её использовать.
- [gh-112278](https://python-all.ru/3/whatsnew/changelog.html): Снижает временные затраты для некоторых функций в [`platform`](https://python-all.ru/3/library/platform.html#module-platform) в Windows, если у текущего пользователя нет прав на WMI.
- [gh-73427](https://python-all.ru/3/whatsnew/changelog.html): Помечено как устаревшее [`sys._enablelegacywindowsfsencoding()`](https://python-all.ru/3/library/sys.html#sys._enablelegacywindowsfsencoding). Вместо него используйте [`PYTHONLEGACYWINDOWSFSENCODING`](https://python-all.ru/3/using/cmdline.html#envvar-PYTHONLEGACYWINDOWSFSENCODING). Патч от Inada Naoki.
- [gh-87868](https://python-all.ru/3/whatsnew/changelog.html): Правильная сортировка и удаление дублирующихся переменных окружения в `_winapi.CreateProcess()`.
- [bpo-37308](https://python-all.ru/3/whatsnew/changelog.html): Исправление кракозябр в [`mmap.mmap`](https://python-all.ru/3/library/mmap.html#mmap.mmap) при использовании не-ASCII аргумента *tagname* в Windows.

### macOS

- [gh-113666](https://python-all.ru/3/whatsnew/changelog.html): Добавлены следующие константы в модуль [`stat`](https://python-all.ru/3/library/stat.html#module-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](https://python-all.ru/3/whatsnew/changelog.html): [`os.waitid()`](https://python-all.ru/3/library/os.html#os.waitid) теперь доступен в macOS
- [gh-110459](https://python-all.ru/3/whatsnew/changelog.html): Запуск `configure ... --with-openssl-rpath=X/Y/Z` больше не приводит к ошибке обнаружения OpenSSL в macOS.
- [gh-74573](https://python-all.ru/3/whatsnew/changelog.html): Документировано, что [`dbm.ndbm`](https://python-all.ru/3/library/dbm.html#module-dbm.ndbm) может незаметно повреждать DBM-файлы при обновлении, если превышены недокументированные ограничения платформы, и может вызывать крах (ошибка сегментации) при чтении такого повреждённого файла. (FB8919203)
- [gh-65701](https://python-all.ru/3/whatsnew/changelog.html): Инструмент **freeze** не работает с framework-сборками Python. Это задокументировано, и при запуске инструмента с такой сборкой происходит досрочный выход.
- [gh-87277](https://python-all.ru/3/whatsnew/changelog.html): webbrowser: Не искать X11-браузеры в macOS. Они обычно не используются, и их поиск может привести к запуску XQuartz, даже если он в остальном не нужен.
- [gh-111973](https://python-all.ru/3/whatsnew/changelog.html): Обновление установщика macOS для использования SQLite 3.44.2.
- [gh-108269](https://python-all.ru/3/whatsnew/changelog.html): Установка `CFBundleAllowMixedLocalizations` в true в Info.plist для framework, встроенных Python.app и IDLE.app при установке framework в macOS. Это позволяет приложениям использовать предпочитаемую пользователем локаль, если она отличается от английской.
- [gh-102362](https://python-all.ru/3/whatsnew/changelog.html): Обеспечение того, что результат `sysconfig.get_plaform()` включает как минимум мажорную и минорную версии, даже если `MACOSX_DEPLOYMENT_TARGET` при сборке задана только мажорная версия, чтобы соответствовать формату, ожидаемому pip.
- [gh-110017](https://python-all.ru/3/whatsnew/changelog.html): Отключение стресс-теста обработки сигналов в macOS из-за ошибки в macOS (FB13453490).
- [gh-110820](https://python-all.ru/3/whatsnew/changelog.html): Обеспечение правильности препроцессорных определений для `ALIGNOF_MAX_ALIGN_T`, `SIZEOF_LONG_DOUBLE` и `HAVE_GCC_ASM_FOR_X64` для сборок Universal 2 в macOS.
- [gh-109981](https://python-all.ru/3/whatsnew/changelog.html): Использование `/dev/fd` в macOS для определения количества открытых файлов в `test.support.os_helper.fd_count`, чтобы избежать краха с «защищёнными» файловыми дескрипторами при проверке открытых файлов.

### IDLE

- [gh-72284](https://python-all.ru/3/whatsnew/changelog.html): Улучшение списков возможностей, привязок клавиш редактора и привязок клавиш оболочки в документации IDLE.
- [gh-113903](https://python-all.ru/3/whatsnew/changelog.html): Исправление редкого сбоя test.test\_idle в test\_configdialog.
- [gh-113729](https://python-all.ru/3/whatsnew/changelog.html): Исправление ошибки меню «Help -\> IDLE Doc» в версиях 3.11.7 и 3.12.1.
- [gh-113269](https://python-all.ru/3/whatsnew/changelog.html): Исправление зависания test\_editor в macOS Catalina.
- [gh-112898](https://python-all.ru/3/whatsnew/changelog.html): Исправление обработки несохранённых файлов при выходе из IDLE в macOS.
- [bpo-13586](https://python-all.ru/3/whatsnew/changelog.html): Ввод выделенного текста при открытии диалога «Replace».

### C API

- [gh-106560](https://python-all.ru/3/whatsnew/changelog.html): Исправление избыточных объявлений в публичном C API. Объявлять PyBool\_Type, PyLong\_Type и PySys\_Audit() только один раз. Патч от Victor Stinner.
- [gh-112438](https://python-all.ru/3/whatsnew/changelog.html): Исправление поддержки форматных единиц «es», «et», «es#» и «et#» во вложенных кортежах в функциях вида [`PyArg_ParseTuple()`](https://python-all.ru/3/c-api/arg.html#c.PyArg_ParseTuple).
- [gh-111545](https://python-all.ru/3/whatsnew/changelog.html): Добавление функции [`Py_HashPointer()`](https://python-all.ru/3/c-api/hash.html#c.Py_HashPointer) для хеширования указателя. Патч от Victor Stinner.
- [gh-65210](https://python-all.ru/3/whatsnew/changelog.html): Изменение объявления параметра *keywords* для [`PyArg_ParseTupleAndKeywords()`](https://python-all.ru/3/c-api/arg.html#c.PyArg_ParseTupleAndKeywords) и [`PyArg_VaParseTupleAndKeywords()`](https://python-all.ru/3/c-api/arg.html#c.PyArg_VaParseTupleAndKeywords) для лучшей совместимости с C++.

## Python 3.13.0 alpha 2

*Дата выпуска: 2023-11-22*

### Ядро и встроенные модули

- [gh-112243](https://python-all.ru/3/whatsnew/changelog.html): Не включать комментарии в отладочные выражения f-строк. Исправление от Pablo Galindo.
- [gh-112287](https://python-all.ru/3/whatsnew/changelog.html): Небольшая оптимизация интерпретатора Tier 2 (uop): загрузка `oparg` и `operand` только по необходимости. Кроме того, предельный размер трассы снова удвоен – до 512 на этот раз.
- [gh-112266](https://python-all.ru/3/whatsnew/changelog.html): Изменены строки документации [`__dict__`](https://python-all.ru/3/reference/datamodel.html#object.__dict__) и `__weakref__`.
- [gh-111807](https://python-all.ru/3/whatsnew/changelog.html): Снижена максимальная глубина стека парсера до 1000 в отладочных сборках WASI.
- [gh-111798](https://python-all.ru/3/whatsnew/changelog.html): При сборке Python в режиме отладки предел рекурсии C устанавливается в 500 вместо 1500. Отладочная сборка, вероятно, собирается с низким уровнем оптимизации, что приводит к большему потреблению памяти стека по сравнению с релизной сборкой. Исправление от Victor Stinner.
- [gh-106529](https://python-all.ru/3/whatsnew/changelog.html): Включена трансляция неспециализированных `FOR_ITER` в Tier 2.
- [gh-111916](https://python-all.ru/3/whatsnew/changelog.html): Модули, связанные с hashlib, сделаны потокобезопасными без GIL.
- [gh-81137](https://python-all.ru/3/whatsnew/changelog.html): Присвоение полю `__code__` функции объявлено устаревшим, если новый объект кода имеет несовместимый тип (например, от генератора к обычной функции).
- [gh-79932](https://python-all.ru/3/whatsnew/changelog.html): Генерировать исключение, если [`frame.clear()`](https://python-all.ru/3/reference/datamodel.html#frame.clear) вызывается для приостановленного фрейма.
- [gh-81925](https://python-all.ru/3/whatsnew/changelog.html): Реализованы нативные идентификаторы потоков для GNU KFreeBSD.
- [gh-111843](https://python-all.ru/3/whatsnew/changelog.html): Использование экспоненциальной задержки (exponential backoff) для снижения количества неудачных попыток оптимизации Tier 2 более чем на 99%.
- [gh-110829](https://python-all.ru/3/whatsnew/changelog.html): Присоединение потока теперь гарантирует, что базовый поток операционной системы завершился. Это необходимо для более безопасного вызова fork() в многопоточных процессах.
- [gh-109369](https://python-all.ru/3/whatsnew/changelog.html): Обеспечить деоптимизацию трасс Tier 2, если код инструментирован.
- [gh-111772](https://python-all.ru/3/whatsnew/changelog.html): Специализированы загрузки и сохранения слотов для \_Py\_T\_OBJECT, а также для Py\_T\_OBJECT\_EX.
- [gh-111666](https://python-all.ru/3/whatsnew/changelog.html): Ускорены [`BaseExceptionGroup.derive()`](https://python-all.ru/3/library/exceptions.html#BaseExceptionGroup.derive), [`BaseExceptionGroup.subgroup()`](https://python-all.ru/3/library/exceptions.html#BaseExceptionGroup.subgroup) и [`BaseExceptionGroup.split()`](https://python-all.ru/3/library/exceptions.html#BaseExceptionGroup.split) за счёт изменения способа разбора переданных аргументов.
- [gh-111654](https://python-all.ru/3/whatsnew/changelog.html): Исправлен крах во время выполнения при возникновении ошибки в опкоде `LOAD_FROM_DICT_OR_DEREF`.
- [gh-111623](https://python-all.ru/3/whatsnew/changelog.html): Добавлена поддержка совместного использования кортежей между интерпретаторами через кросс-интерпретаторный API. Исправление от Anthony Shaw.
- [gh-111354](https://python-all.ru/3/whatsnew/changelog.html): Значение oparg для [`YIELD_VALUE`](https://python-all.ru/3/library/dis.html#opcode-YIELD_VALUE) теперь равно `1`, если инструкция является частью yield-from или await, и `0` в противном случае.

  Состояние фрейма SUSPENDED теперь разделено на `SUSPENDED` и `SUSPENDED_YIELD_FROM`. Это упрощает код в `_PyGen_yf`.
- [gh-111520](https://python-all.ru/3/whatsnew/changelog.html): Интерпретаторы Tier 1 (байткод) и Tier 2 (микрооперации) объединены: цикл и switch интерпретатора Tier 2 перенесены в `_PyEval_EvalFrameDefault()` внутри `Python/ceval.c`. Файл `Python/executor.c` удалён. Кроме того, макросы `TIER_ONE` и `TIER_TWO` теперь обрабатываются генератором кода.

  **Внимание!** Это изменяет переменные окружения для включения микроопераций и их отладки на `PYTHON_UOPS` и `PYTHON_LLTRACE`.
- [gh-109181](https://python-all.ru/3/whatsnew/changelog.html): Ускорено создание объектов `Traceback` за счёт ленивого вычисления номера строки. Исправление от Pablo Galindo.
- [gh-111420](https://python-all.ru/3/whatsnew/changelog.html): Разрешены комментарии типов в заключённых в скобки операторах `with`.
- [gh-111438](https://python-all.ru/3/whatsnew/changelog.html): Добавлена поддержка совместного использования чисел с плавающей запятой между интерпретаторами через кросс-интерпретаторный API. Исправление от Anthony Shaw.
- [gh-111435](https://python-all.ru/3/whatsnew/changelog.html): Добавлена поддержка совместного использования `True` и `False` между интерпретаторами через кросс-интерпретаторный API. Исправление от Anthony Shaw.
- [gh-102388](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка, при которой кодеки `iso2022_jp_3` и `iso2022_jp_2004` выполняли чтение за границами.
- [gh-111366](https://python-all.ru/3/whatsnew/changelog.html): Исправлена проблема в [`codeop`](https://python-all.ru/3/library/codeop.html#module-codeop), из-за которой исключения [`SyntaxError`](https://python-all.ru/3/library/exceptions.html#SyntaxError), возникающие при наличии недопустимого синтаксиса, не содержали точных сообщений об ошибке. Исправление от Pablo Galindo.
- [gh-111380](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка, из-за которой [`SyntaxWarning`](https://python-all.ru/3/library/exceptions.html#SyntaxWarning) появлялся дважды при разборе, если позже встречался недопустимый синтаксис. Исправление от Pablo Galindo.
- [gh-111374](https://python-all.ru/3/whatsnew/changelog.html): Добавлена новая переменная окружения [`PYTHON_FROZEN_MODULES`](https://python-all.ru/3/using/cmdline.html#envvar-PYTHON_FROZEN_MODULES). Она определяет, игнорируются ли замороженные модули механизмом импорта; аналог опции командной строки [`-X frozen_modules`](https://python-all.ru/3/using/cmdline.html#cmdoption-X).
- [gh-111354](https://python-all.ru/3/whatsnew/changelog.html): Удалён `oparg` из [`YIELD_VALUE`](https://python-all.ru/3/library/dis.html#opcode-YIELD_VALUE). Изменён `oparg` [`RESUME`](https://python-all.ru/3/library/dis.html#opcode-RESUME) для включения информации о глубине исключения (except-depth). Эти изменения позволяют упростить код в close() генератора.
- [gh-94438](https://python-all.ru/3/whatsnew/changelog.html): Исправлен регресс, который препятствовал переходам через `is None` и `is not None` при отладке. Исправление от Savannah Ostrowski.
- [gh-67224](https://python-all.ru/3/whatsnew/changelog.html): Показывать строки исходного кода в трассировках при использовании опции `-c` при запуске Python. Автор исправления: Pablo Galindo
- [gh-111123](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка, при которой объявление [`global`](https://python-all.ru/3/reference/simple_stmts.html#global) в блоке [`except`](https://python-all.ru/3/reference/compound_stmts.html#except) отклонялось, если глобальная переменная используется в блоке [`else`](https://python-all.ru/3/reference/compound_stmts.html#else).
- [gh-110938](https://python-all.ru/3/whatsnew/changelog.html): Исправлены сообщения об ошибках для блоков с отступами, содержащих функции и классы с параметрами обобщённых типов. Автор исправления: Pablo Galindo
- [gh-109214](https://python-all.ru/3/whatsnew/changelog.html): Убраны ненужные обновления указателя инструкций перед возвратом из фреймов.
- [gh-110912](https://python-all.ru/3/whatsnew/changelog.html): Корректно отображать трассировку для исключений [`MemoryError`](https://python-all.ru/3/library/exceptions.html#MemoryError) с помощью модуля [`traceback`](https://python-all.ru/3/library/traceback.html#module-traceback). Автор исправления: Pablo Galindo
- [gh-109894](https://python-all.ru/3/whatsnew/changelog.html): Исправлен сбой из-за неправильно инициализированной статической [`MemoryError`](https://python-all.ru/3/library/exceptions.html#MemoryError) в под-интерпретаторе.
- [gh-110892](https://python-all.ru/3/whatsnew/changelog.html): Возвращать `NULL` для событий `PyTrace_RETURN`, вызванных исключением
- [gh-110864](https://python-all.ru/3/whatsnew/changelog.html): Исправлен разбор аргументов с помощью `_PyArg_UnpackKeywordsWithVararg` для функций, определяющих позиционно-ключевые, варарг и только-ключевые параметры.
- [gh-109094](https://python-all.ru/3/whatsnew/changelog.html): Заменить `prev_instr` в фрейме интерпретатора на `instr_ptr`, который указывает на начало инструкции, выполняемой в данный момент (или которая будет выполнена после возобновления фрейма).
- [gh-110805](https://python-all.ru/3/whatsnew/changelog.html): Позволить REPL показывать исходный код и полные трассировки. Автор исправления: Pablo Galindo
- [gh-110722](https://python-all.ru/3/whatsnew/changelog.html): Добавлена `PYTHON_PRESITE=package.module` для импорта модуля на раннем этапе жизненного цикла интерпретатора, до выполнения `site.py`. Для существования этой опции Python должен быть [собран в режиме отладки](https://python-all.ru/3/using/configure.html#debug-build).
- [gh-110481](https://python-all.ru/3/whatsnew/changelog.html): Реализован смещённый подсчёт ссылок в сборках `--disable-gil`.
- [gh-110543](https://python-all.ru/3/whatsnew/changelog.html): Исправлен регресс в Python 3.12, при котором `types.CodeType.replace()` создавал повреждённый объект кода, если вызывался для объекта кода модуля или класса, содержащего включение (comprehension). Автор исправления: Jelle Zijlstra.
- [gh-89519](https://python-all.ru/3/whatsnew/changelog.html): Удалены цепочечные дескрипторы [`classmethod`](https://python-all.ru/3/library/functions.html#classmethod) (добавленные в [bpo-19072](https://python-all.ru/3/whatsnew/changelog.html)). Их больше нельзя использовать для обёртывания других дескрипторов, таких как [`property`](https://python-all.ru/3/library/functions.html#property). Основная архитектура этой функции была ошибочной и привела к ряду проблем в downstream. Для «проброса» `classmethod` рекомендуется использовать атрибут `__wrapped__`, добавленный в Python 3.10.
- [gh-103615](https://python-all.ru/3/whatsnew/changelog.html): Использовать локальные события для трассировки кодов операций
- [bpo-46657](https://python-all.ru/3/whatsnew/changelog.html): Добавлена поддержка аллокатора памяти mimalloc.
- [gh-106718](https://python-all.ru/3/whatsnew/changelog.html): Когда PyConfig.stdlib\_dir явно задан, теперь он учитывается и не переопределяется PyConfig.home.
- [gh-106905](https://python-all.ru/3/whatsnew/changelog.html): Исправлено некорректное SystemError о несовпадении глубины рекурсии конструктора AST.
- [gh-100445](https://python-all.ru/3/whatsnew/changelog.html): Улучшено сообщение об ошибке для незавершённых строк с экранированием.
- [bpo-45759](https://python-all.ru/3/whatsnew/changelog.html): Улучшены сообщения об ошибках для операторов `elif`/`else`, не соответствующих ни одному допустимому оператору. Автор исправления: Jeremiah Vivian.

### Библиотеки

- [gh-111942](https://python-all.ru/3/whatsnew/changelog.html): Исправлен SystemError в конструкторе TextIOWrapper с некодируемым аргументом «errors» в неотладочном режиме.
- [gh-111995](https://python-all.ru/3/whatsnew/changelog.html): Добавлена константа `NI_IDN` в модуль [`socket`](https://python-all.ru/3/library/socket.html#module-socket), если она присутствует в C на этапе сборки, для использования с [`socket.getnameinfo()`](https://python-all.ru/3/library/socket.html#socket.getnameinfo).
- [gh-109538](https://python-all.ru/3/whatsnew/changelog.html): Выводить предупреждение вместо отображения [`RuntimeError`](https://python-all.ru/3/library/exceptions.html#RuntimeError), если цикл событий уже был закрыт в `StreamWriter.__del__()`.
- [gh-111942](https://python-all.ru/3/whatsnew/changelog.html): Исправлены сбои в [`io.TextIOWrapper.reconfigure()`](https://python-all.ru/3/library/io.html#io.TextIOWrapper.reconfigure) при передаче недопустимых аргументов, например, нестроковой кодировки.
- [gh-111460](https://python-all.ru/3/whatsnew/changelog.html): [`curses`](https://python-all.ru/3/library/curses.html#module-curses): восстановлена поддержка широких символов (включая [`curses.unget_wch()`](https://python-all.ru/3/library/curses.html#curses.unget_wch) и [`get_wch()`](https://python-all.ru/3/library/curses.html#curses.window.get_wch)) на macOS, которая была недоступна из-за регресса в Python 3.12.
- [gh-103791](https://python-all.ru/3/whatsnew/changelog.html): [`contextlib.suppress`](https://python-all.ru/3/library/contextlib.html#contextlib.suppress) теперь поддерживает подавление исключений, возникших в ходе [`BaseExceptionGroup`](https://python-all.ru/3/library/exceptions.html#BaseExceptionGroup), в дополнение к недавно добавленной поддержке [`ExceptionGroup`](https://python-all.ru/3/library/exceptions.html#ExceptionGroup).
- [gh-111835](https://python-all.ru/3/whatsnew/changelog.html): Класс [`mmap.mmap`](https://python-all.ru/3/library/mmap.html#mmap.mmap) теперь имеет метод [`seekable()`](https://python-all.ru/3/library/mmap.html#mmap.mmap.seekable), который можно использовать, когда требуется файлоподобный объект с произвольным доступом. Метод [`seek()`](https://python-all.ru/3/library/mmap.html#mmap.mmap.seek) теперь возвращает новую абсолютную позицию. Автор исправления: Donghee Na.
- [gh-111804](https://python-all.ru/3/whatsnew/changelog.html): Удалён posix.fallocate() в WASI, так как базовая функция posix\_fallocate() недоступна в WASI preview2.
- [gh-111841](https://python-all.ru/3/whatsnew/changelog.html): Исправлено усечение аргументов на нулевом символе в [`os.putenv()`](https://python-all.ru/3/library/os.html#os.putenv) и [`os.unsetenv()`](https://python-all.ru/3/library/os.html#os.unsetenv) в Windows.
- [gh-111768](https://python-all.ru/3/whatsnew/changelog.html): [`wsgiref.util.is_hop_by_hop()`](https://python-all.ru/3/library/wsgiref.html#wsgiref.util.is_hop_by_hop) теперь корректно доступен в `__all__`.
- [gh-80731](https://python-all.ru/3/whatsnew/changelog.html): Избегать выполнения функции по умолчанию в [`cmd.Cmd`](https://python-all.ru/3/library/cmd.html#cmd.Cmd) внутри блока except
- [gh-111541](https://python-all.ru/3/whatsnew/changelog.html): Исправлена [`doctest`](https://python-all.ru/3/library/doctest.html#module-doctest) для [`SyntaxError`](https://python-all.ru/3/library/exceptions.html#SyntaxError), не являющихся встроенными подклассами.
- [gh-111719](https://python-all.ru/3/whatsnew/changelog.html): Добавлена дополнительная проверка аргументов для команды `alias` в [`pdb`](https://python-all.ru/3/library/pdb.html#module-pdb).
- [gh-111482](https://python-all.ru/3/whatsnew/changelog.html): [`time`](https://python-all.ru/3/library/time.html#module-time): Функции [`time.clock_gettime()`](https://python-all.ru/3/library/time.html#time.clock_gettime) и [`time.clock_gettime_ns()`](https://python-all.ru/3/library/time.html#time.clock_gettime_ns) теперь работают до 2x быстрее за счёт более быстрого соглашения о вызове. Патч от Victor Stinner.
- [gh-110894](https://python-all.ru/3/whatsnew/changelog.html): Вызов обработчика исключений цикла событий для исключений в `client_connected_cb` [`asyncio.start_server()`](https://python-all.ru/3/library/asyncio-stream.html#asyncio.start_server), чтобы приложения могли их обрабатывать. Патч от Kumar Aditya.
- [gh-111531](https://python-all.ru/3/whatsnew/changelog.html): Исправлена утечка ссылок в методах `bind_class()` и `bind_all()` виджетов [`tkinter`](https://python-all.ru/3/library/tkinter.html#module-tkinter).
- [gh-111246](https://python-all.ru/3/whatsnew/changelog.html): [`asyncio.loop.create_unix_server()`](https://python-all.ru/3/library/asyncio-eventloop.html#asyncio.loop.create_unix_server) теперь автоматически удаляет Unix-сокет при закрытии сервера.
- [gh-111356](https://python-all.ru/3/whatsnew/changelog.html): Добавлены [`io.text_encoding()`](https://python-all.ru/3/library/io.html#io.text_encoding), [`io.DEFAULT_BUFFER_SIZE`](https://python-all.ru/3/library/io.html#io.DEFAULT_BUFFER_SIZE) и [`io.IncrementalNewlineDecoder`](https://python-all.ru/3/library/io.html#io.IncrementalNewlineDecoder) в `io.__all__`.
- [gh-66425](https://python-all.ru/3/whatsnew/changelog.html): Удалён код установки заголовка REMOTE\_HOST из модуля wsgiref, так как он недостижим. Этот заголовок используется для повышения производительности, что не требуется в модуле wsgiref.
- [gh-111429](https://python-all.ru/3/whatsnew/changelog.html): Ускорены [`pathlib.PurePath.relative_to()`](https://python-all.ru/3/library/pathlib.html#pathlib.PurePath.relative_to) и [`is_relative_to()`](https://python-all.ru/3/library/pathlib.html#pathlib.PurePath.is_relative_to).
- [gh-111342](https://python-all.ru/3/whatsnew/changelog.html): Исправлена опечатка в [`math.sumprod()`](https://python-all.ru/3/library/math.html#math.sumprod).
- [gh-68166](https://python-all.ru/3/whatsnew/changelog.html): Удалено упоминание неподдерживаемого типа элемента “vsapi” в [`tkinter.ttk.Style.element_create()`](https://python-all.ru/3/library/tkinter.ttk.html#tkinter.ttk.Style.element_create). Добавлены тесты для `element_create()` и других методов `ttk.Style`. Добавлены примеры для `element_create()` в документацию.
- [gh-111388](https://python-all.ru/3/whatsnew/changelog.html): Добавлен параметр `show_group` в [`traceback.format_exception_only()`](https://python-all.ru/3/library/traceback.html#traceback.format_exception_only), который позволяет форматировать экземпляры [`ExceptionGroup`](https://python-all.ru/3/library/exceptions.html#ExceptionGroup).
- [gh-79033](https://python-all.ru/3/whatsnew/changelog.html): Ещё одна попытка исправить [`asyncio.Server.wait_closed()`](https://python-all.ru/3/library/asyncio-eventloop.html#asyncio.Server.wait_closed). Теперь он блокируется до выполнения обоих условий: сервер закрыт *и* нет активных подключений. (Это означает, что в некоторых случаях, когда в 3.12.0 эта функция *некорректно* возвращалась немедленно, теперь она будет блокироваться; в частности, когда нет активных подключений, но сервер ещё не закрыт.)
- [gh-111259](https://python-all.ru/3/whatsnew/changelog.html): Оптимизация рекурсивных подстановочных знаков в [`pathlib`](https://python-all.ru/3/library/pathlib.html#module-pathlib).
- [gh-111295](https://python-all.ru/3/whatsnew/changelog.html): Исправлено: [`time`](https://python-all.ru/3/library/time.html#module-time) не проверяла ошибки при инициализации.
- [gh-111253](https://python-all.ru/3/whatsnew/changelog.html): Добавлена проверка ошибок во время инициализации модуля `_socket`.
- [gh-111251](https://python-all.ru/3/whatsnew/changelog.html): Исправлено: `_blake2` не проверяла ошибки при инициализации.
- [gh-111233](https://python-all.ru/3/whatsnew/changelog.html): Исправлено: [`select`](https://python-all.ru/3/library/select.html#module-select) не проверяла ошибки при инициализации.
- [gh-111230](https://python-all.ru/3/whatsnew/changelog.html): Исправлено: [`ssl`](https://python-all.ru/3/library/ssl.html#module-ssl) не проверяла ошибки при инициализации.
- [gh-111174](https://python-all.ru/3/whatsnew/changelog.html): Исправлен сбой в [`io.BytesIO.getbuffer()`](https://python-all.ru/3/library/io.html#io.BytesIO.getbuffer) при многократном вызове для пустого BytesIO.
- [gh-111187](https://python-all.ru/3/whatsnew/changelog.html): Отложена версия удаления locale.getdefaultlocale() до Python 3.15.
- [gh-111159](https://python-all.ru/3/whatsnew/changelog.html): Исправлено сравнение вывода [`doctest`](https://python-all.ru/3/library/doctest.html#module-doctest) для исключений с примечаниями.
- [gh-110910](https://python-all.ru/3/whatsnew/changelog.html): Исправлена обработка некорректного состояния в [`asyncio.TaskGroup`](https://python-all.ru/3/library/asyncio-task.html#asyncio.TaskGroup) и [`asyncio.Timeout`](https://python-all.ru/3/library/asyncio-task.html#asyncio.Timeout). Теперь они возбуждают соответствующее исключение RuntimeError при неправильном использовании и после этого остаются в согласованном состоянии.
- [gh-111092](https://python-all.ru/3/whatsnew/changelog.html): Обеспечен запуск turtledemo без активированного корневого окна по умолчанию.
- [gh-110944](https://python-all.ru/3/whatsnew/changelog.html): Поддержка псевдонимов и удобных переменных для завершения [`pdb`](https://python-all.ru/3/library/pdb.html#module-pdb)
- [gh-110745](https://python-all.ru/3/whatsnew/changelog.html): Добавлен параметр *newline* в [`pathlib.Path.read_text()`](https://python-all.ru/3/library/pathlib.html#pathlib.Path.read_text). Патч от Junya Okabe.
- [gh-84583](https://python-all.ru/3/whatsnew/changelog.html): Обеспечить переход [`pdb`](https://python-all.ru/3/library/pdb.html#module-pdb) в режим посмертной отладки даже для [`SyntaxError`](https://python-all.ru/3/library/exceptions.html#SyntaxError)
- [gh-80675](https://python-all.ru/3/whatsnew/changelog.html): Установка `f_trace_lines = True` на все фреймы при [`pdb.set_trace()`](https://python-all.ru/3/library/pdb.html#pdb.set_trace)
- [gh-110771](https://python-all.ru/3/whatsnew/changelog.html): Части настройки и очистки `asyncio.run_forever()` теперь доступны как отдельные методы `asyncio.run_forever_setup()` и `asyncio.run_forever_cleanup()`. Это позволяет более тесно интегрироваться с циклами событий GUI.
- [gh-110774](https://python-all.ru/3/whatsnew/changelog.html): Поддержка установки именованного аргумента [`asyncio.Runner`](https://python-all.ru/3/library/asyncio-runner.html#asyncio.Runner) loop\_factory в [`unittest.IsolatedAsyncioTestCase`](https://python-all.ru/3/library/unittest.html#unittest.IsolatedAsyncioTestCase)
- [gh-110392](https://python-all.ru/3/whatsnew/changelog.html): Исправлены [`tty.setraw()`](https://python-all.ru/3/library/tty.html#tty.setraw) и [`tty.setcbreak()`](https://python-all.ru/3/library/tty.html#tty.setcbreak): ранее они возвращали частично изменённый список исходных атрибутов tty. [`tty.cfmakeraw()`](https://python-all.ru/3/library/tty.html#tty.cfmakeraw) и [`tty.cfmakecbreak()`](https://python-all.ru/3/library/tty.html#tty.cfmakecbreak) теперь создают копию списка специальных символов перед его изменением.
- [gh-59013](https://python-all.ru/3/whatsnew/changelog.html): Номер строки точки останова функции стал более точным в [`pdb`](https://python-all.ru/3/library/pdb.html#module-pdb)
- [gh-88434](https://python-all.ru/3/whatsnew/changelog.html): Выводить предупреждение об устаревании для нецелочисленных чисел в функциях и методах [`gettext`](https://python-all.ru/3/library/gettext.html#module-gettext), которые учитывают формы множественного числа, даже если перевод не найден.
- [gh-110395](https://python-all.ru/3/whatsnew/changelog.html): Гарантировать, что объекты [`select.kqueue()`](https://python-all.ru/3/library/select.html#select.kqueue) корректно отображаются как закрытые в порождённых процессах-потомках, чтобы предотвратить операции с недопустимым файловым дескриптором.
- [gh-110196](https://python-all.ru/3/whatsnew/changelog.html): Добавить метод `__reduce__` в `IPv6Address`, чтобы сохранить `scope_id`
- [gh-109747](https://python-all.ru/3/whatsnew/changelog.html): Улучшить сообщения об ошибках для неподдерживаемых шаблонов просмотра назад. Теперь возбуждается re.error вместо OverflowError или RuntimeError для слишком большой ширины шаблона просмотра назад.
- [gh-109466](https://python-all.ru/3/whatsnew/changelog.html): Добавить свойство [`ipaddress.IPv4Address.ipv6_mapped`](https://python-all.ru/3/library/ipaddress.html#ipaddress.IPv4Address.ipv6_mapped), которое возвращает IPv4-отображённый IPv6-адрес.
- [gh-85098](https://python-all.ru/3/whatsnew/changelog.html): Реализовать интерфейс командной строки модуля [`symtable`](https://python-all.ru/3/library/symtable.html#module-symtable) и улучшить repr [`Symbol`](https://python-all.ru/3/library/symtable.html#symtable.Symbol).
- [gh-108791](https://python-all.ru/3/whatsnew/changelog.html): Улучшена обработка ошибок в интерфейсе командной строки [`pdb`](https://python-all.ru/3/library/pdb.html#module-pdb), что позволило получать более краткие сообщения об ошибках.
- [gh-105931](https://python-all.ru/3/whatsnew/changelog.html): Изменить [`compileall`](https://python-all.ru/3/library/compileall.html#module-compileall), чтобы он удалял префикс stripdir из полного пути, записанного в скомпилированном файле `.pyc`, только если префикс полностью совпадает с началом полного пути. Если префикс не совпадает, удаление не производится и выводится соответствующее предупреждение.

  Ранее удалялись все компоненты пути префикса stripdir, которые совпадали с полным путём, а те, что не совпадали, оставались нетронутыми (включая те, что находились между совпадающими компонентами).
- [gh-107431](https://python-all.ru/3/whatsnew/changelog.html): Сделать типы `DictProxy` и `ListProxy` в [`multiprocessing.managers`](https://python-all.ru/3/library/multiprocessing.html#module-multiprocessing.managers) [Общими псевдонимами типов](https://python-all.ru/3/library/stdtypes.html#types-genericalias) для использования `[]` в контекстах типизации.
- [gh-72904](https://python-all.ru/3/whatsnew/changelog.html): Добавить [`glob.translate()`](https://python-all.ru/3/library/glob.html#glob.translate). Эта функция преобразует имя пути с шаблонами в стиле командной оболочки в регулярное выражение.
- [gh-90026](https://python-all.ru/3/whatsnew/changelog.html): Определить `USE_XATTRS` на Cygwin, чтобы функции, связанные с XATTR в модуле [`os`](https://python-all.ru/3/library/os.html#module-os), стали доступны.
- [gh-90890](https://python-all.ru/3/whatsnew/changelog.html): Новые методы [`mailbox.Maildir.get_info()`](https://python-all.ru/3/library/mailbox.html#mailbox.Maildir.get_info), [`mailbox.Maildir.set_info()`](https://python-all.ru/3/library/mailbox.html#mailbox.Maildir.set_info), [`mailbox.Maildir.get_flags()`](https://python-all.ru/3/library/mailbox.html#mailbox.Maildir.get_flags), [`mailbox.Maildir.set_flags()`](https://python-all.ru/3/library/mailbox.html#mailbox.Maildir.set_flags), [`mailbox.Maildir.add_flag()`](https://python-all.ru/3/library/mailbox.html#mailbox.Maildir.add_flag), [`mailbox.Maildir.remove_flag()`](https://python-all.ru/3/library/mailbox.html#mailbox.Maildir.remove_flag). Эти методы ускоряют доступ к информации о сообщении и/или его флагам и полезны, когда нет необходимости доступа к содержимому сообщения, например, при переборе Maildir для поиска сообщений с определёнными флагами.
- [gh-102956](https://python-all.ru/3/whatsnew/changelog.html): Исправить возврат пустых байтовых строк после seek в модуле zipfile
- [gh-102895](https://python-all.ru/3/whatsnew/changelog.html): Добавлен параметр `local_exit` для [`code.interact()`](https://python-all.ru/3/library/code.html#code.interact), чтобы предотвратить закрытие `exit()` и `quit` объекта `sys.stdin` и возбуждать `SystemExit`.
- [gh-97928](https://python-all.ru/3/whatsnew/changelog.html): Изменить поведение [`tkinter.Text.count()`](https://python-all.ru/3/library/tkinter.html#tkinter.Text.count). Теперь он всегда возвращает целое число, если указана одна или меньше опций подсчёта. Ранее он мог возвращать одно число как кортеж из одного элемента, целое (только если была указана опция `"update"`) или `None`, если элементы не найдены. Теперь результат одинаков, если `wantobjects` установлено в `0`.
- [gh-96954](https://python-all.ru/3/whatsnew/changelog.html): Переключить хранение имён кодовых точек Unicode на использование другой структуры данных – [направленного ациклического графа слов](https://python-all.ru/3/whatsnew/changelog.html). Это уменьшает разделяемую библиотеку unicodedata примерно на 440 Кбайт. Автор: Carl Friedrich Bolz-Tereick с использованием кода из проекта PyPy.
- [gh-73561](https://python-all.ru/3/whatsnew/changelog.html): Опускать область интерфейса из IPv6-адреса при использовании в заголовке Host с помощью [`http.client`](https://python-all.ru/3/library/http.client.html#module-http.client).
- [gh-86826](https://python-all.ru/3/whatsnew/changelog.html): `zipinfo` теперь поддерживает полный диапазон значений в строке TZ, определённый RFC 8536, и обнаруживает все недопустимые форматы. Обе реализации – Python и C – теперь возбуждают исключения одного типа при недопустимых данных.

### Тесты

- [gh-111808](https://python-all.ru/3/whatsnew/changelog.html): Сделать значение по умолчанию для `test.support.infinite_recursion()` зависящим от того, использовались ли оптимизации при компиляции интерпретатора. Это помогает на платформах, таких как WASI, размер стека которых сильно ограничен в отладочных сборках.
- [gh-110722](https://python-all.ru/3/whatsnew/changelog.html): Сбор построчного покрытия стандартных библиотек в наборе регрессионных тестов теперь точный и гораздо более быстрый. Патч от Łukasz Langa.
- [gh-110367](https://python-all.ru/3/whatsnew/changelog.html): Сделать опцию `--verbose3` regrtest совместимой с опциями `--huntrleaks -jN`. Команда `./python -m test -j1 -R 3:3 --verbose3` теперь работает как ожидалось. Патч от Victor Stinner.
- [gh-111165](https://python-all.ru/3/whatsnew/changelog.html): Удалить более не используемые функции `run_unittest()` и `run_doctest()` из модуля [`test.support`](https://python-all.ru/3/library/test.html#module-test.support).
- [gh-110932](https://python-all.ru/3/whatsnew/changelog.html): Исправить regrtest, если определена переменная окружения `SOURCE_DATE_EPOCH`: использовать значение переменной как начальное значение генератора случайных чисел. Патч от Victor Stinner.
- [gh-110995](https://python-all.ru/3/whatsnew/changelog.html): test\_gdb: Исправить определение gdb, собранного без поддержки скриптов Python. Патч от Victor Stinner.
- [gh-110918](https://python-all.ru/3/whatsnew/changelog.html): Шаблоны сопоставления тестовых случаев, заданные опциями `--match`, `--ignore`, `--matchfile` и `--ignorefile`, теперь проверяются в порядке их указания, и последнее совпадение определяет, будет ли тестовый случай запущен или проигнорирован.
- [gh-108747](https://python-all.ru/3/whatsnew/changelog.html): Добавить модульный тест для хуков `usercustomize` и `sitecustomize` из [`site`](https://python-all.ru/3/library/site.html#module-site).

### Сборка

- [gh-96954](https://python-all.ru/3/whatsnew/changelog.html): Сделать `make regen-unicodedata` работающим для сборок CPython вне дерева исходников.
- [gh-112088](https://python-all.ru/3/whatsnew/changelog.html): Добавить скрипт `Tools/build/regen-configure.sh` для перегенерации `configure` с помощью образа контейнера Ubuntu. Образ контейнера `quay.io/tiran/cpython_autoconf:271` ([tiran/cpython\_autoconf](https://python-all.ru/3/whatsnew/changelog.html)) больше не используется. Патч от Victor Stinner.
- [gh-111046](https://python-all.ru/3/whatsnew/changelog.html): Для wasi-threads память теперь экспортируется для исправления проблем совместимости с некоторыми средами выполнения wasm.
- [gh-110828](https://python-all.ru/3/whatsnew/changelog.html): Для 32-битной AIX требуется `-latomic` для сборки модуля расширения `_testcapi`.
- [gh-85283](https://python-all.ru/3/whatsnew/changelog.html): Расширения C `errno`, `md5`, `resource`, `winsound`, `_ctypes_test`, `_multiprocessing.posixshmem`, `_scproxy`, `_stat`, `_testimportmultiple` и `_uuid` теперь собираются с [ограниченным C API](https://python-all.ru/3/c-api/stable.html#limited-c-api). Патч от Виктора Штиннера.

### Windows

- [gh-111856](https://python-all.ru/3/whatsnew/changelog.html): Исправляет [`fstat()`](https://python-all.ru/3/library/os.html#os.fstat) в файловых системах, которые не поддерживают запросы идентификаторов файлов. Это включает FAT32 и exFAT.
- [gh-111293](https://python-all.ru/3/whatsnew/changelog.html): Исправляет [`os.DirEntry.inode`](https://python-all.ru/3/library/os.html#os.DirEntry.inode), теряющую старшие 64 бита идентификатора файла в некоторых файловых системах Windows.
- [gh-110913](https://python-all.ru/3/whatsnew/changelog.html): WindowsConsoleIO теперь корректно разбивает большие буферы на части без разрыва последовательностей UTF-8.

### macOS

- [gh-59703](https://python-all.ru/3/whatsnew/changelog.html): Для сборок фреймворка macOS в `getpath.c` используется системная функция `dladdr` для поиска пути к разделяемой библиотеке вместо зависимости от устаревших API macOS.
- [gh-110950](https://python-all.ru/3/whatsnew/changelog.html): Обновление установщика macOS для включения исправления от разработчиков Tcl/Tk для предупреждения `Secure coding is not enabled for restorable state!`, возникающего в Tkinter на macOS 14 Sonoma.
- [gh-111015](https://python-all.ru/3/whatsnew/changelog.html): Обеспечивает установку IDLE.app и Python Launcher.app с соответствующими разрешениями в сборках macOS.
- [gh-71383](https://python-all.ru/3/whatsnew/changelog.html): Обновление установщика macOS для включения исправления от разработчиков Tcl/Tk для ошибки `ttk::ThemeChanged`, возникающей в Tkinter.
- [gh-92603](https://python-all.ru/3/whatsnew/changelog.html): Обновление установщика macOS для включения исправления, принятого разработчиками Tcl/Tk, для сбоя, возникающего после уничтожения первого экземпляра [`tkinter.Tk()`](https://python-all.ru/3/library/tkinter.html#tkinter.Tk).

### IDLE

- [bpo-35668](https://python-all.ru/3/whatsnew/changelog.html): Добавлены докстринги в модуль отладчика IDLE. Исправлены две ошибки: инициализация `Idb.botframe` (должно быть в Bdb); в `Idb.in_rpc_code` проверять, является ли `prev_frame` `None`, перед попыткой использования. Значительно расширен test\_debugger.

### Tools/Demos

- [gh-111903](https://python-all.ru/3/whatsnew/changelog.html): Argument Clinic теперь поддерживает директиву `@critical_section`, которая указывает Argument Clinic генерировать критическую секцию вокруг вызова функции, блокирующую объект `self` в сборках `--disable-gil`. Патч от Sam Gross.

### C API

- [gh-112026](https://python-all.ru/3/whatsnew/changelog.html): Снова добавлена приватная функция `_PyThreadState_UncheckedGet()` как псевдоним новой публичной функции [`PyThreadState_GetUnchecked()`](https://python-all.ru/3/c-api/threads.html#c.PyThreadState_GetUnchecked). Патч от Виктора Штиннера.
- [gh-112026](https://python-all.ru/3/whatsnew/changelog.html): Восстановлена удалённая функция `_PyDict_GetItemStringWithError()`. Она используется numpy. Патч от Виктора Штиннера.
- [gh-112026](https://python-all.ru/3/whatsnew/changelog.html): Восстановлены удалённые приватные функции, макросы и структуры 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](https://python-all.ru/3/whatsnew/changelog.html): Снова добавлены включения `<ctype.h>` и `<unistd.h>` в `Python.h`, но они не включены в ограниченный C API версии 3.13 и новее. Патч от Виктора Стиннера.
- [gh-111956](https://python-all.ru/3/whatsnew/changelog.html): Добавлен внутренний API для однократной инициализации: `_PyOnceFlag` и `_PyOnceFlag_CallOnce`.
- [gh-111262](https://python-all.ru/3/whatsnew/changelog.html): Добавлены функции [`PyDict_Pop()`](https://python-all.ru/3/c-api/dict.html#c.PyDict_Pop) и [`PyDict_PopString()`](https://python-all.ru/3/c-api/dict.html#c.PyDict_PopString): удаляют ключ из словаря и опционально возвращают удалённое значение. Это похоже на [`dict.pop()`](https://python-all.ru/3/library/stdtypes.html#dict.pop), но без значения по умолчанию и без возбуждения [`KeyError`](https://python-all.ru/3/library/exceptions.html#KeyError), если ключ отсутствует. Патч от Стефана Бенела и Виктора Стиннера.
- [gh-111863](https://python-all.ru/3/whatsnew/changelog.html): Переименовано `Py_NOGIL` в `Py_GIL_DISABLED`. Патч от Хьюго ван Кеменаде.
- [gh-111138](https://python-all.ru/3/whatsnew/changelog.html): Добавлены функции [`PyList_Extend()`](https://python-all.ru/3/c-api/list.html#c.PyList_Extend) и [`PyList_Clear()`](https://python-all.ru/3/c-api/list.html#c.PyList_Clear): аналогичны методам Python `list.extend()` и `list.clear()`. Патч от Виктора Стиннера.
- [gh-108765](https://python-all.ru/3/whatsnew/changelog.html): В Windows `Python.h` больше не включает стандартный заголовочный файл `<stddef.h>`. Если он нужен, его теперь следует подключать явно. Патч от Виктора Стиннера.
- [gh-111569](https://python-all.ru/3/whatsnew/changelog.html): Реализованы «критические секции Python» из [**PEP 703**](https://python-all.ru/3/whatsnew/changelog.html). Это макросы, помогающие заменить GIL блокировками на каждый объект в сборке CPython `--disable-gil`. В сборке по умолчанию эти макросы ничего не делают (no-op).
- [gh-111506](https://python-all.ru/3/whatsnew/changelog.html): В ограниченном C API версии 3.13 функция [`Py_SET_REFCNT()`](https://python-all.ru/3/c-api/refcounting.html#c.Py_SET_REFCNT) теперь реализована как вызов непрозрачной функции. Патч от Виктора Стиннера.
- [gh-108082](https://python-all.ru/3/whatsnew/changelog.html): Добавлена функция [`PyErr_FormatUnraisable()`](https://python-all.ru/3/c-api/exceptions.html#c.PyErr_FormatUnraisable).
- [gh-110964](https://python-all.ru/3/whatsnew/changelog.html): Перемещены недокументированные приватные функции \_PyArg и структура \_PyArg\_Parser во внутренний C API (`pycore_modsupport.h`). Патч от Виктора Стиннера.
- [gh-110815](https://python-all.ru/3/whatsnew/changelog.html): Поддержка не-ASCII имён ключевых слов в [`PyArg_ParseTupleAndKeywords()`](https://python-all.ru/3/c-api/arg.html#c.PyArg_ParseTupleAndKeywords).
- [gh-109587](https://python-all.ru/3/whatsnew/changelog.html): Представлены `PyUnstable_PerfTrampoline_CompileCode()`, `PyUnstable_PerfTrampoline_SetPersistAfterFork()` и `PyUnstable_CopyPerfMapFile()`. Эти функции позволяют модулям расширений инициализировать трамплины заранее, после «прогрева» приложения. Это даёт возможность запускать perf-трамплины в режиме постоянной активности.
- [gh-85283](https://python-all.ru/3/whatsnew/changelog.html): Добавлена функция [`PySys_Audit()`](https://python-all.ru/3/c-api/sys.html#c.PySys_Audit) в ограниченный C API. Патч от Виктора Стиннера.
- [gh-85283](https://python-all.ru/3/whatsnew/changelog.html): Добавлены [`PyMem_RawMalloc()`](https://python-all.ru/3/c-api/memory.html#c.PyMem_RawMalloc), [`PyMem_RawCalloc()`](https://python-all.ru/3/c-api/memory.html#c.PyMem_RawCalloc), [`PyMem_RawRealloc()`](https://python-all.ru/3/c-api/memory.html#c.PyMem_RawRealloc) и [`PyMem_RawFree()`](https://python-all.ru/3/c-api/memory.html#c.PyMem_RawFree) в ограниченный C API. Патч от Виктора Стиннера.
- [gh-106672](https://python-all.ru/3/whatsnew/changelog.html): Функции [`PyDict_GetItem()`](https://python-all.ru/3/c-api/dict.html#c.PyDict_GetItem), [`PyDict_GetItemString()`](https://python-all.ru/3/c-api/dict.html#c.PyDict_GetItemString), [`PyMapping_HasKey()`](https://python-all.ru/3/c-api/mapping.html#c.PyMapping_HasKey), [`PyMapping_HasKeyString()`](https://python-all.ru/3/c-api/mapping.html#c.PyMapping_HasKeyString), [`PyObject_HasAttr()`](https://python-all.ru/3/c-api/object.html#c.PyObject_HasAttr), [`PyObject_HasAttrString()`](https://python-all.ru/3/c-api/object.html#c.PyObject_HasAttrString) и [`PySys_GetObject()`](https://python-all.ru/3/c-api/sys.html#c.PySys_GetObject), которые очищают все ошибки, произошедшие при вызове функции, теперь сообщают о них с помощью [`sys.unraisablehook()`](https://python-all.ru/3/library/sys.html#sys.unraisablehook).
- [gh-67565](https://python-all.ru/3/whatsnew/changelog.html): Удалена избыточная проверка непрерывности C-памяти в `getargs.c`, [`binascii`](https://python-all.ru/3/library/binascii.html#module-binascii), [`ssl`](https://python-all.ru/3/library/ssl.html#module-ssl) и Argument Clinic. Исправлено Стефаном Крой и Фурканом Ондер.

## Python 3.13.0 alpha 1

*Дата выпуска: 2023-10-13*

### Безопасность

- [gh-108310](https://python-all.ru/3/whatsnew/changelog.html): Исправлена проблема, из-за которой экземпляры [`ssl.SSLSocket`](https://python-all.ru/3/library/ssl.html#ssl.SSLSocket) были уязвимы к обходу рукопожатия TLS и включённых защитных мер (например, проверки сертификата) и обрабатывали отправленные незашифрованные данные так, как будто это зашифрованные данные после рукопожатия TLS. Проблема безопасности сообщена как [**CVE 2023-40217**](https://python-all.ru/3/whatsnew/changelog.html) Аапо Оксманом. Патч от Грегори П. Смита.
- [gh-107774](https://python-all.ru/3/whatsnew/changelog.html): PEP 669 определяет, что `sys.monitoring.register_callback` будет генерировать событие аудита. Предварительные выпуски Python 3.12 не генерировали это событие аудита. Теперь это исправлено.
- [gh-102988](https://python-all.ru/3/whatsnew/changelog.html): Отменено изменение улучшения безопасности [`email.utils`](https://python-all.ru/3/library/email.utils.html#module-email.utils), выпущенное в 3.12beta4, которое непреднамеренно привело к тому, что [`email.utils.getaddresses`](https://python-all.ru/3/library/email.utils.html#email.utils.getaddresses) не удавалось разобрать адреса электронной почты с запятой в поле имени в кавычках. См. [gh-106669](https://python-all.ru/3/whatsnew/changelog.html).
- [gh-99108](https://python-all.ru/3/whatsnew/changelog.html): Обновлён код нового встроенного [`hashlib`](https://python-all.ru/3/library/hashlib.html#module-hashlib) из HACL\* из вышестоящего репозитория. Встроенный SHA2 должен работать быстрее, а также исправлена проблема с SHA3 на 32-битных платформах.
- [gh-102509](https://python-all.ru/3/whatsnew/changelog.html): Начата инициализация `ob_digit` во время создания объектов [`PyLongObject`](https://python-all.ru/3/c-api/long.html#c.PyLongObject). Патч от Ильи Волочия.

### Ядро и встроенные модули

- [gh-110782](https://python-all.ru/3/whatsnew/changelog.html): Исправлен сбой, когда [`typing.TypeVar`](https://python-all.ru/3/library/typing.html#typing.TypeVar) создаётся с именованным аргументом. Патч от Йелле Зейлстры.
- [gh-110752](https://python-all.ru/3/whatsnew/changelog.html): Сброс `ceval.eval_breaker` в `interpreter_clear()`
- [gh-110721](https://python-all.ru/3/whatsnew/changelog.html): Использовать реализацию [`traceback`](https://python-all.ru/3/library/traceback.html#module-traceback) для функциональности по умолчанию `PyErr_Display()`. Патч от Пабло Галиндо.
- [gh-110696](https://python-all.ru/3/whatsnew/changelog.html): Исправлено некорректное сообщение об ошибке для недопустимой распаковки аргументов. Патч от Пабло Галиндо.
- [gh-104169](https://python-all.ru/3/whatsnew/changelog.html): Разделить токенизатор на две отдельные директории: - Одна часть содержит логику порождения лексем и находится в `Parser/lexer`. - Вторая оборачивает лексер в соответствии с разными режимами токенизации (строка, utf-8, файл, интерактивный, readline) и находится в `Parser/tokenizer`.
- [gh-110688](https://python-all.ru/3/whatsnew/changelog.html): Удалить недокументированный метод `test_c_api` из [`set`](https://python-all.ru/3/library/stdtypes.html#set), который был определён только для целей тестирования в `Py_DEBUG`. Теперь есть полноценные CAPI-тесты.
- [gh-104584](https://python-all.ru/3/whatsnew/changelog.html): Исправить утечку ссылок при работе с включёнными `PYTHONUOPS` или [`-X uops`](https://python-all.ru/3/using/cmdline.html#cmdoption-X).
- [gh-110514](https://python-all.ru/3/whatsnew/changelog.html): Добавить `PY_THROW` в события [`sys.setprofile()`](https://python-all.ru/3/library/sys.html#sys.setprofile).
- [gh-110489](https://python-all.ru/3/whatsnew/changelog.html): Оптимизировать [`math.ceil()`](https://python-all.ru/3/library/math.html#math.ceil), когда на входе – float, что даёт прирост производительности около 10%.
- [gh-110455](https://python-all.ru/3/whatsnew/changelog.html): Оградить `assert(tstate->thread_id > 0)` условной компиляцией `#ifndef HAVE_PTHREAD_STUBS`. Это позволяет сборкам pydebug работать в WASI, где (пока) нет поддержки потоков.
- [gh-110309](https://python-all.ru/3/whatsnew/changelog.html): Удалить ненужные пустые узлы констант в AST спецификаций f-строк.
- [gh-110259](https://python-all.ru/3/whatsnew/changelog.html): Корректно определять спецификатор формата в f-строках (с одинарными или тройными кавычками), у которых в выражении несколько строк и есть спецификатор форматирования. Патч от Pablo Galindo.
- [gh-110237](https://python-all.ru/3/whatsnew/changelog.html): Исправить отсутствие проверок ошибок для вызовов `PyList_Append` в `_PyEval_MatchClass`.
- [gh-110164](https://python-all.ru/3/whatsnew/changelog.html): regrtest: если определена переменная окружения `SOURCE_DATE_EPOCH`, regrtest теперь отключает рандомизацию тестов. Патч от Victor Stinner.
- [gh-109889](https://python-all.ru/3/whatsnew/changelog.html): Исправить алгоритм обнаружения избыточных NOP в компиляторе, чтобы он пропускал NOP без номера строки при поиске номера строки следующей инструкции.
- [gh-109853](https://python-all.ru/3/whatsnew/changelog.html): `sys.path[0]` теперь корректно устанавливается для под-интерпретаторов.
- [gh-109923](https://python-all.ru/3/whatsnew/changelog.html): Установить номер строки на `POP_TOP`, которая следует за `RETURN_GENERATOR`.
- [gh-105716](https://python-all.ru/3/whatsnew/changelog.html): Под-интерпретаторы теперь корректно обрабатывают случай, когда в фоне выполняются потоки. Раньше такие потоки мешали их очистке и уничтожению, а также не давали запустить другой скрипт.
- [gh-109369](https://python-all.ru/3/whatsnew/changelog.html): Внутренние eval\_breaker и вспомогательные флаги, а также версия мониторинга объединены в одно атомарное целое для ускорения проверок.
- [gh-109823](https://python-all.ru/3/whatsnew/changelog.html): Исправить ошибку, при которой компилятор не корректирует метки при удалении пустого базового блока, являющегося целью перехода.
- [gh-109793](https://python-all.ru/3/whatsnew/changelog.html): Основной поток больше не завершается преждевременно при очистке под-интерпретатора во время финализации выполнения. Ошибка была особенно проблематична, потому что при её срабатывании процесс Python всегда возвращал код выхода 0, даже при сбое.
- [gh-109719](https://python-all.ru/3/whatsnew/changelog.html): Исправить отсутствие меток целей переходов при переупорядочивании холодных/горячих блоков компилятором.
- [gh-109595](https://python-all.ru/3/whatsnew/changelog.html): Добавить опцию командной строки [`-X cpu_count`](https://python-all.ru/3/using/cmdline.html#cmdoption-X) для переопределения результатов [`os.cpu_count()`](https://python-all.ru/3/library/os.html#os.cpu_count) и [`os.process_cpu_count()`](https://python-all.ru/3/library/os.html#os.process_cpu_count). Эта опция полезна пользователям, которым нужно ограничить ресурсы CPU контейнерной системы без изменения кода контейнера (приложения). Патч от Donghee Na.
- [gh-109627](https://python-all.ru/3/whatsnew/changelog.html): Исправить ошибку, при которой компилятор не назначает новую метку цели перехода для дублированного маленького выходного блока.
- [gh-109596](https://python-all.ru/3/whatsnew/changelog.html): Исправить некоторые токены в грамматике, которые были ошибочно помечены как мягкие ключевые слова. Также исправить несколько повторяющихся имён правил и обеспечить запрет повторяющихся правил. Патч от Pablo Galindo.
- [gh-109496](https://python-all.ru/3/whatsnew/changelog.html): В сборке Python в режиме отладки [`Py_DECREF()`](https://python-all.ru/3/c-api/refcounting.html#c.Py_DECREF) теперь вызывает `_Py_NegativeRefcount()`, если объект – висячий указатель на освобождённую память: память, заполненную `0xDD` «мёртвым байтом» отладочным хуком на аллокаторах памяти. Исправление заключается в проверке счётчика ссылок *до* проверки на `_Py_IsImmortal()`. Патч от Victor Stinner.
- [gh-107265](https://python-all.ru/3/whatsnew/changelog.html): Деоптимизировать опкоды, скрытые исполнителем, когда требуется базовый опкод.
- [gh-109371](https://python-all.ru/3/whatsnew/changelog.html): Правильно деоптимизировать инструкции для инициализации инструмента и исправить некорректное утверждение в инструментации, когда предыдущий инструмент уже установил события INSTRUCTION.
- [gh-105658](https://python-all.ru/3/whatsnew/changelog.html): Исправить ошибку, при которой трассировка строк блока except, заканчивающегося условием, включает лишнее событие со строкой условного выражения.
- [gh-109219](https://python-all.ru/3/whatsnew/changelog.html): Исправить компиляцию областей видимости параметров типа, использующих имя, которое также является свободным во внутренней области.
- [gh-109351](https://python-all.ru/3/whatsnew/changelog.html): Исправить крах при компиляции некорректного AST, содержащего именованное (моржовое) выражение.
- [gh-109341](https://python-all.ru/3/whatsnew/changelog.html): Исправить крах при компиляции некорректного AST, содержащего [`ast.TypeAlias`](https://python-all.ru/3/library/ast.html#ast.TypeAlias).
- [gh-109195](https://python-all.ru/3/whatsnew/changelog.html): Исправить исходное расположение для инструкции `LOAD_*`, предшествующей `LOAD_SUPER_ATTR`, чтобы загрузить глобальную (или затеняющую) переменную `super`, охватывая только имя `super`, а не следующие скобки.
- [gh-109256](https://python-all.ru/3/whatsnew/changelog.html): Идентификаторы опкодов для специализированных опкодов выделены в свой собственный диапазон, чтобы повысить стабильность идентификаторов для «настоящих» опкодов.
- [gh-109216](https://python-all.ru/3/whatsnew/changelog.html): Исправить возможную утечку памяти в [`BUILD_MAP`](https://python-all.ru/3/library/dis.html#opcode-BUILD_MAP).
- [gh-109207](https://python-all.ru/3/whatsnew/changelog.html): Исправить SystemError в `__repr__` объекта записи symtable.
- [gh-109179](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка, из-за которой отображение C-трассировки теряло примечания из [`SyntaxError`](https://python-all.ru/3/library/exceptions.html#SyntaxError).
- [gh-109118](https://python-all.ru/3/whatsnew/changelog.html): Запрещены вложенные области видимости (лямбды, генераторные выражения и выражения-включения) внутри областей видимости аннотаций PEP 695, которые вложены в классы.
- [gh-109156](https://python-all.ru/3/whatsnew/changelog.html): Добавлены тесты для удаления инструментации инструкций с сохранением инструментации для строк.
- [gh-109114](https://python-all.ru/3/whatsnew/changelog.html): Ослаблено обнаружение сообщения об ошибке для недопустимых лямбд внутри f-строк, чтобы не искать произвольные поля подстановки и избежать ложных срабатываний. Исправление от Pablo Galindo.
- [gh-105848](https://python-all.ru/3/whatsnew/changelog.html): Добавлена новая опкода [`CALL_KW`](https://python-all.ru/3/library/dis.html#opcode-CALL_KW), используемая для вызовов, содержащих именованные аргументы. Также исправлена возможная ошибка при перепрыгивании через вызовы методов в отладчике.
- [gh-109052](https://python-all.ru/3/whatsnew/changelog.html): Используйте базовую опкоду при сравнении объектов кода, чтобы избежать помех от инструментации.
- [gh-109118](https://python-all.ru/3/whatsnew/changelog.html): Исправлен сбой интерпретатора при возникновении NameError внутри параметров типа универсального класса.
- [gh-88943](https://python-all.ru/3/whatsnew/changelog.html): Улучшена синтаксическая ошибка для не-ASCII символа, следующего за числовым литералом. Теперь она указывает на недопустимый не-ASCII символ, а не на допустимый числовой литерал.
- [gh-108976](https://python-all.ru/3/whatsnew/changelog.html): Исправлен сбой, возникающий после удаления инструментации объекта кода в колбэке мониторинга.
- [gh-108732](https://python-all.ru/3/whatsnew/changelog.html): Сделать переменные итерации выражений-включений, область действия которых – модуль или класс, снова видимыми для pdb и других инструментов, использующих `frame.f_locals` снова.
- [gh-108959](https://python-all.ru/3/whatsnew/changelog.html): Исправлено размещение курсора для указания местоположения ошибки для операций индексации и бинарных операций, которые содержат незначащие скобки и пробелы. Исправление от Pablo Galindo.
- [gh-104584](https://python-all.ru/3/whatsnew/changelog.html): Исправлен сбой при работе с включёнными `PYTHONUOPS` или [`-X uops`](https://python-all.ru/3/using/cmdline.html#cmdoption-X) и возникновении ошибки во время оптимизации.
- [gh-108727](https://python-all.ru/3/whatsnew/changelog.html): Определён `tp_dealloc` для `CounterOptimizer_Type`. Это исправляет ошибку сегментации при освобождении.
- [gh-108520](https://python-all.ru/3/whatsnew/changelog.html): Исправлен `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](https://python-all.ru/3/whatsnew/changelog.html): Восстановить локальные переменные, скрытые встроенным выражением-включением, если это выражение-включение вызывает исключение.
- [gh-108488](https://python-all.ru/3/whatsnew/changelog.html): Изменена инициализация встроенных записей кеша так, чтобы запись кеша для `JUMP_BACKWARD` инициализировалась нулём, а не значением `adaptive_counter_warmup()`, которое используется для всех остальных инструкций. Этот счётчик, уникальный среди инструкций, считает от нуля вверх.
- [gh-108716](https://python-all.ru/3/whatsnew/changelog.html): Отключено глубокое замораживание объектов кода. Модули по-прежнему замораживаются, чтобы не требовался поиск по файловой системе для распространённых модулей.
- [gh-108614](https://python-all.ru/3/whatsnew/changelog.html): Добавлена инструкция RESUME\_CHECK, чтобы избежать необходимости обрабатывать инструментацию, сигналы и переключения контекстов в движке исполнения второго уровня.
- [gh-108487](https://python-all.ru/3/whatsnew/changelog.html): Перенесён assert, который мог вызвать ложный сбой в хитроумном случае, который должен вызывать только деоптимизацию.
- [gh-106176](https://python-all.ru/3/whatsnew/changelog.html): Используйте `WeakValueDictionary` для отслеживания списков, содержащих модули, которые каждый поток в данный момент импортирует. Это помогает избежать утечки ссылок из-за того, что список хранится дольше необходимого. Слабые ссылки используются, поскольку сборщик мусора не может прервать очистку.
- [gh-105481](https://python-all.ru/3/whatsnew/changelog.html): Этап сборки regen-opcode удалён, и его работа теперь выполняется в regen-cases.
- [gh-107901](https://python-all.ru/3/whatsnew/changelog.html): Исправлен отсутствующий номер строки на [`JUMP_BACKWARD`](https://python-all.ru/3/library/dis.html#opcode-JUMP_BACKWARD) в конце цикла for.
- [gh-108113](https://python-all.ru/3/whatsnew/changelog.html): Встроенная функция [`compile()`](https://python-all.ru/3/library/functions.html#compile) теперь может принимать новый флаг, `ast.PyCF_OPTIMIZED_AST`, который похож на `ast.PyCF_ONLY_AST`, за исключением того, что возвращаемый `AST` оптимизируется в соответствии со значением аргумента `optimize`.

  [`ast.parse()`](https://python-all.ru/3/library/ast.html#ast.parse) теперь принимает необязательный аргумент `optimize`, который передаётся встроенной функции [`compile()`](https://python-all.ru/3/library/functions.html#compile). Это позволяет получить оптимизированный `AST`.
- [gh-107971](https://python-all.ru/3/whatsnew/changelog.html): Идентификаторы опкодов теперь генерируются из bytecodes.c, а не жёстко прописаны в opcode.py.
- [gh-107944](https://python-all.ru/3/whatsnew/changelog.html): Улучшено сообщение об ошибке для вызовов функций с неверными именованными аргументами. Исправление от Pablo Galindo.
- [gh-108390](https://python-all.ru/3/whatsnew/changelog.html): Вызывать исключение при установке нелокального события (`RAISE`, `EXCEPTION_HANDLED` и т.д.) в `sys.monitoring.set_local_events`.

  Исправлен сбой при трассировке рекурсивных вызовов классов Python.
- [gh-108035](https://python-all.ru/3/whatsnew/changelog.html): Удалена структура `_PyCFrame`, указатель на текущий кадр интерпретатора возвращён обратно в состояние потока, как это было для 3.10 и ранее. Структура `_PyCFrame` существовала как оптимизация производительности для трассировки. После реализации PEP 669 эта оптимизация больше не применяется.
- [gh-91051](https://python-all.ru/3/whatsnew/changelog.html): Исправлено аварийное завершение / ошибка сегментации при использовании всех восьми слотов наблюдателя типов на платформах, где `char` по умолчанию является знаковым.
- [gh-106581](https://python-all.ru/3/whatsnew/changelog.html): Исправлены возможные сбои утверждений и пропущенные события инструментации при включённых `PYTHONUOPS` или [`-X uops`](https://python-all.ru/3/using/cmdline.html#cmdoption-X).
- [gh-107526](https://python-all.ru/3/whatsnew/changelog.html): Отменить преобразование `vars`, `dir`, `next`, `getattr` и `iter` в Argument Clinic.
- [gh-84805](https://python-all.ru/3/whatsnew/changelog.html): Автоматическая генерация сигнатуры для функций расширения [`METH_NOARGS`](https://python-all.ru/3/c-api/structures.html#c.METH_NOARGS) и [`METH_O`](https://python-all.ru/3/c-api/structures.html#c.METH_O).
- [gh-107758](https://python-all.ru/3/whatsnew/changelog.html): Сделать подпрограмму `dump_stack()`, используемую функцией `lltrace` (низкоуровневая отладка интерпретатора), устойчивой к рекурсии за счёт гарантии, что она никогда не вызывает метод `__repr__`, реализованный на Python. Кроме того, сделать аналогичный вывод для Tier-2 uops на `stdout` (вместо `stderr`), чтобы соответствовать коду `lltrace` в ceval.c.
- [gh-107659](https://python-all.ru/3/whatsnew/changelog.html): Добавить строки документации для [`ctypes.pointer()`](https://python-all.ru/3/library/ctypes.html#ctypes.pointer) и [`ctypes.POINTER()`](https://python-all.ru/3/library/ctypes.html#ctypes.POINTER).
- [gh-105848](https://python-all.ru/3/whatsnew/changelog.html): Изменить байткод так, чтобы фактический вызываемый объект для [`CALL`](https://python-all.ru/3/library/dis.html#opcode-CALL) находился в фиксированной позиции на стеке (независимо от того, активны ли оптимизации вызова связанных методов).
- [gh-107674](https://python-all.ru/3/whatsnew/changelog.html): Исправлена регрессия производительности в `sys.settrace`.
- [gh-107724](https://python-all.ru/3/whatsnew/changelog.html): В предварительных версиях 3.12 вплоть до rc1 в функции обратного вызова sys.monitoring для события `PY_THROW` отсутствовал третий аргумент – исключение. Теперь это исправлено.
- [gh-84436](https://python-all.ru/3/whatsnew/changelog.html): Пропускать изменения счётчика ссылок для многих известных бессмертных объектов.
- [gh-107596](https://python-all.ru/3/whatsnew/changelog.html): Специализировать индексирование объектов [`str`](https://python-all.ru/3/library/stdtypes.html#str) по индексам [`int`](https://python-all.ru/3/library/functions.html#int).
- [gh-107080](https://python-all.ru/3/whatsnew/changelog.html): Сборки с отслеживанием ссылок (`--with-trace-refs`) падали при использовании с изолированными подинтерпретаторами. Проблемное глобальное состояние было изолировано в каждом интерпретаторе. Помимо исправления падений, это изменение не влияет на пользователей.
- [gh-107557](https://python-all.ru/3/whatsnew/changelog.html): Сгенерировать варианты, необходимые для минимального абстрактного интерпретатора второго уровня для проходов оптимизации в CPython.
- [gh-106608](https://python-all.ru/3/whatsnew/changelog.html): Сделать `_PyUOpExecutorObject` переменной длины.
- [gh-100964](https://python-all.ru/3/whatsnew/changelog.html): Очищать состояние исключения генераторов после `return`, чтобы разорвать циклические ссылки.
- [gh-107455](https://python-all.ru/3/whatsnew/changelog.html): Улучшить сообщения об ошибках при преобразовании несовместимого типа в [`ctypes.c_char_p`](https://python-all.ru/3/library/ctypes.html#ctypes.c_char_p), [`ctypes.c_wchar_p`](https://python-all.ru/3/library/ctypes.html#ctypes.c_wchar_p) и [`ctypes.c_void_p`](https://python-all.ru/3/library/ctypes.html#ctypes.c_void_p).
- [gh-107263](https://python-all.ru/3/whatsnew/changelog.html): Увеличить предел рекурсии C для функций, отличных от главного интерпретатора, с 800 до 1500. Это должно позволить таким функциям, как `list.__repr__` и `json.dumps`, обрабатывать все входные данные, которые они могли до версии 3.12.
- [gh-104584](https://python-all.ru/3/whatsnew/changelog.html): Исправить проблему, из-за которой считывались неверные инлайн-кэши при работе с включёнными `PYTHONUOPS` или [`-X uops`](https://python-all.ru/3/using/cmdline.html#cmdoption-X).
- [gh-104432](https://python-all.ru/3/whatsnew/changelog.html): Исправить потенциальный невыровненный доступ к памяти в C API, включающих возвращаемые последовательности указателей `char *` в модулях [`grp`](https://python-all.ru/3/library/grp.html#module-grp) и [`socket`](https://python-all.ru/3/library/socket.html#module-socket). Эти проблемы были обнаружены при сборке `-fsaniziter=alignment` на ARM macOS. Патч от Christopher Chavez.
- [gh-106078](https://python-all.ru/3/whatsnew/changelog.html): Изолировать `_decimal` (применить [**PEP 687**](https://python-all.ru/3/whatsnew/changelog.html)). Патч от Charlie Zhao.
- [gh-106898](https://python-all.ru/3/whatsnew/changelog.html): Добавить исключение в качестве третьего аргумента в обратные вызовы `PY_UNIND` в `sys.monitoring`. Это делает обратный вызов `PY_UNWIND` согласованным с другими обратными вызовами обработки исключений.
- [gh-106895](https://python-all.ru/3/whatsnew/changelog.html): Возбуждать исключение `ValueError`, когда функция обратного вызова мониторинга возвращает `DISABLE` для событий, которые нельзя отключить локально.
- [gh-106897](https://python-all.ru/3/whatsnew/changelog.html): Добавить событие `RERAISE` в `sys.monitoring`, которое происходит, когда исключение поднимается повторно – либо явно с помощью оператора `raise`, либо неявно в блоке `except` или `finally`.
- [gh-77377](https://python-all.ru/3/whatsnew/changelog.html): Гарантировать, что объекты синхронизации multiprocessing, созданные в контексте fork, не отправляются в другой процесс, созданный в контексте spawn. Это превращает segfault в воспроизводимую ошибку RuntimeError в родительском процессе.
- [gh-106931](https://python-all.ru/3/whatsnew/changelog.html): Статически выделенные строковые объекты теперь интернируются глобально, а не для каждого интерпретатора. Это исправляет ситуацию, когда такая строка интернировалась только в одном интерпретаторе. Обычные строковые объекты не затрагиваются.
- [gh-104621](https://python-all.ru/3/whatsnew/changelog.html): Неподдерживаемые модули теперь всегда не удаётся импортировать.
- [gh-107122](https://python-all.ru/3/whatsnew/changelog.html): Добавить `dbm.ndbm.ndbm.clear()` в [`dbm.ndbm`](https://python-all.ru/3/library/dbm.html#module-dbm.ndbm). Патч от Donghee Na.
- [gh-107122](https://python-all.ru/3/whatsnew/changelog.html): Добавить `dbm.gnu.gdbm.clear()` в [`dbm.gnu`](https://python-all.ru/3/library/dbm.html#module-dbm.gnu). Патч от Donghee Na.
- [gh-107015](https://python-all.ru/3/whatsnew/changelog.html): Токены ASYNC и AWAIT удалены из грамматики, что устраняет возможность сделать `async` и `await` мягкими ключевыми словами при использовании `feature_version<7` в [`ast.parse()`](https://python-all.ru/3/library/ast.html#ast.parse).
- [gh-106917](https://python-all.ru/3/whatsnew/changelog.html): Исправить вызовы методов [`super()`](https://python-all.ru/3/library/functions.html#super) в стиле classmethod (т.е. когда второй аргумент для `super()`, или подразумеваемый второй аргумент, взятый из `self/cls` в случае super без аргументов, является типом), когда цель вызова не является classmethod.
- [gh-105699](https://python-all.ru/3/whatsnew/changelog.html): Python больше не падает из-за редкого состояния гонки при инициализации интернированных строк для каждого интерпретатора. Падение проявлялось при финализации интерпретатора.
- [gh-105699](https://python-all.ru/3/whatsnew/changelog.html): Python больше не падает из-за редкого состояния гонки при установке `Py_FileSystemDefaultEncoding` и `Py_FileSystemDefaultEncodeErrors` (оба устарели) при одновременной инициализации двух изолированных подинтерпретаторов. Теперь они устанавливаются только при инициализации среды выполнения.
- [gh-106908](https://python-all.ru/3/whatsnew/changelog.html): Исправить различные зависания, утечки ссылок, ошибки тестов, а также ошибки трассировки/интроспекции при работе с включёнными `PYTHONUOPS` или [`-X uops`](https://python-all.ru/3/using/cmdline.html#cmdoption-X).
- [gh-106092](https://python-all.ru/3/whatsnew/changelog.html): Исправить segmentation fault, вызванный ошибкой использования после освобождения в `frame_dealloc`, когда trashcan задерживает освобождение `PyFrameObject`.
- [gh-106485](https://python-all.ru/3/whatsnew/changelog.html): Сокращено количество материализованных словарей экземпляров за счёт их дематериализации, когда это возможно.
- [gh-106719](https://python-all.ru/3/whatsnew/changelog.html): Больше не подавляются произвольные ошибки в геттере и сеттере `__annotations__` у типов type и module.
- [gh-106723](https://python-all.ru/3/whatsnew/changelog.html): `frozen_modules` теперь распространяется на интерпретаторы процессов, порождённых multiprocessing.
- [gh-104909](https://python-all.ru/3/whatsnew/changelog.html): Разделить `LOAD_ATTR_INSTANCE_VALUE` на микрооперации.
- [gh-104909](https://python-all.ru/3/whatsnew/changelog.html): Разделить специализации [`LOAD_GLOBAL`](https://python-all.ru/3/library/dis.html#opcode-LOAD_GLOBAL) на микрооперации.
- [gh-106597](https://python-all.ru/3/whatsnew/changelog.html): В `_PyRuntimeState` добавлена новая отладочная структура смещений, которая поможет внешним отладчикам и профилировщикам получать смещения до соответствующих структур интерпретатора способом, не зависящим от того, как был скомпилирован Python, и не требующим копирования заголовочных файлов. Автор исправления: Pablo Galindo
- [gh-106487](https://python-all.ru/3/whatsnew/changelog.html): Аргумент *count* функции [`str.replace()`](https://python-all.ru/3/library/stdtypes.html#str.replace) теперь можно передавать как именованный. Автор исправления: Hugo van Kemenade.
- [gh-96844](https://python-all.ru/3/whatsnew/changelog.html): Улучшено сообщение об ошибке [`list.remove()`](https://python-all.ru/3/library/stdtypes.html#list.remove). Автор исправления: Donghee Na.
- [gh-81283](https://python-all.ru/3/whatsnew/changelog.html): Компилятор теперь удаляет отступы из doc-строк. Это уменьшает размер файла `pyc` на 5% для модулей с обильной документацией. Изменение затрагивает `__doc__`, так что инструменты вроде doctest будут подвержены влиянию.
- [gh-106396](https://python-all.ru/3/whatsnew/changelog.html): Если спецификация форматирования выражения f-строки пуста, синтаксический анализатор теперь генерирует пустой узел [`ast.JoinedStr`](https://python-all.ru/3/library/ast.html#ast.JoinedStr) вместо одноэлементного `ast.JoinedStr` с пустой строкой [`ast.Constant`](https://python-all.ru/3/library/ast.html#ast.Constant).
- [gh-100288](https://python-all.ru/3/whatsnew/changelog.html): Специализировать [`LOAD_ATTR`](https://python-all.ru/3/library/dis.html#opcode-LOAD_ATTR) для недескрипторов в классе. Добавлены `LOAD_ATTR_NONDESCRIPTOR_WITH_VALUES` и `LOAD_ATTR_NONDESCRIPTOR_NO_DICT`.
- [gh-106008](https://python-all.ru/3/whatsnew/changelog.html): Исправлена возможная утечка ссылок при неудачной оптимизации сравнений с [`None`](https://python-all.ru/3/library/constants.html#None) в компиляторе байт-кода.
- [gh-106145](https://python-all.ru/3/whatsnew/changelog.html): Сделать `end_lineno` и `end_col_offset` обязательными для узлов AST `type_param`.
- [gh-106213](https://python-all.ru/3/whatsnew/changelog.html): Изменён способ работы трамплинов вызовов Emscripten для совместимости с интеграцией Wasm/JS Promise.
- [gh-106182](https://python-all.ru/3/whatsnew/changelog.html): [`sys.getfilesystemencoding()`](https://python-all.ru/3/library/sys.html#sys.getfilesystemencoding) и [`sys.getfilesystemencodeerrors`](https://python-all.ru/3/library/sys.html#sys.getfilesystemencodeerrors) теперь возвращают интернированный объект Unicode.
- [gh-106210](https://python-all.ru/3/whatsnew/changelog.html): Удалён трамплин импорта Emscripten, так как он больше не был нужен для Pyodide.
- [gh-104584](https://python-all.ru/3/whatsnew/changelog.html): Добавлен новый экспериментальный трассирующий оптимизатор и интерпретатор (так называемый «tier 2»). В настоящее время он ухудшает производительность, поэтому пока не рекомендуется к использованию – это инфраструктура для экспериментов с оптимизирующими проходами. Чтобы включить его, передайте `-Xuops` или установите `PYTHONUOPS=1`. Для отладочного вывода установите `PYTHONUOPSDEBUG=N`, где `N` – уровень отладки (0–4, где 0 – нет вывода, а 4 – чрезвычайно подробный).
- [gh-105775](https://python-all.ru/3/whatsnew/changelog.html): [`LOAD_CLOSURE`](https://python-all.ru/3/library/dis.html#opcode-LOAD_CLOSURE) теперь является псевдо-операцией.
- [gh-105730](https://python-all.ru/3/whatsnew/changelog.html): Разрешён любой вызываемый объект, кроме объектов типа, в качестве предиката условия в [`BaseExceptionGroup.split()`](https://python-all.ru/3/library/exceptions.html#BaseExceptionGroup.split) и [`BaseExceptionGroup.subgroup()`](https://python-all.ru/3/library/exceptions.html#BaseExceptionGroup.subgroup).
- [gh-105979](https://python-all.ru/3/whatsnew/changelog.html): Исправлен сбой в `_imp.get_frozen_object()` из-за некорректной обработки исключений.
- [gh-106003](https://python-all.ru/3/whatsnew/changelog.html): Добавлена новая инструкция [`TO_BOOL`](https://python-all.ru/3/library/dis.html#opcode-TO_BOOL), выполняющая логические преобразования для [`POP_JUMP_IF_TRUE`](https://python-all.ru/3/library/dis.html#opcode-POP_JUMP_IF_TRUE), [`POP_JUMP_IF_FALSE`](https://python-all.ru/3/library/dis.html#opcode-POP_JUMP_IF_FALSE) и [`UNARY_NOT`](https://python-all.ru/3/library/dis.html#opcode-UNARY_NOT) (все они теперь ожидают точные значения [`bool`](https://python-all.ru/3/library/functions.html#bool)). Также изменён аргумент операции [`COMPARE_OP`](https://python-all.ru/3/library/dis.html#opcode-COMPARE_OP) для включения опционального флага «логическое преобразование».
- [gh-98931](https://python-all.ru/3/whatsnew/changelog.html): Гарантируется, что пользовательские сообщения об ошибках [`SyntaxError`](https://python-all.ru/3/library/exceptions.html#SyntaxError) возникают при некорректных импортах с несколькими целями. Автор исправления: Pablo Galindo
- [gh-105724](https://python-all.ru/3/whatsnew/changelog.html): Улучшены сообщения об ошибках `assert` – теперь указывается точный диапазон ошибки.
- [gh-105908](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка, при которой [gh-99111](https://python-all.ru/3/whatsnew/changelog.html) нарушал future import `barry_as_FLUFL` в REPL Python.
- [gh-105840](https://python-all.ru/3/whatsnew/changelog.html): Исправлена возможная ошибка при специализации вызовов функций со слишком большим количеством `__defaults__`.
- [gh-105831](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка f-строки, когда использование отладочного выражения (знак `=`), находящегося в последней строке файла, приводило к тому, что буфер отладки, содержащий текст выражения, оказывался на один символ меньше.
- [gh-105800](https://python-all.ru/3/whatsnew/changelog.html): Корректно выдавать [`SyntaxWarning`](https://python-all.ru/3/library/exceptions.html#SyntaxWarning) в f-строках при использовании недопустимых последовательностей. Автор исправления: Pablo Galindo
- [gh-105340](https://python-all.ru/3/whatsnew/changelog.html): Включать переменную итерации генератора в `locals()` внутри генераторного выражения на уровне модуля или класса.
- [gh-105331](https://python-all.ru/3/whatsnew/changelog.html): Возбуждать [`ValueError`](https://python-all.ru/3/library/exceptions.html#ValueError), если аргумент `delay` функции [`asyncio.sleep()`](https://python-all.ru/3/library/asyncio-task.html#asyncio.sleep) является NaN (в соответствии с [`time.sleep()`](https://python-all.ru/3/library/time.html#time.sleep)).
- [gh-105587](https://python-all.ru/3/whatsnew/changelog.html): Среда выполнения не может гарантировать, что бессмертные объекты не будут изменены расширениями. Поэтому функция \_PyStaticObject\_CheckRefcnt теперь выводит предупреждение вместо утверждения.
- [gh-105564](https://python-all.ru/3/whatsnew/changelog.html): Не включать искусственные переводы строк в атрибут `line` токенов в API модуля [`tokenize`](https://python-all.ru/3/library/tokenize.html#module-tokenize). Автор исправления: Pablo Galindo
- [gh-105549](https://python-all.ru/3/whatsnew/changelog.html): Токенизировать раздельно токены `NUMBER` и `NAME`, которые не являются неоднозначными. Автор исправления: Pablo Galindo.
- [gh-105588](https://python-all.ru/3/whatsnew/changelog.html): Исправлена проблема, которая могла приводить к сбоям при компиляции некорректных узлов [`ast`](https://python-all.ru/3/library/ast.html#module-ast).
- [gh-100987](https://python-all.ru/3/whatsnew/changelog.html): Разрешено использовать во внутренних фреймах в качестве «исполняемого» объекты, отличные от code-объектов. В долгосрочной перспективе это позволит таким инструментам, как Cython и PySpy, взаимодействовать эффективнее. В краткосрочной – упрощает выполнение некоторых оптимизаций.
- [gh-105375](https://python-all.ru/3/whatsnew/changelog.html): Исправлены ошибки в модуле [`builtins`](https://python-all.ru/3/library/builtins.html#module-builtins), из-за которых исключения могли быть случайно перезаписаны.
- [gh-105375](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка в компиляторе, из-за которой исключение могло быть случайно перезаписано.
- [gh-105375](https://python-all.ru/3/whatsnew/changelog.html): Улучшена обработка ошибок в [`PyUnicode_BuildEncodingMap()`](https://python-all.ru/3/c-api/unicode.html#c.PyUnicode_BuildEncodingMap), где исключение могло быть случайно перезаписано.
- [gh-105486](https://python-all.ru/3/whatsnew/changelog.html): Изменено строковое представление `ParamSpec` списка аргументов в `types.GenericAlias`.
- [gh-105678](https://python-all.ru/3/whatsnew/changelog.html): Инструкция `MAKE_FUNCTION` разделена на две части: `MAKE_FUNCTION`, которая создаёт функцию, и `SET_FUNCTION_ATTRIBUTE`, которая устанавливает атрибуты функции. Это делает стековый эффект `MAKE_FUNCTION` регулярным, упрощая оптимизацию и генерацию кода.
- [gh-105435](https://python-all.ru/3/whatsnew/changelog.html): Исправлена проблема лишнего символа перевода строки, если файл заканчивается комментарием без перевода строки. Патч от Pablo Galindo.
- [gh-105390](https://python-all.ru/3/whatsnew/changelog.html): Исправлено возбуждение исключений [`tokenize.TokenError`](https://python-all.ru/3/library/tokenize.html#tokenize.TokenError) вместо [`SyntaxError`](https://python-all.ru/3/library/exceptions.html#SyntaxError) при ошибках токенизации, например при неполном вводе. Патч от Pablo Galindo.
- [gh-105259](https://python-all.ru/3/whatsnew/changelog.html): Не включать символ перевода строки для завершающих токенов `NEWLINE`, генерируемых в модуле [`tokenize`](https://python-all.ru/3/library/tokenize.html#module-tokenize). Патч от Pablo Galindo.
- [gh-104635](https://python-all.ru/3/whatsnew/changelog.html): Устранены избыточные инструкции [`STORE_FAST`](https://python-all.ru/3/library/dis.html#opcode-STORE_FAST) в компиляторе. Патч от Donghee Na и Carl Meyer.
- [gh-105324](https://python-all.ru/3/whatsnew/changelog.html): Исправлена основная функция модуля [`tokenize`](https://python-all.ru/3/library/tokenize.html#module-tokenize) при чтении из `sys.stdin`. Патч от Pablo Galindo.
- [gh-33092](https://python-all.ru/3/whatsnew/changelog.html): Упрощён и ускорен интерпретатор f-строк. Удалён опкод `FORMAT_VALUE`. Добавлены опкоды `CONVERT_VALUE`, `FORMAT_SIMPLE` и `FORMAT_WITH_SPEC`. Компилятор генерирует более эффективную последовательность для каждого форматного выражения.
- [gh-105229](https://python-all.ru/3/whatsnew/changelog.html): Удалены оставшиеся суперинструкции из двух кодовых единиц. Все оставшиеся суперинструкции используют только одну кодовую единицу, что упрощает инструментирование и ускорение (quickening).
- [gh-105235](https://python-all.ru/3/whatsnew/changelog.html): Предотвращено обращение к памяти за пределами границ во время вызовов `mmap.find()`.
- [gh-98963](https://python-all.ru/3/whatsnew/changelog.html): Восстановлена возможность для подкласса [`property`](https://python-all.ru/3/library/functions.html#property) определять `__slots__` или иным образом быть без словаря (dict-less) путём игнорирования ошибок установки docstring. Такое поведение было нарушено в 3.12beta1. [`AttributeError`](https://python-all.ru/3/library/exceptions.html#AttributeError) там, где раньше его не было, нарушало работу существующего кода.
- [gh-104812](https://python-all.ru/3/whatsnew/changelog.html): Механизм «отложенных вызовов» (pending call) теперь работает для всех интерпретаторов, а не только для главного, и выполняется во всех потоках, а не только в главном. Некоторые вызовы по-прежнему выполняются только в главном потоке, соответственно, в главном интерпретаторе. Это изменение не затрагивает обработку сигналов и существующий публичный C-API (`Py_AddPendingCall()`), которые по-прежнему ориентированы только на главный поток. Новая функциональность пока предназначена строго для внутреннего использования, поскольку последствия её применения за пределами некоторых очень ограниченных случаев ещё недостаточно изучены. Это изменение приводит функциональность в соответствие с намерением, заложенным несколько лет назад, когда состояние было сделано перинтерпретаторным (per-interpreter).
- [gh-105194](https://python-all.ru/3/whatsnew/changelog.html): Не экранировать обратной косой чертой спецификаторы формата f-строк. Патч от Pablo Galindo.
- [gh-105229](https://python-all.ru/3/whatsnew/changelog.html): Замена некоторых динамических суперинструкций на эквиваленты из одной инструкции.
- [gh-105162](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка в generator.close()/throw(), при которой внутренний итератор игнорировался, если внешний итератор был инструментирован.
- [gh-105164](https://python-all.ru/3/whatsnew/changelog.html): Обеспечена корректная настройка аннотаций, если единственная аннотация в блоке находится внутри блока [`match`](https://python-all.ru/3/reference/compound_stmts.html#match). Патч от Jelle Zijlstra.
- [gh-105148](https://python-all.ru/3/whatsnew/changelog.html): Сделать `_PyASTOptimizeState` внутренним для ast\_opt.c. Изменить `_PyAST_Optimize` так, чтобы он принимал два целых числа вместо указателя на эту структуру. Это избавляет от необходимости включать pycore\_compile.h в ast\_opt.c.
- [gh-104799](https://python-all.ru/3/whatsnew/changelog.html): Атрибуты узлов [`ast`](https://python-all.ru/3/library/ast.html#module-ast), являющиеся списками, теперь по умолчанию принимают значение пустого списка, если они опущены. Это означает, что некоторый код, который ранее вызывал [`TypeError`](https://python-all.ru/3/library/exceptions.html#TypeError) при использовании узла AST, теперь продолжит работу с пустым списком. Патч от Jelle Zijlstra.
- [gh-105111](https://python-all.ru/3/whatsnew/changelog.html): Удалены старые макросы trashcan `Py_TRASHCAN_SAFE_BEGIN` и `Py_TRASHCAN_SAFE_END`. Их следует заменить новыми макросами `Py_TRASHCAN_BEGIN` и `Py_TRASHCAN_END`.
- [gh-105035](https://python-all.ru/3/whatsnew/changelog.html): Исправлены вызовы [`super()`](https://python-all.ru/3/library/functions.html#super) для типов с пользовательской реализацией [`tp_getattro`](https://python-all.ru/3/c-api/typeobj.html#c.PyTypeObject.tp_getattro) (например, метатипов).
- [gh-105017](https://python-all.ru/3/whatsnew/changelog.html): Отображать строки с CRLF в строковом атрибуте tokenize как в токенах NL, так и NEWLINE. Патч от Marta Gómez.
- [gh-105013](https://python-all.ru/3/whatsnew/changelog.html): Исправлена обработка многострочных лямбда-выражений в скобках в [`inspect.getsource()`](https://python-all.ru/3/library/inspect.html#inspect.getsource). Патч от Pablo Galindo.
- [gh-105017](https://python-all.ru/3/whatsnew/changelog.html): Не включать дополнительный завершающий токен `NL` при разборе файлов со строками CRLF. Патч от Marta Gómez.
- [gh-104976](https://python-all.ru/3/whatsnew/changelog.html): Обеспечить, чтобы завершающие объекты `DEDENT` `tokenize.TokenInfo`, генерируемые модулем [`tokenize`](https://python-all.ru/3/library/tokenize.html#module-tokenize), сообщались как в Python 3.11. Патч от Pablo Galindo.
- [gh-104972](https://python-all.ru/3/whatsnew/changelog.html): Обеспечить, чтобы атрибут `line` в объектах `tokenize.TokenInfo` модуля [`tokenize`](https://python-all.ru/3/library/tokenize.html#module-tokenize) всегда был корректен. Патч от Pablo Galindo.
- [gh-104955](https://python-all.ru/3/whatsnew/changelog.html): Исправлена сигнатура для нового слота [`__release_buffer__()`](https://python-all.ru/3/reference/datamodel.html#object.__release_buffer__). Патч от Jelle Zijlstra.
- [gh-104690](https://python-all.ru/3/whatsnew/changelog.html): Запуск новых потоков и создание процессов через [`os.fork()`](https://python-all.ru/3/library/os.html#os.fork) во время завершения работы интерпретатора (например, из обработчиков [`atexit`](https://python-all.ru/3/library/atexit.html#module-atexit)) больше не поддерживается. Это может приводить к состоянию гонки между основным потоком среды выполнения Python, освобождающим состояния потоков, и внутренними процедурами [`threading`](https://python-all.ru/3/library/threading.html#module-threading), пытающимися выделить и использовать состояние только что созданных потоков. А также к тому, что дочерние процессы после форка пытаются использовать среду выполнения и состояние потока в состоянии завершения.
- [gh-104879](https://python-all.ru/3/whatsnew/changelog.html): Исправление падения при доступе к атрибуту `__module__` псевдонимов типов, определённых вне модуля. Исправление от Jelle Zijlstra.
- [gh-104825](https://python-all.ru/3/whatsnew/changelog.html): Токены, порождаемые модулем [`tokenize`](https://python-all.ru/3/library/tokenize.html#module-tokenize), больше не включают неявный символ `\n` в атрибуте `line`. Исправление от Pablo Galindo.
- [gh-104770](https://python-all.ru/3/whatsnew/changelog.html): Если генератор возвращает значение при закрытии, это значение теперь возвращается [`generator.close()`](https://python-all.ru/3/reference/expressions.html#generator.close).
- [gh-89091](https://python-all.ru/3/whatsnew/changelog.html): Возвращается исключение [`RuntimeWarning`](https://python-all.ru/3/library/exceptions.html#RuntimeWarning) для не ожиданных (unawaited) методов асинхронных генераторов, таких как [`asend()`](https://python-all.ru/3/reference/expressions.html#agen.asend), [`athrow()`](https://python-all.ru/3/reference/expressions.html#agen.athrow) и [`aclose()`](https://python-all.ru/3/reference/expressions.html#agen.aclose). Исправление от Kumar Aditya.
- [gh-96663](https://python-all.ru/3/whatsnew/changelog.html): Добавлено более понятное и более пригодное для анализа сообщение об ошибке при установке атрибутов в классах без `__dict__` и без соответствующего слота для атрибута.
- [gh-93627](https://python-all.ru/3/whatsnew/changelog.html): Обновлена реализация модуля pickle на Python, чтобы она соответствовала реализации на C. Для объектов, устанавливающих методы приведения (reduction) типа [`__reduce_ex__()`](https://python-all.ru/3/library/pickle.html#object.__reduce_ex__) или [`__reduce__()`](https://python-all.ru/3/library/pickle.html#object.__reduce__) в `None`, сериализация (pickling) будет приводить к [`TypeError`](https://python-all.ru/3/library/exceptions.html#TypeError).
- [gh-101006](https://python-all.ru/3/whatsnew/changelog.html): Улучшена обработка ошибок при чтении данных [`marshal`](https://python-all.ru/3/library/marshal.html#module-marshal).
- [gh-91095](https://python-all.ru/3/whatsnew/changelog.html): Специализированы вызовы большинства классов Python. В частности, любой класс, наследующий от `object` или другого класса Python и не переопределяющий `__new__`.

  Специализированная инструкция выполняет следующее:

  1. Создаёт объект (вызывая `object.__new__`)
  2. Помещает вспомогательный фрейм (shim frame) в стек фреймов (для очистки после `__init__`)
  3. Помещает фрейм для `__init__` в стек фреймов

  Ускоряет создание экземпляров большинства классов Python.

### Library

- [gh-110786](https://python-all.ru/3/whatsnew/changelog.html): CLI (интерфейс командной строки) [`sysconfig`](https://python-all.ru/3/library/sysconfig.html#module-sysconfig) теперь игнорирует [`BrokenPipeError`](https://python-all.ru/3/library/exceptions.html#BrokenPipeError), что позволяет ему корректно завершаться, если его вывод перенаправляется через канал и этот канал закрывается.
- [gh-103480](https://python-all.ru/3/whatsnew/changelog.html): Модуль [`sysconfig`](https://python-all.ru/3/library/sysconfig.html#module-sysconfig) теперь является пакетом, а не однофайловым модулем.
- [gh-110733](https://python-all.ru/3/whatsnew/changelog.html): Микрооптимизация: устранён вызов `min()`, `max()` внутри `BaseEventLoop._run_once()`.
- [gh-94597](https://python-all.ru/3/whatsnew/changelog.html): Добавлен [`asyncio.EventLoop`](https://python-all.ru/3/library/asyncio-eventloop.html#asyncio.EventLoop) для использования с именованным аргументом [`asyncio.run()`](https://python-all.ru/3/library/asyncio-runner.html#asyncio.run) *loop\_factory*, чтобы избежать вызова системы политик asyncio.
- [gh-110682](https://python-all.ru/3/whatsnew/changelog.html): [`runtime-checkable protocols`](https://python-all.ru/3/library/typing.html#typing.runtime_checkable) раньше считал `__match_args__` членом протокола в `__instancecheck__`, если он присутствовал в протоколе. Теперь этот атрибут игнорируется при наличии.
- [gh-110488](https://python-all.ru/3/whatsnew/changelog.html): Исправлены несколько проблем в [`pathlib.PurePath.with_name()`](https://python-all.ru/3/library/pathlib.html#pathlib.PurePath.with_name): одиночная точка ошибочно считалась допустимым именем, а в `PureWindowsPath` имя с альтернативным потоком данных NTFS, например `a:b`, ошибочно считалось недопустимым.
- [gh-110590](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка в `_sre.compile()`, когда [`TypeError`](https://python-all.ru/3/library/exceptions.html#TypeError) перезаписывался [`OverflowError`](https://python-all.ru/3/library/exceptions.html#OverflowError), если аргумент *code* был списком нецелых значений.
- [gh-65052](https://python-all.ru/3/whatsnew/changelog.html): Предотвращение аварийного завершения [`pdb`](https://python-all.ru/3/library/pdb.html#module-pdb) при попытке отобразить неотображаемые объекты
- [gh-110519](https://python-all.ru/3/whatsnew/changelog.html): Предупреждение об устаревании о нецелом числе в [`gettext`](https://python-all.ru/3/library/gettext.html#module-gettext) теперь всегда указывает на строку в пользовательском коде, где используется функция или метод gettext. Раньше оно могло указывать на строку в коде `gettext`.
- [gh-89902](https://python-all.ru/3/whatsnew/changelog.html): Объявлен устаревшим нестандартный спецификатор формата «N» для [`decimal.Decimal`](https://python-all.ru/3/library/decimal.html#decimal.Decimal). Он не был документирован и поддерживался только в реализации на C.
- [gh-110378](https://python-all.ru/3/whatsnew/changelog.html): Менеджеры контекста [`contextmanager()`](https://python-all.ru/3/library/contextlib.html#contextlib.contextmanager) и [`asynccontextmanager()`](https://python-all.ru/3/library/contextlib.html#contextlib.asynccontextmanager) теперь закрывают недопустимый нижележащий объект-генератор, который выдаёт более одного значения.
- [gh-106670](https://python-all.ru/3/whatsnew/changelog.html): В [`pdb`](https://python-all.ru/3/library/pdb.html#module-pdb) добавлена служебная переменная `$_exception` для посмертной отладки.
- [gh-110365](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка в [`termios.tcsetattr()`](https://python-all.ru/3/library/termios.html#termios.tcsetattr), из-за которой текущие ошибки перезаписывались при разборе целых чисел из списка `term`.
- [gh-109653](https://python-all.ru/3/whatsnew/changelog.html): Небольшое улучшение времени импорта нескольких модулей стандартной библиотеки за счёт отсрочки импорта [`warnings`](https://python-all.ru/3/library/warnings.html#module-warnings) внутри этих модулей. Исправление от Alex Waygood.
- [gh-110273](https://python-all.ru/3/whatsnew/changelog.html): [`dataclasses.replace()`](https://python-all.ru/3/library/dataclasses.html#dataclasses.replace) теперь возбуждает TypeError вместо ValueError, если указан именованный аргумент для поля, объявленного с init=False, или пропущен именованный аргумент для обязательного поля InitVar.
- [gh-110249](https://python-all.ru/3/whatsnew/changelog.html): Добавлен флаг `--inline-caches` в командную строку `dis`.
- [gh-109653](https://python-all.ru/3/whatsnew/changelog.html): Исправление регрессии в версии Python 3.12, связанной со временем импорта [`random`](https://python-all.ru/3/library/random.html#module-random). Исправление от Alex Waygood.
- [gh-110222](https://python-all.ru/3/whatsnew/changelog.html): Добавлена поддержка объектов struct sequence в [`copy.replace()`](https://python-all.ru/3/library/copy.html#copy.replace). Исправление от Xuehai Pan.
- [gh-109649](https://python-all.ru/3/whatsnew/changelog.html): [`multiprocessing`](https://python-all.ru/3/library/multiprocessing.html#module-multiprocessing), [`concurrent.futures`](https://python-all.ru/3/library/concurrent.futures.html#module-concurrent.futures), [`compileall`](https://python-all.ru/3/library/compileall.html#module-compileall): замените [`os.cpu_count()`](https://python-all.ru/3/library/os.html#os.cpu_count) на [`os.process_cpu_count()`](https://python-all.ru/3/library/os.html#os.process_cpu_count) для выбора количества рабочих потоков и процессов по умолчанию. Получать привязку к ЦП, если поддерживается. Патч от Victor Stinner.
- [gh-110150](https://python-all.ru/3/whatsnew/changelog.html): Исправлена обработка базового случая в statistics.quantiles. Теперь допускается одна точка данных.
- [gh-110036](https://python-all.ru/3/whatsnew/changelog.html): В Windows multiprocessing `Popen.terminate()` теперь перехватывает [`PermissionError`](https://python-all.ru/3/library/exceptions.html#PermissionError) и получает код завершения процесса. Если процесс все еще выполняется, снова вызывается `PermissionError`. В противном случае процесс завершился как ожидалось: сохраняется его код завершения. Патч от Victor Stinner.
- [gh-110038](https://python-all.ru/3/whatsnew/changelog.html): Исправлена проблема, из-за которой `KqueueSelector.select()` не возвращал все готовые события в некоторых случаях, когда файловый дескриптор зарегистрирован как для чтения, так и для записи.
- [gh-110045](https://python-all.ru/3/whatsnew/changelog.html): Update the [`symtable`](https://python-all.ru/3/library/symtable.html#module-symtable) module to support the new scopes introduced by [**PEP 695**](https://python-all.ru/3/whatsnew/changelog.html).
- [gh-88402](https://python-all.ru/3/whatsnew/changelog.html): Добавлены новые переменные в [`sysconfig.get_config_vars()`](https://python-all.ru/3/library/sysconfig.html#sysconfig.get_config_vars) на Windows: `LIBRARY`, `LDLIBRARY`, `LIBDIR`, `SOABI` и `Py_NOGIL`.
- [gh-109631](https://python-all.ru/3/whatsnew/changelog.html): Функции [`re`](https://python-all.ru/3/library/re.html#module-re), такие как [`re.findall()`](https://python-all.ru/3/library/re.html#re.findall), [`re.split()`](https://python-all.ru/3/library/re.html#re.split), [`re.search()`](https://python-all.ru/3/library/re.html#re.search) и [`re.sub()`](https://python-all.ru/3/library/re.html#re.sub), выполняющие короткие повторяющиеся совпадения, теперь могут быть прерваны пользователем.
- [gh-109653](https://python-all.ru/3/whatsnew/changelog.html): Время импорта [`email.utils`](https://python-all.ru/3/library/email.utils.html#module-email.utils) сокращено примерно на 43%. В результате время импорта [`email.message`](https://python-all.ru/3/library/email.message.html#module-email.message) снизилось примерно на 18%, что в свою очередь уменьшает время импорта [`importlib.metadata`](https://python-all.ru/3/library/importlib.metadata.html#module-importlib.metadata) примерно на 6%. Патч от Alex Waygood.
- [gh-109818](https://python-all.ru/3/whatsnew/changelog.html): Исправлено, что [`reprlib.recursive_repr()`](https://python-all.ru/3/library/reprlib.html#reprlib.recursive_repr) не копировал `__type_params__` из декорированной функции.
- [gh-109047](https://python-all.ru/3/whatsnew/changelog.html): [`concurrent.futures`](https://python-all.ru/3/library/concurrent.futures.html#module-concurrent.futures): Поток *менеджера исполнителя* теперь перехватывает исключения при добавлении элемента в *очередь вызовов*. Во время финализации Python создание нового потока может вызывать [`RuntimeError`](https://python-all.ru/3/library/exceptions.html#RuntimeError). Перехватывайте исключение и вызывайте `terminate_broken()` в этом случае. Патч от Victor Stinner.
- [gh-109782](https://python-all.ru/3/whatsnew/changelog.html): Обеспечена идентичность сигнатуры [`os.path.isdir()`](https://python-all.ru/3/library/os.path.html#os.path.isdir) на всех платформах. Патч от Amin Alaee.
- [gh-109653](https://python-all.ru/3/whatsnew/changelog.html): Улучшено время импорта [`functools`](https://python-all.ru/3/library/functools.html#module-functools) примерно на 13%. Патч от Alex Waygood.
- [gh-109590](https://python-all.ru/3/whatsnew/changelog.html): [`shutil.which()`](https://python-all.ru/3/library/shutil.html#shutil.which) будет предпочитать файлы с расширением из `PATHEXT`, если указанный режим включает `os.X_OK` на win32. Если совпадение с `PATHEXT` не найдено, может быть возвращен файл без расширения из `PATHEXT`. Это изменение сделает поведение `shutil.which()` более похожим на предыдущее поведение в Python 3.11.
- [gh-109653](https://python-all.ru/3/whatsnew/changelog.html): Время импорта [`enum`](https://python-all.ru/3/library/enum.html#module-enum) сокращено более чем на 50%. Патч от Alex Waygood.
- [gh-109593](https://python-all.ru/3/whatsnew/changelog.html): Предотвращение взаимоблокировки при повторном вызове отслеживателя ресурсов multiprocessing. Такой повторный вызов, хотя и маловероятен, может произойти, если проход сборщика мусора вызывает финализатор для объекта multiprocessing, такого как SemLock.
- [gh-109653](https://python-all.ru/3/whatsnew/changelog.html): Время импорта [`typing`](https://python-all.ru/3/library/typing.html#module-typing) сокращено примерно на треть. Патч от Alex Waygood.
- [gh-109649](https://python-all.ru/3/whatsnew/changelog.html): Добавлена функция [`os.process_cpu_count()`](https://python-all.ru/3/library/os.html#os.process_cpu_count) для получения количества логических ЦП, доступных вызывающему потоку текущего процесса. Патч от Victor Stinner.
- [gh-74481](https://python-all.ru/3/whatsnew/changelog.html): Добавлены константы, связанные с `set_error_mode`, в модуль `msvcrt` в отладочной сборке Python.
- [gh-109613](https://python-all.ru/3/whatsnew/changelog.html): Исправлены [`os.stat()`](https://python-all.ru/3/library/os.html#os.stat) и [`os.DirEntry.stat()`](https://python-all.ru/3/library/os.html#os.DirEntry.stat): добавлена проверка исключений. Ранее, в отладочной сборке Python, эти функции могли вызывать фатальную ошибку Python (и аварийно завершать процесс), когда функция завершалась успешно с установленным исключением. Патч от Victor Stinner.
- [gh-109599](https://python-all.ru/3/whatsnew/changelog.html): Тип объектов PyCapsule теперь доступен как `types.CapsuleType`.
- [gh-109109](https://python-all.ru/3/whatsnew/changelog.html): Теперь можно получать исходные цепочки TLS-сертификатов из TLS-соединений с помощью методов [`ssl.SSLSocket.get_verified_chain()`](https://python-all.ru/3/library/ssl.html#ssl.SSLSocket.get_verified_chain) и [`ssl.SSLSocket.get_unverified_chain()`](https://python-all.ru/3/library/ssl.html#ssl.SSLSocket.get_unverified_chain).

  Предоставлено Mateusz Nowak.
- [gh-109559](https://python-all.ru/3/whatsnew/changelog.html): База данных [`unicodedata`](https://python-all.ru/3/library/unicodedata.html#module-unicodedata) обновлена до Unicode 15.1.0.
- [gh-109543](https://python-all.ru/3/whatsnew/changelog.html): Удалена ненужная проверка [`hasattr()`](https://python-all.ru/3/library/functions.html#hasattr) при создании [`typing.TypedDict`](https://python-all.ru/3/library/typing.html#typing.TypedDict).
- [gh-109495](https://python-all.ru/3/whatsnew/changelog.html): Удалены лишние `__slots__` в реализации [`datetime`](https://python-all.ru/3/library/datetime.html#datetime.datetime) на чистом Python для уменьшения объема памяти, так как они уже определены в суперклассе. Патч от James Hilton-Balfe.
- [gh-109461](https://python-all.ru/3/whatsnew/changelog.html): [`logging`](https://python-all.ru/3/library/logging.html#module-logging): Используется менеджер контекста для захвата блокировки.
- [gh-109096](https://python-all.ru/3/whatsnew/changelog.html): [`http.server.CGIHTTPRequestHandler`](https://python-all.ru/3/library/http.server.html#http.server.CGIHTTPRequestHandler) признан устаревшим для удаления в 3.15. Его дизайн устарел, и веб-мир уже давно ушёл от CGI.
- [gh-109409](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка, когда можно было унаследовать замороженный dataclass от нескольких родителей, некоторые из которых возможно не были заморожены.
- [gh-109375](https://python-all.ru/3/whatsnew/changelog.html): Команда [`pdb`](https://python-all.ru/3/library/pdb.html#module-pdb) `alias` теперь предотвращает регистрацию\\псевдонимов без аргументов.
- [gh-109319](https://python-all.ru/3/whatsnew/changelog.html): Поле `dis.HAVE_ARGUMENT` объявлено устаревшим в пользу `dis.hasarg`.
- [gh-107219](https://python-all.ru/3/whatsnew/changelog.html): Исправлено состояние гонки в `concurrent.futures`. Когда процесс в пуле процессов был аварийно завершен (пока future выполнялась или ожидала), закрывается конец записи соединения. Если очередь вызовов заблокирована отправкой байтов рабочему процессу, закрытие конца записи соединения прерывает отправку, так что очередь может быть закрыта. Патч от Victor Stinner.
- [gh-66143](https://python-all.ru/3/whatsnew/changelog.html): Объект [`codecs.CodecInfo`](https://python-all.ru/3/library/codecs.html#codecs.CodecInfo) теперь можно копировать и сериализовать. Патч от Robert Lehmann и Furkan Onder.
- [gh-109187](https://python-all.ru/3/whatsnew/changelog.html): [`pathlib.Path.resolve()`](https://python-all.ru/3/library/pathlib.html#pathlib.Path.resolve) теперь обрабатывает циклы из симлинков, как и другие ошибки: в строгом режиме выбрасывается [`OSError`](https://python-all.ru/3/library/exceptions.html#OSError), а в нестрогом – исключение не выбрасывается.
- [gh-50644](https://python-all.ru/3/whatsnew/changelog.html): Попытки сериализовать (pickle) или создать поверхностную или глубокую копию потоков [`codecs`](https://python-all.ru/3/library/codecs.html#module-codecs) теперь вызывают TypeError. Ранее копирование завершалось ошибкой RecursionError, а сериализация давала неверные результаты, что в итоге приводило к ошибке RecursionError при десериализации.
- [gh-109174](https://python-all.ru/3/whatsnew/changelog.html): Добавлена поддержка [`types.SimpleNamespace`](https://python-all.ru/3/library/types.html#types.SimpleNamespace) в [`copy.replace()`](https://python-all.ru/3/library/copy.html#copy.replace).
- [gh-109164](https://python-all.ru/3/whatsnew/changelog.html): [`pdb`](https://python-all.ru/3/library/pdb.html#module-pdb): замена [`getopt`](https://python-all.ru/3/library/getopt.html#module-getopt) на [`argparse`](https://python-all.ru/3/library/argparse.html#module-argparse) для разбора аргументов командной строки.
- [gh-109151](https://python-all.ru/3/whatsnew/changelog.html): включение функций редактирования `readline` в [интерфейсе командной строки sqlite3](https://python-all.ru/3/library/sqlite3.html#sqlite3-cli) (`python -m sqlite3`).
- [gh-108987](https://python-all.ru/3/whatsnew/changelog.html): Исправлено состояние гонки [`_thread.start_new_thread()`](https://python-all.ru/3/library/_thread.html#thread.start_new_thread). Если поток создаётся во время завершения работы Python, вновь созданный поток теперь завершается немедленно, вместо попытки доступа к освобождённой памяти, что приводило к краху. Исправление от Виктора Стиннера.
- [gh-108682](https://python-all.ru/3/whatsnew/changelog.html): Enum: требуется `names=()` или `type=...` для создания пустого перечисления с помощью функционального синтаксиса.
- [gh-109033](https://python-all.ru/3/whatsnew/changelog.html): Исключения, выбрасываемые встроенной функцией os.utime, теперь содержат имя соответствующего файла.
- [gh-108843](https://python-all.ru/3/whatsnew/changelog.html): Исправлена проблема в [`ast.unparse()`](https://python-all.ru/3/library/ast.html#ast.unparse) при обратном разборе f-строк, содержащих много типов кавычек.
- [gh-108469](https://python-all.ru/3/whatsnew/changelog.html): [`ast.unparse()`](https://python-all.ru/3/library/ast.html#ast.unparse) теперь поддерживает новый синтаксис [f-строк](https://python-all.ru/3/glossary.html#term-f-string), введённый в Python 3.12. Обратите внимание, что кавычки f-строк перевыбираются для простоты в новом синтаксисе. (Исправление от Steven Sun)
- [gh-108751](https://python-all.ru/3/whatsnew/changelog.html): Добавлена функция [`copy.replace()`](https://python-all.ru/3/library/copy.html#copy.replace), позволяющая создать изменённую копию объекта. Она поддерживает именованные кортежи, классы данных и многие другие объекты.
- [gh-108682](https://python-all.ru/3/whatsnew/changelog.html): Enum: выбрасывается [`TypeError`](https://python-all.ru/3/library/exceptions.html#TypeError), если `super().__new__()` вызывается из пользовательского `__new__`.
- [gh-108278](https://python-all.ru/3/whatsnew/changelog.html): Объявлено устаревшим передачу колбэка по ключевому слову для следующих API [`sqlite3.Connection`](https://python-all.ru/3/library/sqlite3.html#sqlite3.Connection):

  - [`set_authorizer()`](https://python-all.ru/3/library/sqlite3.html#sqlite3.Connection.set_authorizer)
  - [`set_progress_handler()`](https://python-all.ru/3/library/sqlite3.html#sqlite3.Connection.set_progress_handler)
  - [`set_trace_callback()`](https://python-all.ru/3/library/sqlite3.html#sqlite3.Connection.set_trace_callback)

  Пострадавшие параметры станут только позиционными в Python 3.15.

  Исправление от Erlend E. Aasland.
- [gh-105829](https://python-all.ru/3/whatsnew/changelog.html): Исправлена взаимоблокировка concurrent.futures.ProcessPoolExecutor
- [gh-108295](https://python-all.ru/3/whatsnew/changelog.html): Исправлены крахи, связанные с использованием слабых ссылок на [`typing.TypeVar`](https://python-all.ru/3/library/typing.html#typing.TypeVar).
- [gh-108463](https://python-all.ru/3/whatsnew/changelog.html): Обеспечена корректная работа выражений/инструкций в pdb
- [gh-108277](https://python-all.ru/3/whatsnew/changelog.html): Добавлены [`os.timerfd_create()`](https://python-all.ru/3/library/os.html#os.timerfd_create), [`os.timerfd_settime()`](https://python-all.ru/3/library/os.html#os.timerfd_settime), [`os.timerfd_gettime()`](https://python-all.ru/3/library/os.html#os.timerfd_gettime), [`os.timerfd_settime_ns()`](https://python-all.ru/3/library/os.html#os.timerfd_settime_ns) и [`os.timerfd_gettime_ns()`](https://python-all.ru/3/library/os.html#os.timerfd_gettime_ns) для предоставления низкоуровневого интерфейса для файлового дескриптора уведомлений таймера Linux.
- [gh-107811](https://python-all.ru/3/whatsnew/changelog.html): [`tarfile`](https://python-all.ru/3/library/tarfile.html#module-tarfile): извлечение членов с чрезмерно большими UID или GID (например, в ОС с 32-битным `id_t`) теперь завершается ошибкой так же, как и неудачная установка ID.
- [gh-64662](https://python-all.ru/3/whatsnew/changelog.html): Исправлена поддержка виртуальных таблиц в [`sqlite3.Connection.iterdump()`](https://python-all.ru/3/library/sqlite3.html#sqlite3.Connection.iterdump). Исправление от Aviv Palivoda.
- [gh-108111](https://python-all.ru/3/whatsnew/changelog.html): Исправлена регрессия, появившаяся в [gh-101251](https://python-all.ru/3/whatsnew/changelog.html) для версии 3.12, приводившая к неверному вычислению смещения в `gzip.GzipFile.seek()`.
- [gh-108294](https://python-all.ru/3/whatsnew/changelog.html): [`time.sleep()`](https://python-all.ru/3/library/time.html#time.sleep) теперь генерирует аудиторское событие.
- [gh-108278](https://python-all.ru/3/whatsnew/changelog.html): Объявлено устаревшим передачу имени, количества аргументов и вызываемого объекта в качестве ключевых аргументов для следующих API [`sqlite3.Connection`](https://python-all.ru/3/library/sqlite3.html#sqlite3.Connection):

  - [`create_function()`](https://python-all.ru/3/library/sqlite3.html#sqlite3.Connection.create_function)
  - [`create_aggregate()`](https://python-all.ru/3/library/sqlite3.html#sqlite3.Connection.create_aggregate)

  Пострадавшие параметры станут только позиционными в Python 3.15.

  Исправление от Erlend E. Aasland.
- [gh-108322](https://python-all.ru/3/whatsnew/changelog.html): Ускорение NormalDist.samples() за счёт использования метода обратной функции распределения вместо вызова random.gauss().
- [gh-83417](https://python-all.ru/3/whatsnew/changelog.html): Добавлена возможность для venv создавать файл `.gitignore`, который приводит к игнорированию созданного окружения Git-ом. Эта возможность включена по умолчанию при вызове venv через его CLI.
- [gh-105736](https://python-all.ru/3/whatsnew/changelog.html): Чистая реализация [`OrderedDict`](https://python-all.ru/3/library/collections.html#collections.OrderedDict) на Python приведена в соответствие с версией на C. Теперь обе версии настраивают своё внутреннее состояние в `__new__`. Ранее чистая версия на Python выполняла настройку в `__init__`.
- [gh-108083](https://python-all.ru/3/whatsnew/changelog.html): Исправлены ошибки в конструкторе [`sqlite3.Connection`](https://python-all.ru/3/library/sqlite3.html#sqlite3.Connection) и [`sqlite3.Connection.close()`](https://python-all.ru/3/library/sqlite3.html#sqlite3.Connection.close), где могли утекать исключения. Исправление от Erlend E. Aasland.
- [gh-107932](https://python-all.ru/3/whatsnew/changelog.html): Исправлен модуль `dis` для корректного отображения и вывода байт-кода, не имеющего строк исходного кода.
- [gh-105539](https://python-all.ru/3/whatsnew/changelog.html): [`sqlite3`](https://python-all.ru/3/library/sqlite3.html#module-sqlite3) теперь генерирует [`ResourceWarning`](https://python-all.ru/3/library/exceptions.html#ResourceWarning), если объект [`sqlite3.Connection`](https://python-all.ru/3/library/sqlite3.html#sqlite3.Connection) не `closed` явно. Исправление от Erlend E. Aasland.
- [gh-107995](https://python-all.ru/3/whatsnew/changelog.html): Атрибут `__module__` у экземпляров [`functools.cached_property`](https://python-all.ru/3/library/functools.html#functools.cached_property) теперь указывает на имя модуля, в котором определён cached\_property, а не на «functools». Это означает, что доктесты в строках документации `cached_property` теперь корректно собираются модулем [`doctest`](https://python-all.ru/3/library/doctest.html#module-doctest). Исправление от Тайлера Смарта.
- [gh-107963](https://python-all.ru/3/whatsnew/changelog.html): Исправлено [`multiprocessing.set_forkserver_preload()`](https://python-all.ru/3/library/multiprocessing.html#multiprocessing.set_forkserver_preload): теперь проверяется переданный список имён модулей. Исправление от Donghee Na.
- [gh-106242](https://python-all.ru/3/whatsnew/changelog.html): Исправлено [`os.path.normpath()`](https://python-all.ru/3/library/os.path.html#os.path.normpath): теперь обрабатываются встроенные нулевые символы без усечения пути.
- [gh-81555](https://python-all.ru/3/whatsnew/changelog.html): [`xml.dom.minidom`](https://python-all.ru/3/library/xml.dom.minidom.html#module-xml.dom.minidom) теперь экранирует `"` только в атрибутах.
- [gh-50002](https://python-all.ru/3/whatsnew/changelog.html): [`xml.dom.minidom`](https://python-all.ru/3/library/xml.dom.minidom.html#module-xml.dom.minidom) теперь сохраняет пробелы в атрибутах.
- [gh-93057](https://python-all.ru/3/whatsnew/changelog.html): Передача более одного позиционного аргумента в конструкторы [`sqlite3.connect()`](https://python-all.ru/3/library/sqlite3.html#sqlite3.connect) и [`sqlite3.Connection`](https://python-all.ru/3/library/sqlite3.html#sqlite3.Connection) объявлена устаревшей. Остальные параметры станут только ключевыми в Python 3.15. Исправление от Erlend E. Aasland.
- [gh-76913](https://python-all.ru/3/whatsnew/changelog.html): Добавлен параметр/функция *merge\_extra* в [`logging.LoggerAdapter`](https://python-all.ru/3/library/logging.html#logging.LoggerAdapter)
- [gh-107913](https://python-all.ru/3/whatsnew/changelog.html): Исправлена возможная потеря значений `errno` и `winerror` в исключениях [`OSError`](https://python-all.ru/3/library/exceptions.html#OSError), если они были очищены или изменены кодом очистки до создания объекта исключения.
- [gh-107845](https://python-all.ru/3/whatsnew/changelog.html): [`tarfile.data_filter()`](https://python-all.ru/3/library/tarfile.html#tarfile.data_filter) теперь учитывает расположение симлинков при определении их цели, поэтому больше не будет отклонять некоторые корректные tar-архивы с `LinkOutsideDestinationError`.
- [gh-107812](https://python-all.ru/3/whatsnew/changelog.html): Расширена поддержка netlink в сокетах для платформы FreeBSD.
- [gh-107805](https://python-all.ru/3/whatsnew/changelog.html): Исправлены сигнатуры функций, генерируемых на уровне модуля, в [`turtle`](https://python-all.ru/3/library/turtle.html#module-turtle).
- [gh-107782](https://python-all.ru/3/whatsnew/changelog.html): [`pydoc`](https://python-all.ru/3/library/pydoc.html#module-pydoc) теперь может показывать сигнатуры, которые невозможно представить в Python, например для `getattr` и `dict.pop`.
- [gh-56166](https://python-all.ru/3/whatsnew/changelog.html): Объявлена устаревшей передача необязательных аргументов *maxsplit*, *count* и *flags* в качестве позиционных в функциях уровня модуля [`re.split()`](https://python-all.ru/3/library/re.html#re.split), [`re.sub()`](https://python-all.ru/3/library/re.html#re.sub) и [`re.subn()`](https://python-all.ru/3/library/re.html#re.subn). Их следует передавать только по ключу.
- [gh-107710](https://python-all.ru/3/whatsnew/changelog.html): Ускорена работа [`logging.getHandlerNames()`](https://python-all.ru/3/library/logging.html#logging.getHandlerNames).
- [gh-107715](https://python-all.ru/3/whatsnew/changelog.html): Исправлено [`doctest.DocTestFinder.find()`](https://python-all.ru/3/library/doctest.html#doctest.DocTestFinder.find) при наличии имён классов со специальными символами. Исправление от Gertjan van Zwieten.
- [gh-100814](https://python-all.ru/3/whatsnew/changelog.html): Передача вызываемого объекта в качестве значения опции для изображения Tkinter теперь вызывает ожидаемое TclError вместо AttributeError.
- [gh-72684](https://python-all.ru/3/whatsnew/changelog.html): Добавлены методы виджета [`tkinter`](https://python-all.ru/3/library/tkinter.html#module-tkinter): `tk_busy_hold()`, `tk_busy_configure()`, `tk_busy_cget()`, `tk_busy_forget()`, `tk_busy_current()` и `tk_busy_status()`.
- [gh-106684](https://python-all.ru/3/whatsnew/changelog.html): Теперь вызывается [`ResourceWarning`](https://python-all.ru/3/library/exceptions.html#ResourceWarning), если [`asyncio.StreamWriter`](https://python-all.ru/3/library/asyncio-stream.html#asyncio.StreamWriter) не закрыт, что приводит к утечкам памяти. Исправление от Kumar Aditya.
- [gh-107465](https://python-all.ru/3/whatsnew/changelog.html): Добавлен метод класса [`pathlib.Path.from_uri()`](https://python-all.ru/3/library/pathlib.html#pathlib.Path.from_uri).
- [gh-107077](https://python-all.ru/3/whatsnew/changelog.html): Оказалось, что в некоторых условиях OpenSSL возвращает `SSL_ERROR_SYSCALL` вместо `SSL_ERROR_SSL` при неудачной проверке сертификата, но параметры ошибки всё равно содержат `ERR_LIB_SSL` и `SSL_R_CERTIFICATE_VERIFY_FAILED`. Теперь эта ситуация обнаруживается и возбуждается соответствующее `ssl.SSLCertVerificationError`. Исправление от Pablo Galindo.
- [gh-107576](https://python-all.ru/3/whatsnew/changelog.html): Исправлено [`types.get_original_bases()`](https://python-all.ru/3/library/types.html#types.get_original_bases): теперь `__orig_bases__` возвращается, только если он присутствует непосредственно в `cls`. Исправление от James Hilton-Balfe.
- [gh-105481](https://python-all.ru/3/whatsnew/changelog.html): Удалены `opcode.is_pseudo`, `opcode.MIN_PSEUDO_OPCODE` и `opcode.MAX_PSEUDO_OPCODE`, которые были добавлены в 3.12, никогда не документировались и не предназначались для внешнего использования.
- [gh-105481](https://python-all.ru/3/whatsnew/changelog.html): `opcode.ENABLE_SPECIALIZATION` (добавлен в 3.12, но никогда не документировался и не предназначался для внешнего использования) перемещён в `_opcode.ENABLE_SPECIALIZATION`, где тесты могут к нему обращаться.
- [gh-107396](https://python-all.ru/3/whatsnew/changelog.html): tarfiles; Исправлено использование self.exception до присваивания при декомпрессии gzip.
- [gh-107409](https://python-all.ru/3/whatsnew/changelog.html): Установлен атрибут `__wrapped__` в [`reprlib.recursive_repr()`](https://python-all.ru/3/library/reprlib.html#reprlib.recursive_repr).
- [gh-107406](https://python-all.ru/3/whatsnew/changelog.html): Реализован новый метод `__repr__()` для [`struct.Struct`](https://python-all.ru/3/library/struct.html#struct.Struct). Теперь он возвращает `Struct(<format repr>)`.
- [gh-107369](https://python-all.ru/3/whatsnew/changelog.html): Оптимизирован [`textwrap.indent()`](https://python-all.ru/3/library/textwrap.html#textwrap.indent). Он работает примерно на 30% быстрее для больших входных данных. Исправление от Inada Naoki.
- [gh-78722](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка, при которой [`pathlib.Path.iterdir()`](https://python-all.ru/3/library/pathlib.html#pathlib.Path.iterdir) не вызывал [`OSError`](https://python-all.ru/3/library/exceptions.html#OSError) до итерации.
- [gh-105578](https://python-all.ru/3/whatsnew/changelog.html): Объявлен устаревшим [`typing.AnyStr`](https://python-all.ru/3/library/typing.html#typing.AnyStr) в пользу нового синтаксиса параметров типа. См. PEP 695.
- [gh-62519](https://python-all.ru/3/whatsnew/changelog.html): [`gettext.pgettext()`](https://python-all.ru/3/library/gettext.html#gettext.pgettext) теперь ищет определения множественного числа, если перевод не найден.
- [gh-107089](https://python-all.ru/3/whatsnew/changelog.html): Хранилища, открытые с [`shelve.open()`](https://python-all.ru/3/library/shelve.html#shelve.open), имеют гораздо более быстрый метод `clear()`. Исправление от James Cave.
- [gh-82500](https://python-all.ru/3/whatsnew/changelog.html): Исправлено переполнение на 32-битных системах с реализацией [`asyncio`](https://python-all.ru/3/library/asyncio.html#module-asyncio) [`os.sendfile()`](https://python-all.ru/3/library/os.html#os.sendfile).
- [gh-83006](https://python-all.ru/3/whatsnew/changelog.html): Описание поведения [`shutil.disk_usage()`](https://python-all.ru/3/library/shutil.html#shutil.disk_usage) для не смонтированных файловых систем на Unix.
- [gh-65495](https://python-all.ru/3/whatsnew/changelog.html): Использование строчных `mail from` и `rcpt to` в `smptlib.SMTP`.
- [gh-106186](https://python-all.ru/3/whatsnew/changelog.html): Отказ от сообщения о дефекте `MultipartInvariantViolationDefect`, когда класс [`email.parser.Parser`](https://python-all.ru/3/library/email.parser.html#email.parser.Parser) используется для разбора писем с `headersonly=True`.
- [gh-105002](https://python-all.ru/3/whatsnew/changelog.html): Исправление неверного результата метода `PurePath.relative_to()` при попытке обхода сегмента «`..`» в *other* с включённым *walk\_up*. В этом случае теперь выбрасывается исключение [`ValueError`](https://python-all.ru/3/library/exceptions.html#ValueError).
- [gh-106739](https://python-all.ru/3/whatsnew/changelog.html): Добавление `rtype_cache` в предупреждение (в дополнение к типу утекших объектов и их количеству, уже включённых в сообщение) для упрощения отладки утечек, когда процесс отслеживания ресурсов multiprocessing находит утекшие объекты при завершении. Это помогает быстрее определить, что именно утекло и/или почему объект не был корректно освобождён.
- [gh-106751](https://python-all.ru/3/whatsnew/changelog.html): Оптимизация `SelectSelector.select()` для случая с большим числом итераций. Патч от Donghee Na.
- [gh-106751](https://python-all.ru/3/whatsnew/changelog.html): Оптимизация `_PollLikeSelector.select()` для случая с большим числом итераций.
- [gh-106751](https://python-all.ru/3/whatsnew/changelog.html): Оптимизация `KqueueSelector.select()` для случая с большим числом итераций. Патч от Donghee Na.
- [gh-106831](https://python-all.ru/3/whatsnew/changelog.html): Исправление потенциально отсутствующей проверки `NULL` результата `d2i_SSL_SESSION` в `_ssl.c`.
- [gh-105481](https://python-all.ru/3/whatsnew/changelog.html): The various opcode lists in the [`dis`](https://python-all.ru/3/library/dis.html#module-dis) module are now generated from bytecodes.c instead of explicitly constructed in opcode.py.
- [gh-106727](https://python-all.ru/3/whatsnew/changelog.html): Сделать [`inspect.getsource()`](https://python-all.ru/3/library/inspect.html#inspect.getsource) более умным для классов с одинаковыми именами определений.
- [gh-106789](https://python-all.ru/3/whatsnew/changelog.html): Удаление импорта [`pprint`](https://python-all.ru/3/library/pprint.html#module-pprint) из [`sysconfig`](https://python-all.ru/3/library/sysconfig.html#module-sysconfig).
- [gh-105726](https://python-all.ru/3/whatsnew/changelog.html): Добавлен `__slots__` в [`contextlib.AbstractContextManager`](https://python-all.ru/3/library/contextlib.html#contextlib.AbstractContextManager) и [`contextlib.AbstractAsyncContextManager`](https://python-all.ru/3/library/contextlib.html#contextlib.AbstractAsyncContextManager), чтобы дочерние классы могли использовать `__slots__`.
- [gh-106774](https://python-all.ru/3/whatsnew/changelog.html): Обновление встроенной копии pip до версии 23.2.1.
- [gh-106751](https://python-all.ru/3/whatsnew/changelog.html): [`selectors`](https://python-all.ru/3/library/selectors.html#module-selectors): Оптимизация кода `EpollSelector.select()` путём выноса части кода за пределы цикла.
- [gh-106752](https://python-all.ru/3/whatsnew/changelog.html): Исправлено несколько ошибок в `zipfile.Path.match()`, в том числе: в `name` больше не учитываются разделители Windows (они и не должны были); исправлены операции `suffix`/`suffixes`/`stem`, когда имя файла отсутствует, а Path находится не в корне zip-архива; переработан glob для повышения производительности и более корректного сопоставления.
- [gh-105293](https://python-all.ru/3/whatsnew/changelog.html): Удаление вызова `SSL_CTX_set_session_id_context` при создании контекста на стороне клиента в модуле [`ssl`](https://python-all.ru/3/library/ssl.html#module-ssl).
- [gh-106734](https://python-all.ru/3/whatsnew/changelog.html): Отключение автодополнения по табуляции в многострочном режиме [`pdb`](https://python-all.ru/3/library/pdb.html#module-pdb).
- [gh-105481](https://python-all.ru/3/whatsnew/changelog.html): Предоставление метаданных опкодов через `_opcode`.
- [gh-106670](https://python-all.ru/3/whatsnew/changelog.html): Добавление новой команды `exceptions` в отладчик Pdb. Она позволяет переключаться между цепочками исключений при посмертной отладке.
- [gh-106602](https://python-all.ru/3/whatsnew/changelog.html): Добавление \_\_copy\_\_ и \_\_deepcopy\_\_ в [`enum`](https://python-all.ru/3/library/enum.html#module-enum).
- [gh-106664](https://python-all.ru/3/whatsnew/changelog.html): [`selectors`](https://python-all.ru/3/library/selectors.html#module-selectors): добавление метода `_SelectorMapping.get()` и оптимизация `_SelectorMapping.__getitem__()`.
- [gh-106628](https://python-all.ru/3/whatsnew/changelog.html): Ускорение разбора писем примерно на 20 % за счёт отказа от компиляции нового регулярного выражения для каждого письма.
- [gh-89427](https://python-all.ru/3/whatsnew/changelog.html): Установка переменной окружения `VIRTUAL_ENV_PROMPT` при активации [`venv`](https://python-all.ru/3/library/venv.html#module-venv), даже если установлена `VIRTUAL_ENV_DISABLE_PROMPT`.
- [gh-106530](https://python-all.ru/3/whatsnew/changelog.html): Откат изменения в [`colorsys.rgb_to_hls()`](https://python-all.ru/3/library/colorsys.html#colorsys.rgb_to_hls), которое приводило к делению на ноль для некоторых почти белых входных данных. Патч от Terry Jan Reedy.
- [gh-106584](https://python-all.ru/3/whatsnew/changelog.html): Исправление кода возврата для `unittest`, если все тесты пропущены. Патч от Egor Eliseev.
- [gh-106566](https://python-all.ru/3/whatsnew/changelog.html): Оптимизация `(?!)` (шаблон, который всегда не срабатывает) в регулярных выражениях.
- [gh-106554](https://python-all.ru/3/whatsnew/changelog.html): [`selectors`](https://python-all.ru/3/library/selectors.html#module-selectors): снижение накладных расходов Selector за счёт использования `dict.get()` для поиска файловых дескрипторов.
- [gh-106558](https://python-all.ru/3/whatsnew/changelog.html): Удаление цикла ссылок в вызывающих `convert_to_error()` путём удаления `result` из области видимости в блоке `finally`.
- [gh-100502](https://python-all.ru/3/whatsnew/changelog.html): Добавление атрибута класса `pathlib.PurePath.pathmod`, который хранит реализацию [`os.path`](https://python-all.ru/3/library/os.path.html#module-os.path), используемую для низкоуровневых операций с путями: `posixpath` или `ntpath`.
- [gh-106527](https://python-all.ru/3/whatsnew/changelog.html): Снижение накладных расходов на добавление и удаление читателей и писателей [`asyncio`](https://python-all.ru/3/library/asyncio.html#module-asyncio).
- [gh-106524](https://python-all.ru/3/whatsnew/changelog.html): Исправление аварийного завершения в `_sre.template()` с шаблонами, содержащими неверные индексы групп.
- [gh-106531](https://python-all.ru/3/whatsnew/changelog.html): Удалены `_legacy` и имена, которые он предоставлял из `importlib.resources`: `Resource`, `contents`, `is_resource`, `open_binary`, `open_text`, `path`, `read_binary` и `read_text`.
- [gh-106052](https://python-all.ru/3/whatsnew/changelog.html): Модуль [`re`](https://python-all.ru/3/library/re.html#module-re): исправлено сопоставление possessive-квантификаторов в случае, когда подшаблон содержит возврат (backtracking).
- [gh-106510](https://python-all.ru/3/whatsnew/changelog.html): Улучшен отладочный вывод для атомарных групп в регулярных выражениях.
- [gh-106503](https://python-all.ru/3/whatsnew/changelog.html): Исправлена циклическая ссылка в `asyncio._SelectorSocketTransport` путём удаления `_write_ready` в `close`.
- [gh-105497](https://python-all.ru/3/whatsnew/changelog.html): Исправлена инверсия маски флагов, когда существуют безымянные флаги.
- [gh-90876](https://python-all.ru/3/whatsnew/changelog.html): Предотвращается ситуация, когда `multiprocessing.spawn` не удаётся *импортировать* в окружениях, где `sys.executable` равно `None`. Это регрессия, появившаяся в 3.11 с добавлением поддержки path-like объектов в multiprocessing.
- [gh-106403](https://python-all.ru/3/whatsnew/changelog.html): Экземпляры [`typing.TypeVar`](https://python-all.ru/3/library/typing.html#typing.TypeVar), [`typing.ParamSpec`](https://python-all.ru/3/library/typing.html#typing.ParamSpec), [`typing.ParamSpecArgs`](https://python-all.ru/3/library/typing.html#typing.ParamSpecArgs), [`typing.ParamSpecKwargs`](https://python-all.ru/3/library/typing.html#typing.ParamSpecKwargs) и [`typing.TypeVarTuple`](https://python-all.ru/3/library/typing.html#typing.TypeVarTuple) снова поддерживают слабые ссылки, исправляя регрессию, появившуюся в Python 3.12.0 beta 1. Патч от Jelle Zijlstra.
- [gh-89812](https://python-all.ru/3/whatsnew/changelog.html): Добавлен приватный класс `pathlib._PathBase`, который предоставляет экспериментальную поддержку виртуальных файловых систем и может быть открыт в будущей версии Python.
- [gh-106292](https://python-all.ru/3/whatsnew/changelog.html): Проверка кэшированного значения instance-dict в методе `__get__()` класса [`functools.cached_property()`](https://python-all.ru/3/library/functools.html#functools.cached_property). Это лучше соответствует поведению до 3.12 и улучшает совместимость для пользователей, создающих подклассы `functools.cached_property()` и добавляющих метод `__set__()`.
- [gh-106350](https://python-all.ru/3/whatsnew/changelog.html): Обнаружение возможного сбоя выделения памяти в функции libtommath `mp_init()`, используемой модулем `_tkinter`.
- [gh-106330](https://python-all.ru/3/whatsnew/changelog.html): Исправлено некорректное сопоставление пустых путей в [`pathlib.PurePath.match()`](https://python-all.ru/3/library/pathlib.html#pathlib.PurePath.match). Эта ошибка была внесена в Python 3.12.0 beta 1.
- [gh-106309](https://python-all.ru/3/whatsnew/changelog.html): Объявлено устаревшим [`typing.no_type_check_decorator()`](https://python-all.ru/3/library/typing.html#typing.no_type_check_decorator). Ни один крупный проверщик типов так и не добавил поддержку этого декоратора. Патч от Alex Waygood.
- [gh-102541](https://python-all.ru/3/whatsnew/changelog.html): Сделать так, чтобы `pydoc.doc()` перехватывал неправильный модуль [`ImportError`](https://python-all.ru/3/library/exceptions.html#ImportError), когда выходной поток не является `None`.
- [gh-106263](https://python-all.ru/3/whatsnew/changelog.html): Исправлен сбой при вызове `repr` с вручную созданным объектом SignalDict. Патч от Charlie Zhao.
- [gh-106236](https://python-all.ru/3/whatsnew/changelog.html): Замена выражений `assert` на `raise RuntimeError` в [`threading`](https://python-all.ru/3/library/threading.html#module-threading), чтобы `_DummyThread` нельзя было объединить даже с помощью `-OO`.
- [gh-106238](https://python-all.ru/3/whatsnew/changelog.html): Исправлена редкая ошибка параллелизма при захвате блокировки в пакете logging.
- [gh-106152](https://python-all.ru/3/whatsnew/changelog.html): Добавлен хук события PY\_THROW для [`cProfile`](https://python-all.ru/3/library/profile.html#module-cProfile) для генераторов.
- [gh-106075](https://python-all.ru/3/whatsnew/changelog.html): Добавлен `asyncio.taskgroups.__all__` в `asyncio.__all__` для экспорта при импорте со звёздочкой.
- [gh-104527](https://python-all.ru/3/whatsnew/changelog.html): Zipapp теперь будет пропускать добавление архива к самому себе.
- [gh-106046](https://python-all.ru/3/whatsnew/changelog.html): Улучшено сообщение об ошибке от [`os.fspath()`](https://python-all.ru/3/library/os.html#os.fspath), если он вызывается для объекта, у которого `__fspath__` установлен в `None`. Патч от Alex Waygood.
- [gh-105987](https://python-all.ru/3/whatsnew/changelog.html): Исправлен сбой из-за неправильного подсчёта ссылок во внутренних процедурах фабрики активных задач [`asyncio`](https://python-all.ru/3/library/asyncio.html#module-asyncio).
- [gh-105974](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка, при которой класс [`typing.Protocol`](https://python-all.ru/3/library/typing.html#typing.Protocol), содержащий один или несколько невызываемых членов, вызывал [`TypeError`](https://python-all.ru/3/library/exceptions.html#TypeError) при вызове [`issubclass()`](https://python-all.ru/3/library/functions.html#issubclass), даже если в нём был определён собственный метод `__subclasshook__`. Поведение в Python 3.11 и ниже – которое теперь восстановлено – заключалось в том, что `TypeError` не возникало в таких ситуациях, если был определён собственный метод `__subclasshook__`. Патч от Alex Waygood.
- [gh-96145](https://python-all.ru/3/whatsnew/changelog.html): Отменено добавление `json.AttrDict`.
- [gh-89812](https://python-all.ru/3/whatsnew/changelog.html): Добавлено [`pathlib.UnsupportedOperation`](https://python-all.ru/3/library/pathlib.html#pathlib.UnsupportedOperation), которое возбуждается вместо [`NotImplementedError`](https://python-all.ru/3/library/exceptions.html#NotImplementedError), когда операция с путём не поддерживается.
- [gh-105808](https://python-all.ru/3/whatsnew/changelog.html): Исправлена регрессия, внесённая в [gh-101251](https://python-all.ru/3/whatsnew/changelog.html) для 3.12, из-за которой `gzip.GzipFile.flush()` не сбрасывал компрессор (и не передавал аргумент `zip_mode`).
- [gh-105481](https://python-all.ru/3/whatsnew/changelog.html): [`stack_effect()`](https://python-all.ru/3/library/dis.html#dis.stack_effect) больше не вызывает исключение, если `oparg` предоставлен для `opcode`, который не использует свой аргумент, или если он не предоставлен для `opcode`, который его использует. В последнем случае возвращается стековый эффект для `oparg=0`.
- [gh-104799](https://python-all.ru/3/whatsnew/changelog.html): Разрешает [`ast.unparse()`](https://python-all.ru/3/library/ast.html#ast.unparse) преобразовывать определения функций и классов, созданные без нового поля `type_params` из [**PEP 695**](https://python-all.ru/3/whatsnew/changelog.html). Патч от Jelle Zijlstra.
- [gh-105793](https://python-all.ru/3/whatsnew/changelog.html): Добавлен аргумент только по ключевым словам *follow\_symlinks* к [`pathlib.Path.is_dir()`](https://python-all.ru/3/library/pathlib.html#pathlib.Path.is_dir) и [`is_file()`](https://python-all.ru/3/library/pathlib.html#pathlib.Path.is_file), по умолчанию `True`.
- [gh-105570](https://python-all.ru/3/whatsnew/changelog.html): Объявлены устаревшими два способа создания классов [`typing.TypedDict`](https://python-all.ru/3/library/typing.html#typing.TypedDict) с 0 полями с использованием функционального синтаксиса: `TD = TypedDict("TD")` и `TD = TypedDict("TD", None)`. Оба будут запрещены в Python 3.15. Чтобы создать класс `TypedDict` с 0 полями, используйте `class TD(TypedDict): pass` или `TD = TypedDict("TD", {})`.
- [gh-105745](https://python-all.ru/3/whatsnew/changelog.html): Исправлен метод `webbrowser.Konqueror.open`.
- [gh-105733](https://python-all.ru/3/whatsnew/changelog.html): [`ctypes`](https://python-all.ru/3/library/ctypes.html#module-ctypes): Объявлены устаревшими недокументированные функции `ctypes.SetPointerType()` и `ctypes.ARRAY()`. Патч от Victor Stinner.
- [gh-105687](https://python-all.ru/3/whatsnew/changelog.html): Удалены устаревшие `re.template`, `re.T`, `re.TEMPLATE`, `sre_constans.SRE_FLAG_TEMPLATE`.
- [gh-105684](https://python-all.ru/3/whatsnew/changelog.html): Поддержка [`asyncio.Task.set_name()`](https://python-all.ru/3/library/asyncio-task.html#asyncio.Task.set_name) теперь обязательна для сторонних реализаций задач. Незадокументированная функция `_set_task_name()` (устарела с версии 3.8) удалена. Исправление от Kumar Aditya.
- [gh-105375](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка в `_Unpickler_SetInputStream()`, из-за которой при сбое исключение могло быть перезаписано.
- [gh-105626](https://python-all.ru/3/whatsnew/changelog.html): Изменено значение по умолчанию, возвращаемое [`http.client.HTTPConnection.get_proxy_response_headers()`](https://python-all.ru/3/library/http.client.html#http.client.HTTPConnection.get_proxy_response_headers): теперь это `None`, а не `{}`.
- [gh-105375](https://python-all.ru/3/whatsnew/changelog.html): Исправлены ошибки в [`sys`](https://python-all.ru/3/library/sys.html#module-sys), из-за которых исключения могли быть перезаписаны из-за отложенной обработки ошибок.
- [gh-105605](https://python-all.ru/3/whatsnew/changelog.html): Улучшена обработка ошибок в `pyexpat` во время инициализации модуля, чтобы предотвратить возможную перезапись исключений и двойное разыменование объектов.
- [gh-105375](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка в [`decimal`](https://python-all.ru/3/library/decimal.html#module-decimal), из-за которой исключение могло быть перезаписано.
- [gh-105375](https://python-all.ru/3/whatsnew/changelog.html): Исправлены ошибки в `_datetime`, из-за которых исключения могли быть перезаписаны при сбое инициализации модуля.
- [gh-105375](https://python-all.ru/3/whatsnew/changelog.html): Исправлены ошибки в инициализации `_ssl`, которые могли приводить к утечке ссылок и перезаписи исключений.
- [gh-105375](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка в [`array.array`](https://python-all.ru/3/library/array.html#array.array), из-за которой исключение могло быть перезаписано.
- [gh-105375](https://python-all.ru/3/whatsnew/changelog.html): Исправлены ошибки в `_ctypes`, из-за которых исключения могли быть перезаписаны.
- [gh-105375](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка в модуле [`posix`](https://python-all.ru/3/library/posix.html#module-posix), из-за которой исключение могло быть перезаписано.
- [gh-105375](https://python-all.ru/3/whatsnew/changelog.html): Исправлены ошибки в `_elementtree`, из-за которых исключения могли быть перезаписаны.
- [gh-105375](https://python-all.ru/3/whatsnew/changelog.html): Исправлены ошибки в [`zoneinfo`](https://python-all.ru/3/library/zoneinfo.html#module-zoneinfo), из-за которых исключения могли быть перезаписаны.
- [gh-105375](https://python-all.ru/3/whatsnew/changelog.html): Исправлены ошибки в [`errno`](https://python-all.ru/3/library/errno.html#module-errno), из-за которых исключения могли быть перезаписаны.
- [gh-105566](https://python-all.ru/3/whatsnew/changelog.html): Создание класса [`typing.NamedTuple`](https://python-all.ru/3/library/typing.html#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](https://python-all.ru/3/whatsnew/changelog.html): Удалён атрибут `webbrowser.MacOSXOSAScript._name`, помеченный как устаревший в версии 3.11.
- [gh-105497](https://python-all.ru/3/whatsnew/changelog.html): Исправлена инверсия флага при наличии членов-псевдонимов/масок.
- [gh-105509](https://python-all.ru/3/whatsnew/changelog.html): [`typing.Annotated`](https://python-all.ru/3/library/typing.html#typing.Annotated) теперь реализован как экземпляр `typing._SpecialForm`, а не как класс. Это изменение не должно повлиять на пользователей публичного API модуля [`typing`](https://python-all.ru/3/library/typing.html#module-typing).
- [gh-105375](https://python-all.ru/3/whatsnew/changelog.html): Исправлены ошибки в [`pickle`](https://python-all.ru/3/library/pickle.html#module-pickle), из-за которых исключения могли быть перезаписаны.
- [gh-70303](https://python-all.ru/3/whatsnew/changelog.html): Генерировать [`FutureWarning`](https://python-all.ru/3/library/exceptions.html#FutureWarning) из [`pathlib.Path.glob()`](https://python-all.ru/3/library/pathlib.html#pathlib.Path.glob) и [`rglob()`](https://python-all.ru/3/library/pathlib.html#pathlib.Path.rglob), если заданный шаблон заканчивается на «`**`». В будущем выпуске Python шаблоны с таким окончанием будут соответствовать как файлам, так и каталогам. Добавьте завершающий слеш, чтобы соответствовать только каталогам.
- [gh-105375](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка в [`sqlite3`](https://python-all.ru/3/library/sqlite3.html#module-sqlite3), из-за которой исключение могло быть перезаписано в колбэке [`collation`](https://python-all.ru/3/library/sqlite3.html#sqlite3.Connection.create_collation).
- [gh-105382](https://python-all.ru/3/whatsnew/changelog.html): Удалены параметры *cafile*, *capath* и *cadefault* функции [`urllib.request.urlopen()`](https://python-all.ru/3/library/urllib.request.html#urllib.request.urlopen), помеченные как устаревшие в Python 3.6. Исправление от Victor Stinner.
- [gh-105376](https://python-all.ru/3/whatsnew/changelog.html): [`logging`](https://python-all.ru/3/library/logging.html#module-logging): Удалены недокументированные и непротестированные методы `Logger.warn()` и `LoggerAdapter.warn()`, а также функция `logging.warn()`. Они были помечены как устаревшие с Python 3.3 и являлись псевдонимами метода [`logging.Logger.warning()`](https://python-all.ru/3/library/logging.html#logging.Logger.warning), метода `logging.LoggerAdapter.warning()` и функции [`logging.warning()`](https://python-all.ru/3/library/logging.html#logging.warning). Исправление от Victor Stinner.
- [gh-105332](https://python-all.ru/3/whatsnew/changelog.html): Возврат сериализации (pickling) с поиска по имени обратно к поиску по значению.
- [gh-104554](https://python-all.ru/3/whatsnew/changelog.html): Добавлена поддержка схемы RTSPS в urllib.parse
- [gh-105292](https://python-all.ru/3/whatsnew/changelog.html): Добавлена опция в [`traceback.format_exception_only()`](https://python-all.ru/3/library/traceback.html#traceback.format_exception_only) для рекурсивного захода во вложенное исключение [`BaseExceptionGroup`](https://python-all.ru/3/library/exceptions.html#BaseExceptionGroup).
- [gh-105280](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка, из-за которой `isinstance([], collections.abc.Mapping)` могло вычисляться в `True`, если сборка мусора происходила в неподходящий момент. Ошибка была вызвана изменениями в реализации [`typing.Protocol`](https://python-all.ru/3/library/typing.html#typing.Protocol) в Python 3.12.
- [gh-80480](https://python-all.ru/3/whatsnew/changelog.html): [`array`](https://python-all.ru/3/library/array.html#module-array): Добавлен код типа `'w'`, представляющий `Py_UCS4`.
- [gh-105239](https://python-all.ru/3/whatsnew/changelog.html): Исправлена давняя ошибка, из-за которой `issubclass(object, typing.Protocol)` в некоторых граничных случаях вычислялось в `True`. Исправление от Alex Waygood.
- [gh-104310](https://python-all.ru/3/whatsnew/changelog.html): В бета-версии 1 была добавлена вспомогательная функция для авторов модулей расширения, используемая при тестировании поддержки нескольких интерпретаторов или GIL на интерпретатор. Имя этой функции изменилось с `allowing_all_extensions` на `_incompatible_extension_module_restrictions`. Значение по умолчанию для аргумента «disable\_check» изменилось с `True` на `False`, чтобы лучше соответствовать новому имени функции.
- [gh-105080](https://python-all.ru/3/whatsnew/changelog.html): Исправлена несовместимая сигнатура в производных классах для [`inspect.signature()`](https://python-all.ru/3/library/inspect.html#inspect.signature)
- [gh-105144](https://python-all.ru/3/whatsnew/changelog.html): Исправлен недавний регресс в модуле [`typing`](https://python-all.ru/3/library/typing.html#module-typing). Регресс приводил к тому, что вызов `class Foo(X, typing.Protocol)`, где `X` был классом с метаклассом [`abc.ABCMeta`](https://python-all.ru/3/library/abc.html#abc.ABCMeta), вызывал ошибочное возбуждение [`TypeError`](https://python-all.ru/3/library/exceptions.html#TypeError) при последующих вызовах `isinstance(1, X)`. Исправление от Alex Waygood.
- [gh-62948](https://python-all.ru/3/whatsnew/changelog.html): Финализатор [`io.IOBase`](https://python-all.ru/3/library/io.html#io.IOBase) теперь регистрирует ошибки метода `close()` с помощью [`sys.unraisablehook`](https://python-all.ru/3/library/sys.html#sys.unraisablehook). Раньше ошибки по умолчанию молча игнорировались и регистрировались только в [режиме разработки Python](https://python-all.ru/3/library/devmode.html#devmode) или в [сборке Python в режиме отладки](https://python-all.ru/3/using/configure.html#debug-build). Исправление от Victor Stinner.
- [gh-105096](https://python-all.ru/3/whatsnew/changelog.html): [`wave`](https://python-all.ru/3/library/wave.html#module-wave): Помечены как устаревшие методы `getmark()`, `setmark()` и `getmarkers()` классов [`wave.Wave_read`](https://python-all.ru/3/library/wave.html#wave.Wave_read) и [`wave.Wave_write`](https://python-all.ru/3/library/wave.html#wave.Wave_write). Они будут удалены в Python 3.15. Исправление от Victor Stinner.
- [gh-104992](https://python-all.ru/3/whatsnew/changelog.html): Удалён метод `unittest.TestProgram.usageExit()`, не тестировавшийся и не документированный, помеченный как устаревший в Python 3.11. Исправление от Hugo van Kemenade.
- [gh-104996](https://python-all.ru/3/whatsnew/changelog.html): Улучшена производительность инициализации [`pathlib.PurePath`](https://python-all.ru/3/library/pathlib.html#pathlib.PurePath) за счёт отложенного объединения путей, когда передано несколько аргументов.
- [gh-101588](https://python-all.ru/3/whatsnew/changelog.html): Объявлена устаревшей недокументированная поддержка copy/deepcopy/pickle для itertools.
- [gh-103631](https://python-all.ru/3/whatsnew/changelog.html): Исправлено, что `pathlib.PurePosixPath(pathlib.PureWindowsPath(...))` не преобразовывал разделители путей, чтобы восстановить поведение, совместимое с 3.11.
- [gh-104947](https://python-all.ru/3/whatsnew/changelog.html): Сравнения между объектами [`pathlib.PureWindowsPath`](https://python-all.ru/3/library/pathlib.html#pathlib.PureWindowsPath) теперь единообразны в Windows и Posix, как в версии 3.11.
- [gh-104773](https://python-all.ru/3/whatsnew/changelog.html): [**PEP 594**](https://python-all.ru/3/whatsnew/changelog.html): Удалён модуль `audioop`, объявленный устаревшим в Python 3.11. Исправление от Victor Stinner.
- [gh-104773](https://python-all.ru/3/whatsnew/changelog.html): [**PEP 594**](https://python-all.ru/3/whatsnew/changelog.html): Удалён модуль `aifc`, объявленный устаревшим в Python 3.11. Исправление от Victor Stinner.
- [gh-104773](https://python-all.ru/3/whatsnew/changelog.html): [**PEP 594**](https://python-all.ru/3/whatsnew/changelog.html): Удалён модуль `uu`, объявленный устаревшим в Python 3.11. Исправление от Victor Stinner.
- [gh-104935](https://python-all.ru/3/whatsnew/changelog.html): Исправлены ошибки во взаимодействии [`typing.runtime_checkable()`](https://python-all.ru/3/library/typing.html#typing.runtime_checkable) и [`typing.Generic`](https://python-all.ru/3/library/typing.html#typing.Generic), которые были внесены реализацией [**PEP 695**](https://python-all.ru/3/whatsnew/changelog.html). Исправление от Jelle Zijlstra.
- [gh-104773](https://python-all.ru/3/whatsnew/changelog.html): [**PEP 594**](https://python-all.ru/3/whatsnew/changelog.html): Удалены модуль `crypt` и его частное расширение `_crypt`, объявленные устаревшими в Python 3.11. Исправление от Victor Stinner.
- [gh-104773](https://python-all.ru/3/whatsnew/changelog.html): [**PEP 594**](https://python-all.ru/3/whatsnew/changelog.html): Удалён модуль `nis`, объявленный устаревшим в Python 3.11. Исправление от Victor Stinner.
- [gh-104898](https://python-all.ru/3/whatsnew/changelog.html): Добавлен отсутствующий [`__slots__`](https://python-all.ru/3/reference/datamodel.html#object.__slots__) в [`os.PathLike`](https://python-all.ru/3/library/os.html#os.PathLike).
- [gh-104773](https://python-all.ru/3/whatsnew/changelog.html): [**PEP 594**](https://python-all.ru/3/whatsnew/changelog.html): Удалён модуль `xdrlib`, объявленный устаревшим в Python 3.11. Исправление от Victor Stinner.
- [gh-104773](https://python-all.ru/3/whatsnew/changelog.html): [**PEP 594**](https://python-all.ru/3/whatsnew/changelog.html): Удалён модуль `nntplib`, объявленный устаревшим в Python 3.11. Исправление от Victor Stinner.
- [gh-104886](https://python-all.ru/3/whatsnew/changelog.html): Удалён недокументированный класс `configparser.LegacyInterpolation`, помеченный как устаревший в docstring начиная с Python 3.2 и с предупреждением об устаревании с Python 3.11. Исправление от Hugo van Kemenade.
- [gh-104786](https://python-all.ru/3/whatsnew/changelog.html): Удалено создание [`typing.TypedDict`](https://python-all.ru/3/library/typing.html#typing.TypedDict) на основе kwargs.
- [gh-104876](https://python-all.ru/3/whatsnew/changelog.html): Удалён метод `turtle.RawTurtle.settiltangle()`, объявленный устаревшим в документации с Python 3.1 и с предупреждением об устаревании с Python 3.11. Исправление от Hugo van Kemenade.
- [gh-104773](https://python-all.ru/3/whatsnew/changelog.html): [**PEP 594**](https://python-all.ru/3/whatsnew/changelog.html): Удалён пакет `msilib`, объявленный устаревшим в Python 3.11.
- [gh-104773](https://python-all.ru/3/whatsnew/changelog.html): [**PEP 594**](https://python-all.ru/3/whatsnew/changelog.html): Удалён модуль `spwd`, объявленный устаревшим в Python 3.11: вместо него можно использовать проект [python-pam](https://python-all.ru/3/whatsnew/changelog.html). Исправление от Victor Stinner.
- [gh-75552](https://python-all.ru/3/whatsnew/changelog.html): Удалён модуль `tkinter.tix`, объявленный устаревшим с Python 3.6.
- [gh-104773](https://python-all.ru/3/whatsnew/changelog.html): [**PEP 594**](https://python-all.ru/3/whatsnew/changelog.html): Удалён модуль `chunk`, объявленный устаревшим в Python 3.11. Исправление от Victor Stinner.
- [gh-104773](https://python-all.ru/3/whatsnew/changelog.html): [**PEP 594**](https://python-all.ru/3/whatsnew/changelog.html): Удалён модуль `mailcap`, объявленный устаревшим в Python 3.11. Исправление от Victor Stinner.
- [gh-104773](https://python-all.ru/3/whatsnew/changelog.html): [**PEP 594**](https://python-all.ru/3/whatsnew/changelog.html): Удалён модуль `sunau`, объявленный устаревшим в Python 3.11. Исправление от Victor Stinner.
- [gh-104780](https://python-all.ru/3/whatsnew/changelog.html): [**PEP 594**](https://python-all.ru/3/whatsnew/changelog.html): Удалён модуль `ossaudiodev`, объявленный устаревшим в Python 3.11. Исправление Victor Stinner.
- [gh-104773](https://python-all.ru/3/whatsnew/changelog.html): [**PEP 594**](https://python-all.ru/3/whatsnew/changelog.html): Удалён модуль `pipes`, объявленный устаревшим в Python 3.11. Исправление от Victor Stinner.
- [gh-104873](https://python-all.ru/3/whatsnew/changelog.html): Добавлен [`typing.get_protocol_members()`](https://python-all.ru/3/library/typing.html#typing.get_protocol_members) для возврата множества членов, определяющих [`typing.Protocol`](https://python-all.ru/3/library/typing.html#typing.Protocol). Добавлен [`typing.is_protocol()`](https://python-all.ru/3/library/typing.html#typing.is_protocol) для проверки, является ли класс `typing.Protocol`. Исправление от Jelle Zijlstra.
- [gh-104874](https://python-all.ru/3/whatsnew/changelog.html): Документированы атрибуты `__name__` и `__supertype__` класса [`typing.NewType`](https://python-all.ru/3/library/typing.html#typing.NewType). Исправление от Jelle Zijlstra.
- [gh-104835](https://python-all.ru/3/whatsnew/changelog.html): Удалены следующие функции [`unittest`](https://python-all.ru/3/library/unittest.html#module-unittest), объявленные устаревшими в Python 3.11:

  - `unittest.findTestCases()`
  - `unittest.makeSuite()`
  - `unittest.getTestCaseNames()`

  Вместо них используйте методы [`TestLoader`](https://python-all.ru/3/library/unittest.html#unittest.TestLoader):

  - [`unittest.TestLoader.loadTestsFromModule()`](https://python-all.ru/3/library/unittest.html#unittest.TestLoader.loadTestsFromModule)
  - [`unittest.TestLoader.loadTestsFromTestCase()`](https://python-all.ru/3/library/unittest.html#unittest.TestLoader.loadTestsFromTestCase)
  - [`unittest.TestLoader.getTestCaseNames()`](https://python-all.ru/3/library/unittest.html#unittest.TestLoader.getTestCaseNames)

  Исправление от Hugo van Kemenade.
- [gh-104804](https://python-all.ru/3/whatsnew/changelog.html): Удалён не тестировавшийся и недокументированный класс [`webbrowser`](https://python-all.ru/3/library/webbrowser.html#module-webbrowser) `MacOSX`, устаревший в Python 3.11. Исправление от Hugo van Kemenade.
- [gh-83863](https://python-all.ru/3/whatsnew/changelog.html): Поддержка использования объектов [`pathlib.Path`](https://python-all.ru/3/library/pathlib.html#pathlib.Path) в качестве менеджеров контекста удалена. До Python 3.9 выход из менеджера контекста помечал путь как «закрытый», из-за чего некоторые (но не все!) методы при вызове вызывали исключение. Начиная с Python 3.9 использование пути в качестве менеджера контекста ничего не делает.
- [gh-104799](https://python-all.ru/3/whatsnew/changelog.html): Изменено расположение поля `type_params` (см. [**PEP 695**](https://python-all.ru/3/whatsnew/changelog.html)) в [`ast.ClassDef`](https://python-all.ru/3/library/ast.html#ast.ClassDef), [`ast.AsyncFunctionDef`](https://python-all.ru/3/library/ast.html#ast.AsyncFunctionDef) и [`ast.FunctionDef`](https://python-all.ru/3/library/ast.html#ast.FunctionDef) для лучшего сохранения обратной совместимости. Исправление от Jelle Zijlstra.
- [gh-104797](https://python-all.ru/3/whatsnew/changelog.html): Разрешено наследование классов [`typing.Protocol`](https://python-all.ru/3/library/typing.html#typing.Protocol) от [`collections.abc.Buffer`](https://python-all.ru/3/library/collections.abc.html#collections.abc.Buffer). Исправление от Jelle Zijlstra.
- [gh-104783](https://python-all.ru/3/whatsnew/changelog.html): Удалена функция `locale.resetlocale()`, устаревшая в Python 3.11. Исправление от Victor Stinner.
- [gh-104780](https://python-all.ru/3/whatsnew/changelog.html): Удалены программа `2to3` и модуль `lib2to3`, устаревшие в Python 3.11. Исправление от Victor Stinner.
- [gh-104773](https://python-all.ru/3/whatsnew/changelog.html): [**PEP 594**](https://python-all.ru/3/whatsnew/changelog.html): Удалён модуль `telnetlib`, устаревший в Python 3.11. Исправление от Victor Stinner.
- [gh-104773](https://python-all.ru/3/whatsnew/changelog.html): [**PEP 594**](https://python-all.ru/3/whatsnew/changelog.html): Удалён модуль `imghdr`, устаревший в Python 3.11. Исправление от Victor Stinner.
- [gh-104773](https://python-all.ru/3/whatsnew/changelog.html): [**PEP 594**](https://python-all.ru/3/whatsnew/changelog.html): Удалены модули `cgi` и `cgitb`, устаревшие в Python 3.11. Исправление от Victor Stinner.
- [gh-104773](https://python-all.ru/3/whatsnew/changelog.html): [**PEP 594**](https://python-all.ru/3/whatsnew/changelog.html): Удалён модуль `sndhdr`, устаревший в Python 3.11. Исправление от Victor Stinner.
- [gh-104372](https://python-all.ru/3/whatsnew/changelog.html): В Linux, где [`subprocess`](https://python-all.ru/3/library/subprocess.html#module-subprocess) может использовать системный вызов `vfork()` для более быстрого порождения процессов, предотвращается блокирование других потоков родительским процессом за счёт освобождения GIL во время ожидания результата `exec()` порождённого через vfork дочернего процесса. Это не позволяет порождению бинарного файла из медленной файловой системы блокировать остальное приложение.
- [gh-99108](https://python-all.ru/3/whatsnew/changelog.html): Теперь GIL освобождается вокруг вычислений [`hashlib`](https://python-all.ru/3/library/hashlib.html#module-hashlib) разумного размера для семейств SHA и хеш-функций MD5, что соответствует тому, что уже делают наши хеш-вычисления на основе OpenSSL.
- [gh-102613](https://python-all.ru/3/whatsnew/changelog.html): Улучшена производительность [`pathlib.Path.glob()`](https://python-all.ru/3/library/pathlib.html#pathlib.Path.glob) при разворачивании шаблона с нетерминальным компонентом «`**`» за счёт фильтрации обходимых путей через регулярное выражение, а не многократного вызова [`os.scandir()`](https://python-all.ru/3/library/os.html#os.scandir) в каждой директории.
- [gh-104399](https://python-all.ru/3/whatsnew/changelog.html): Модуль `_tkinter` подготовлен к сборке с Tcl 9.0 и будущей версией libtommath путём замены использования устаревших функций `mp_to_unsigned_bin_n()` и `mp_unsigned_bin_size()` при необходимости.
- [gh-102676](https://python-all.ru/3/whatsnew/changelog.html): Добавлены поля `start_offset`, `cache_offset`, `end_offset`, `baseopname`, `baseopcode`, `jump_target` и `oparg` в [`dis.Instruction`](https://python-all.ru/3/library/dis.html#dis.Instruction).
- [gh-103558](https://python-all.ru/3/whatsnew/changelog.html): Исправлен механизм проверки аргумента `parent` в [`argparse`](https://python-all.ru/3/library/argparse.html#module-argparse). Улучшено тестовое покрытие.
- [gh-103464](https://python-all.ru/3/whatsnew/changelog.html): Выводятся понятные сообщения об использовании при разборе неверных команд [`pdb`](https://python-all.ru/3/library/pdb.html#module-pdb).
- [gh-103384](https://python-all.ru/3/whatsnew/changelog.html): Обобщён шаблон регулярного выражения `BaseConfigurator.INDEX_PATTERN`, чтобы допускать пробелы и небуквенно-цифровые символы в ключах.
- [gh-103124](https://python-all.ru/3/whatsnew/changelog.html): Добавлена поддержка многострочных выражений для [`pdb`](https://python-all.ru/3/library/pdb.html#module-pdb)
- [gh-101162](https://python-all.ru/3/whatsnew/changelog.html): Запрещено использование `builtins.issubclass()` с [`types.GenericAlias`](https://python-all.ru/3/library/types.html#types.GenericAlias) в качестве первого аргумента.
- [gh-103200](https://python-all.ru/3/whatsnew/changelog.html): Исправлена семантика перезаполнения кэша в zipimport.invalidate\_caches(). Теперь кэш перезаполняется при получении файлов с недействительным кэшем, а не при инвалидации кэша.
- [gh-100061](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка, приводящая к неправильным совпадениям для регулярных выражений с possessive-квантификатором.
- [gh-77609](https://python-all.ru/3/whatsnew/changelog.html): Добавлен аргумент *follow\_symlinks* в [`pathlib.Path.glob()`](https://python-all.ru/3/library/pathlib.html#pathlib.Path.glob) и [`rglob()`](https://python-all.ru/3/library/pathlib.html#pathlib.Path.rglob), по умолчанию равный False.
- [gh-102541](https://python-all.ru/3/whatsnew/changelog.html): Скрыт traceback в приглашении [`help()`](https://python-all.ru/3/library/functions.html#help) при ошибке импорта.
- [gh-102120](https://python-all.ru/3/whatsnew/changelog.html): Добавлен потоковый режим в `tarfile`, позволяющий читать архивы без кэширования информации о внутренних файлах.
- [gh-102029](https://python-all.ru/3/whatsnew/changelog.html): Передача любых аргументов в [`threading.RLock()`](https://python-all.ru/3/library/threading.html#threading.RLock) объявлена устаревшей.
- [gh-88233](https://python-all.ru/3/whatsnew/changelog.html): Выполнен рефакторинг `zipfile._strip_extra` для использования более высокоуровневых абстракций для extras вместо цикла с тяжёлым состоянием.
- [gh-102024](https://python-all.ru/3/whatsnew/changelog.html): Сокращены вызовы `_idle_semaphore.release()` в `concurrent.futures.thread._worker()`.
- [gh-73435](https://python-all.ru/3/whatsnew/changelog.html): Добавлена поддержка рекурсивных шаблонов в [`pathlib.PurePath.match()`](https://python-all.ru/3/library/pathlib.html#pathlib.PurePath.match).
- [gh-84867](https://python-all.ru/3/whatsnew/changelog.html): [`unittest.TestLoader`](https://python-all.ru/3/library/unittest.html#unittest.TestLoader) больше не загружает тестовые случаи из точных классов [`unittest.TestCase`](https://python-all.ru/3/library/unittest.html#unittest.TestCase) и [`unittest.FunctionTestCase`](https://python-all.ru/3/library/unittest.html#unittest.FunctionTestCase).
- [gh-99203](https://python-all.ru/3/whatsnew/changelog.html): Восстановлено следующее поведение [`shutil.make_archive()`](https://python-all.ru/3/library/shutil.html#shutil.make_archive) из CPython \<= 3.10.5: не создавать пустой архив, если `root_dir` не является директорией, и в этом случае вызывать [`FileNotFoundError`](https://python-all.ru/3/library/exceptions.html#FileNotFoundError) или [`NotADirectoryError`](https://python-all.ru/3/library/exceptions.html#NotADirectoryError) независимо от выбора `format`. Помимо восстановленного поведения, функция теперь также может вызывать эти исключения в режиме `dry_run`.
- [gh-80480](https://python-all.ru/3/whatsnew/changelog.html): Выдаётся [`DeprecationWarning`](https://python-all.ru/3/library/exceptions.html#DeprecationWarning) для кода типа `'u'` в [`array`](https://python-all.ru/3/library/array.html#module-array), объявленного устаревшим в документации начиная с Python 3.3.
- [gh-94924](https://python-all.ru/3/whatsnew/changelog.html): [`unittest.mock.create_autospec()`](https://python-all.ru/3/library/unittest.mock.html#unittest.mock.create_autospec) теперь корректно возвращает корутинные функции, совместимые с [`inspect.iscoroutinefunction()`](https://python-all.ru/3/library/inspect.html#inspect.iscoroutinefunction)
- [gh-94777](https://python-all.ru/3/whatsnew/changelog.html): Исправлено зависание [`multiprocessing`](https://python-all.ru/3/library/multiprocessing.html#module-multiprocessing) `ProcessPoolExecutor`, когда дочерний процесс аварийно завершается во время записи данных в очередь вызовов.
- [gh-92871](https://python-all.ru/3/whatsnew/changelog.html): Удалены пространства имён `typing.io` и `typing.re`, устаревшие с Python 3.8. Все элементы по-прежнему доступны из основного модуля [`typing`](https://python-all.ru/3/library/typing.html#module-typing).
- [bpo-43633](https://python-all.ru/3/whatsnew/changelog.html): Улучшено текстовое представление IPv4-отображённых IPv6-адресов ([**RFC 4291**](https://python-all.ru/3/whatsnew/changelog.html), разделы 2.2, 2.5.5.2) в [`ipaddress`](https://python-all.ru/3/library/ipaddress.html#module-ipaddress). Исправление от Oleksandr Pavliuk.
- [bpo-44850](https://python-all.ru/3/whatsnew/changelog.html): Улучшена производительность [`operator.methodcaller()`](https://python-all.ru/3/library/operator.html#operator.methodcaller) с использованием соглашения [**PEP 590**](https://python-all.ru/3/whatsnew/changelog.html) `vectorcall`. Исправление от Anthony Lee и Pieter Eendebak.
- [bpo-44185](https://python-all.ru/3/whatsnew/changelog.html): [`unittest.mock.mock_open()`](https://python-all.ru/3/library/unittest.mock.html#unittest.mock.mock_open) будет вызывать метод `close()` фиктивного файлового дескриптора при выходе из менеджера контекста. Исправление от Samet Yaslan.
- [bpo-40988](https://python-all.ru/3/whatsnew/changelog.html): Улучшена производительность [`functools.singledispatchmethod`](https://python-all.ru/3/library/functools.html#functools.singledispatchmethod) путём кеширования сгенерированной обёртки диспетчеризации. Оптимизация предложена frederico. Исправление от @mental32, Alex Waygood и Pieter Eendebak.
- [bpo-41768](https://python-all.ru/3/whatsnew/changelog.html): Спецификация [`unittest.mock`](https://python-all.ru/3/library/unittest.mock.html#module-unittest.mock) больше не вызывает свойства класса. Исправление от Melanie Witt.
- [bpo-18319](https://python-all.ru/3/whatsnew/changelog.html): Обеспечить, чтобы `gettext(msg)` извлекал переводы, даже если существует форма множественного числа. Другими словами: `gettext(msg) == ngettext(msg, '', 1)`.
- [bpo-17013](https://python-all.ru/3/whatsnew/changelog.html): Добавлен `ThreadingMock` в [`unittest.mock`](https://python-all.ru/3/library/unittest.mock.html#module-unittest.mock), который можно использовать для создания Mock-объектов, ожидающих вызова. Исправление от Karthikeyan Singaravelan и Mario Corchero.

### Документация

- [gh-109209](https://python-all.ru/3/whatsnew/changelog.html): Минимальная версия Sphinx, необходимая для документации, теперь 4.2.
- [gh-108826](https://python-all.ru/3/whatsnew/changelog.html): Интерфейс командной строки модуля [`dis`](https://python-all.ru/3/library/dis.html#module-dis) теперь упоминается в документации.
- [gh-107305](https://python-all.ru/3/whatsnew/changelog.html): Добавлена документация для [`PyInterpreterConfig`](https://python-all.ru/3/c-api/subinterpreters.html#c.PyInterpreterConfig) и [`Py_NewInterpreterFromConfig()`](https://python-all.ru/3/c-api/subinterpreters.html#c.Py_NewInterpreterFromConfig). Также уточнены некоторые близлежащие документы, касающиеся GIL для каждого интерпретатора.
- [gh-107008](https://python-all.ru/3/whatsnew/changelog.html): Документировать переменные модуля [`curses`](https://python-all.ru/3/library/curses.html#module-curses): [`LINES`](https://python-all.ru/3/library/curses.html#curses.LINES) и [`COLS`](https://python-all.ru/3/library/curses.html#curses.COLS).
- [gh-106948](https://python-all.ru/3/whatsnew/changelog.html): Добавлен ряд стандартных внешних имён в `nitpick_ignore`.
- [gh-106232](https://python-all.ru/3/whatsnew/changelog.html): Сделать командные строки документации timeit совместимыми с Windows, используя двойные кавычки для аргументов. Это также работает в linux и macOS.
- [gh-105172](https://python-all.ru/3/whatsnew/changelog.html): Исправлена строка документации [`functools.lru_cache()`](https://python-all.ru/3/library/functools.html#functools.lru_cache) с учётом различной обработки аргументом `typed` типов str и int. Исправление от Bar Harel.
- [gh-105052](https://python-all.ru/3/whatsnew/changelog.html): Обновить документацию `timeit`, указав, что время в секундах – это просто значение по умолчанию.
- [gh-89455](https://python-all.ru/3/whatsnew/changelog.html): Добавлена отсутствующая документация для параметров `max_group_depth` и `max_group_width`, а также атрибута `exceptions` класса [`traceback.TracebackException`](https://python-all.ru/3/library/traceback.html#traceback.TracebackException).
- [gh-89412](https://python-all.ru/3/whatsnew/changelog.html): Добавлена отсутствующая документация для атрибутов `end_lineno` и `end_offset` класса [`traceback.TracebackException`](https://python-all.ru/3/library/traceback.html#traceback.TracebackException).
- [gh-104943](https://python-all.ru/3/whatsnew/changelog.html): Удалены упоминания старых версий Python в [`typing.NamedTuple`](https://python-all.ru/3/library/typing.html#typing.NamedTuple).
- [gh-54738](https://python-all.ru/3/whatsnew/changelog.html): Добавлена документация по локализации модуля [`argparse`](https://python-all.ru/3/library/argparse.html#module-argparse).
- [gh-102823](https://python-all.ru/3/whatsnew/changelog.html): Документировать возвращаемый тип `x // y`, когда `x` и `y` имеют тип [`float`](https://python-all.ru/3/library/functions.html#float).
- [gh-102759](https://python-all.ru/3/whatsnew/changelog.html): Согласовать сигнатуру функции `functools.reduce` в документации и строке документации с реализацией на C.

### Тесты

- [gh-110647](https://python-all.ru/3/whatsnew/changelog.html): Исправлен test\_stress\_modifying\_handlers() из test\_signal. Исправление от Victor Stinner.
- [gh-103053](https://python-all.ru/3/whatsnew/changelog.html): Исправлен test\_tools.test\_freeze на FreeBSD: выполняется «make distclean» вместо «make clean» в скопированной директории исходников, чтобы также удалить программу «python». Исправление от Victor Stinner.
- [gh-110167](https://python-all.ru/3/whatsnew/changelog.html): Исправлена взаимоблокировка в test\_socket, когда сервер завершается с таймаутом, но клиент всё ещё работает в своём потоке. Не удерживать блокировку при вызове функций очистки в doCleanups(). Одна из функций очистки ждёт завершения клиента, тогда как клиент мог бы заблокироваться, если бы вызвал addCleanup() в такой ситуации. Исправление от Victor Stinner.
- [gh-110388](https://python-all.ru/3/whatsnew/changelog.html): Добавлены тесты для [`tty`](https://python-all.ru/3/library/tty.html#module-tty).
- [gh-81002](https://python-all.ru/3/whatsnew/changelog.html): Добавлены тесты для [`termios`](https://python-all.ru/3/library/termios.html#module-termios).
- [gh-110367](https://python-all.ru/3/whatsnew/changelog.html): regrtest: при использовании рабочих процессов (-jN) с опцией –verbose3 regrtest теперь может отображать вывод рабочего процесса, даже если этот процесс аварийно завершается. Ранее sys.stdout и sys.stderr заменялись, и вывод рабочего процесса терялся при аварийном завершении. Исправление от Victor Stinner.
- [gh-110267](https://python-all.ru/3/whatsnew/changelog.html): Добавлены тесты для сериализации (pickling) и копирования объектов PyStructSequence. Патч от Xuehai Pan.
- [gh-110171](https://python-all.ru/3/whatsnew/changelog.html): `libregrtest` теперь всегда устанавливает и показывает `random.seed`, поэтому тесты стали более воспроизводимыми. Используйте флаг `--randseed`, чтобы явно указать исходное зерно для тестов.
- [gh-110152](https://python-all.ru/3/whatsnew/changelog.html): Удалены `Tools/scripts/run_tests.py` и `make hostrunnertest`. Вместо этого запускайте `./python -m test --slow-ci`, `make buildbottest` или `make test`. Тестовый раннер Python (regrtest) теперь сам обрабатывает кросс-компиляцию и HOSTRUNNER. Он также добавляет в Python такие быстрые опции, как `-u -E -W default -bb`, когда используется опция `--fast-ci` или `--slow-ci`. Патч от Victor Stinner.
- [gh-110031](https://python-all.ru/3/whatsnew/changelog.html): Пропускать тесты threading, использующие сочетание поток+fork, если Python собран с Address Sanitizer (ASAN). Патч от Victor Stinner.
- [gh-110088](https://python-all.ru/3/whatsnew/changelog.html): Исправлены таймауты test\_asyncio: не измерять максимальную длительность, тест не должен оценивать производительность CI. Измерять только минимальную длительность, когда задача имеет таймаут или задержку. Добавлен `CLOCK_RES` в `test_asyncio.utils`. Патч от Victor Stinner.
- [gh-109974](https://python-all.ru/3/whatsnew/changelog.html): Исправлены состояния гонки в тестах блокировок test\_threading. Ожидать выполнения условия, а не использовать [`time.sleep()`](https://python-all.ru/3/library/time.html#time.sleep) с жёстко заданным числом секунд. Патч от Victor Stinner.
- [gh-110033](https://python-all.ru/3/whatsnew/changelog.html): Исправлен `test_interprocess_signal()` для `test_signal`. Гарантировать, что объект `subprocess.Popen` удаляется до того, как тест вызовет исключение в обработчике сигналов. В противном случае `Popen.__del__()` может перехватить исключение, которое будет записано как `Exception ignored in: ...`, и тест завершится неудачей. Патч от Victor Stinner.
- [gh-109594](https://python-all.ru/3/whatsnew/changelog.html): Исправлен test\_timeout() из test\_concurrent\_futures.test\_wait. Удалён future, который может как завершиться, так и нет – в зависимости от того, превышает ли он таймаут. Оставлен второй future, который не завершается до истечения таймаута wait(). Патч от Victor Stinner.
- [gh-109972](https://python-all.ru/3/whatsnew/changelog.html): Файл test\_gdb.py разбит на пакет test\_gdb из нескольких тестов, теперь тесты можно запускать параллельно. Патч от Victor Stinner.
- [gh-109566](https://python-all.ru/3/whatsnew/changelog.html): regrtest: При использовании опции `--fast-ci` или `--slow-ci` regrtest теперь заменяет текущий процесс новым процессом, чтобы добавить опции `-u -W default -bb -E` для Python. Патч от Victor Stinner.
- [gh-109748](https://python-all.ru/3/whatsnew/changelog.html): Исправлен `test_zippath_from_non_installed_posix()` в test\_venv: не копировать подкаталоги `__pycache__/`, поскольку другие параллельно выполняющиеся тесты Python могут их изменять. Патч от Victor Stinner.
- [gh-109739](https://python-all.ru/3/whatsnew/changelog.html): regrtest: Исправлена проверка утечек ссылок на Windows. Отключается загрузочный трекер на Windows в режиме проверки утечек ссылок (опция -R). Патч от Victor Stinner.
- [gh-109276](https://python-all.ru/3/whatsnew/changelog.html): regrtest: Если тест завершается с ошибкой «env changed» и используется опция –rerun, тест теперь перезапускается в подробном режиме в новом процессе. Патч от Victor Stinner.
- [gh-103053](https://python-all.ru/3/whatsnew/changelog.html): Пропускать test\_freeze\_simple\_script() из test\_tools.test\_freeze, если Python собран с `./configure --enable-optimizations`, то есть с Profile Guided Optimization (PGO): это просто делает тест слишком медленным. Инструмент freeze тестируется во многих других CI с другими (более быстрыми) флагами компилятора. Патч от Victor Stinner.
- [gh-109580](https://python-all.ru/3/whatsnew/changelog.html): Пропускать `test_perf_profiler`, если Python собран с санитайзером ASAN, MSAN или UBSAN. Python в таких сборках случайным образом падает в этом тесте. Патч от Victor Stinner.
- [gh-109566](https://python-all.ru/3/whatsnew/changelog.html): regrtest: Добавлены опции `--fast-ci` и `--slow-ci`. `--fast-ci` использует таймаут по умолчанию 10 минут и `-u all,-cpu` (пропускать самые медленные тесты). `--slow-ci` использует таймаут по умолчанию 20 минут и `-u all` (запускать все тесты). Патч от Victor Stinner.
- [gh-109425](https://python-all.ru/3/whatsnew/changelog.html): libregrtest теперь декодирует stdout рабочих процессов теста с помощью обработчика ошибок «backslashreplace», чтобы сохранить повреждённый вывод stdout, вместо того чтобы завершаться с ошибкой без его сохранения. Патч от Victor Stinner.
- [gh-109396](https://python-all.ru/3/whatsnew/changelog.html): Исправлен `test_socket.test_hmac_sha1()` в режиме FIPS. Используется более длинный ключ: режим FIPS требует не менее 112 бит. Предыдущий ключ был всего 32 бита. Патч от Victor Stinner.
- [gh-104736](https://python-all.ru/3/whatsnew/changelog.html): Исправлен test\_gdb на Python, собранном с LLVM clang 16 на Linux ppc64le (например, Fedora 38). Поиск шаблонов в выводе команды gdb «bt» для определения, когда gdb не удаётся получить трассировку. Например, пропустить тест, если найдено `Backtrace stopped: frame did not save the PC`. Патч от Victor Stinner.
- [gh-109276](https://python-all.ru/3/whatsnew/changelog.html): libregrtest теперь вызывает [`random.seed()`](https://python-all.ru/3/library/random.html#random.seed) перед запуском каждого файла теста, когда используется опция командной строки `-r/--randomize`. Кроме того, она вызывается и в рабочих процессах. Это должно сделать тесты более детерминированными. Ранее она вызывалась только один раз в главном процессе перед запуском всех тестовых файлов и не вызывалась в рабочих процессах. Патч от Victor Stinner.
- [gh-109276](https://python-all.ru/3/whatsnew/changelog.html): libregrtest теперь использует отдельный файловый дескриптор для записи результата теста в JSON. Раньше, если тест выводил отладочные сообщения поздно, рядом с JSON, главный процесс теста не мог разобрать JSON. Патч от Victor Stinner.
- [gh-108996](https://python-all.ru/3/whatsnew/changelog.html): Fix and enable `test_msvcrt`.
- [gh-109237](https://python-all.ru/3/whatsnew/changelog.html): Исправлен `test_site.test_underpth_basic()`, когда рабочий каталог содержит хотя бы один не-ASCII символ: кодировать файл `._pth` в UTF-8 и включить режим UTF-8 для использования UTF-8 для stdout дочернего процесса. Патч от Victor Stinner.
- [gh-109230](https://python-all.ru/3/whatsnew/changelog.html): Исправлен `test_pyexpat.test_exception()`: теперь его можно запускать из каталога, отличного от каталога исходного кода Python. Раньше тест в этом случае завершался неудачей. Пропускать тест, если исходный файл Modules/pyexpat.c недоступен. Также пропускать тест для реализаций Python, отличных от CPython. Патч от Victor Stinner.
- [gh-108996](https://python-all.ru/3/whatsnew/changelog.html): Добавлены тесты для `msvcrt`.
- [gh-109015](https://python-all.ru/3/whatsnew/changelog.html): Исправлены тесты test\_asyncio, test\_imaplib и test\_socket на FreeBSD, если включена чёрная дыра TCP (`sysctl net.inet.tcp.blackhole`). Пропущено несколько тестов, которые завершались с ошибкой `ETIMEDOUT` при такой нестандартной конфигурации. В настоящее время [образ FreeBSD GCP включает чёрную дыру для TCP и UDP](https://python-all.ru/3/whatsnew/changelog.html) (`sysctl net.inet.tcp.blackhole=2` и `sysctl net.inet.udp.blackhole=1`). Патч от Victor Stinner.
- [gh-91960](https://python-all.ru/3/whatsnew/changelog.html): Пропускать `test_gdb`, если gdb не может получить объекты фреймов Python: если фрейм `<optimized out>`. Когда Python собран с «clang -Og», gdb может не получить параметр *фрейма* функции `_PyEval_EvalFrameDefault()`. В этом случае тесты вроде `py_bt()`, скорее всего, завершатся неудачей. Без доступа к фреймам Python `python-gdb.py` в значительной степени не может восстановить трассировку Python. Кроме того, `test_gdb` больше не пропускается на macOS, если Python собран с Clang. Патч от Victor Stinner.
- [gh-108962](https://python-all.ru/3/whatsnew/changelog.html): Пропускать `test_tempfile.test_flags()`, если `chflags()` завершается с «OSError: \[Errno 45\] Operation not supported» (например, на FreeBSD 13). Патч от Victor Stinner.
- [gh-91960](https://python-all.ru/3/whatsnew/changelog.html): Покрытие CI для FreeBSD 13.2 для pull-запросов теперь обеспечивается Cirrus-CI (облачный CI-сервис, поддерживающий Linux, macOS, Windows и FreeBSD).
- [gh-89392](https://python-all.ru/3/whatsnew/changelog.html): Из тестов удалена поддержка функции `test_main()`. Теперь они всегда используют обычный тестовый раннер unittest.
- [gh-108851](https://python-all.ru/3/whatsnew/changelog.html): Исправлены тесты рекурсии `test_tomllib` для сборочных машин WASI: уменьшен предел рекурсии и вычисляется максимальная вложенность массива/словаря в зависимости от текущего доступного предела рекурсии. Патч от Victor Stinner.
- [gh-108851](https://python-all.ru/3/whatsnew/changelog.html): Добавлены функции `get_recursion_available()` и `get_recursion_depth()` в модуль [`test.support`](https://python-all.ru/3/library/test.html#module-test.support). Патч от Victor Stinner.
- [gh-108834](https://python-all.ru/3/whatsnew/changelog.html): Добавлена опция `--fail-rerun option` в regrtest: если тест сначала провалился, а затем прошёл при повторном запуске в подробном режиме, процесс завершается с кодом 2 (ошибка), а не с кодом 0 (успех). Патч от Victor Stinner.
- [gh-108834](https://python-all.ru/3/whatsnew/changelog.html): Переименована опция `--verbose2` regrtest (`-w`) в `--rerun`. `--verbose2` оставлен как устаревший псевдоним. Патч от Victor Stinner.
- [gh-108834](https://python-all.ru/3/whatsnew/changelog.html): Когда regrtest повторно запускает провалившиеся тесты в подробном режиме (`./python -m test --rerun`), тесты теперь запускаются заново в свежих рабочих процессах, а не выполняются в главном процессе. Если тест аварийно завершается или прекращается по таймауту, главный процесс может обнаружить и обработать убитый рабочий процесс. Тесты повторно запускаются параллельно, если используется опция `-jN` для параллельного запуска тестов. Патч от Victor Stinner.
- [gh-108822](https://python-all.ru/3/whatsnew/changelog.html): `regrtest` теперь вычисляет статистику по всем тестам: успешные, провалившиеся и пропущенные. `test_netrc`, `test_pep646_syntax` и `test_xml_etree` теперь возвращают результаты в своей функции `test_main()`. Патч от Victor Stinner и Alex Waygood.
- [gh-108794](https://python-all.ru/3/whatsnew/changelog.html): Метод [`doctest.DocTestRunner.run()`](https://python-all.ru/3/library/doctest.html#doctest.DocTestRunner.run) теперь подсчитывает количество пропущенных тестов. Добавлены атрибуты [`doctest.DocTestRunner.skips`](https://python-all.ru/3/library/doctest.html#doctest.DocTestRunner.skips) и [`doctest.TestResults.skipped`](https://python-all.ru/3/library/doctest.html#doctest.TestResults.skipped). Патч от Victor Stinner.
- [gh-108388](https://python-all.ru/3/whatsnew/changelog.html): Модуль test\_concurrent\_futures преобразован в пакет из 7 подтестов. Патч от Victor Stinner.
- [gh-108388](https://python-all.ru/3/whatsnew/changelog.html): Разделены test\_multiprocessing\_fork, test\_multiprocessing\_forkserver и test\_multiprocessing\_spawn на тестовые пакеты. Каждый пакет состоит из 4 подтестов: процессы, потоки, менеджер и разное. Это позволяет запускать больше тестов параллельно и тем самым сократить общую продолжительность тестирования. Патч от Victor Stinner.
- [gh-105776](https://python-all.ru/3/whatsnew/changelog.html): Исправлен test\_cppext, когда команда компилятора C содержит опцию `-std=c11`: удалены опции `-std=` из команды компилятора. Патч от Victor Stinner.
- [gh-107652](https://python-all.ru/3/whatsnew/changelog.html): Настроен CIFuzz для запуска целей фаззинга в GitHub Actions. Патч от Illia Volochii.
- [gh-107237](https://python-all.ru/3/whatsnew/changelog.html): `test_logging`: Исправлен `test_udp_reconnection()` путём увеличения таймаута с 100 мс до 5 минут (LONG\_TIMEOUT). Патч от Victor Stinner.
- [gh-107178](https://python-all.ru/3/whatsnew/changelog.html): Добавлен тест C API для функций в протоколе отображений, протоколе последовательностей и некоторых функциях в протоколе объектов.
- [gh-106714](https://python-all.ru/3/whatsnew/changelog.html): test\_capi: Исправлено test\_no\_FatalError\_infinite\_loop(), чтобы больше не создавать coredump, с помощью test.support.SuppressCrashReport. Патч от Victor Stinner.
- [gh-104090](https://python-all.ru/3/whatsnew/changelog.html): Устранено создание ссылки на тестовый объект в [`collectedDurations()`](https://python-all.ru/3/library/unittest.html#unittest.TestResult.collectedDurations).
- [gh-106752](https://python-all.ru/3/whatsnew/changelog.html): Тесты для `zipfile.Path` перемещены в `Lib/test/test_zipfile/_path`. `zipfile._path` превращён в пакет.
- [gh-106690](https://python-all.ru/3/whatsnew/changelog.html): Добавлен .coveragerc в репозиторий cpython для использования с пакетом coverage.
- [gh-101634](https://python-all.ru/3/whatsnew/changelog.html): При запуске набора тестов Python с опцией `-jN`, если stdout рабочего процесса не может быть декодирован из кодировки локали, сообщить о проваленном тесте, чтобы код возврата был ненулевым. Патч от Victor Stinner.
- [gh-105084](https://python-all.ru/3/whatsnew/changelog.html): Когда сборка Python сконфигурирована с `--with-wheel-pkg-dir`, тесты, требующие колёса `setuptools` и `wheel`, будут искать колёса в `WHEEL_PKG_DIR`.
- [gh-81005](https://python-all.ru/3/whatsnew/changelog.html): Тесты строк изменены, чтобы отразить, что `str` и `unicode` объединены в Python 3. Патч от Daniel Fortunov.
- [gh-103186](https://python-all.ru/3/whatsnew/changelog.html): Подавление и проверка ожидаемых RuntimeWarnings в test\_sys\_settrace.py
- [gh-69714](https://python-all.ru/3/whatsnew/changelog.html): Добавлены дополнительные тесты в [`calendar`](https://python-all.ru/3/library/calendar.html#module-calendar) для достижения полного покрытия.

### Сборка

- [gh-103053](https://python-all.ru/3/whatsnew/changelog.html): «make check-clean-src» теперь также проверяет, находится ли программа «python» в исходном каталоге: завершается с ошибкой, если она существует. Патч от Victor Stinner.
- [gh-109191](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка компиляции при сборке с новыми версиями libedit.
- [gh-110276](https://python-all.ru/3/whatsnew/changelog.html): Больше не игнорируется молча [`PROFILE_TASK`](https://python-all.ru/3/using/configure.html#envvar-PROFILE_TASK) сбой: команда, используемая в профильной оптимизации (PGO). Патч от Victor Stinner.
- [gh-109566](https://python-all.ru/3/whatsnew/changelog.html): Удалена цель `make testall`: используйте `make buildbottest` вместо неё. Патч от Victor Stinner.
- [gh-109740](https://python-all.ru/3/whatsnew/changelog.html): Экспериментальный флаг конфигурации `--disable-gil` теперь включает «t» (для «threaded») в теги ABI расширений.
- [gh-109054](https://python-all.ru/3/whatsnew/changelog.html): Исправлена сборка расширения `_testcapi` на Linux AArch64, которая требует линковки с libatomic при использовании `<cpython/pyatomic.h>`: функция `_Py_atomic_or_uint64()` требует libatomic `__atomic_fetch_or_8()` на этой платформе. Скрипт configure теперь проверяет, нужна ли линковка с libatomic, и генерирует новую переменную LIBATOMIC, используемую для сборки расширения \_testcapi. Патч от Victor Stinner.
- [gh-63760](https://python-all.ru/3/whatsnew/changelog.html): Исправлена сборка на Solaris: больше не переопределяется функция `gethostname()`. Solaris определяет эту функцию с 2005 года. Патч от Victor Stinner, оригинальный патч от Jakub Kulík.
- [gh-108740](https://python-all.ru/3/whatsnew/changelog.html): Исправлено состояние гонки в `make regen-all`. Исходные файлы `deepfreeze.c` и файлы, сгенерированные Argument Clinic, теперь генерируются или обновляются до генерации «глобальных объектов». Ранее некоторые идентификаторы могли отсутствовать в зависимости от порядка генерации этих файлов. Патч от Victor Stinner.
- [gh-108634](https://python-all.ru/3/whatsnew/changelog.html): Python, собранный с `configure` [`--with-trace-refs`](https://python-all.ru/3/using/configure.html#cmdoption-with-trace-refs) (трассировка ссылок), теперь ABI-совместим со сборкой релиза Python и [отладочной сборкой](https://python-all.ru/3/using/configure.html#debug-build). Патч от Victor Stinner.
- [gh-85283](https://python-all.ru/3/whatsnew/changelog.html): Расширение `_stat` на C теперь собирается с [ограниченным C API](https://python-all.ru/3/c-api/stable.html#limited-c-api). Патч от Victor Stinner.
- [gh-108447](https://python-all.ru/3/whatsnew/changelog.html): Исправлена сборка x86\_64 GNU/Hurd
- [gh-107814](https://python-all.ru/3/whatsnew/changelog.html): При вызове `find_python.bat` с `-q` вывод nuget не подавлялся должным образом. Теперь это исправлено.
- [gh-105481](https://python-all.ru/3/whatsnew/changelog.html): Удалён make-таргет `regen-opcode-targets`, его работа объединена с `regen-opcode`, который повторяет большую часть вычислений. Это упрощает код сборки и уменьшает дублирование.
- [gh-106881](https://python-all.ru/3/whatsnew/changelog.html): Проверять наличие `linux/limits.h` перед включением его в `Modules/posixmodule.c`.
- [gh-95855](https://python-all.ru/3/whatsnew/changelog.html): Рефакторинг кода определения триплета платформы и добавление поддержки MIPS soft float и musl libc.
- [gh-106962](https://python-all.ru/3/whatsnew/changelog.html): Обнаружение MPI-компиляторов в `configure`.
- [gh-106118](https://python-all.ru/3/whatsnew/changelog.html): Исправлена компиляция для платформ без `O_CLOEXEC`. Проблема появилась в Python 3.12b1 с коммитом [gh-103295](https://python-all.ru/3/whatsnew/changelog.html). Патч от Erlend Aasland.
- [gh-105875](https://python-all.ru/3/whatsnew/changelog.html): Для сборки модуля расширения [`sqlite3`](https://python-all.ru/3/library/sqlite3.html#module-sqlite3) требуется SQLite 3.15.2 или новее. Патч от Erlend Aasland.
- [gh-90005](https://python-all.ru/3/whatsnew/changelog.html): Исправлен регресс в `configure`, из-за которого могла непреднамеренно возникать линковка с `libbsd`.
- [gh-102404](https://python-all.ru/3/whatsnew/changelog.html): Документирован процесс сборки WASI на Linux. Добавлен Tools/wasm/build\_wasi.sh как образцовая реализация из документации.
- [gh-89886](https://python-all.ru/3/whatsnew/changelog.html): Для регенерации `configure` теперь требуются Autoconf 2.71 и aclocal 1.16.4.
- [gh-104692](https://python-all.ru/3/whatsnew/changelog.html): Включить `commoninstall` в качестве необходимого условия для `bininstall`

  Это гарантирует, что `commoninstall` будет завершён до начала `bininstall` при использовании параллельных сборок (`make -j install`), и, таким образом, символическая ссылка `python3` устанавливается только после установки всех модулей стандартной библиотеки.
- [gh-101538](https://python-all.ru/3/whatsnew/changelog.html): Добавлена экспериментальная поддержка wasi-threads. Патч от Takashi Yamamoto.

### Windows

- [gh-110437](https://python-all.ru/3/whatsnew/changelog.html): Позволяет переопределять источник распространения VC перенаправляемых пакетов, чтобы гарантировать, что в обновлениях не произойдёт понижения версии.
- [gh-109286](https://python-all.ru/3/whatsnew/changelog.html): Обновлён установщик Windows для использования SQLite 3.43.1.
- [gh-82367](https://python-all.ru/3/whatsnew/changelog.html): [`os.path.realpath()`](https://python-all.ru/3/library/os.path.html#os.path.realpath) теперь разрешает имена файлов в стиле MS-DOS, даже если файл недоступен. Патч от Moonsik Park.
- [gh-109991](https://python-all.ru/3/whatsnew/changelog.html): Обновлена сборка Windows для использования OpenSSL 3.0.11.
- [gh-106242](https://python-all.ru/3/whatsnew/changelog.html): Исправлено поведение [`realpath()`](https://python-all.ru/3/library/os.path.html#os.path.realpath) при передаче пути с нулевым символом внутри на Windows. В строгом режиме теперь вызывается [`OSError`](https://python-all.ru/3/library/exceptions.html#OSError) вместо неожиданного [`ValueError`](https://python-all.ru/3/library/exceptions.html#ValueError), а в нестрогом – путь становится абсолютным.
- [gh-83180](https://python-all.ru/3/whatsnew/changelog.html): Изменяет [менеджер установки Python](https://python-all.ru/3/using/windows.html#launcher) так, чтобы он предпочитал активное виртуальное окружение, если запускаемый скрипт содержит shebang-строку с Unix-подобной виртуальной командой, даже если эта команда запрашивает конкретную версию Python.
- [gh-106844](https://python-all.ru/3/whatsnew/changelog.html): Исправлено целочисленное переполнение и обрезание нулевым символом в `_winapi.LCMapStringEx()`, что затрагивает `ntpath.normcase()`.
- [gh-105436](https://python-all.ru/3/whatsnew/changelog.html): Гарантируется, что пустой блок окружения завершается двумя нулевыми символами, как того требует Windows.
- [gh-105146](https://python-all.ru/3/whatsnew/changelog.html): Обновлены ссылки в конце установщика: теперь они ведут на Discourse вместо списков рассылки.
- [gh-103646](https://python-all.ru/3/whatsnew/changelog.html): При установке из Microsoft Store `pip` больше не выбирает по умолчанию установку для текущего пользователя. Однако, поскольку каталог установки недоступен для записи, он всё равно должен автоматически принять решение об установке для пользователя. Это должно решить проблемы, когда `pip` передаётся опция, конфликтующая с `--user`.
- [gh-88745](https://python-all.ru/3/whatsnew/changelog.html): Улучшена производительность [`shutil.copy2()`](https://python-all.ru/3/library/shutil.html#shutil.copy2) за счёт использования системной функции `CopyFile2`. Это может привести к незначительным изменениям в метаданных, копируемых вместе с некоторыми файлами, приводя их в соответствие с обычным поведением ОС.
- [gh-104820](https://python-all.ru/3/whatsnew/changelog.html): Исправлены [`stat()`](https://python-all.ru/3/library/os.html#os.stat) и связанные функции в файловых системах, не поддерживающих запросы идентификаторов файлов. Это касается FAT32 и exFAT.
- [gh-104803](https://python-all.ru/3/whatsnew/changelog.html): Добавлена функция [`os.path.isdevdrive()`](https://python-all.ru/3/library/os.path.html#os.path.isdevdrive) для определения, находится ли путь на Windows Dev Drive. Возвращает `False` на платформах, не поддерживающих Dev Drive, и отсутствует на платформах, отличных от Windows.

### macOS

- [gh-109286](https://python-all.ru/3/whatsnew/changelog.html): Обновлён установщик macOS для использования SQLite 3.43.1.
- [gh-109991](https://python-all.ru/3/whatsnew/changelog.html): Обновлён установщик macOS для использования OpenSSL 3.0.11.
- [gh-99079](https://python-all.ru/3/whatsnew/changelog.html): Обновлён установщик macOS для использования OpenSSL 3.0.9.

### IDLE

- [gh-104719](https://python-all.ru/3/whatsnew/changelog.html): Удалена модификация IDLE для tokenize.tabsize и выполнено тестирование других вариантов использования данных и методов tokenize.

### Tools/Demos

- [gh-109991](https://python-all.ru/3/whatsnew/changelog.html): Обновлены рабочие процессы CI GitHub для использования OpenSSL 3.0.11, а multissltests – для использования 1.1.1w, 3.0.11 и 3.1.3.
- [gh-108494](https://python-all.ru/3/whatsnew/changelog.html): [Argument Clinic](https://python-all.ru/3/whatsnew/changelog.html) теперь имеет частичную поддержку [Limited API](https://python-all.ru/3/c-api/stable.html#limited-c-api): см. [документацию в руководстве разработчика Python](https://python-all.ru/3/whatsnew/changelog.html). Патч от Victor Stinner.
- [gh-107704](https://python-all.ru/3/whatsnew/changelog.html): Теперь можно помечать как устаревшие передачу именованных аргументов для параметров, которые могут быть как ключевыми, так и позиционными, с помощью Argument Clinic, используя новый синтаксис `/ [from X.Y]`. (Следует читать как *«только позиционные начиная с версии Python X.Y»*.) См. [документацию в руководстве разработчика Python](https://python-all.ru/3/whatsnew/changelog.html) для получения дополнительной информации.
- [gh-107880](https://python-all.ru/3/whatsnew/changelog.html): Argument Clinic теперь может клонировать методы `__init__()` и `__new__()`.
- [gh-104683](https://python-all.ru/3/whatsnew/changelog.html): Добавлена опция `--exclude` в интерфейс командной строки Argument Clinic.
- [gh-95065](https://python-all.ru/3/whatsnew/changelog.html): Argument Clinic теперь поддерживает переопределение автоматически сгенерированной сигнатуры с помощью директивы `@text_signature`. См. [документацию в руководстве разработчика Python](https://python-all.ru/3/whatsnew/changelog.html).
- [gh-107609](https://python-all.ru/3/whatsnew/changelog.html): Исправлена проверка дублирующихся модулей в Argument Clinic. Ранее дублирующееся определение могло быть некорректно принято без уведомления. Патч от Erlend E. Aasland.
- [gh-107467](https://python-all.ru/3/whatsnew/changelog.html): Инструмент командной строки Argument Clinic теперь при ошибке выводит сообщения в stderr вместо stdout.
- [gh-106970](https://python-all.ru/3/whatsnew/changelog.html): Исправлены ошибки в команде `destination <name> clear` Argument Clinic; буферы назначения никогда не очищались, а парсер директивы `destination` после обработки команды просто переходил к обработчику ошибок. Патч от Erlend E. Aasland.
- [gh-106706](https://python-all.ru/3/whatsnew/changelog.html): Изменён синтаксис байткода для семейств, чтобы убрать избыточный псевдосинтаксис сопоставления имён.
- [gh-106359](https://python-all.ru/3/whatsnew/changelog.html): Argument Clinic теперь явно запрещает «распаковку именованных аргументов» в вызовах функций, используемых в качестве аннотаций.
- [gh-103186](https://python-all.ru/3/whatsnew/changelog.html): `freeze` теперь получает `CONFIG_ARGS` из исходного экземпляра CPython, который используется Makefile для вызова вспомогательных скриптов. Патч от Ijtaba Hussain.
- [gh-95065](https://python-all.ru/3/whatsnew/changelog.html): Теперь можно помечать как устаревшие передачу параметров по позиции с помощью Argument Clinic, используя новый синтаксис `* [from X.Y]`. (Следует читать как *«только ключевые начиная с версии Python X.Y»*.) См. [документацию в руководстве разработчика Python](https://python-all.ru/3/whatsnew/changelog.html) для получения дополнительной информации. Патч от Erlend E. Aasland при участии Alex Waygood, Nikita Sobolev и Serhiy Storchaka.

### C API

- [gh-85283](https://python-all.ru/3/whatsnew/changelog.html): Если определён макрос [`Py_LIMITED_API`](https://python-all.ru/3/c-api/stable.html#c.Py_LIMITED_API), то макросы `Py_BUILD_CORE`, `Py_BUILD_CORE_BUILTIN` и `Py_BUILD_CORE_MODULE` теперь не определяются с помощью `<Python.h>`. Патч от Victor Stinner.
- [gh-110289](https://python-all.ru/3/whatsnew/changelog.html): Добавлены функции [`PyUnicode_EqualToUTF8AndSize()`](https://python-all.ru/3/c-api/unicode.html#c.PyUnicode_EqualToUTF8AndSize) и [`PyUnicode_EqualToUTF8()`](https://python-all.ru/3/c-api/unicode.html#c.PyUnicode_EqualToUTF8).
- [gh-110235](https://python-all.ru/3/whatsnew/changelog.html): Вызывается исключение [`TypeError`](https://python-all.ru/3/library/exceptions.html#TypeError) для дублирующихся или неизвестных полей в конструкторе `PyStructSequence`. Патч от Xuehai Pan.
- [gh-110014](https://python-all.ru/3/whatsnew/changelog.html): Удалена недокументированная константа `PY_TIMEOUT_MAX` из ограниченного C API. Патч от Victor Stinner.
- [gh-109521](https://python-all.ru/3/whatsnew/changelog.html): [`PyImport_GetImporter()`](https://python-all.ru/3/c-api/import.html#c.PyImport_GetImporter) теперь устанавливает RuntimeError, если не удаётся получить [`sys.path_hooks`](https://python-all.ru/3/library/sys.html#sys.path_hooks) или [`sys.path_importer_cache`](https://python-all.ru/3/library/sys.html#sys.path_importer_cache), или если они не являются соответственно списком и словарём. Ранее в неочевидных случаях мог возвращаться NULL без установки ошибки, происходить аварийное завершение или возбуждаться SystemError, если эти атрибуты имели неправильный тип.
- [gh-108724](https://python-all.ru/3/whatsnew/changelog.html): Добавлен [`PyMutex`](https://python-all.ru/3/c-api/synchronization.html#c.PyMutex) – внутренний легковесный API для блокировок.
- [gh-85283](https://python-all.ru/3/whatsnew/changelog.html): Добавлена функция [`PySys_AuditTuple()`](https://python-all.ru/3/c-api/sys.html#c.PySys_AuditTuple): аналогична [`PySys_Audit()`](https://python-all.ru/3/c-api/sys.html#c.PySys_Audit), но передаёт аргументы события как объект Python [`tuple`](https://python-all.ru/3/library/stdtypes.html#tuple). Патч от Victor Stinner.
- [gh-108867](https://python-all.ru/3/whatsnew/changelog.html): Добавлена функция [`PyThreadState_GetUnchecked()`](https://python-all.ru/3/c-api/threads.html#c.PyThreadState_GetUnchecked): аналогична [`PyThreadState_Get()`](https://python-all.ru/3/c-api/threads.html#c.PyThreadState_Get), но не завершает процесс фатальной ошибкой, если он равен NULL. Вызывающий код должен самостоятельно проверить, не равен ли результат NULL. Ранее функция была приватной и была известна как `_PyThreadState_UncheckedGet()`. Патч от Victor Stinner.
- [gh-108765](https://python-all.ru/3/whatsnew/changelog.html): `Python.h` больше не включает стандартный заголовочный файл `<ctype.h>`. При необходимости его теперь нужно включать явно. Например, он предоставляет функции `isalpha()` и `tolower()`, которые зависят от локали. Python предоставляет независимые от локали функции, такие как `Py_ISALPHA()` и `Py_TOLOWER()`. Патч от Victor Stinner.
- [gh-108765](https://python-all.ru/3/whatsnew/changelog.html): `Python.h` больше не включает стандартный заголовочный файл `<unistd.h>`. При необходимости его теперь нужно включать явно. Например, он предоставляет функции: `close()`, `getpagesize()`, `getpid()` и `sysconf()`. Патч от Victor Stinner.
- [gh-108765](https://python-all.ru/3/whatsnew/changelog.html): `Python.h` больше не включает стандартный заголовочный файл `<ieeefp.h>`. Он был включён для функции `finite()`, которая теперь предоставляется заголовочным файлом `<math.h>`. При необходимости его теперь нужно включать явно. Также удалён макрос `HAVE_IEEEFP_H`. Патч от Victor Stinner.
- [gh-108765](https://python-all.ru/3/whatsnew/changelog.html): `Python.h` больше не включает следующие стандартные заголовочные файлы: `<time.h>`, `<sys/select.h>` и `<sys/time.h>`. При необходимости их теперь нужно включать явно. Например, `<time.h>` предоставляет функции `clock()` и `gmtime()`, `<sys/select.h>` предоставляет функцию `select()`, а `<sys/time.h>` предоставляет функции `futimes()`, `gettimeofday()` и `setitimer()`. Патч от Victor Stinner.
- [gh-108511](https://python-all.ru/3/whatsnew/changelog.html): Добавлены функции [`PyObject_HasAttrWithError()`](https://python-all.ru/3/c-api/object.html#c.PyObject_HasAttrWithError), [`PyObject_HasAttrStringWithError()`](https://python-all.ru/3/c-api/object.html#c.PyObject_HasAttrStringWithError), [`PyMapping_HasKeyWithError()`](https://python-all.ru/3/c-api/mapping.html#c.PyMapping_HasKeyWithError) и [`PyMapping_HasKeyStringWithError()`](https://python-all.ru/3/c-api/mapping.html#c.PyMapping_HasKeyStringWithError).
- [gh-107073](https://python-all.ru/3/whatsnew/changelog.html): Добавлены функции [`PyObject_VisitManagedDict()`](https://python-all.ru/3/c-api/object.html#c.PyObject_VisitManagedDict) и [`PyObject_ClearManagedDict()`](https://python-all.ru/3/c-api/object.html#c.PyObject_ClearManagedDict), которые должны вызываться функциями traverse и clear типа, использующего флаг [`Py_TPFLAGS_MANAGED_DICT`](https://python-all.ru/3/c-api/typeobj.html#c.Py_TPFLAGS_MANAGED_DICT). Патч от Victor Stinner.
- [gh-108634](https://python-all.ru/3/whatsnew/changelog.html): Python, собранный с `configure` [`--with-trace-refs`](https://python-all.ru/3/using/configure.html#cmdoption-with-trace-refs) (отслеживание ссылок), теперь поддерживает [Limited API](https://python-all.ru/3/c-api/stable.html#limited-c-api). Патч от Victor Stinner.
- [gh-108014](https://python-all.ru/3/whatsnew/changelog.html): Добавлена функция [`PyLong_AsInt()`](https://python-all.ru/3/c-api/long.html#c.PyLong_AsInt): аналогична [`PyLong_AsLong()`](https://python-all.ru/3/c-api/long.html#c.PyLong_AsLong), но сохраняет результат в C int вместо C long. Ранее она была известна как приватная функция `_PyLong_AsInt()` (с префиксом подчёркивания). Патч от Victor Stinner.
- [gh-108314](https://python-all.ru/3/whatsnew/changelog.html): Добавлена функция [`PyDict_ContainsString()`](https://python-all.ru/3/c-api/dict.html#c.PyDict_ContainsString): то же, что и [`PyDict_Contains()`](https://python-all.ru/3/c-api/dict.html#c.PyDict_Contains), но *key* задаётся как строка байтов в кодировке UTF-8 const char\*, а не [PyObject](https://python-all.ru/3/c-api/structures.html#c.PyObject)\*. Патч от Victor Stinner.
- [gh-108337](https://python-all.ru/3/whatsnew/changelog.html): Добавлены атомарные операции над дополнительными типами данных в pyatomic.h.
- [gh-108014](https://python-all.ru/3/whatsnew/changelog.html): Добавлена функция [`Py_IsFinalizing()`](https://python-all.ru/3/c-api/interp-lifecycle.html#c.Py_IsFinalizing): проверяет, находится ли главный интерпретатор Python в процессе [завершения работы](https://python-all.ru/3/glossary.html#term-interpreter-shutdown). Патч от Victor Stinner.
- [gh-107916](https://python-all.ru/3/whatsnew/changelog.html): Функции C API [`PyErr_SetFromErrnoWithFilename()`](https://python-all.ru/3/c-api/exceptions.html#c.PyErr_SetFromErrnoWithFilename), [`PyErr_SetExcFromWindowsErrWithFilename()`](https://python-all.ru/3/c-api/exceptions.html#c.PyErr_SetExcFromWindowsErrWithFilename) и [`PyErr_SetFromWindowsErrWithFilename()`](https://python-all.ru/3/c-api/exceptions.html#c.PyErr_SetFromWindowsErrWithFilename) теперь сохраняют код ошибки перед вызовом [`PyUnicode_DecodeFSDefault()`](https://python-all.ru/3/c-api/unicode.html#c.PyUnicode_DecodeFSDefault).
- [gh-107915](https://python-all.ru/3/whatsnew/changelog.html): Такие функции C API, как `PyErr_SetString()`, `PyErr_Format()`, `PyErr_SetFromErrnoWithFilename()` и многие другие, больше не падают и не игнорируют ошибки при неудачном форматировании сообщения об ошибке или декодировании имени файла. Вместо этого они сохраняют соответствующую ошибку.
- [gh-107810](https://python-all.ru/3/whatsnew/changelog.html): Улучшена [`DeprecationWarning`](https://python-all.ru/3/library/exceptions.html#DeprecationWarning) для случаев использования [`PyType_Spec`](https://python-all.ru/3/c-api/type.html#c.PyType_Spec) с метаклассами, имеющими собственный `tp_new`.
- [gh-107249](https://python-all.ru/3/whatsnew/changelog.html): Реализован макрос [`Py_UNUSED`](https://python-all.ru/3/c-api/intro.html#c.Py_UNUSED) для компилятора Windows MSVC. Патч от Victor Stinner.
- [gh-107226](https://python-all.ru/3/whatsnew/changelog.html): [`PyModule_AddObjectRef()`](https://python-all.ru/3/c-api/module.html#c.PyModule_AddObjectRef) теперь доступен только в ограниченном API версии 3.10 и выше.
- [gh-106320](https://python-all.ru/3/whatsnew/changelog.html): Удалён закрытый псевдоним `_PyUnicode_AsString()` для [`PyUnicode_AsUTF8()`](https://python-all.ru/3/c-api/unicode.html#c.PyUnicode_AsUTF8). Он был сохранён для обратной совместимости с Python 3.0–3.2. `PyUnicode_AsUTF8()` доступен начиная с Python 3.3. Функцию [`PyUnicode_AsUTF8String()`](https://python-all.ru/3/c-api/unicode.html#c.PyUnicode_AsUTF8String) можно использовать для сохранения совместимости с Python 3.2 и старше. Патч от Victor Stinner.
- [gh-106572](https://python-all.ru/3/whatsnew/changelog.html): Преобразованы макросы [`PyObject_DelAttr()`](https://python-all.ru/3/c-api/object.html#c.PyObject_DelAttr) и [`PyObject_DelAttrString()`](https://python-all.ru/3/c-api/object.html#c.PyObject_DelAttrString) в функции. Патч от Victor Stinner.
- [gh-106307](https://python-all.ru/3/whatsnew/changelog.html): Добавлена функция [`PyMapping_GetOptionalItem()`](https://python-all.ru/3/c-api/mapping.html#c.PyMapping_GetOptionalItem).
- [gh-106521](https://python-all.ru/3/whatsnew/changelog.html): Добавлены функции [`PyObject_GetOptionalAttr()`](https://python-all.ru/3/c-api/object.html#c.PyObject_GetOptionalAttr) и [`PyObject_GetOptionalAttrString()`](https://python-all.ru/3/c-api/object.html#c.PyObject_GetOptionalAttrString).
- [gh-106320](https://python-all.ru/3/whatsnew/changelog.html): Удалён псевдоним `_PyInterpreterState_Get()` для [`PyInterpreterState_Get()`](https://python-all.ru/3/c-api/subinterpreters.html#c.PyInterpreterState_Get), который был сохранён для обратной совместимости с Python 3.8. Патч от Victor Stinner.
- [gh-106316](https://python-all.ru/3/whatsnew/changelog.html): Удалён заголовочный файл `cpython/pytime.h`: он содержал только закрытые функции. Патч от Victor Stinner.
- [gh-106023](https://python-all.ru/3/whatsnew/changelog.html): Удалена закрытая функция `_PyObject_FastCall()`: используйте `PyObject_Vectorcall()`, доступную начиная с Python 3.8 ([**PEP 590**](https://python-all.ru/3/whatsnew/changelog.html)). Патч от Victor Stinner.
- [gh-106168](https://python-all.ru/3/whatsnew/changelog.html): Если Python собран в [режиме отладки](https://python-all.ru/3/using/configure.html#debug-build) или [`with assertions`](https://python-all.ru/3/using/configure.html#cmdoption-with-assertions), то [`PyTuple_SET_ITEM()`](https://python-all.ru/3/c-api/tuple.html#c.PyTuple_SET_ITEM) и [`PyList_SET_ITEM()`](https://python-all.ru/3/c-api/list.html#c.PyList_SET_ITEM) теперь проверяют аргумент индекса с помощью утверждения. Если утверждение не выполняется, убедитесь, что размер установлен заранее. Патч от Victor Stinner.
- [gh-106084](https://python-all.ru/3/whatsnew/changelog.html): Удалены старые псевдонимы функций, вызывающих функции, которые были сохранены для обратной совместимости с временным 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()`

  Просто удалите префикс с подчёркивания, чтобы обновить свой код. Патч от Victor Stinner.
- [gh-106004](https://python-all.ru/3/whatsnew/changelog.html): Добавлены функции [`PyDict_GetItemRef()`](https://python-all.ru/3/c-api/dict.html#c.PyDict_GetItemRef) и [`PyDict_GetItemStringRef()`](https://python-all.ru/3/c-api/dict.html#c.PyDict_GetItemStringRef): аналогичны [`PyDict_GetItemWithError()`](https://python-all.ru/3/c-api/dict.html#c.PyDict_GetItemWithError), но возвращают [сильную ссылку](https://python-all.ru/3/glossary.html#term-strong-reference) вместо [заимствованной ссылки](https://python-all.ru/3/glossary.html#term-borrowed-reference). Патч от Victor Stinner.
- [gh-105927](https://python-all.ru/3/whatsnew/changelog.html): Объявлены устаревшими функции [`PyWeakref_GetObject()`](https://python-all.ru/3/c-api/weakref.html#c.PyWeakref_GetObject) и [`PyWeakref_GET_OBJECT()`](https://python-all.ru/3/c-api/weakref.html#c.PyWeakref_GET_OBJECT): используйте вместо них новую функцию [`PyWeakref_GetRef()`](https://python-all.ru/3/c-api/weakref.html#c.PyWeakref_GetRef). Патч от Victor Stinner.
- [gh-105927](https://python-all.ru/3/whatsnew/changelog.html): Добавлена функция [`PyWeakref_GetRef()`](https://python-all.ru/3/c-api/weakref.html#c.PyWeakref_GetRef): аналогична [`PyWeakref_GetObject()`](https://python-all.ru/3/c-api/weakref.html#c.PyWeakref_GetObject), но возвращает [сильную ссылку](https://python-all.ru/3/glossary.html#term-strong-reference) или `NULL`, если референт больше не жив. Патч от Victor Stinner.
- [gh-105922](https://python-all.ru/3/whatsnew/changelog.html): Добавлена [`PyImport_AddModuleRef()`](https://python-all.ru/3/c-api/import.html#c.PyImport_AddModuleRef): аналогична [`PyImport_AddModule()`](https://python-all.ru/3/c-api/import.html#c.PyImport_AddModule), но возвращает [сильную ссылку](https://python-all.ru/3/glossary.html#term-strong-reference) вместо [заимствованной ссылки](https://python-all.ru/3/glossary.html#term-borrowed-reference). Патч от Victor Stinner.
- [gh-105227](https://python-all.ru/3/whatsnew/changelog.html): Новая [`PyType_GetDict()`](https://python-all.ru/3/c-api/type.html#c.PyType_GetDict) предоставляет словарь для заданного объекта типа, который обычно предоставляется `cls.__dict__`. Обычно достаточно использовать [`tp_dict`](https://python-all.ru/3/c-api/typeobj.html#c.PyTypeObject.tp_dict), но для статических встроенных типов `tp_dict` теперь всегда `NULL`. `PyType_GetDict()` вместо этого предоставляет правильный объект словаря.
- [gh-105375](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка в [`PyErr_WarnExplicit()`](https://python-all.ru/3/c-api/exceptions.html#c.PyErr_WarnExplicit), при которой исключение могло быть перезаписано при внутреннем сбое API.
- [gh-105603](https://python-all.ru/3/whatsnew/changelog.html): Мы переименовали новый (в 3.12) `PyInterpreterConfig.own_gil` в `PyInterpreterConfig.gil` и изменили смысл значения с «bool» на целое число с поддерживаемыми значениями `PyInterpreterConfig_DEFAULT_GIL`, `PyInterpreterConfig_SHARED_GIL` и `PyInterpreterConfig_OWN_GIL`. По умолчанию – «shared».
- [gh-105387](https://python-all.ru/3/whatsnew/changelog.html): В ограниченном C API версии 3.12 функции [`Py_INCREF()`](https://python-all.ru/3/c-api/refcounting.html#c.Py_INCREF) и [`Py_DECREF()`](https://python-all.ru/3/c-api/refcounting.html#c.Py_DECREF) теперь реализованы как непрозрачные вызовы функций для сокрытия деталей реализации. Патч от Victor Stinner.
- [gh-105396](https://python-all.ru/3/whatsnew/changelog.html): Объявлена устаревшей функция [`PyImport_ImportModuleNoBlock()`](https://python-all.ru/3/c-api/import.html#c.PyImport_ImportModuleNoBlock), которая является всего лишь псевдонимом [`PyImport_ImportModule()`](https://python-all.ru/3/c-api/import.html#c.PyImport_ImportModule) начиная с Python 3.3. Патч от Victor Stinner.
- [gh-103968](https://python-all.ru/3/whatsnew/changelog.html): [`PyType_FromMetaclass()`](https://python-all.ru/3/c-api/type.html#c.PyType_FromMetaclass) теперь допускает метаклассы с `tp_new`, установленным в `NULL`.
- [gh-105268](https://python-all.ru/3/whatsnew/changelog.html): Удалён старый закрытый, недокументированный и непроверенный макрос `_PyGC_FINALIZED()`, который был сохранён для обратной совместимости с Python 3.8 и старше. Патч от Victor Stinner.
- [gh-105182](https://python-all.ru/3/whatsnew/changelog.html): Удалены функции `PyEval_AcquireLock()` и `PyEval_ReleaseLock()`, объявленные устаревшими в Python 3.2. Патч от Victor Stinner.
- [gh-105182](https://python-all.ru/3/whatsnew/changelog.html): Удалены функции `PyEval_InitThreads()` и `PyEval_ThreadsInitialized()`, объявленные устаревшими в Python 3.9. Патч от Victor Stinner.
- [gh-105145](https://python-all.ru/3/whatsnew/changelog.html): Объявлены устаревшими старые функции инициализации Python:

  - [`PySys_ResetWarnOptions()`](https://python-all.ru/3/c-api/sys.html#c.PySys_ResetWarnOptions)
  - [`Py_GetExecPrefix()`](https://python-all.ru/3/c-api/interp-lifecycle.html#c.Py_GetExecPrefix)
  - [`Py_GetPath()`](https://python-all.ru/3/c-api/interp-lifecycle.html#c.Py_GetPath)
  - [`Py_GetPrefix()`](https://python-all.ru/3/c-api/interp-lifecycle.html#c.Py_GetPrefix)
  - [`Py_GetProgramFullPath()`](https://python-all.ru/3/c-api/interp-lifecycle.html#c.Py_GetProgramFullPath)
  - [`Py_GetProgramName()`](https://python-all.ru/3/c-api/interp-lifecycle.html#c.Py_GetProgramName)
  - [`Py_GetPythonHome()`](https://python-all.ru/3/c-api/interp-lifecycle.html#c.Py_GetPythonHome)

  Патч от Виктора Стиннера.
- [gh-85275](https://python-all.ru/3/whatsnew/changelog.html): `PyObject_AsCharBuffer()`, `PyObject_AsReadBuffer()`, `PyObject_CheckReadBuffer()` и `PyObject_AsWriteBuffer()` удалены. Переходите на новый буферный протокол; [`PyObject_GetBuffer()`](https://python-all.ru/3/c-api/buffer.html#c.PyObject_GetBuffer) и [`PyBuffer_Release()`](https://python-all.ru/3/c-api/buffer.html#c.PyBuffer_Release).
- [gh-105156](https://python-all.ru/3/whatsnew/changelog.html): Старые типы `Py_UNICODE` и `PY_UNICODE_TYPE` объявлены устаревшими: используйте непосредственно тип `wchar_t`. Начиная с Python 3.3, `Py_UNICODE` и `PY_UNICODE_TYPE` являются просто псевдонимами для `wchar_t`. Патч от Виктора Стиннера.
- [gh-105145](https://python-all.ru/3/whatsnew/changelog.html): Удалены следующие старые функции для настройки инициализации 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](https://python-all.ru/3/whatsnew/changelog.html): Удалены функции, объявленные устаревшими в Python 3.9.

  - `PyEval_CallObject()`, `PyEval_CallObjectWithKeywords()`: используйте [`PyObject_CallNoArgs()`](https://python-all.ru/3/c-api/call.html#c.PyObject_CallNoArgs) и [`PyObject_Call()`](https://python-all.ru/3/c-api/call.html#c.PyObject_Call) (позиционные аргументы не должны быть *NULL*) вместо.
  - `PyEval_CallFunction()`: используйте [`PyObject_CallFunction()`](https://python-all.ru/3/c-api/call.html#c.PyObject_CallFunction) вместо.
  - `PyEval_CallMethod()`: используйте [`PyObject_CallMethod()`](https://python-all.ru/3/c-api/call.html#c.PyObject_CallMethod) вместо.
  - `PyCFunction_Call()`: используйте [`PyObject_Call()`](https://python-all.ru/3/c-api/call.html#c.PyObject_Call) вместо.

  Патч от Виктора Стиннера.
- [gh-105115](https://python-all.ru/3/whatsnew/changelog.html): `PyTypeObject.tp_bases` (и `tp_mro`) для встроенных статических типов теперь разделяются всеми интерпретаторами, тогда как в 3.12-beta1 они хранились в `PyInterpreterState`. Также обратите внимание, что теперь кортежи являются бессмертными объектами.
- [gh-105071](https://python-all.ru/3/whatsnew/changelog.html): Добавлен `PyUnstable_Exc_PrepReraiseStar` в нестабильный C API для предоставления реализации [`except*`](https://python-all.ru/3/reference/compound_stmts.html#except-star).
- [gh-104922](https://python-all.ru/3/whatsnew/changelog.html): `PY_SSIZE_T_CLEAN` больше не требуется для использования форматов `'#'` в API, таких как [`PyArg_ParseTuple()`](https://python-all.ru/3/c-api/arg.html#c.PyArg_ParseTuple) и [`Py_BuildValue()`](https://python-all.ru/3/c-api/arg.html#c.Py_BuildValue). Они используют `Py_ssize_t` для `'#'` независимо от `PY_SSIZE_T_CLEAN`.
- [gh-104584](https://python-all.ru/3/whatsnew/changelog.html): Добавлен нестабильный C API для подключения оптимизатора. Он в основном внутренний, но помечен как «нестабильный», чтобы разрешить эксперименты сторонних разработчиков.
- [gh-104668](https://python-all.ru/3/whatsnew/changelog.html): Не вызывайте [`PyOS_InputHook`](https://python-all.ru/3/c-api/veryhigh.html#c.PyOS_InputHook) или [`PyOS_ReadlineFunctionPointer`](https://python-all.ru/3/c-api/veryhigh.html#c.PyOS_ReadlineFunctionPointer) в суб-интерпретаторах, поскольку обычно трудно избежать использования глобального состояния в их зарегистрированных колбэках. Это также позволяет избежать ситуаций, когда расширения могут оказаться запущенными в суб-интерпретаторе, который они не поддерживают (или в который ещё не были загружены).
- [bpo-42327](https://python-all.ru/3/whatsnew/changelog.html): Добавлена функция [`PyModule_Add()`](https://python-all.ru/3/c-api/module.html#c.PyModule_Add): аналогична [`PyModule_AddObjectRef()`](https://python-all.ru/3/c-api/module.html#c.PyModule_AddObjectRef) и [`PyModule_AddObject()`](https://python-all.ru/3/c-api/module.html#c.PyModule_AddObject), но всегда крадёт ссылку на значение.
- [bpo-40309](https://python-all.ru/3/whatsnew/changelog.html): Корректно обрабатывает конечные пробелы перед закрывающей скобкой в строках форматирования [`Py_BuildValue()`](https://python-all.ru/3/c-api/arg.html#c.Py_BuildValue).

## Python 3.12.0 beta 1

*Release date: 2023-05-22*

### Безопасность

- [gh-99889](https://python-all.ru/3/whatsnew/changelog.html): Исправлена уязвимость в системе безопасности в `uu.decode()`, которая могла позволить обход каталога на основе ввода, если не был указан `out_file`.
- [gh-104049](https://python-all.ru/3/whatsnew/changelog.html): Не раскрывать локальное расположение на диске в индексах каталогов, создаваемых `http.client.SimpleHTTPRequestHandler`.
- [gh-99108](https://python-all.ru/3/whatsnew/changelog.html): Встроенная реализация [`hashlib`](https://python-all.ru/3/library/hashlib.html#module-hashlib) SHA3 обновлена до проверенной реализации из проекта `HACL*`. Используется, когда OpenSSL отсутствует или не поддерживает SHA3.
- [gh-102153](https://python-all.ru/3/whatsnew/changelog.html): [`urllib.parse.urlsplit()`](https://python-all.ru/3/library/urllib.parse.html#urllib.parse.urlsplit) теперь удаляет начальные управляющие символы C0 и пробелы в соответствии со спецификацией URL, определённой WHATWG, в ответ на [**CVE 2023-24329**](https://python-all.ru/3/whatsnew/changelog.html). Патч от Ильи Волочия.

### Библиотека

- [gh-102856](https://python-all.ru/3/whatsnew/changelog.html): Реализованы изменения PEP 701 в модуле [`tokenize`](https://python-all.ru/3/library/tokenize.html#module-tokenize). Патч от Марты Гомес Масиас и Пабло Галиндо Сальгадо.

### Ядро и встроенные функции

- [gh-104615](https://python-all.ru/3/whatsnew/changelog.html): Исправлен неверный порядок присваиваний в коде вида `a, a = x, y`. Автор: Карл Майер.
- [gh-104572](https://python-all.ru/3/whatsnew/changelog.html): Улучшено сообщение об ошибке синтаксиса для недопустимых конструкций в контекстах [**PEP 695**](https://python-all.ru/3/whatsnew/changelog.html) и в аннотациях, когда активен `from __future__ import annotations`.
- [gh-104482](https://python-all.ru/3/whatsnew/changelog.html): Исправлены три ошибки обработки ошибок в проверке операторов сопоставления с образцом в ast.c.
- [gh-102818](https://python-all.ru/3/whatsnew/changelog.html): Не добавлять фрейм в трассировку в функциях-трамплинах `sys.setprofile` и `sys.settrace`. Это гарантирует, что фреймы не будут дублироваться, если исключение возникнет в функции обратного вызова, и гарантирует, что фреймы не будут пропущены, если используется C-колбэк, который не добавляет фрейм.
- [gh-104405](https://python-all.ru/3/whatsnew/changelog.html): Исправлена проблема, из-за которой некоторые инструкции [байткода](https://python-all.ru/3/glossary.html#term-bytecode) могли игнорировать [**PEP 523**](https://python-all.ru/3/whatsnew/changelog.html) при «встраивании» вызовов.
- [gh-103082](https://python-all.ru/3/whatsnew/changelog.html): Изменено поведение событий `sys.monitoring.events.LINE` в `sys.monitoring`: теперь события строк возникают при динамическом достижении новой строки, а не с помощью статической аппроксимации, как раньше. Это делает поведение очень похожим на поведение событий «line» в `sys.settrace`. Это должно упростить перенос инструментов с версии 3.11 на 3.12.
- [gh-104263](https://python-all.ru/3/whatsnew/changelog.html): Исправлено `float("nan")`, чтобы возвращать тихий NaN на платформах (например, MIPS), где смысл бита сигнализирующего/тихого NaN инвертирован по сравнению с обычным. Также добавлен новый макрос `Py_INFINITY`, соответствующий `INFINITY` из C99, и переработана внутренняя реализация для использования макросов `NAN` и `INFINITY` из C99 вместо жёстко заданных битовых шаблонов для бесконечностей и NaN. Спасибо Sebastian Berg.
- [gh-99113](https://python-all.ru/3/whatsnew/changelog.html): Модули расширения с многофазной инициализацией теперь могут указывать, что они поддерживают работу в субинтерпретаторах с собственным GIL. Это делается с помощью `Py_MOD_PER_INTERPRETER_GIL_SUPPORTED` в качестве значения для слота `Py_mod_multiple_interpreters` определения модуля. В противном случае модуль по умолчанию не может быть импортирован в таких субинтерпретаторах. (Это не затрагивает главный интерпретатор или субинтерпретаторы, у которых нет собственного GIL.) В дополнение к изоляции, которую обычно требует многофазная инициализация, поддержка GIL на интерпретатор вводит ещё одно ограничение: потокобезопасность. Если у модуля есть внешние (связанные) зависимости и эти библиотеки имеют какое-либо состояние, не являющееся потокобезопасным, модуль должен выполнить дополнительную работу для обеспечения потокобезопасности. Это должно быть редким случаем.
- [gh-99113](https://python-all.ru/3/whatsnew/changelog.html): Теперь GIL (опционально) является перинтерпретаторным. Это фундаментальное изменение для PEP 684. Это стало возможным благодаря изолированному состоянию каждого интерпретатора в процессе. Поведение главного интерпретатора осталось неизменным. Аналогично, интерпретаторы, созданные с помощью `Py_NewInterpreter()`, не затрагиваются. Чтобы получить интерпретатор с собственным GIL, вызывайте `Py_NewInterpreterFromConfig()`.
- [gh-104108](https://python-all.ru/3/whatsnew/changelog.html): Модули расширения с многофазной инициализацией теперь могут указывать, поддерживают ли они несколько интерпретаторов. По умолчанию такие модули должны поддерживать использование в нескольких интерпретаторах. В редком случае, когда модуль этого не делает, он может использовать новый слот `Py_mod_multiple_interpreters` определения модуля. Значение `0` означает, что модуль их не поддерживает. `1` означает, что поддерживает. По умолчанию используется `1`.
- [gh-104142](https://python-all.ru/3/whatsnew/changelog.html): Исправлена проблема, из-за которой повторение [`list`](https://python-all.ru/3/library/stdtypes.html#list) или [`tuple`](https://python-all.ru/3/library/stdtypes.html#tuple) могло не соблюдать [**PEP 683**](https://python-all.ru/3/whatsnew/changelog.html).
- [gh-104078](https://python-all.ru/3/whatsnew/changelog.html): Улучшена производительность [`PyObject_HasAttrString()`](https://python-all.ru/3/c-api/object.html#c.PyObject_HasAttrString)
- [gh-104066](https://python-all.ru/3/whatsnew/changelog.html): Улучшена производительность [`hasattr()`](https://python-all.ru/3/library/functions.html#hasattr) для объектов модулей с отсутствующим атрибутом.
- [gh-104028](https://python-all.ru/3/whatsnew/changelog.html): Сокращено создание объектов при вызове функции обратного вызова из gc. Патч от Donghee Na.
- [gh-104018](https://python-all.ru/3/whatsnew/changelog.html): Запрещён спецификатор формата “z” в %-форматировании объектов bytes.
- [gh-102213](https://python-all.ru/3/whatsnew/changelog.html): Исправлена потеря производительности при доступе к атрибутам объекта с определённым `__getattr__`.
- [gh-103895](https://python-all.ru/3/whatsnew/changelog.html): Улучшена обработка крайних случаев при отображении `Exception.__notes__`. Гарантируется, что сообщения всегда заканчиваются символом новой строки и что строки (string/bytes) не разбиваются на несколько строк. Патч от Carey Metcalfe.
- [gh-103907](https://python-all.ru/3/whatsnew/changelog.html): Не изменять счётчики ссылок известных бессмертных объектов ([`True`](https://python-all.ru/3/library/constants.html#True), [`False`](https://python-all.ru/3/library/constants.html#False) и [`None`](https://python-all.ru/3/library/constants.html#None)) в главном цикле интерпретатора.
- [gh-103899](https://python-all.ru/3/whatsnew/changelog.html): Provide a helpful hint in the [`TypeError`](https://python-all.ru/3/library/exceptions.html#TypeError) message when accidentally calling a [module](https://python-all.ru/3/glossary.html#term-module) object that has a callable attribute of the same name (such as [`dis.dis()`](https://python-all.ru/3/library/dis.html#dis.dis) or [`datetime.datetime`](https://python-all.ru/3/library/datetime.html#datetime.datetime)).
- [gh-103845](https://python-all.ru/3/whatsnew/changelog.html): Удалять инструментовку как строк, так и инструкций перед добавлением новых для мониторинга, чтобы избежать немедленного удаления только что добавленной инструментовки.
- [gh-103763](https://python-all.ru/3/whatsnew/changelog.html): Реализован [**PEP 695**](https://python-all.ru/3/whatsnew/changelog.html), добавляющий синтаксическую поддержку обобщённых классов, обобщённых функций и псевдонимов типов.

  Добавлен новый синтаксис `type X = ...` для псевдонимов типов, который во время выполнения преобразуется в экземпляр нового класса `typing.TypeAliasType`. Значение вычисляется лениво и доступно через атрибут `.__value__`. Это реализовано как новый узел AST `ast.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` для поддержки корректного разрешения имён в пространствах имён классов.

  Патч от Eric Traut, Larry Hastings и Jelle Zijlstra.

### Библиотеки

- [gh-103801](https://python-all.ru/3/whatsnew/changelog.html): Добавлены три мелких исправления линтинга в модуль wasm, обнаруженные ruff.
- [gh-103793](https://python-all.ru/3/whatsnew/changelog.html): Оптимизировано создание задач asyncio: дорогостоящее форматирование строк (генерация имени задачи) отложено с момента создания задачи до первого вызова `get_name`. Это ускоряет бенчмарки asyncio до 5%.

### Ядро и встроенные функции

- [gh-102310](https://python-all.ru/3/whatsnew/changelog.html): Изменён диапазон ошибок для недопустимых литералов bytes.
- [gh-103590](https://python-all.ru/3/whatsnew/changelog.html): Не оборачивать одиночное исключение, вызванное конструкцией `try-except*`, в [`ExceptionGroup`](https://python-all.ru/3/library/exceptions.html#ExceptionGroup).
- [gh-103650](https://python-all.ru/3/whatsnew/changelog.html): Изменён формат карты производительности: удалён префикс ‘0x’ из адресов.
- [gh-102856](https://python-all.ru/3/whatsnew/changelog.html): Реализованы необходимые изменения в токенизаторе C для PEP 701. Патч от Pablo Galindo Salgado, Lysandros Nikolaou, Batuhan Taskaya, Marta Gómez Macías и sunmy2019.
- [gh-100530](https://python-all.ru/3/whatsnew/changelog.html): Уточнено сообщение об ошибке, возникающее, когда вызываемая часть шаблона класса на самом деле не является классом.
- [gh-101517](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка в номерах строк инструкций, генерируемых для [`except*`](https://python-all.ru/3/reference/compound_stmts.html#except-star).
- [gh-103492](https://python-all.ru/3/whatsnew/changelog.html): Уточнить сравнение [`SyntaxWarning`](https://python-all.ru/3/library/exceptions.html#SyntaxWarning) с литералом `is`, указав, какой литерал вызывает проблемы, поскольку сравнения с использованием `is`, например, с литералами `None` и bool, идиоматичны.
- [gh-87729](https://python-all.ru/3/whatsnew/changelog.html): Добавить [`LOAD_SUPER_ATTR`](https://python-all.ru/3/library/dis.html#opcode-LOAD_SUPER_ATTR) (и специализацию для `super().method()`) для ускорения `super().method()` и `super().attr`. Это делает `super().method()` примерно в 2.3 раза быстрее и приближает его к производительности простого вызова метода в пределах 20%. Патч от Владимира Матвеева и Карла Майера.
- [gh-103488](https://python-all.ru/3/whatsnew/changelog.html): Изменить внутреннее смещение, различающее адреса целей yield и return, чтобы указатель инструкции был корректным для обработки исключений и других развертываний стека.
- [gh-82012](https://python-all.ru/3/whatsnew/changelog.html): Оператор побитовой инверсии (`~`) для bool устарел. Он возвращает побитовую инверсию внутреннего представления `int`, так что `bool(~True) == True`, что может сбивать с толку. Используйте `not` для логического отрицания bool. В редком случае, когда действительно нужна побитовая инверсия внутреннего `int`, явно преобразуйте в int `~int(x)`.
- [gh-77757](https://python-all.ru/3/whatsnew/changelog.html): Исключения, вызванные в методе `__set_name__` объекта типа, больше не оборачиваются в [`RuntimeError`](https://python-all.ru/3/library/exceptions.html#RuntimeError). Контекстная информация добавляется к исключению в виде примечания [**PEP 678**](https://python-all.ru/3/whatsnew/changelog.html).
- [gh-103333](https://python-all.ru/3/whatsnew/changelog.html): [`AttributeError`](https://python-all.ru/3/library/exceptions.html#AttributeError) теперь сохраняет атрибут `name` при сериализации и десериализации.
- [gh-103242](https://python-all.ru/3/whatsnew/changelog.html): Перенести метод [`set_ecdh_curve()`](https://python-all.ru/3/library/ssl.html#ssl.SSLContext.set_ecdh_curve), чтобы не использовать устаревшие API OpenSSL. Патч от Donghee Na.
- [gh-103323](https://python-all.ru/3/whatsnew/changelog.html): Заменили использование `_PyRuntime.tstate_current` на переменную, локальную для потока. Это довольно низкоуровневая деталь реализации, поведение не должно измениться.
- [gh-84436](https://python-all.ru/3/whatsnew/changelog.html): Реализация PEP 683, добавляющая бессмертные объекты с помощью фиксированного счетчика ссылок, который пропускает подсчет ссылок для создания объектов, которые действительно неизменны.
- [gh-102700](https://python-all.ru/3/whatsnew/changelog.html): Разрешить встроенным модулям быть подмодулями. Это позволяет статически связывать подмодули в бинарный файл CPython.
- [gh-103082](https://python-all.ru/3/whatsnew/changelog.html): Реализовать [**PEP 669**](https://python-all.ru/3/whatsnew/changelog.html) Low Impact Monitoring для CPython.
- [gh-88691](https://python-all.ru/3/whatsnew/changelog.html): Уменьшить количество встроенных записей [`CACHE`](https://python-all.ru/3/library/dis.html#opcode-CACHE) для [`CALL`](https://python-all.ru/3/library/dis.html#opcode-CALL).
- [gh-102500](https://python-all.ru/3/whatsnew/changelog.html): Сделать протокол буфера доступным в коде Python с помощью новых магических методов `__buffer__` и `__release_buffer__`. Подробнее см. [**PEP 688**](https://python-all.ru/3/whatsnew/changelog.html). Патч от Jelle Zijlstra.
- [gh-97933](https://python-all.ru/3/whatsnew/changelog.html): [**PEP 709**](https://python-all.ru/3/whatsnew/changelog.html): встроить (inline) списковые, словарные и множественные включения для повышения производительности и уменьшения размера байт-кода.
- [gh-99184](https://python-all.ru/3/whatsnew/changelog.html): Обойти доступ к атрибуту экземпляра `__name__` в `repr` элемента [`weakref.ref`](https://python-all.ru/3/library/weakref.html#weakref.ref).
- [gh-98003](https://python-all.ru/3/whatsnew/changelog.html): Сложные вызовы функций теперь выполняются быстрее и не занимают пространство стека C.
- [bpo-39610](https://python-all.ru/3/whatsnew/changelog.html): `len()` для нульмерных объектов [`memoryview`](https://python-all.ru/3/library/stdtypes.html#memoryview) (таких как `memoryview(ctypes.c_uint8(42))`) теперь вызывает [`TypeError`](https://python-all.ru/3/library/exceptions.html#TypeError). Ранее это возвращало `1`, что не согласовывалось с тем, что `mem_0d[0]` вызывал [`IndexError`](https://python-all.ru/3/library/exceptions.html#IndexError).

### Библиотека

- [bpo-31821](https://python-all.ru/3/whatsnew/changelog.html): Исправить `pause_reading()`, чтобы работал при вызове из `connection_made()` в [`asyncio`](https://python-all.ru/3/library/asyncio.html#module-asyncio).
- [gh-104600](https://python-all.ru/3/whatsnew/changelog.html): [`functools.update_wrapper()`](https://python-all.ru/3/library/functools.html#functools.update_wrapper) теперь устанавливает атрибут `__type_params__` (добавленный [**PEP 695**](https://python-all.ru/3/whatsnew/changelog.html)).
- [gh-104340](https://python-all.ru/3/whatsnew/changelog.html): Когда протокол канала (pipe) `asyncio` теряет соединение из-за ошибки, а вызывающий код не ожидает (await) `wait_closed()` на соответствующем `StreamWriter`, не записывать предупреждение об исключении, которое никогда не было получено. В конце концов, согласно документации `StreamWriter.close()`, вызов `wait_closed()` является необязательным («не обязательным»).
- [gh-104555](https://python-all.ru/3/whatsnew/changelog.html): Исправить ошибку, когда проверка [`issubclass()`](https://python-all.ru/3/library/functions.html#issubclass), сравнивающая класс `X` с [`runtime-checkable protocol`](https://python-all.ru/3/library/typing.html#typing.runtime_checkable) `Y` с невызываемыми членами, не вызывала [`TypeError`](https://python-all.ru/3/library/exceptions.html#TypeError), если ранее был выполнен вызов [`isinstance()`](https://python-all.ru/3/library/functions.html#isinstance), сравнивающий экземпляр `X` с `Y`. Эта проблема присутствовала в крайних случаях в Python 3.11, но стала более заметной в 3.12 из-за некоторых несвязанных изменений, внесенных в протоколы, проверяемые во время выполнения. Патч от Alex Waygood.
- [gh-104372](https://python-all.ru/3/whatsnew/changelog.html): Переработали внутренности `_posixsubprocess`, чтобы избежать использования Python C API между fork и exec при пометке файловых дескрипторов `pass_fds=` наследуемыми.
- [gh-104484](https://python-all.ru/3/whatsnew/changelog.html): Добавлен аргумент *case\_sensitive* в [`pathlib.PurePath.match()`](https://python-all.ru/3/library/pathlib.html#pathlib.PurePath.match)
- [gh-75367](https://python-all.ru/3/whatsnew/changelog.html): Исправить обнаружение дескриптора данных в [`inspect.getattr_static()`](https://python-all.ru/3/library/inspect.html#inspect.getattr_static).
- [gh-104536](https://python-all.ru/3/whatsnew/changelog.html): Исправить состояние гонки во внутренней логике очистки `multiprocessing.process`, которое могло проявляться как непреднамеренное `AttributeError` при вызове `process.close()`.
- [gh-103857](https://python-all.ru/3/whatsnew/changelog.html): Обновить трассировку стека устаревших функций datetime, чтобы она указывала на вызывающую строку.
- [gh-101520](https://python-all.ru/3/whatsnew/changelog.html): Переместить основную функциональность модуля `tracemalloc` в папку `Python/`, оставив только обёртку модуля в `Modules/`.
- [gh-104392](https://python-all.ru/3/whatsnew/changelog.html): Удалить недокументированный и неиспользуемый атрибут `_paramspec_tvars` из некоторых классов в [`typing`](https://python-all.ru/3/library/typing.html#module-typing).
- [gh-102613](https://python-all.ru/3/whatsnew/changelog.html): Исправить проблему, когда [`pathlib.Path.glob()`](https://python-all.ru/3/library/pathlib.html#pathlib.Path.glob) вызывал [`RecursionError`](https://python-all.ru/3/library/exceptions.html#RecursionError) при обходе глубоких деревьев каталогов.
- [gh-103000](https://python-all.ru/3/whatsnew/changelog.html): Улучшить производительность [`dataclasses.asdict()`](https://python-all.ru/3/library/dataclasses.html#dataclasses.asdict) для распространённого случая, когда *dict\_factory* равно `dict`. Патч от David C Ellis.
- [gh-104301](https://python-all.ru/3/whatsnew/changelog.html): Разрешить начальные пробелы в устранённых неоднозначностей операторах в [`pdb`](https://python-all.ru/3/library/pdb.html#module-pdb).
- [gh-104139](https://python-all.ru/3/whatsnew/changelog.html): Научить `urllib.parse.unsplit()` сохранять `"//"` при сборке URL-адресов в стиле `itms-services://?action=generate-bugs` для [Apple Platform Deployment](https://python-all.ru/3/whatsnew/changelog.html).
- [gh-104307](https://python-all.ru/3/whatsnew/changelog.html): [`socket.getnameinfo()`](https://python-all.ru/3/library/socket.html#socket.getnameinfo) теперь освобождает GIL при обращении к DNS-серверу.
- [gh-104310](https://python-all.ru/3/whatsnew/changelog.html): Пользователи теперь могут использовать `importlib.util.allowing_all_extensions()` (менеджер контекста) для временного отключения строгих проверок совместимости при импорте модулей расширения в подинтерпретаторах.
- [gh-87695](https://python-all.ru/3/whatsnew/changelog.html): Исправлена проблема, при которой [`pathlib.Path.glob()`](https://python-all.ru/3/library/pathlib.html#pathlib.Path.glob) вызывал [`OSError`](https://python-all.ru/3/library/exceptions.html#OSError) при обнаружении символической ссылки на слишком длинный путь.
- [gh-104265](https://python-all.ru/3/whatsnew/changelog.html): Предотвращено возможное падение путём запрета создания экземпляров типов `_csv.Reader` и `_csv.Writer`. Регрессия была внесена в 3.10.0a4 с PR 23224 ([bpo-14935](https://python-all.ru/3/whatsnew/changelog.html)). Патч от Radislav Chugunov.
- [gh-102613](https://python-all.ru/3/whatsnew/changelog.html): Улучшена производительность [`pathlib.Path.glob()`](https://python-all.ru/3/library/pathlib.html#pathlib.Path.glob) при развёртывании рекурсивных шаблонов (`**`) путём слияния смежных шаблонов и дедупликации результатов только при необходимости.
- [gh-65772](https://python-all.ru/3/whatsnew/changelog.html): Удалены ненужные комментарии и код в turtle.py.
- [gh-90208](https://python-all.ru/3/whatsnew/changelog.html): Исправлена проблема, при которой [`pathlib.Path.glob()`](https://python-all.ru/3/library/pathlib.html#pathlib.Path.glob) возвращал неполные результаты при обнаружении [`PermissionError`](https://python-all.ru/3/library/exceptions.html#PermissionError). Теперь этот метод подавляет все исключения [`OSError`](https://python-all.ru/3/library/exceptions.html#OSError), кроме тех, что возникают при вызове [`is_dir()`](https://python-all.ru/3/library/pathlib.html#pathlib.Path.is_dir) на корневом пути.
- [gh-104144](https://python-all.ru/3/whatsnew/changelog.html): Оптимизирован [`asyncio.TaskGroup`](https://python-all.ru/3/library/asyncio-task.html#asyncio.TaskGroup) при использовании [`asyncio.eager_task_factory()`](https://python-all.ru/3/library/asyncio-task.html#asyncio.eager_task_factory). Пропуск планирования колбэка завершения, если задача TaskGroup завершается немедленно.
- [gh-104144](https://python-all.ru/3/whatsnew/changelog.html): Оптимизирован [`asyncio.gather()`](https://python-all.ru/3/library/asyncio-task.html#asyncio.gather) при использовании [`asyncio.eager_task_factory()`](https://python-all.ru/3/library/asyncio-task.html#asyncio.eager_task_factory) для немедленного завершения, если все future завершились немедленно. Избегать планирования колбэков завершения для future, которые завершаются немедленно.
- [gh-104114](https://python-all.ru/3/whatsnew/changelog.html): Исправлена проблема, при которой [`pathlib.Path.glob()`](https://python-all.ru/3/library/pathlib.html#pathlib.Path.glob) возвращает пути, используя регистр символов нешаблонных сегментов для соответствующих сегментов пути, вместо реального регистра файловой системы.
- [gh-104104](https://python-all.ru/3/whatsnew/changelog.html): Улучшена производительность [`pathlib.Path.glob()`](https://python-all.ru/3/library/pathlib.html#pathlib.Path.glob) с помощью [`re.IGNORECASE`](https://python-all.ru/3/library/re.html#re.IGNORECASE) для реализации регистронезависимого сопоставления.
- [gh-104102](https://python-all.ru/3/whatsnew/changelog.html): Улучшена производительность [`pathlib.Path.glob()`](https://python-all.ru/3/library/pathlib.html#pathlib.Path.glob) при оценке шаблонов, содержащих сегменты `'../'`.
- [gh-103822](https://python-all.ru/3/whatsnew/changelog.html): Обновлён возвращаемый тип `weekday` до недавно добавленного атрибута Day.
- [gh-103629](https://python-all.ru/3/whatsnew/changelog.html): Обновлён `repr` для [`typing.Unpack`](https://python-all.ru/3/library/typing.html#typing.Unpack) в соответствии с [**PEP 692**](https://python-all.ru/3/whatsnew/changelog.html).
- [gh-103963](https://python-all.ru/3/whatsnew/changelog.html): [`dis`](https://python-all.ru/3/library/dis.html#module-dis) теперь отображает имена аргументов для `CALL_INTRINSIC_*`.
- [gh-104035](https://python-all.ru/3/whatsnew/changelog.html): Не игнорировать определённые пользователем методы `__getstate__` и `__setstate__` для слотовых замороженных датаклассов.
- [gh-103987](https://python-all.ru/3/whatsnew/changelog.html): В [`mmap`](https://python-all.ru/3/library/mmap.html#module-mmap) исправлено несколько ошибок, которые могли привести к доступу к файлам с отображением в память после их аннулирования.
- [gh-103977](https://python-all.ru/3/whatsnew/changelog.html): Улучшено время импорта модуля [`platform`](https://python-all.ru/3/library/platform.html#module-platform).
- [gh-88773](https://python-all.ru/3/whatsnew/changelog.html): Добавлен [`turtle.teleport()`](https://python-all.ru/3/library/turtle.html#turtle.teleport) в модуль [`turtle`](https://python-all.ru/3/library/turtle.html#module-turtle) для перемещения черепашки в новую точку без прочерчивания линии, видимой или невидимой. Патч от Liam Gersten.
- [gh-103935](https://python-all.ru/3/whatsnew/changelog.html): Использовать [`io.open_code()`](https://python-all.ru/3/library/io.html#io.open_code) для исполняемых файлов вместо сырых [`open()`](https://python-all.ru/3/library/functions.html#open).
- [gh-68968](https://python-all.ru/3/whatsnew/changelog.html): Исправлен некорректный вывод [`assertEqual()`](https://python-all.ru/3/library/unittest.html#unittest.TestCase.assertEqual), когда во входных данных отсутствует завершающий символ новой строки.
- [gh-100370](https://python-all.ru/3/whatsnew/changelog.html): Исправлена потенциальная [`OverflowError`](https://python-all.ru/3/library/exceptions.html#OverflowError) в [`sqlite3.Connection.blobopen()`](https://python-all.ru/3/library/sqlite3.html#sqlite3.Connection.blobopen) для 32-битных сборок. Патч от Erlend E. Aasland.
- [gh-102628](https://python-all.ru/3/whatsnew/changelog.html): Замена CTRL-D на CTRL-Z в баннере командной строки [`sqlite3`](https://python-all.ru/3/library/sqlite3.html#module-sqlite3) при работе в Windows.
- [gh-103636](https://python-all.ru/3/whatsnew/changelog.html): Атрибуты уровня модуля `January` и `February` объявлены устаревшими, начиная с [`calendar`](https://python-all.ru/3/library/calendar.html#module-calendar).
- [gh-103583](https://python-all.ru/3/whatsnew/changelog.html): Изолировать модули расширения `_multibytecodec` и codecs. Патчи от Erlend E. Aasland.
- [gh-103848](https://python-all.ru/3/whatsnew/changelog.html): Add checks to ensure that `[` bracketed `]` hosts found by [`urllib.parse.urlsplit()`](https://python-all.ru/3/library/urllib.parse.html#urllib.parse.urlsplit) are of IPv6 or IPvFuture format.
- [gh-103872](https://python-all.ru/3/whatsnew/changelog.html): Обновлена встроенная копия pip до версии 23.1.2.
- [gh-99944](https://python-all.ru/3/whatsnew/changelog.html): [`dis`](https://python-all.ru/3/library/dis.html#module-dis) теперь отображает значение oparg для `KW_NAMES`.
- [gh-74940](https://python-all.ru/3/whatsnew/changelog.html): Локаль C.UTF-8 больше не преобразуется в en\_US.UTF-8, что позволяет использовать кодировку UTF-8 в системах без установленных локалей.
- [gh-103861](https://python-all.ru/3/whatsnew/changelog.html): Исправлено создание невалидных zip-файлов `zipfile.Zipfile`, когда `force_zip64` использовался для добавления в них файлов. Патч от Carey Metcalfe.
- [gh-103857](https://python-all.ru/3/whatsnew/changelog.html): Объявлены устаревшими [`datetime.datetime.utcnow()`](https://python-all.ru/3/library/datetime.html#datetime.datetime.utcnow) и [`datetime.datetime.utcfromtimestamp()`](https://python-all.ru/3/library/datetime.html#datetime.datetime.utcfromtimestamp). (Патч от Paul Ganssle)
- [gh-103839](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка компиляции, возникавшая из-за ненахождения tommath.h при сборке Tkinter с Tcl 8.7, собранным с встроенной libtommath.
- [gh-103791](https://python-all.ru/3/whatsnew/changelog.html): [`contextlib.suppress`](https://python-all.ru/3/library/contextlib.html#contextlib.suppress) теперь поддерживает подавление исключений, возникших как часть [`ExceptionGroup`](https://python-all.ru/3/library/exceptions.html#ExceptionGroup). Если в группе есть другие исключения, они повторно возбуждаются в группе, не содержащей подавленные исключения.
- [gh-90750](https://python-all.ru/3/whatsnew/changelog.html): Использовать [`datetime.datetime.fromisocalendar()`](https://python-all.ru/3/library/datetime.html#datetime.datetime.fromisocalendar) в реализации [`datetime.datetime.strptime()`](https://python-all.ru/3/library/datetime.html#datetime.datetime.strptime), который теперь должен принимать только корректные даты в формате ISO. (Патч от Paul Ganssle)
- [gh-103685](https://python-all.ru/3/whatsnew/changelog.html): Подготовить [`tkinter.Menu.index()`](https://python-all.ru/3/library/tkinter.html#tkinter.Menu.index) для Tk 8.7, чтобы он не возбуждал `TclError: expected integer but got ""`, когда должен возвращать `None`.
- [gh-81403](https://python-all.ru/3/whatsnew/changelog.html): [`urllib.request.CacheFTPHandler`](https://python-all.ru/3/library/urllib.request.html#urllib.request.CacheFTPHandler) больше не возбуждает `URLError`, если повторно используется кэшированный экземпляр FTP. Метод endtransfer модуля ftplib вызывает voidresp для очистки соединения, чтобы корректно обрабатывать повторное использование экземпляра FTP.
- [gh-103699](https://python-all.ru/3/whatsnew/changelog.html): Добавить `__orig_bases__` в необобщённые типизированные словари, типизированные словари на основе вызова и именованные кортежи на основе вызова. Другие типизированные словари и именованные кортежи уже имели этот атрибут.
- [gh-103693](https://python-all.ru/3/whatsnew/changelog.html): Добавить функцию удобной переменной в [`pdb`](https://python-all.ru/3/library/pdb.html#module-pdb)
- [gh-92248](https://python-all.ru/3/whatsnew/changelog.html): Объявить устаревшими параметры `type`, `choices` и `metavar` функции/метода `argparse.BooleanOptionalAction`.
- [gh-89415](https://python-all.ru/3/whatsnew/changelog.html): Добавить константы [`socket`](https://python-all.ru/3/library/socket.html#module-socket) для source-specific multicast. Патч от Reese Hyde.
- [gh-103673](https://python-all.ru/3/whatsnew/changelog.html): [`socketserver`](https://python-all.ru/3/library/socketserver.html#module-socketserver) получает классы `ForkingUnixStreamServer` и `ForkingUnixDatagramServer`. Патч от Jay Berry.
- [gh-103636](https://python-all.ru/3/whatsnew/changelog.html): Добавлен Enum для месяцев и дней в модуль calendar.
- [gh-84976](https://python-all.ru/3/whatsnew/changelog.html): Создать новый файл `Lib/_pydatetime.py`, определяющий Python-версию модуля `datetime`, и сделать так, чтобы `datetime` импортировал содержимое новой библиотеки только если отсутствует реализация на C. В настоящее время полная реализация на Python определяется, а затем удаляется, если реализация на C недоступна, что замедляет `import datetime` без необходимости.
- [gh-103596](https://python-all.ru/3/whatsnew/changelog.html): Атрибуты/методы больше не перекрываются членами перечисления с теми же именами, хотя они могут перекрываться enum.property.
- [gh-103584](https://python-all.ru/3/whatsnew/changelog.html): Обновлён `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](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка, из-за которой [`pdb`](https://python-all.ru/3/library/pdb.html#module-pdb) аварийно завершался при чтении исходного файла с другой кодировкой: заменено [`io.open()`](https://python-all.ru/3/library/io.html#io.open) на [`io.open_code()`](https://python-all.ru/3/library/io.html#io.open_code). Новый метод также вызывает хук, установленный [`PyFile_SetOpenCodeHook()`](https://python-all.ru/3/c-api/file.html#c.PyFile_SetOpenCodeHook).
- [gh-103556](https://python-all.ru/3/whatsnew/changelog.html): Теперь создание объектов [`inspect.Signature`](https://python-all.ru/3/library/inspect.html#inspect.Signature) с позиционным параметром со значением по умолчанию, за которым следует позиционно-ключевой параметр без значения по умолчанию, невозможно.
- [gh-103559](https://python-all.ru/3/whatsnew/changelog.html): Обновить встроенную копию pip до версии 23.1.1.
- [gh-103548](https://python-all.ru/3/whatsnew/changelog.html): Улучшена производительность [`pathlib.Path.absolute()`](https://python-all.ru/3/library/pathlib.html#pathlib.Path.absolute) и [`cwd()`](https://python-all.ru/3/library/pathlib.html#pathlib.Path.cwd) за счёт объединения путей только при необходимости. Также улучшена производительность [`pathlib.PurePath.is_absolute()`](https://python-all.ru/3/library/pathlib.html#pathlib.PurePath.is_absolute) на Posix за счёт пропуска разбора и нормализации пути.
- [gh-103538](https://python-all.ru/3/whatsnew/changelog.html): Удалён код модуля `_tkinter`, защищённый определением макроса `TK_AQUA`, который требовался только для Tk 8.4.7 или более ранних версий и никогда не определялся ни одной системой сборки и не документировался для ручного использования.
- [gh-103533](https://python-all.ru/3/whatsnew/changelog.html): Обновлён [`cProfile`](https://python-all.ru/3/library/profile.html#module-cProfile) для использования API PEP 669
- [gh-103525](https://python-all.ru/3/whatsnew/changelog.html): Исправлено вводящее в заблуждение сообщение об исключении, когда смешанные аргументы `str` и `bytes` передаются в [`pathlib.PurePath`](https://python-all.ru/3/library/pathlib.html#pathlib.PurePath) и [`Path`](https://python-all.ru/3/library/pathlib.html#pathlib.Path).
- [gh-103489](https://python-all.ru/3/whatsnew/changelog.html): Добавлены [`getconfig()`](https://python-all.ru/3/library/sqlite3.html#sqlite3.Connection.getconfig) и [`setconfig()`](https://python-all.ru/3/library/sqlite3.html#sqlite3.Connection.setconfig) в [`Connection`](https://python-all.ru/3/library/sqlite3.html#sqlite3.Connection) для внесения изменений конфигурации в соединение с базой данных. Патч от Erlend E. Aasland.
- [gh-103365](https://python-all.ru/3/whatsnew/changelog.html): Установить границу флага по умолчанию в `STRICT` и исправить побитовые операции.
- [gh-103472](https://python-all.ru/3/whatsnew/changelog.html): Избежать потенциального [`ResourceWarning`](https://python-all.ru/3/library/exceptions.html#ResourceWarning) в [`http.client.HTTPConnection`](https://python-all.ru/3/library/http.client.html#http.client.HTTPConnection), явно закрыв CONNECT-ответ прокси/туннеля.
- [gh-103462](https://python-all.ru/3/whatsnew/changelog.html): Исправлена проблема при использовании [`writelines()`](https://python-all.ru/3/library/asyncio-protocol.html#asyncio.WriteTransport.writelines) в [`asyncio`](https://python-all.ru/3/library/asyncio.html#module-asyncio) для отправки очень больших объёмов данных, превышающих количество данных, которое может быть записано за один вызов [`socket.socket.send()`](https://python-all.ru/3/library/socket.html#socket.socket.send) или [`socket.socket.sendmsg()`](https://python-all.ru/3/library/socket.html#socket.socket.sendmsg), в результате чего оставшийся буфер оставался незаписанным.
- [gh-103449](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка в генерации строк документации в [`dataclasses.dataclass()`](https://python-all.ru/3/library/dataclasses.html#dataclasses.dataclass).
- [gh-103092](https://python-all.ru/3/whatsnew/changelog.html): Изолировать `_collections` (применить [**PEP 687**](https://python-all.ru/3/whatsnew/changelog.html)). Патч от Erlend E. Aasland.
- [gh-103357](https://python-all.ru/3/whatsnew/changelog.html): Добавлена поддержка параметра [`logging.Formatter`](https://python-all.ru/3/library/logging.html#logging.Formatter) `defaults` для [`logging.config.dictConfig()`](https://python-all.ru/3/library/logging.config.html#logging.config.dictConfig) и [`logging.config.fileConfig()`](https://python-all.ru/3/library/logging.config.html#logging.config.fileConfig). Патч от Bar Harel.
- [gh-103092](https://python-all.ru/3/whatsnew/changelog.html): Адаптировать модуль расширения [`winreg`](https://python-all.ru/3/library/winreg.html#module-winreg) к [**PEP 687**](https://python-all.ru/3/whatsnew/changelog.html).
- [gh-74690](https://python-all.ru/3/whatsnew/changelog.html): Производительность проверок [`isinstance()`](https://python-all.ru/3/library/functions.html#isinstance) на соответствие [`runtime-checkable protocols`](https://python-all.ru/3/library/typing.html#typing.runtime_checkable) была значительно улучшена для протоколов, имеющих всего несколько членов. Для достижения этого улучшения были рефакторизованы некоторые внутренние детали реализации модуля [`typing`](https://python-all.ru/3/library/typing.html#module-typing), включая `typing._ProtocolMeta.__instancecheck__`, `typing._is_callable_members_only` и `typing._get_protocol_attrs`. Патчи от Alex Waygood.
- [gh-74690](https://python-all.ru/3/whatsnew/changelog.html): Члены проверяемого во время выполнения протокола теперь считаются «замороженными» во время выполнения сразу после создания класса. См. [«Что нового в Python 3.12»](https://python-all.ru/3/whatsnew/3.12.html#whatsnew-typing-py312) для подробностей.
- [gh-103256](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка, из-за которой [`hmac`](https://python-all.ru/3/library/hmac.html#module-hmac) возбуждал исключение, когда запрошенный алгоритм хеширования был недоступен в OpenSSL, несмотря на то, что он был доступен отдельно как часть самого `hashlib`. Теперь он корректно переключается на встроенную реализацию. Это могло происходить, например, если ваш OpenSSL не поддерживает SHA3, а вы хотите вычислить `hmac.digest(b'K', b'M', 'sha3_256')`.
- [gh-102778](https://python-all.ru/3/whatsnew/changelog.html): Поддержка `sys.last_exc` в [`idlelib`](https://python-all.ru/3/library/idle.html#module-idlelib).
- [gh-103285](https://python-all.ru/3/whatsnew/changelog.html): Улучшение производительности [`ast.get_source_segment()`](https://python-all.ru/3/library/ast.html#ast.get_source_segment).
- [gh-103225](https://python-all.ru/3/whatsnew/changelog.html): Исправление ошибки в [`pdb`](https://python-all.ru/3/library/pdb.html#module-pdb) при отображении номеров строк исходного кода уровня модуля.
- [gh-103092](https://python-all.ru/3/whatsnew/changelog.html): Адаптация расширения [`msvcrt`](https://python-all.ru/3/library/msvcrt.html#module-msvcrt) к [**PEP 687**](https://python-all.ru/3/whatsnew/changelog.html).
- [gh-103092](https://python-all.ru/3/whatsnew/changelog.html): Адаптация расширения [`winsound`](https://python-all.ru/3/library/winsound.html#module-winsound) к [**PEP 687**](https://python-all.ru/3/whatsnew/changelog.html).
- [gh-93910](https://python-all.ru/3/whatsnew/changelog.html): Удаление устаревания доступа к enum `member.member`.
- [gh-102978](https://python-all.ru/3/whatsnew/changelog.html): Исправление ошибки, когда [`unittest.mock.patch()`](https://python-all.ru/3/library/unittest.mock.html#unittest.mock.patch) не проверял сигнатуры функций для методов, декорированных `@classmethod` или `@staticmethod`, при вызове patch с `autospec=True`.
- [gh-103092](https://python-all.ru/3/whatsnew/changelog.html): Изоляция `_socket` (применение [**PEP 687**](https://python-all.ru/3/whatsnew/changelog.html)). Патч от Erlend E. Aasland.
- [gh-100479](https://python-all.ru/3/whatsnew/changelog.html): Добавление [`pathlib.PurePath.with_segments()`](https://python-all.ru/3/library/pathlib.html#pathlib.PurePath.with_segments), который создаёт объект пути из аргументов. Этот метод вызывается всякий раз, когда создаётся производный путь, например из [`pathlib.PurePath.parent`](https://python-all.ru/3/library/pathlib.html#pathlib.PurePath.parent). Подклассы могут переопределять этот метод для обмена информацией между объектами путей.
- [gh-103220](https://python-all.ru/3/whatsnew/changelog.html): Исправление проблемы, когда [`os.path.join()`](https://python-all.ru/3/library/os.path.html#os.path.join) добавлял слеш при объединении с неполным UNC-диском, заканчивающимся слешем, в Windows.
- [gh-103204](https://python-all.ru/3/whatsnew/changelog.html): Исправление ошибки, из-за которой [`http.server`](https://python-all.ru/3/library/http.server.html#module-http.server) принимал HTTP-запросы с номерами версий HTTP, перед которыми стояли '+' или '-' или использовался '\_' в качестве разделителя цифр. Также ограничена длина номеров версий.
- [gh-75586](https://python-all.ru/3/whatsnew/changelog.html): Исправление различных проблем, связанных с Windows, в `shutil.which`.
- [gh-103193](https://python-all.ru/3/whatsnew/changelog.html): Улучшение производительности [`inspect.getattr_static()`](https://python-all.ru/3/library/inspect.html#inspect.getattr_static). Патч от Alex Waygood.
- [gh-103176](https://python-all.ru/3/whatsnew/changelog.html): [`sys._current_exceptions()`](https://python-all.ru/3/library/sys.html#sys._current_exceptions) теперь возвращает отображение идентификатора потока на экземпляр исключения, а не на кортеж `(typ, exc, tb)`.
- [gh-103143](https://python-all.ru/3/whatsnew/changelog.html): Улучшение справочных сообщений и докстрингов [`pdb`](https://python-all.ru/3/library/pdb.html#module-pdb).
- [gh-103015](https://python-all.ru/3/whatsnew/changelog.html): Добавление параметра *entrypoint*, передаваемого только по ключу, в [`sqlite3.Connection.load_extension()`](https://python-all.ru/3/library/sqlite3.html#sqlite3.Connection.load_extension) для переопределения точки входа расширения SQLite. Патч от Erlend E. Aasland.
- [gh-103000](https://python-all.ru/3/whatsnew/changelog.html): Улучшение производительности [`dataclasses.astuple()`](https://python-all.ru/3/library/dataclasses.html#dataclasses.astuple) и [`dataclasses.asdict()`](https://python-all.ru/3/library/dataclasses.html#dataclasses.asdict) в случаях, когда содержимое имеет распространённые типы Python.
- [gh-102953](https://python-all.ru/3/whatsnew/changelog.html): Методы извлечения в [`tarfile`](https://python-all.ru/3/library/tarfile.html#module-tarfile) и [`shutil.unpack_archive()`](https://python-all.ru/3/library/shutil.html#shutil.unpack_archive) получили новый аргумент *filter*, позволяющий ограничить возможности tar, которые могут быть неожиданными или опасными, например создание файлов за пределами целевого каталога. Подробнее см. [Фильтры извлечения](https://python-all.ru/3/library/tarfile.html#tarfile-extraction-filter).
- [gh-97696](https://python-all.ru/3/whatsnew/changelog.html): Реализована «жадная» фабрика задач в asyncio. При использовании в качестве фабрики задач в цикле событий она выполняет корутины немедленно. Корутины, способные завершиться синхронно (например, вернуть значение или возбудить исключение без блокировки), немедленно возвращаются как завершённая задача, и задача никогда не помещается в расписание цикла событий. Если корутина блокируется, (ожидающая) задача планируется и возвращается.
- [gh-81079](https://python-all.ru/3/whatsnew/changelog.html): Добавление аргумента *case\_sensitive*, передаваемого только по ключу, в [`pathlib.Path.glob()`](https://python-all.ru/3/library/pathlib.html#pathlib.Path.glob) и [`rglob()`](https://python-all.ru/3/library/pathlib.html#pathlib.Path.rglob).
- [gh-101819](https://python-all.ru/3/whatsnew/changelog.html): Изоляция расширения [`io`](https://python-all.ru/3/library/io.html#module-io) путём применения [**PEP 687**](https://python-all.ru/3/whatsnew/changelog.html). Патч от Kumar Aditya, Victor Stinner и Erlend E. Aasland.
- [gh-91896](https://python-all.ru/3/whatsnew/changelog.html): Объявлено устаревшим [`collections.abc.ByteString`](https://python-all.ru/3/library/collections.abc.html#collections.abc.ByteString).
- [gh-101362](https://python-all.ru/3/whatsnew/changelog.html): Ускорение создания [`pathlib.Path`](https://python-all.ru/3/library/pathlib.html#pathlib.Path) за счёт исключения якоря пути из внутреннего списка частей пути.
- [gh-102114](https://python-all.ru/3/whatsnew/changelog.html): Функции в модуле [`dis`](https://python-all.ru/3/library/dis.html#module-dis), принимающие строку исходного кода в качестве аргумента, теперь выводят более краткую трассировку, когда строка содержит синтаксическую ошибку или ошибку отступов.
- [gh-62432](https://python-all.ru/3/whatsnew/changelog.html): Запускатель [`unittest`](https://python-all.ru/3/library/unittest.html#module-unittest) теперь завершается с кодом состояния 5, если ни один тест не был запущен. Часто из-за неправильной конфигурации запускателя тесты не находятся, это должно считаться ошибкой.
- [gh-78079](https://python-all.ru/3/whatsnew/changelog.html): Исправление некорректной нормализации корней путей UNC-устройств и частичных корней путей общих ресурсов UNC в [`pathlib.PurePath`](https://python-all.ru/3/library/pathlib.html#pathlib.PurePath). Pathlib больше не добавляет завершающий слеш к таким путям.
- [gh-85984](https://python-all.ru/3/whatsnew/changelog.html): Добавление [`tty.cfmakeraw()`](https://python-all.ru/3/library/tty.html#tty.cfmakeraw) и [`tty.cfmakecbreak()`](https://python-all.ru/3/library/tty.html#tty.cfmakecbreak) в [`tty`](https://python-all.ru/3/library/tty.html#module-tty) и модернизация поведения [`tty.setraw()`](https://python-all.ru/3/library/tty.html#tty.setraw) и [`tty.setcbreak()`](https://python-all.ru/3/library/tty.html#tty.setcbreak) для использования масок флагов из POSIX.1-2017, глава 11 "General Terminal Interface", по умолчанию.
- [gh-101688](https://python-all.ru/3/whatsnew/changelog.html): Реализация [`types.get_original_bases()`](https://python-all.ru/3/library/types.html#types.get_original_bases) для предоставления расширенной интроспекции типов.
- [gh-101640](https://python-all.ru/3/whatsnew/changelog.html): [`argparse.ArgumentParser`](https://python-all.ru/3/library/argparse.html#argparse.ArgumentParser) теперь перехватывает ошибки при записи сообщений, например, когда [`sys.stderr`](https://python-all.ru/3/library/sys.html#sys.stderr) равно `None`. Патч от Oleg Iarygin.
- [gh-83861](https://python-all.ru/3/whatsnew/changelog.html): Исправление возвращаемого значения метода datetime.astimezone при вызове на наивном экземпляре datetime, представляющем местное время, попадающее в разрыв перехода часового пояса. PEP 495 требует, чтобы экземпляры с fold=1 давали более раннее время, чем с fold=0 в этом случае.
- [gh-89550](https://python-all.ru/3/whatsnew/changelog.html): Уменьшение времени выполнения некоторых операций записи в файл [`gzip`](https://python-all.ru/3/library/gzip.html#module-gzip) на 15% за счёт добавления более подходящей буферизации.
- [gh-95299](https://python-all.ru/3/whatsnew/changelog.html): Удаление встроенного колеса setuptools из `ensurepip` и прекращение установки setuptools в окружениях, создаваемых `venv`.
- [gh-99353](https://python-all.ru/3/whatsnew/changelog.html): Уважать флаг [`http.client.HTTPConnection`](https://python-all.ru/3/library/http.client.html#http.client.HTTPConnection) `.debuglevel` в `urllib.request.AbstractHTTPHandler`, когда его параметр конструктора `debuglevel` не установлен. И сделать то же самое для `*HTTPS*`.
- [gh-98040](https://python-all.ru/3/whatsnew/changelog.html): Удалён давно устаревший модуль `imp`.
- [gh-97850](https://python-all.ru/3/whatsnew/changelog.html): Объявлены устаревшими `pkgutil.find_loader()` и `pkgutil.get_loader()` в пользу [`importlib.util.find_spec()`](https://python-all.ru/3/library/importlib.html#importlib.util.find_spec).
- [gh-94473](https://python-all.ru/3/whatsnew/changelog.html): Аргументы в [`tkinter.Canvas.coords()`](https://python-all.ru/3/library/tkinter.html#tkinter.Canvas.coords) теперь уплощаются. Она принимает не только `x1, y1, x2, y2, ...` и `[x1, y1, x2, y2, ...]`, но также `(x1, y1), (x2, y2), ...` и `[(x1, y1), (x2, y2), ...]`.
- [gh-98040](https://python-all.ru/3/whatsnew/changelog.html): Удалены ещё более устаревшие API importlib: `find_loader()`, `find_module()`, `importlib.abc.Finder`, `pkgutil.ImpImporter`, `pkgutil.ImpLoader`.
- [gh-96522](https://python-all.ru/3/whatsnew/changelog.html): Исправлена возможная взаимоблокировка в pty.spawn()
- [gh-96534](https://python-all.ru/3/whatsnew/changelog.html): Добавлена поддержка divert(4), появившейся в FreeBSD 14.
- [gh-87474](https://python-all.ru/3/whatsnew/changelog.html): Исправлена возможная утечка файловых дескрипторов в [`subprocess.Popen`](https://python-all.ru/3/library/subprocess.html#subprocess.Popen).
- [gh-94906](https://python-all.ru/3/whatsnew/changelog.html): Добавлена поддержка нескольких шагов в [`math.nextafter()`](https://python-all.ru/3/library/math.html#math.nextafter). Патч от Shantanu Jain и Matthias Gorgens.
- [gh-51574](https://python-all.ru/3/whatsnew/changelog.html): [`tempfile.mkdtemp()`](https://python-all.ru/3/library/tempfile.html#tempfile.mkdtemp) теперь возвращает абсолютные пути, когда её параметр *dir* является относительным.
- [gh-94518](https://python-all.ru/3/whatsnew/changelog.html): Переделан закрытый `_posixsubprocess.fork_exec()` на использование Argument Clinic.
- [gh-92184](https://python-all.ru/3/whatsnew/changelog.html): При создании zip-файлов с помощью [`zipfile`](https://python-all.ru/3/library/zipfile.html#module-zipfile), `os.altsep`, если не `None`, всегда будет рассматриваться как разделитель пути, даже если он не является `/`. Патч от Carey Metcalfe.
- [bpo-46797](https://python-all.ru/3/whatsnew/changelog.html): Deprecation warnings are now emitted for `ast.Num`, `ast.Bytes`, `ast.Str`, `ast.NameConstant` and `ast.Ellipsis`. These have been documented as deprecated since Python 3.8, and will be removed in Python 3.14.
- [bpo-44844](https://python-all.ru/3/whatsnew/changelog.html): [`webbrowser`](https://python-all.ru/3/library/webbrowser.html#module-webbrowser) теперь может обнаруживать и запускать браузер Microsoft Edge.
- [bpo-45606](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка в [`pathlib.Path.glob()`](https://python-all.ru/3/library/pathlib.html#pathlib.Path.glob) – ранее этот метод не находил оборванную символическую ссылку, если шаблон был точным совпадением, но находил, если шаблон содержал подстановочный знак или рекурсивный подстановочный знак (`**`). Теперь оборванная символическая ссылка будет найдена в обоих случаях.
- [bpo-23041](https://python-all.ru/3/whatsnew/changelog.html): Добавлены [`QUOTE_STRINGS`](https://python-all.ru/3/library/csv.html#csv.QUOTE_STRINGS) и [`QUOTE_NOTNULL`](https://python-all.ru/3/library/csv.html#csv.QUOTE_NOTNULL) в набор стилей цитирования модуля [`csv`](https://python-all.ru/3/library/csv.html#module-csv).
- [bpo-24964](https://python-all.ru/3/whatsnew/changelog.html): Добавлен [`http.client.HTTPConnection.get_proxy_response_headers()`](https://python-all.ru/3/library/http.client.html#http.client.HTTPConnection.get_proxy_response_headers), который предоставляет доступ к HTTP-заголовкам ответа прокси-сервера на запрос `CONNECT`.
- [bpo-17258](https://python-all.ru/3/whatsnew/changelog.html): [`multiprocessing`](https://python-all.ru/3/library/multiprocessing.html#module-multiprocessing) теперь поддерживает более стойкие алгоритмы HMAC для аутентификации межпроцессного соединения, а не только HMAC-MD5.
- [bpo-39744](https://python-all.ru/3/whatsnew/changelog.html): [`asyncio.subprocess.Process.communicate()`](https://python-all.ru/3/library/asyncio-subprocess.html#asyncio.subprocess.Process.communicate) теперь закрывает стандартный ввод подпроцесса, даже если он вызван с `input=None`.
- [bpo-22708](https://python-all.ru/3/whatsnew/changelog.html): Улучшения туннелирования метода CONNECT в http.client: используется протокол HTTP 1.1; отправляется соответствующий заголовок Host: вместе с CONNECT, если он не указан; доменные имена IDN преобразуются в Punycode. Патч от Michael Handler.

### Документация

- [gh-67056](https://python-all.ru/3/whatsnew/changelog.html): Документировано, что эффект регистрации или отмены регистрации функции очистки [`atexit`](https://python-all.ru/3/library/atexit.html#module-atexit) изнутри зарегистрированной функции очистки не определён.
- [gh-103629](https://python-all.ru/3/whatsnew/changelog.html): Упоминается новый способ типизации `**kwargs` с помощью `Unpack` и `TypedDict`, представленный в [**PEP 692**](https://python-all.ru/3/whatsnew/changelog.html).
- [gh-48241](https://python-all.ru/3/whatsnew/changelog.html): Уточнена документация о том, что параметр url для urllib.request.urlopen и urllib.request.Request должен быть правильно закодирован.
- [gh-86094](https://python-all.ru/3/whatsnew/changelog.html): Добавлена поддержка поля Unicode Path Extra в ZipFile. Патч от Yeojin Kim и Andrea Giudiceandrea
- [gh-99202](https://python-all.ru/3/whatsnew/changelog.html): Исправлен тип расширения в документации для компиляции в режиме C++20

### Тесты

- [gh-104494](https://python-all.ru/3/whatsnew/changelog.html): Обновлены `test_pack_configure_in` и `test_place_configure_in` в связи с изменениями форматирования сообщений об ошибках в Tk 8.7.
- [gh-104461](https://python-all.ru/3/whatsnew/changelog.html): Запускать test\_configure\_screen только на X11, так как переменная окружения `DISPLAY` и параметр `-screen` для окон верхнего уровня не имеют смысла в Tk на Win32 или Aqua.
- [gh-86275](https://python-all.ru/3/whatsnew/changelog.html): Добавлены property-based тесты к тестам [`zoneinfo`](https://python-all.ru/3/library/zoneinfo.html#module-zoneinfo), а также заглушки для интерфейса `hypothesis`. (Патч от Paul Ganssle)
- [gh-103329](https://python-all.ru/3/whatsnew/changelog.html): Добавлены регрессионные тесты для поведения `unittest.mock.PropertyMock`.
- [gh-102795](https://python-all.ru/3/whatsnew/changelog.html): исправлено использование poll в test\_epoll’s test\_control\_and\_wait
- [gh-75729](https://python-all.ru/3/whatsnew/changelog.html): Исправлены [`os.spawn*`](https://python-all.ru/3/library/os.html#os.spawnl) тесты, которые падали на Windows, если рабочий каталог или путь к интерпретатору содержат пробелы.

### Сборка

- [gh-101282](https://python-all.ru/3/whatsnew/changelog.html): Оптимизация BOLT теперь применяется к разделяемой библиотеке libpython, если сборка ведётся как разделяемая библиотека. Настройки инструментирования и применения BOLT теперь можно задавать через переменные конфигурации `BOLT_INSTRUMENT_FLAGS` и `BOLT_APPLY_FLAGS`.
- [gh-99017](https://python-all.ru/3/whatsnew/changelog.html): Для `PYTHON_FOR_REGEN` теперь требуется Python 3.10 или новее.
- [gh-104490](https://python-all.ru/3/whatsnew/changelog.html): Определены `.PHONY` / виртуальные цели make единообразно и корректно.
- [gh-104106](https://python-all.ru/3/whatsnew/changelog.html): Добавлена запасная реализация gcc для mkfifoat/mknodat в macOS. Патч от Donghee Na.
- [gh-103532](https://python-all.ru/3/whatsnew/changelog.html): Макрос `TKINTER_PROTECT_LOADTK` больше не определяется и не используется в модуле `_tkinter`. Ранее он определялся только при сборке с Tk 8.4.13 и старше, но Tk версий ниже 8.5.12 не поддерживается начиная с [gh-91152](https://python-all.ru/3/whatsnew/changelog.html).
- [gh-99069](https://python-all.ru/3/whatsnew/changelog.html): Обходной путь, определяющий `static_assert` при отсутствии в заголовках libc, расширен на все сборки clang и gcc. В частности, это исправляет сборку на macOS \<= 10.10.
- [gh-100220](https://python-all.ru/3/whatsnew/changelog.html): Изменено значение по умолчанию переменной Makefile `SHELL` с `/bin/sh` на `/bin/sh -e`, чтобы гарантировать корректное завершение с ошибкой сложных рецептов после возникновения ошибки. Ранее `make install` мог не установить некоторые файлы, но при этом вернуть успешный результат.
- [gh-90656](https://python-all.ru/3/whatsnew/changelog.html): Добавлены тройки платформ для 64-разрядной LoongArch:

  - loongarch64-linux-gnusf
  - loongarch64-linux-gnuf32
  - loongarch64-linux-gnu

  Патч от Zhang Na.

### Windows

- [gh-104623](https://python-all.ru/3/whatsnew/changelog.html): Обновлён установщик Windows для использования SQLite 3.42.0.
- [gh-82814](https://python-all.ru/3/whatsnew/changelog.html): Исправлена потенциальная `[Errno 13] Permission denied` при использовании [`shutil.copystat()`](https://python-all.ru/3/library/shutil.html#shutil.copystat) в подсистеме Windows для Linux (WSL) на смонтированной файловой системе путём добавления `errno.EACCES` в список игнорируемых ошибок во внутренней реализации.
- [gh-103088](https://python-all.ru/3/whatsnew/changelog.html): Исправлен скрипт `activate` виртуального окружения, имеющий неверные окончания строк для Cygwin.
- [gh-103088](https://python-all.ru/3/whatsnew/changelog.html): Исправлена неработоспособность venv в bash на Windows на разных дисках.
- [gh-102997](https://python-all.ru/3/whatsnew/changelog.html): Обновлён установщик Windows для использования SQLite 3.41.2.
- [gh-88013](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка, из-за которой [`TypeError`](https://python-all.ru/3/library/exceptions.html#TypeError) возникало при вызове `ntpath.realpath()` с параметром bytes в некоторых случаях.

### macOS

- [gh-99834](https://python-all.ru/3/whatsnew/changelog.html): Обновлён установщик macOS до Tcl/Tk 8.6.13.
- [gh-104623](https://python-all.ru/3/whatsnew/changelog.html): Обновлён установщик macOS до SQLite 3.42.0.
- [gh-103545](https://python-all.ru/3/whatsnew/changelog.html): Добавлены `os.PRIO_DARWIN_THREAD`, `os.PRIO_DARWIN_PROCESS`, `os.PRIO_DARWIN_BG` и `os.PRIO_DARWIN_NONUI`. Их можно использовать с `os.setpriority` для запуска процесса с более низким приоритетом и задействования энергоэффективных ядер на системах Apple Silicon.
- [gh-104180](https://python-all.ru/3/whatsnew/changelog.html): Поддержка чтения конфигурации SOCKS-прокси из системной конфигурации macOS. Патч от Sam Schott.
- [gh-60436](https://python-all.ru/3/whatsnew/changelog.html): Обновлён текстовый виджет curses для дополнительной обработки backspace с помощью нажатия клавиши `curses.ascii.DEL`.
- [gh-102997](https://python-all.ru/3/whatsnew/changelog.html): Обновлён установщик macOS до SQLite 3.41.2.

### IDLE

- [gh-104499](https://python-all.ru/3/whatsnew/changelog.html): Исправлены автодополнения для Tk Aqua 8.7 (сейчас пустые).
- [gh-104496](https://python-all.ru/3/whatsnew/changelog.html): Окно «О программе» выводит версии tcl и tk, если они различаются (ожидается, что когда-нибудь станут разными).
- [gh-88496](https://python-all.ru/3/whatsnew/changelog.html): Исправлено зависание тестов IDLE на macOS.

### Tools/Demos

- [gh-104389](https://python-all.ru/3/whatsnew/changelog.html): Конвертеры C в Argument Clinic теперь принимают ключевое слово `unused`, чтобы обернуть параметр в [`Py_UNUSED`](https://python-all.ru/3/c-api/intro.html#c.Py_UNUSED). Патч от Erlend E. Aasland.

### C API

- [gh-101291](https://python-all.ru/3/whatsnew/changelog.html): Добавлен нестабильный C API для извлечения значения «компактных» целых чисел: [`PyUnstable_Long_IsCompact()`](https://python-all.ru/3/c-api/long.html#c.PyUnstable_Long_IsCompact) и [`PyUnstable_Long_CompactValue()`](https://python-all.ru/3/c-api/long.html#c.PyUnstable_Long_CompactValue).
- [gh-104109](https://python-all.ru/3/whatsnew/changelog.html): Добавлены `Py_NewInterpreterFromConfig()` и `PyInterpreterConfig` в публичный C API (но пока не в стабильный ABI). Новая функция позволяет создать новый интерпретатор с различными настройками. Функция добавлена в рамках поддержки PEP 684 (GIL для каждого интерпретатора).
- [gh-103968](https://python-all.ru/3/whatsnew/changelog.html): [`PyType_FromSpec()`](https://python-all.ru/3/c-api/type.html#c.PyType_FromSpec) и его варианты теперь позволяют создавать классы, метакласс которых переопределяет [`tp_new`](https://python-all.ru/3/c-api/typeobj.html#c.PyTypeObject.tp_new). При этом `tp_new` игнорируется. Такое поведение устарело и будет запрещено в версии 3.14 и новее. Новый [`PyType_FromMetaclass()`](https://python-all.ru/3/c-api/type.html#c.PyType_FromMetaclass) уже его запрещает.
- [gh-103743](https://python-all.ru/3/whatsnew/changelog.html): Добавлена функция [`PyUnstable_Object_GC_NewWithExtraData()`](https://python-all.ru/3/c-api/gcsupport.html#c.PyUnstable_Object_GC_NewWithExtraData), которая позволяет выделить дополнительную память после объекта для данных, не управляемых Python.
- [gh-103295](https://python-all.ru/3/whatsnew/changelog.html): Введены [`PyUnstable_WritePerfMapEntry()`](https://python-all.ru/3/c-api/perfmaps.html#c.PyUnstable_WritePerfMapEntry), [`PyUnstable_PerfMapState_Init()`](https://python-all.ru/3/c-api/perfmaps.html#c.PyUnstable_PerfMapState_Init) и [`PyUnstable_PerfMapState_Fini()`](https://python-all.ru/3/c-api/perfmaps.html#c.PyUnstable_PerfMapState_Fini). Они позволяют расширениям (в частности, JIT-компиляторам) потокобезопасно записывать данные в файлы perf-map. [Поддержка Python для профилировщика Linux perf](https://python-all.ru/3/howto/perf_profiling.html) также использует эти API для записи записей в файл perf-map.
- [gh-103509](https://python-all.ru/3/whatsnew/changelog.html): Добавлен C API для расширения типов с непрозрачной структурой экземпляров: [`PyType_Spec.basicsize`](https://python-all.ru/3/c-api/type.html#c.PyType_Spec.basicsize) теперь может быть нулём или отрицательным, [`PyObject_GetTypeData()`](https://python-all.ru/3/c-api/object.html#c.PyObject_GetTypeData) позволяет получить данные, специфичные для подкласса, а [`Py_TPFLAGS_ITEMS_AT_END`](https://python-all.ru/3/c-api/typeobj.html#c.Py_TPFLAGS_ITEMS_AT_END) – безопасно расширять объекты переменного размера. Подробности см. в [**PEP 697**](https://python-all.ru/3/whatsnew/changelog.html).
- [gh-103091](https://python-all.ru/3/whatsnew/changelog.html): Добавлена новая функция C API для принудительного присвоения тега версии PyTypeObject: `PyUnstable_Type_AssignVersionTag()`.
- [gh-101408](https://python-all.ru/3/whatsnew/changelog.html): [`PyObject_GC_Resize`](https://python-all.ru/3/c-api/gcsupport.html#c.PyObject_GC_Resize) должен вычислять размер прехедара, если это необходимо. Патч от Donghee Na.
- [gh-98836](https://python-all.ru/3/whatsnew/changelog.html): Добавлена поддержка дополнительных опций форматирования (выравнивание влево, восьмеричные числа, шестнадцатеричные в верхнем регистре, `intmax_t`, `ptrdiff_t`, `wchar_t` C-строки, переменные ширина и точность) в [`PyUnicode_FromFormat()`](https://python-all.ru/3/c-api/unicode.html#c.PyUnicode_FromFormat) и [`PyUnicode_FromFormatV()`](https://python-all.ru/3/c-api/unicode.html#c.PyUnicode_FromFormatV).
- [gh-96803](https://python-all.ru/3/whatsnew/changelog.html): Добавлены нестабильные функции 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*

### Core and Builtins

- [gh-102192](https://python-all.ru/3/whatsnew/changelog.html): `_PyErr_ChainExceptions` устарел в пользу `_PyErr_ChainExceptions1`.
- [gh-89987](https://python-all.ru/3/whatsnew/changelog.html): Уменьшено количество встроенных записей [`CACHE`](https://python-all.ru/3/library/dis.html#opcode-CACHE) для `BINARY_SUBSCR`.
- [gh-102859](https://python-all.ru/3/whatsnew/changelog.html): Удалены инструкции `JUMP_IF_FALSE_OR_POP` и `JUMP_IF_TRUE_OR_POP`.
- [gh-101975](https://python-all.ru/3/whatsnew/changelog.html): Исправлено значение `stacktop` при трассировке входов для предотвращения повреждения при сборке мусора.
- [gh-102778](https://python-all.ru/3/whatsnew/changelog.html): Добавлен [`sys.last_exc`](https://python-all.ru/3/library/sys.html#sys.last_exc), а [`sys.last_type`](https://python-all.ru/3/library/sys.html#sys.last_type), [`sys.last_value`](https://python-all.ru/3/library/sys.html#sys.last_value) и [`sys.last_traceback`](https://python-all.ru/3/library/sys.html#sys.last_traceback), которые содержат ту же информацию в устаревшей форме, объявлены устаревшими.
- [gh-100982](https://python-all.ru/3/whatsnew/changelog.html): Все вхождения `COMPARE_AND_BRANCH` заменены на [`COMPARE_OP`](https://python-all.ru/3/library/dis.html#opcode-COMPARE_OP).
- [gh-102701](https://python-all.ru/3/whatsnew/changelog.html): Исправлено переполнение при создании очень большого словаря.
- [gh-102755](https://python-all.ru/3/whatsnew/changelog.html): Добавлен [`PyErr_DisplayException()`](https://python-all.ru/3/c-api/exceptions.html#c.PyErr_DisplayException), принимающий только экземпляр исключения, для замены устаревшего `PyErr_Display()`, который принимает тройку `(typ, exc, tb)`.
- [gh-102594](https://python-all.ru/3/whatsnew/changelog.html): Добавлено примечание к исключению, возбуждаемому в `PyErr_SetObject` при сбое нормализации.
- [gh-90997](https://python-all.ru/3/whatsnew/changelog.html): Уменьшено количество встроенных записей [`CACHE`](https://python-all.ru/3/library/dis.html#opcode-CACHE), используемых [`LOAD_GLOBAL`](https://python-all.ru/3/library/dis.html#opcode-LOAD_GLOBAL).

### Library

- [gh-102491](https://python-all.ru/3/whatsnew/changelog.html): Улучшено время импорта `platform` за счёт удаления разбора версий IronPython. Разбор версий IronPython не работал (см. [https://github.com/IronLanguages/ironpython3/issues/1667](https://python-all.ru/3/whatsnew/changelog.html)).

### Core and Builtins

- [gh-101291](https://python-all.ru/3/whatsnew/changelog.html): Переупорядочены биты в первом поле (после заголовка) PyLongObject. \* Биты 0 и 1: 1 – знак. Т.е. 0 для положительных чисел, 1 для нуля и 2 для отрицательных чисел. \* Бит 2 зарезервирован (вероятно, для бита бессмертия) \* Биты 3+ беззнаковый размер.

  Это делает некоторые операции немного эффективнее и позволит в будущем использовать более компактное и быстрое представление целых чисел в дополнительном коде.
- [gh-102397](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка сегментации из-за состояния гонки при обработке сигналов во время сборки мусора. Исправление от Kumar Aditya.
- [gh-102406](https://python-all.ru/3/whatsnew/changelog.html): [`codecs`](https://python-all.ru/3/library/codecs.html#module-codecs) ошибки кодирования/декодирования теперь получают контекстную информацию (какая операция и какие кодеки), прикреплённую в виде заметок [**PEP 678**](https://python-all.ru/3/whatsnew/changelog.html), вместо создания цепочки нового экземпляра исключения.
- [gh-102281](https://python-all.ru/3/whatsnew/changelog.html): Исправлена потенциальная ошибка разыменования nullptr и использование неинициализированной памяти в fileutils. Патч от Max Bachmann.
- [gh-102300](https://python-all.ru/3/whatsnew/changelog.html): Повторное использование операндов со счётчиком ссылок 1 в специализациях BINARY\_OP для чисел с плавающей запятой.
- [gh-102213](https://python-all.ru/3/whatsnew/changelog.html): Исправлена потеря производительности при доступе к атрибутам объекта с определённым `__getattr__`.
- [gh-102255](https://python-all.ru/3/whatsnew/changelog.html): Улучшена поддержка сборки для Xbox. Патч от Max Bachmann.

### Сборка

- [gh-102027](https://python-all.ru/3/whatsnew/changelog.html): Исправлено обнаружение SSE2 и SSE3 во внутреннем модуле `_blake2`. Патч от Max Bachmann.

### Ядро и встроенные объекты

- [gh-101865](https://python-all.ru/3/whatsnew/changelog.html): `co_lnotab` в объектах кода объявлен устаревшим, удаление запланировано на Python 3.14

### Библиотека

- [bpo-1635741](https://python-all.ru/3/whatsnew/changelog.html): Адаптировать `_pickle` к [**PEP 687**](https://python-all.ru/3/whatsnew/changelog.html). Патч от Mohamed Koubaa и Erlend Aasland.
- [gh-103085](https://python-all.ru/3/whatsnew/changelog.html): Чистая реализация [`locale.getencoding()`](https://python-all.ru/3/library/locale.html#locale.getencoding) на Python не будет выдавать предупреждение об устаревании.
- [gh-103068](https://python-all.ru/3/whatsnew/changelog.html): Больше невозможно регистрировать условные точки останова в [`Pdb`](https://python-all.ru/3/library/pdb.html#pdb.Pdb), которые вызывают [`SyntaxError`](https://python-all.ru/3/library/exceptions.html#SyntaxError). Патч от Tian Gao.
- [gh-102549](https://python-all.ru/3/whatsnew/changelog.html): Не игнорировать исключения при создании типа-члена.
- [gh-103056](https://python-all.ru/3/whatsnew/changelog.html): Гарантировать, что final `_generate_next_value_` является `staticmethod`.
- [gh-103046](https://python-all.ru/3/whatsnew/changelog.html): Корректно отображать метку текущей строки в [`dis`](https://python-all.ru/3/library/dis.html#module-dis), когда `show_caches` равно False и `lasti` указывает на запись CACHE.
- [gh-102433](https://python-all.ru/3/whatsnew/changelog.html): [`isinstance()`](https://python-all.ru/3/library/functions.html#isinstance) проверки против [`runtime-checkable protocols`](https://python-all.ru/3/library/typing.html#typing.runtime_checkable) теперь используют [`inspect.getattr_static()`](https://python-all.ru/3/library/inspect.html#inspect.getattr_static) вместо [`hasattr()`](https://python-all.ru/3/library/functions.html#hasattr) для поиска существования атрибутов. Это означает, что дескрипторы и [`__getattr__()`](https://python-all.ru/3/reference/datamodel.html#object.__getattr__) методы больше не выполняются неожиданно во время `isinstance()` проверок runtime-checkable протоколов. Однако это также может означать, что некоторые объекты, которые ранее считались экземплярами runtime-checkable протокола, могут больше не считаться экземплярами этого протокола на Python 3.12+, и наоборот. Большинство пользователей вряд ли пострадают от этого изменения. Патч от Alex Waygood.
- [gh-103023](https://python-all.ru/3/whatsnew/changelog.html): Больше невозможно регистрировать выражения для отображения в [`Pdb`](https://python-all.ru/3/library/pdb.html#pdb.Pdb), которые вызывают [`SyntaxError`](https://python-all.ru/3/library/exceptions.html#SyntaxError). Патч от Tian Gao.
- [gh-102947](https://python-all.ru/3/whatsnew/changelog.html): Улучшена трассировка при вызове [`dataclasses.fields()`](https://python-all.ru/3/library/dataclasses.html#dataclasses.fields) на не-датаклассе. Патч от Alex Waygood.
- [gh-102780](https://python-all.ru/3/whatsnew/changelog.html): Менеджер контекста [`asyncio.Timeout`](https://python-all.ru/3/library/asyncio-task.html#asyncio.Timeout) теперь работает надёжно даже при выполнении очистки из-за отмены задачи. Ранее в таких случаях он мог вызвать [`CancelledError`](https://python-all.ru/3/library/asyncio-exceptions.html#asyncio.CancelledError) вместо [`TimeoutError`](https://python-all.ru/3/library/asyncio-exceptions.html#asyncio.TimeoutError).
- [gh-102871](https://python-all.ru/3/whatsnew/changelog.html): Удалена поддержка устаревших браузеров из [`webbrowser`](https://python-all.ru/3/library/webbrowser.html#module-webbrowser). Удалённые браузеры включают Grail, Mosaic, Netscape, Galeon, Skipstone, Iceape, Firebird и версии Firefox 35 и ниже.
- [gh-102839](https://python-all.ru/3/whatsnew/changelog.html): Улучшена производительность обработки аргументов [`math.log()`](https://python-all.ru/3/library/math.html#math.log) за счёт удаления argument clinic.
- [gh-102828](https://python-all.ru/3/whatsnew/changelog.html): Добавлен аргумент `onexc` к [`shutil.rmtree()`](https://python-all.ru/3/library/shutil.html#shutil.rmtree), который аналогичен `onerror`, но ожидает экземпляр исключения, а не кортеж exc\_info. `onerror` объявлен устаревшим.
- [gh-88965](https://python-all.ru/3/whatsnew/changelog.html): typing: Исправлена ошибка, связанная с подстановкой в пользовательских классах, обобщённых по [`ParamSpec`](https://python-all.ru/3/library/typing.html#typing.ParamSpec). Ранее, если `ParamSpec` заменялся списком параметров, который сам содержал [`TypeVar`](https://python-all.ru/3/library/typing.html#typing.TypeVar), то `TypeVar` в списке параметров не мог быть впоследствии заменён. Теперь это исправлено.

  Патч от Nikita Sobolev.
- [gh-76846](https://python-all.ru/3/whatsnew/changelog.html): Исправлена проблема, при которой методы `__new__()` и `__init__()` подклассов [`pathlib.PurePath`](https://python-all.ru/3/library/pathlib.html#pathlib.PurePath) и [`Path`](https://python-all.ru/3/library/pathlib.html#pathlib.Path) не вызывались в некоторых обстоятельствах.
- [gh-78530](https://python-all.ru/3/whatsnew/changelog.html): [`asyncio.wait()`](https://python-all.ru/3/library/asyncio-task.html#asyncio.wait) теперь принимает генераторы, порождающие задачи. Патч от Kumar Aditya.
- [gh-102748](https://python-all.ru/3/whatsnew/changelog.html): [`asyncio.iscoroutine()`](https://python-all.ru/3/library/asyncio-task.html#asyncio.iscoroutine) теперь возвращает `False` для генераторов, так как [`asyncio`](https://python-all.ru/3/library/asyncio.html#module-asyncio) не поддерживает устаревшие корутины на основе генераторов. Патч от Kumar Aditya.
- [gh-102670](https://python-all.ru/3/whatsnew/changelog.html): Оптимизированы fmean(), correlation(), covariance() и linear\_regression() с использованием новой функции math.sumprod().
- [gh-102615](https://python-all.ru/3/whatsnew/changelog.html): Typing: Улучшено `repr` обобщённых псевдонимов для классов, обобщённых по [`ParamSpec`](https://python-all.ru/3/library/typing.html#typing.ParamSpec). (Используйте квадратные скобки для представления списка параметров.)
- [gh-100112](https://python-all.ru/3/whatsnew/changelog.html): [`asyncio.Task.get_coro()`](https://python-all.ru/3/library/asyncio-task.html#asyncio.Task.get_coro) теперь всегда возвращает корутину при обёртывании ожидаемого объекта. Патч от Kumar Aditya.
- [gh-102578](https://python-all.ru/3/whatsnew/changelog.html): Ускорена установка и удаление изменяемых атрибутов в не-датакласс-подклассах замороженных датаклассов. Из-за реализации `__setattr__` и `__delattr__` для замороженных датаклассов, ранее это имело временную сложность *O*(*n*). Теперь временная сложность *O*(1).
- [gh-102519](https://python-all.ru/3/whatsnew/changelog.html): Добавлены функции [`os.listdrives()`](https://python-all.ru/3/library/os.html#os.listdrives), [`os.listvolumes()`](https://python-all.ru/3/library/os.html#os.listvolumes) и [`os.listmounts()`](https://python-all.ru/3/library/os.html#os.listmounts) в Windows для перечисления дисков, томов и точек подключения
- [gh-74468](https://python-all.ru/3/whatsnew/changelog.html): Атрибут name извлечённого файлового объекта [`tarfile`](https://python-all.ru/3/library/tarfile.html#module-tarfile) теперь содержит имя самого файла, а не архива, в котором он находился. Патч от Олега Иаргина.
- [gh-102378](https://python-all.ru/3/whatsnew/changelog.html): Приватный вспомогательный метод `inspect._signature_strip_non_python_syntax` больше не будет удалять `/` из входной строки.
- [gh-79940](https://python-all.ru/3/whatsnew/changelog.html): Добавлены [`inspect.getasyncgenstate()`](https://python-all.ru/3/library/inspect.html#inspect.getasyncgenstate) и [`inspect.getasyncgenlocals()`](https://python-all.ru/3/library/inspect.html#inspect.getasyncgenlocals). Патч от Томаса Креннвалльнера.
- [gh-102103](https://python-all.ru/3/whatsnew/changelog.html): Добавлен аргумент `module` в [`dataclasses.make_dataclass()`](https://python-all.ru/3/library/dataclasses.html#dataclasses.make_dataclass), и классы, создаваемые им, теперь поддерживают сериализацию.
- [gh-102069](https://python-all.ru/3/whatsnew/changelog.html): Исправлена генерация дескриптора `__weakref__` для пользовательских датаклассов.
- [gh-102038](https://python-all.ru/3/whatsnew/changelog.html): Пропускать `stat` в [`site`](https://python-all.ru/3/library/site.html#module-site), если уже найден `pyvenv.cfg`
- [gh-98886](https://python-all.ru/3/whatsnew/changelog.html): Исправлены проблемы при определении датаклассов с полями, имеющими определённые имена с подчёркиваниями, которые не явно зарезервированы [`dataclasses`](https://python-all.ru/3/library/dataclasses.html#module-dataclasses).
- [gh-101673](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка [`pdb`](https://python-all.ru/3/library/pdb.html#module-pdb), при которой `ll` очищает изменения локальных переменных.
- [gh-101313](https://python-all.ru/3/whatsnew/changelog.html): Добавлены аргументы -h и --help в интерфейс командной строки модуля webbrowser
- [gh-100372](https://python-all.ru/3/whatsnew/changelog.html): [`ssl.SSLContext.load_verify_locations()`](https://python-all.ru/3/library/ssl.html#ssl.SSLContext.load_verify_locations) больше не принимает ошибочно некоторые случаи хвостовых данных при разборе DER.
- [gh-89727](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка RecursionError в pathlib.Path.walk на глубоких деревьях каталогов путём переписывания с использованием итерации вместо рекурсии.
- [gh-100131](https://python-all.ru/3/whatsnew/changelog.html): Добавлен необязательный именованный аргумент `delete` в [`tempfile.TemporaryDirectory`](https://python-all.ru/3/library/tempfile.html#tempfile.TemporaryDirectory).
- [gh-48330](https://python-all.ru/3/whatsnew/changelog.html): Добавлена опция командной строки `--durations`, показывающая N самых медленных тестовых случаев. Конструкторы [`unittest.TextTestRunner`](https://python-all.ru/3/library/unittest.html#unittest.TextTestRunner) и [`unittest.TextTestResult`](https://python-all.ru/3/library/unittest.html#unittest.TextTestResult) принимают новый именованный аргумент *durations*. Подклассы должны учитывать это или принимать `**kwargs`. Добавлены метод [`unittest.TestResult.addDuration()`](https://python-all.ru/3/library/unittest.html#unittest.TestResult.addDuration) и атрибут [`unittest.TestResult.collectedDurations`](https://python-all.ru/3/library/unittest.html#unittest.TestResult.collectedDurations).

  (Автор: Giampaolo Rodola)
- [gh-98169](https://python-all.ru/3/whatsnew/changelog.html): Исправлен сбой [`dataclasses.astuple()`](https://python-all.ru/3/library/dataclasses.html#dataclasses.astuple) при наличии [`collections.defaultdict`](https://python-all.ru/3/library/collections.html#collections.defaultdict) в атрибутах.
- [gh-96931](https://python-all.ru/3/whatsnew/changelog.html): Исправлены неверные результаты от [`ssl.SSLSocket.shared_ciphers()`](https://python-all.ru/3/library/ssl.html#ssl.SSLSocket.shared_ciphers)
- [gh-95495](https://python-all.ru/3/whatsnew/changelog.html): При сборке с OpenSSL 3.0 в модуле [`ssl`](https://python-all.ru/3/library/ssl.html#module-ssl) была ошибка: он сообщал о неподтверждённых EOF (т.е. без close\_notify) как о чистом EOF на уровне TLS. Теперь он вызывает [`SSLEOFError`](https://python-all.ru/3/library/ssl.html#ssl.SSLEOFError), что соответствует поведению в предыдущих версиях OpenSSL. Атрибут [`options`](https://python-all.ru/3/library/ssl.html#ssl.SSLContext.options) на [`SSLContext`](https://python-all.ru/3/library/ssl.html#ssl.SSLContext) также по умолчанию больше не включает [`OP_IGNORE_UNEXPECTED_EOF`](https://python-all.ru/3/library/ssl.html#ssl.OP_IGNORE_UNEXPECTED_EOF). Эту опцию можно установить, чтобы указать поведение предыдущей версии OpenSSL 3.0.
- [gh-94684](https://python-all.ru/3/whatsnew/changelog.html): Теперь функции [`uuid.uuid3()`](https://python-all.ru/3/library/uuid.html#uuid.uuid3) и [`uuid.uuid5()`](https://python-all.ru/3/library/uuid.html#uuid.uuid5) поддерживают объекты [`bytes`](https://python-all.ru/3/library/stdtypes.html#bytes) в качестве аргумента *name*.
- [gh-94440](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка `concurrent.futures.process`, при которой завершение работы `ProcessPoolExecutor` могло зависнуть после быстрой отправки и отмены future.
- [gh-72346](https://python-all.ru/3/whatsnew/changelog.html): Добавлено предупреждение об устаревании для параметра *isdst* функции [`email.utils.localtime()`](https://python-all.ru/3/library/email.utils.html#email.utils.localtime).
- [bpo-36305](https://python-all.ru/3/whatsnew/changelog.html): Исправлена обработка имён файлов Windows, напоминающих диски, например `./a:b`, в [`pathlib`](https://python-all.ru/3/library/pathlib.html#module-pathlib).

### Документация

- [gh-103112](https://python-all.ru/3/whatsnew/changelog.html): Добавлена docstring к [`http.client.HTTPResponse.read()`](https://python-all.ru/3/library/http.client.html#http.client.HTTPResponse.read) для исправления вывода `pydoc`.

### Тесты

- [gh-102980](https://python-all.ru/3/whatsnew/changelog.html): Улучшено тестовое покрытие для [`pdb`](https://python-all.ru/3/library/pdb.html#module-pdb).
- [gh-102537](https://python-all.ru/3/whatsnew/changelog.html): Изменена стратегия обработки ошибок в `test_zoneinfo.TzPathTest.python_tzpath_context`. Патч от Paul Ganssle.
- [gh-101377](https://python-all.ru/3/whatsnew/changelog.html): Улучшен тест test\_locale\_calendar\_formatweekday модуля calendar.

### Сборка

- [gh-102973](https://python-all.ru/3/whatsnew/changelog.html): Добавлен dev-контейнер (вместе с соответствующим Dockerfile) для целей разработки.
- [gh-102711](https://python-all.ru/3/whatsnew/changelog.html): Исправлены предупреждения компилятора `-Wstrict-prototypes`.

### Windows

- [gh-102690](https://python-all.ru/3/whatsnew/changelog.html): Изменено [`webbrowser`](https://python-all.ru/3/library/webbrowser.html#module-webbrowser): теперь при недоступности переходит на Microsoft Edge вместо Internet Explorer.
- [gh-99726](https://python-all.ru/3/whatsnew/changelog.html): Улучшена корректность результатов stat для Windows, а также используется более быстрый API, если он доступен.

### Tools/Demos

- [gh-102809](https://python-all.ru/3/whatsnew/changelog.html): `Misc/gdbinit` удалён.

### C API

- [gh-102013](https://python-all.ru/3/whatsnew/changelog.html): Добавлена новая (нестабильная) функция C-API для перебора GC-объектов с помощью колбэка: `PyUnstable_VisitObjects`.

## Python 3.12.0 alpha 6

*Дата выпуска: 2023-03-07*

### Безопасность

- [gh-99108](https://python-all.ru/3/whatsnew/changelog.html): Замена встроенных реализаций MD5 и SHA1 в hashlib на верифицированные из проекта HACL\*.
- [gh-101727](https://python-all.ru/3/whatsnew/changelog.html): Обновлена версия OpenSSL в бинарных сборках для Windows и macOS до 1.1.1t для устранения [**CVE 2023-0286**](https://python-all.ru/3/whatsnew/changelog.html), [**CVE 2022-4303**](https://python-all.ru/3/whatsnew/changelog.html), и [**CVE 2022-4303**](https://python-all.ru/3/whatsnew/changelog.html) в соответствии с [уведомлением безопасности OpenSSL от 2023-02-07](https://python-all.ru/3/whatsnew/changelog.html).
- [gh-99108](https://python-all.ru/3/whatsnew/changelog.html): Замена встроенных [`hashlib`](https://python-all.ru/3/library/hashlib.html#module-hashlib) реализаций SHA2-384 и SHA2-512, взятых из LibTomCrypt, на формально верифицированный код, устойчивый к атакам по побочным каналам, из проекта [HACL\*](https://python-all.ru/3/whatsnew/changelog.html). Встроенные реализации остаются запасным вариантом, используемым только когда OpenSSL их не предоставляет.
- [gh-101283](https://python-all.ru/3/whatsnew/changelog.html): [`subprocess.Popen`](https://python-all.ru/3/library/subprocess.html#subprocess.Popen) теперь использует более безопасный подход для поиска `cmd.exe` при запуске с `shell=True`. Исправление от Eryk Sun, основанное на исправлении от Oleg Iarygin.

### Ядро и встроенные объекты

- [gh-102493](https://python-all.ru/3/whatsnew/changelog.html): Исправление регрессии в семантике нормализации в `PyErr_SetObject`.
- [gh-102416](https://python-all.ru/3/whatsnew/changelog.html): Не кэшировать некорректно автоматически сгенерированные правила циклов в парсере. Исправление от Pablo Galindo.
- [gh-102356](https://python-all.ru/3/whatsnew/changelog.html): Исправление ошибки, приводившей к краху при освобождении глубоко вложенных объектов filter. Исправление от Marta Gómez Macías.
- [gh-102336](https://python-all.ru/3/whatsnew/changelog.html): Очистка специальной обработки для Windows 7. Исправление от Max Bachmann.
- [gh-102250](https://python-all.ru/3/whatsnew/changelog.html): Исправлен segfault, возникавший при вызове интерпретатором `__bool__` метода, который вызывает исключение.
- [gh-102126](https://python-all.ru/3/whatsnew/changelog.html): Исправление взаимоблокировки при завершении работы во время очистки состояний потоков, если какой-либо финализатор пытается захватить блокировку заголовка времени выполнения. Исправление от Kumar Aditya.
- [gh-102027](https://python-all.ru/3/whatsnew/changelog.html): Использовать `GetCurrentProcessId` в Windows, когда `getpid` недоступен. Исправление от Max Bachmann.
- [gh-102056](https://python-all.ru/3/whatsnew/changelog.html): Исправление ошибок обработки ошибок в коде печати исключений интерпретатора, которые могли вызывать крах при бесконечной рекурсии.
- [gh-100982](https://python-all.ru/3/whatsnew/changelog.html): Ограничение области действия инструкции `FOR_ITER_RANGE` областью исходной инструкции [`FOR_ITER`](https://python-all.ru/3/library/dis.html#opcode-FOR_ITER), чтобы разрешить инструментирование.
- [gh-101967](https://python-all.ru/3/whatsnew/changelog.html): Исправление возможного segfault в функции `positional_only_passed_as_keyword` при создании нового списка.
- [gh-101952](https://python-all.ru/3/whatsnew/changelog.html): Исправление возможного segfault в опкоде `BUILD_SET` при создании нового множества.
- [gh-74895](https://python-all.ru/3/whatsnew/changelog.html): [`socket.getaddrinfo`](https://python-all.ru/3/library/socket.html#socket.getaddrinfo) больше не вызывает [`OverflowError`](https://python-all.ru/3/library/exceptions.html#OverflowError) для значений [`int`](https://python-all.ru/3/library/functions.html#int) **порта** вне диапазона C long. Значения вне диапазона оставлены на усмотрение базового строкового C API для сообщения об ошибке. Вместо этого может возникнуть [`socket.gaierror`](https://python-all.ru/3/library/socket.html#socket.gaierror) `SAI_SERVICE`, или не возникнуть вообще, так как не все платформенные C библиотеки генерируют ошибку.
- [gh-101799](https://python-all.ru/3/whatsnew/changelog.html): Добавлен [`CALL_INTRINSIC_2`](https://python-all.ru/3/library/dis.html#opcode-CALL_INTRINSIC_2) и используется вместо `PREP_RERAISE_STAR`.
- [gh-101857](https://python-all.ru/3/whatsnew/changelog.html): Исправление определения поддержки xattr в Linux-системах путём расширения проверки на linux, а не только glibc. Это исправляет поддержку для musl.
- [gh-84783](https://python-all.ru/3/whatsnew/changelog.html): Сделать объект slice хешируемым. Исправление от Will Bradshaw и Furkan Onder.
- [gh-87849](https://python-all.ru/3/whatsnew/changelog.html): Изменение инструкции `SEND`: теперь она оставляет получатель на стеке. Это позволяет специализированной форме `SEND` пропустить цепочку вызовов C и перейти непосредственно к `RESUME` в генераторе или корутине.
- [gh-101765](https://python-all.ru/3/whatsnew/changelog.html): Исправление SystemError / segmentation fault в итераторе `__reduce__` при внутреннем доступе к ключам `builtins.__dict__`, который изменяет объект итератора.
- [gh-101430](https://python-all.ru/3/whatsnew/changelog.html): Обновление [`tracemalloc`](https://python-all.ru/3/library/tracemalloc.html#module-tracemalloc) для корректной обработки предварительного размера объекта. Исправление от Donghee Na.
- [gh-101696](https://python-all.ru/3/whatsnew/changelog.html): Аннулирует тег версии типа в `_PyStaticType_Dealloc` для статических типов, предотвращая ошибку, при которой ложное попадание в кеш могло привести к краху интерпретатора. Патч от Kumar Aditya.
- [gh-101632](https://python-all.ru/3/whatsnew/changelog.html): Добавляет новую инструкцию `RETURN_CONST`.
- [gh-100719](https://python-all.ru/3/whatsnew/changelog.html): Удаляет поле gi\_code из объектов генератора (а также корутины и асинхронного генератора), так как оно избыточно. Фрейм уже содержит ссылку на объект кода.
- [gh-98627](https://python-all.ru/3/whatsnew/changelog.html): Когда интерпретатор настроен на проверку (и только в этом случае), импорт модуля расширения теперь будет завершаться ошибкой, если расширение не поддерживает множественные интерпретаторы (т.е. не реализует многофазную инициализацию PEP 489). Это не относится к главному интерпретатору и к под-интерпретаторам, созданным с `Py_NewInterpreter()`.

### Библиотека

- [gh-102302](https://python-all.ru/3/whatsnew/changelog.html): Микрооптимизация хеширования [`inspect.Parameter`](https://python-all.ru/3/library/inspect.html#inspect.Parameter), сокращает время хеширования экземпляра примерно на 40%.
- [gh-101979](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка, при которой скобки в аргументе `metavar` функции [`argparse.ArgumentParser.add_argument()`](https://python-all.ru/3/library/argparse.html#argparse.ArgumentParser.add_argument) отбрасывались. Патч от Yeojin Kim.
- [gh-91038](https://python-all.ru/3/whatsnew/changelog.html): [`platform.platform()`](https://python-all.ru/3/library/platform.html#platform.platform) теперь имеет логические аргументы по умолчанию.
- [gh-81652](https://python-all.ru/3/whatsnew/changelog.html): Добавлены константы [`mmap.MAP_ALIGNED_SUPER`](https://python-all.ru/3/library/mmap.html#mmap.MAP_ALIGNED_SUPER) FreeBSD и [`mmap.MAP_CONCEAL`](https://python-all.ru/3/library/mmap.html#mmap.MAP_CONCEAL) OpenBSD в [`mmap`](https://python-all.ru/3/library/mmap.html#module-mmap). Патч от Yeojin Kim.
- [gh-102179](https://python-all.ru/3/whatsnew/changelog.html): Исправлено сообщение об ошибке [`os.dup2()`](https://python-all.ru/3/library/os.html#os.dup2) для отрицательных файловых дескрипторов.
- [gh-101961](https://python-all.ru/3/whatsnew/changelog.html): В бинарном режиме `fileinput.hookcompressed()` не устанавливает значение `encoding`, даже если значение равно `None`. Патч от Gihwan Kim.
- [gh-101936](https://python-all.ru/3/whatsnew/changelog.html): Значение по умолчанию `fp` становится [`io.BytesIO`](https://python-all.ru/3/library/io.html#io.BytesIO), если [`HTTPError`](https://python-all.ru/3/library/urllib.error.html#urllib.error.HTTPError) инициализируется без указанного параметра `fp`. Патч от Long Vo.
- [gh-101566](https://python-all.ru/3/whatsnew/changelog.html): В zipfile синхронизирован Path с [zipp 3.14](https://python-all.ru/3/whatsnew/changelog.html), включая исправление для extractall в базовом zip-файле после обёртывания в `Path`.
- [gh-97930](https://python-all.ru/3/whatsnew/changelog.html): Применены изменения из [importlib\_resources 5.12](https://python-all.ru/3/whatsnew/changelog.html), включая исправление для `MultiplexedPath` для поддержки каталогов в нескольких пространствах имён (python/importlib\_resources#265).
- [gh-101997](https://python-all.ru/3/whatsnew/changelog.html): Обновлен pip wheel, поставляемый с ensurepip (pip 23.0.1).
- [gh-99108](https://python-all.ru/3/whatsnew/changelog.html): Встроенные модули расширения для алгоритмов SHA2 [`hashlib`](https://python-all.ru/3/library/hashlib.html#module-hashlib), используемые, когда OpenSSL их не предоставляет, теперь находятся в одном внутреннем модуле `_sha2` вместо отдельных модулей `_sha256` и `_sha512`.
- [gh-101892](https://python-all.ru/3/whatsnew/changelog.html): Вызываемые итераторы больше не вызывают [`SystemError`](https://python-all.ru/3/library/exceptions.html#SystemError), когда вызываемый объект исчерпывает итератор, но забывает либо вернуть сигнальное значение, либо возбудить [`StopIteration`](https://python-all.ru/3/library/exceptions.html#StopIteration).
- [gh-87634](https://python-all.ru/3/whatsnew/changelog.html): Удалено поведение блокировки из [`functools.cached_property()`](https://python-all.ru/3/library/functools.html#functools.cached_property).
- [gh-97786](https://python-all.ru/3/whatsnew/changelog.html): Исправлено потенциальное неопределённое поведение в редких случаях преобразования чисел с плавающей запятой во время.
- [gh-101517](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка, при которой [`bdb`](https://python-all.ru/3/library/bdb.html#module-bdb) ищет строку исходного кода с помощью [`linecache`](https://python-all.ru/3/library/linecache.html#module-linecache) с `lineno=None`, что приводит к сбою с необработанным исключением.
- [gh-101773](https://python-all.ru/3/whatsnew/changelog.html): Оптимизация [`fractions.Fraction`](https://python-all.ru/3/library/fractions.html#fractions.Fraction) для небольших компонентов. Приватный аргумент `_normalize` конструктора `fractions.Fraction` удалён.
- [gh-101693](https://python-all.ru/3/whatsnew/changelog.html): В [`sqlite3.Cursor.execute()`](https://python-all.ru/3/library/sqlite3.html#sqlite3.Cursor.execute) теперь выводится [`DeprecationWarning`](https://python-all.ru/3/library/exceptions.html#DeprecationWarning), когда [именованные заполнители](https://python-all.ru/3/library/sqlite3.html#sqlite3-placeholders) используются вместе с параметрами, переданными в виде [последовательности](https://python-all.ru/3/glossary.html#term-sequence) вместо [`dict`](https://python-all.ru/3/library/stdtypes.html#dict). Начиная с Python 3.14, использование именованных заполнителей с параметрами, переданными в виде последовательности, будет вызывать [`ProgrammingError`](https://python-all.ru/3/library/sqlite3.html#sqlite3.ProgrammingError). Патч от Erlend E. Aasland.
- [gh-101446](https://python-all.ru/3/whatsnew/changelog.html): Изменено представление [`collections.OrderedDict`](https://python-all.ru/3/library/collections.html#collections.OrderedDict) для использования обычного форматирования словаря вместо пар ключей и значений.
- [gh-101362](https://python-all.ru/3/whatsnew/changelog.html): Ускорено создание [`pathlib.PurePath`](https://python-all.ru/3/library/pathlib.html#pathlib.PurePath) за счёт более единообразной обработки аргументов. Когда передан аргумент [`pathlib.Path`](https://python-all.ru/3/library/pathlib.html#pathlib.Path), используется его строковое представление вместо объединения его частей с помощью [`os.path.join()`](https://python-all.ru/3/library/os.path.html#os.path.join).
- [gh-101362](https://python-all.ru/3/whatsnew/changelog.html): Ускорено создание [`pathlib.PurePath`](https://python-all.ru/3/library/pathlib.html#pathlib.PurePath) за счёт вызова [`os.path.join()`](https://python-all.ru/3/library/os.path.html#os.path.join) только при передаче двух и более аргументов.
- [gh-101362](https://python-all.ru/3/whatsnew/changelog.html): Ускорено создание [`pathlib.Path`](https://python-all.ru/3/library/pathlib.html#pathlib.Path) за счёт выполнения проверки совместимости разновидностей путей только при импорте pathlib.
- [gh-85984](https://python-all.ru/3/whatsnew/changelog.html): Рефакторинг реализации [`pty.fork()`](https://python-all.ru/3/library/pty.html#pty.fork) для использования [`os.login_tty()`](https://python-all.ru/3/library/os.html#os.login_tty).

  [`DeprecationWarning`](https://python-all.ru/3/library/exceptions.html#DeprecationWarning) теперь возбуждается `pty.master_open()` и `pty.slave_open()`. Они давно не документированы и объявлены устаревшими в docstring в пользу [`pty.openpty()`](https://python-all.ru/3/library/pty.html#pty.openpty).
- [gh-101561](https://python-all.ru/3/whatsnew/changelog.html): Добавлен новый декоратор [`typing.override()`](https://python-all.ru/3/library/typing.html#typing.override). См. [**PEP 698**](https://python-all.ru/3/whatsnew/changelog.html) для подробностей. Патч от Steven Troxler.
- [gh-63301](https://python-all.ru/3/whatsnew/changelog.html): Установка кода возврата при завершении CLI [`tabnanny`](https://python-all.ru/3/library/tabnanny.html#module-tabnanny) с ошибкой.
- [gh-101360](https://python-all.ru/3/whatsnew/changelog.html): Исправлено сопоставление якорей в `pathlib.PureWindowsPath.match()`. Якоря пути и шаблона теперь сопоставляются с помощью [`fnmatch`](https://python-all.ru/3/library/fnmatch.html#module-fnmatch), как и другие части пути. Это позволяет сопоставлять такие шаблоны, как `"*:/Users/*"`.
- [gh-101277](https://python-all.ru/3/whatsnew/changelog.html): Удалено глобальное состояние из модуля [`itertools`](https://python-all.ru/3/library/itertools.html#module-itertools) ([**PEP 687**](https://python-all.ru/3/whatsnew/changelog.html)). Патчи от Erlend E. Aasland.
- [gh-100809](https://python-all.ru/3/whatsnew/changelog.html): Исправлена обработка путей, относительных к диску (например, ‘C:’ и ‘C:foo’) в [`pathlib.Path.absolute()`](https://python-all.ru/3/library/pathlib.html#pathlib.Path.absolute). Теперь этот метод использует системный API для получения корректной текущей рабочей директории для данного диска.
- [gh-99138](https://python-all.ru/3/whatsnew/changelog.html): Применён [**PEP 687**](https://python-all.ru/3/whatsnew/changelog.html) к [`zoneinfo`](https://python-all.ru/3/library/zoneinfo.html#module-zoneinfo). Исправление от Erlend E. Aasland.
- [gh-96764](https://python-all.ru/3/whatsnew/changelog.html): [`asyncio.wait_for()`](https://python-all.ru/3/library/asyncio-task.html#asyncio.wait_for) теперь использует [`asyncio.timeout()`](https://python-all.ru/3/library/asyncio-task.html#asyncio.timeout) в качестве базовой реализации. Исправление от Kumar Aditya.
- [gh-88233](https://python-all.ru/3/whatsnew/changelog.html): Корректно сохраняется поле «extra» в `zipfile` независимо от его расположения относительно zip64-поля «extra».
- [bpo-23224](https://python-all.ru/3/whatsnew/changelog.html): Исправлены ошибки сегментации при создании объектов [`lzma.LZMADecompressor`](https://python-all.ru/3/library/lzma.html#lzma.LZMADecompressor) и [`bz2.BZ2Decompressor`](https://python-all.ru/3/library/bz2.html#bz2.BZ2Decompressor) без вызова `__init__()`, а также утечки блокировок и внутренних буферов при многократном вызове методов `__init__()` у объектов `lzma.LZMADecompressor`, [`lzma.LZMACompressor`](https://python-all.ru/3/library/lzma.html#lzma.LZMACompressor), [`bz2.BZ2Compressor`](https://python-all.ru/3/library/bz2.html#bz2.BZ2Compressor) и `bz2.BZ2Decompressor`.

### Документация

- [gh-85417](https://python-all.ru/3/whatsnew/changelog.html): Обновлена документация [`cmath`](https://python-all.ru/3/library/cmath.html#module-cmath) для пояснения поведения при обрезании веток.
- [gh-97725](https://python-all.ru/3/whatsnew/changelog.html): Исправлено описание [`asyncio.Task.print_stack()`](https://python-all.ru/3/library/asyncio-task.html#asyncio.Task.print_stack) для `file=None`. Исправление от Oleg Iarygin.

### Тесты

- [gh-102019](https://python-all.ru/3/whatsnew/changelog.html): Исправлена взаимоблокировка при завершении работы, если `test_current_{exception,frames}` завершается ошибкой. Исправление от Jacob Bower.
- [gh-85984](https://python-all.ru/3/whatsnew/changelog.html): В тестах pty используются новые функции «winsize» из termios.
- [gh-89792](https://python-all.ru/3/whatsnew/changelog.html): `test_tools` теперь копирует до 10 раз меньше исходных данных во временную директорию во время теста `freeze` за счёт игнорирования метаданных git и других артефактов. Также степень параллелизма сборки python определяется через os.cpu\_count, а не жёстко задаётся значением 8 ядер.

### Сборка

- [gh-99942](https://python-all.ru/3/whatsnew/changelog.html): На Android при статической сборке python-config в режиме embed больше некорректно не сообщает о библиотеке для линковки.
- [gh-99942](https://python-all.ru/3/whatsnew/changelog.html): На Android python.pc теперь корректно сообщает библиотеку для линковки, так же как python-config.sh.
- [gh-100221](https://python-all.ru/3/whatsnew/changelog.html): Исправлено создание каталогов установки в `make sharedinstall`, если они уже существуют вне `DESTDIR`.
- [gh-96821](https://python-all.ru/3/whatsnew/changelog.html): Явно помечены модули расширения C, которым требуется определённое переполнение знаковых целых, и добавлена опция configure [`--with-strict-overflow`](https://python-all.ru/3/using/configure.html#cmdoption-with-strict-overflow). Исправление от Matthias Görgens и Shantanu Jain.

### Windows

- [gh-102344](https://python-all.ru/3/whatsnew/changelog.html): Реализованы `winreg.QueryValue` с использованием `QueryValueEx` и `winreg.SetValue` с использованием `SetValueEx`. Исправление от Max Bachmann.
- [gh-101881](https://python-all.ru/3/whatsnew/changelog.html): Корректная обработка операций чтения и записи на неблокирующих каналах в Windows.
- [gh-101881](https://python-all.ru/3/whatsnew/changelog.html): Добавлена поддержка функций os.get\_blocking() и os.set\_blocking() в Windows.
- [gh-101849](https://python-all.ru/3/whatsnew/changelog.html): Гарантируется корректное обновление существующих установок загрузчика `py.exe` при установке.
- [gh-101763](https://python-all.ru/3/whatsnew/changelog.html): Обновлена копия libffi, поставляемая с установщиком Windows, до версии 3.4.4.
- [gh-101759](https://python-all.ru/3/whatsnew/changelog.html): Установщик Windows обновлён до SQLite 3.40.1.
- [gh-101614](https://python-all.ru/3/whatsnew/changelog.html): Корректная обработка расширений, собранных с использованием отладочных бинарных файлов, которые ссылаются на `python3_d.dll`.
- [gh-101196](https://python-all.ru/3/whatsnew/changelog.html): Функции `os.path.isdir`, `os.path.isfile`, `os.path.islink` и `os.path.exists` теперь работают на 13%–28% быстрее в Windows благодаря сокращению количества вызовов Win32 API.

### macOS

- [gh-101759](https://python-all.ru/3/whatsnew/changelog.html): Установщик macOS обновлён до SQLite 3.40.1.

### C API

- [gh-101907](https://python-all.ru/3/whatsnew/changelog.html): Удалено использование нестандартного расширения C++ в общедоступных заголовочных файлах.
- [gh-99293](https://python-all.ru/3/whatsnew/changelog.html): Документировано, что Py\_TPFLAGS\_VALID\_VERSION\_TAG является внутренней возможностью, не должна использоваться и будет удалена.
- [gh-101578](https://python-all.ru/3/whatsnew/changelog.html): Добавлены [`PyErr_GetRaisedException()`](https://python-all.ru/3/c-api/exceptions.html#c.PyErr_GetRaisedException) и [`PyErr_SetRaisedException()`](https://python-all.ru/3/c-api/exceptions.html#c.PyErr_SetRaisedException) для сохранения и восстановления текущего исключения. Эти функции возвращают и принимают один объект исключения, а не тройку аргументов, как в устаревших [`PyErr_Fetch()`](https://python-all.ru/3/c-api/exceptions.html#c.PyErr_Fetch) и [`PyErr_Restore()`](https://python-all.ru/3/c-api/exceptions.html#c.PyErr_Restore). Это менее подвержено ошибкам и немного эффективнее.

  Добавлены [`PyException_GetArgs()`](https://python-all.ru/3/c-api/exceptions.html#c.PyException_GetArgs) и [`PyException_SetArgs()`](https://python-all.ru/3/c-api/exceptions.html#c.PyException_SetArgs) как удобные функции для получения и изменения [`args`](https://python-all.ru/3/library/exceptions.html#BaseException.args), переданного конструктору исключения.
- [gh-91744](https://python-all.ru/3/whatsnew/changelog.html): Введён уровень *Нестабильный C API*, обозначающий API, который может меняться в минорных релизах без периода устаревания. См. [**PEP 689**](https://python-all.ru/3/whatsnew/changelog.html) для подробностей.

## Python 3.12.0 alpha 5

*Дата выпуска: 2023-02-07*

### Безопасность

- [gh-99108](https://python-all.ru/3/whatsnew/changelog.html): Замена встроенных [`hashlib`](https://python-all.ru/3/library/hashlib.html#module-hashlib) реализаций SHA2-224 и SHA2-256, изначально взятых из LibTomCrypt, на формально верифицированный, устойчивый к побочным каналам код из проекта [HACL\*](https://python-all.ru/3/whatsnew/changelog.html). Встроенные реализации остаются запасным вариантом, используемым только когда OpenSSL их не предоставляет.

### Ядро и встроенные объекты

- [gh-92173](https://python-all.ru/3/whatsnew/changelog.html): Исправлены аргументы `defs` и `kwdefs` для [`PyEval_EvalCodeEx()`](https://python-all.ru/3/c-api/veryhigh.html#c.PyEval_EvalCodeEx) и утечка ссылок в этой функции.
- [gh-59956](https://python-all.ru/3/whatsnew/changelog.html): API GILState теперь частично совместим с под-интерпретаторами. Ранее `PyThreadState_GET()` и `PyGILState_GetThisThreadState()` рассинхронизировались, что приводило к некорректному поведению и аварийным завершениям.
- [gh-101400](https://python-all.ru/3/whatsnew/changelog.html): Исправлен неверный номер строки в сообщении об исключении для [`continue`](https://python-all.ru/3/reference/simple_stmts.html#continue) или [`break`](https://python-all.ru/3/reference/simple_stmts.html#break), которые не находятся в цикле. Патч от Donghee Na.
- [gh-101372](https://python-all.ru/3/whatsnew/changelog.html): Исправлен [`is_normalized()`](https://python-all.ru/3/library/unicodedata.html#unicodedata.is_normalized) для корректной обработки вариантов UCD 3.2.0. Патч от Donghee Na.
- [gh-101266](https://python-all.ru/3/whatsnew/changelog.html): Исправлен [`sys.getsizeof()`](https://python-all.ru/3/library/sys.html#sys.getsizeof) для [`int`](https://python-all.ru/3/library/functions.html#int) подклассов.
- [gh-101291](https://python-all.ru/3/whatsnew/changelog.html): Рефакторинг структуры `PyLongObject` на обычный заголовок Python-объекта и структуру `PyLongValue`.
- [gh-101046](https://python-all.ru/3/whatsnew/changelog.html): Исправлена возможная утечка памяти в парсере при возбуждении [`MemoryError`](https://python-all.ru/3/library/exceptions.html#MemoryError). Патч от Pablo Galindo.
- [gh-101037](https://python-all.ru/3/whatsnew/changelog.html): Исправлена потенциальная проблема недовыделения памяти для экземпляров подклассов [`int`](https://python-all.ru/3/library/functions.html#int) с нулевым значением.
- [gh-100762](https://python-all.ru/3/whatsnew/changelog.html): Запись (виртуальной) глубины блока исключений в операнд [`YIELD_VALUE`](https://python-all.ru/3/library/dis.html#opcode-YIELD_VALUE). Это позволяет избежать дорогостоящего `throw()` при закрытии генераторов (и корутин), которые можно закрыть тривиально.
- [gh-100982](https://python-all.ru/3/whatsnew/changelog.html): Добавлена новая инструкция `COMPARE_AND_BRANCH`. Она немного эффективнее при выполнении сравнения, сразу за которым следует ветвление, и восстанавливает замысел PEP 659 о том, что специализации локальны для одной инструкции.
- [gh-100942](https://python-all.ru/3/whatsnew/changelog.html): Исправлен segfault в property.getter/setter/deleter, возникавший, когда подкласс property переопределял метод `__new__`, возвращая экземпляр, не являющийся свойством.
- [gh-100923](https://python-all.ru/3/whatsnew/changelog.html): Удаление записи кэша `mask` для инструкции [`COMPARE_OP`](https://python-all.ru/3/library/dis.html#opcode-COMPARE_OP) и встраивание маски в операнд.
- [gh-100892](https://python-all.ru/3/whatsnew/changelog.html): Исправлено состояние гонки при итерации по состояниям потоков в очистке [`threading.local`](https://python-all.ru/3/library/threading.html#threading.local). Патч от Kumar Aditya.
- [gh-91351](https://python-all.ru/3/whatsnew/changelog.html): Исправлен случай, когда реентерабельные импорты могли повредить код обнаружения взаимоблокировок импорта и вызвать возбуждение [`KeyError`](https://python-all.ru/3/library/exceptions.html#KeyError) из `importlib/_bootstrap`. В дополнение к очевидным случаям это могло также происходить, когда сборка мусора приводила к выдаче предупреждения – как при сборке открытого сокета или файла).
- [gh-100726](https://python-all.ru/3/whatsnew/changelog.html): Оптимизация создания объекта `range` для целых чисел среднего размера.
- [gh-100712](https://python-all.ru/3/whatsnew/changelog.html): Добавлена возможность сборки cpython с отключённой специализацией путём установки `ENABLE_SPECIALIZATION=False` в `opcode`, с последующим `make regen-all`.

### Библиотека

- [bpo-32780](https://python-all.ru/3/whatsnew/changelog.html): Выравнивание между полями теперь вставляется в строки формата PEP3118, полученные из объектов [`ctypes.Structure`](https://python-all.ru/3/library/ctypes.html#ctypes.Structure), отражая их истинное представление в памяти.
- [gh-101541](https://python-all.ru/3/whatsnew/changelog.html): \[Enum\] – исправлено создание псевдо-флагов.
- [gh-101570](https://python-all.ru/3/whatsnew/changelog.html): Обновление колеса pip, входящего в состав ensurepip (pip 23.0)
- [gh-101323](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка, при которой ошибки не выбрасывались zlib.\_ZlibDecompressor при обнаружении во время декомпрессии.
- [gh-101317](https://python-all.ru/3/whatsnew/changelog.html): Добавлен параметр *ssl\_shutdown\_timeout* для [`asyncio.StreamWriter.start_tls()`](https://python-all.ru/3/library/asyncio-stream.html#asyncio.StreamWriter.start_tls).
- [gh-101326](https://python-all.ru/3/whatsnew/changelog.html): Исправлена регрессия при передаче `None` в качестве второго или третьего аргумента в `FutureIter.throw`.
- [gh-92123](https://python-all.ru/3/whatsnew/changelog.html): Адаптация расширения `_elementtree` к многофазной инициализации ([**PEP 489**](https://python-all.ru/3/whatsnew/changelog.html)). Патчи от Erlend E. Aasland.
- [gh-100795](https://python-all.ru/3/whatsnew/changelog.html): Предотвращение потенциального неожиданного вызова `freeaddrinfo` (двойное освобождение) в [`socket`](https://python-all.ru/3/library/socket.html#module-socket), когда реализация libc `getaddrinfo()` оставляет мусор в выходном указателе при возврате ошибки. Оригинальный патч от Sergey G. Brester.
- [gh-101143](https://python-all.ru/3/whatsnew/changelog.html): Удалены неиспользуемые ссылки на [`TimerHandle`](https://python-all.ru/3/library/asyncio-eventloop.html#asyncio.TimerHandle) в `asyncio.base_events.BaseEventLoop._add_callback`.
- [gh-101144](https://python-all.ru/3/whatsnew/changelog.html): Функции [`zipfile.Path.open()`](https://python-all.ru/3/library/zipfile.html#zipfile.Path.open) и [`zipfile.Path.read_text()`](https://python-all.ru/3/library/zipfile.html#zipfile.Path.read_text) теперь также принимают `encoding` в качестве позиционного аргумента. Такое поведение было в Python 3.9 и ранее. В версии 3.10 появилась регрессия: передача этого аргумента позиционно приводила к [`TypeError`](https://python-all.ru/3/library/exceptions.html#TypeError).
- [gh-94518](https://python-all.ru/3/whatsnew/changelog.html): Групповые переменные модуля `_posixsubprocess` переименованы, чтобы подчеркнуть, что дополнительная привязка к группе добавляется к новому процессу (fork), а не заменяет унаследованные. Патч от Oleg Iarygin.
- [gh-101015](https://python-all.ru/3/whatsnew/changelog.html): Исправлена [`typing.get_type_hints()`](https://python-all.ru/3/library/typing.html#typing.get_type_hints) на `'*tuple[...]'` и `*tuple[...]`. Больше не отбрасывается часть `Unpack`.
- [gh-101000](https://python-all.ru/3/whatsnew/changelog.html): Добавлена функция [`os.path.splitroot()`](https://python-all.ru/3/library/os.path.html#os.path.splitroot), которая разбивает путь на кортеж из трёх элементов `(drive, root, tail)`. Эта новая функция используется [`pathlib`](https://python-all.ru/3/library/pathlib.html#module-pathlib) для повышения производительности построения путей до трети.
- [gh-100573](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка в Windows [`asyncio`](https://python-all.ru/3/library/asyncio.html#module-asyncio) с именованными каналами, когда клиент, выполняющий `os.stat()` на канале, вызывал ошибку на сервере, из-за которой сервер переставал обслуживать последующие запросы.
- [gh-39615](https://python-all.ru/3/whatsnew/changelog.html): [`warnings.warn()`](https://python-all.ru/3/library/warnings.html#warnings.warn) теперь может пропускать кадры стека на основе префикса имени файла кода, а не только числового `stacklevel`, с помощью нового именованного аргумента `skip_file_prefixes`.
- [gh-100750](https://python-all.ru/3/whatsnew/changelog.html): Передавать именованный аргумент encoding в подпроцесс в модуле platform.
- [gh-100160](https://python-all.ru/3/whatsnew/changelog.html): Выводить предупреждение об устаревании в `asyncio.DefaultEventLoopPolicy.get_event_loop()`, если не установлен текущий цикл событий и функция решает создать его.
- [gh-96290](https://python-all.ru/3/whatsnew/changelog.html): Исправлена обработка частичных и некорректных UNC-дисков в `ntpath.splitdrive()`, а также в `ntpath.normpath()` на системах, отличных от Windows. Пути вида ‘\\\\server’ и ‘\\\\’ теперь считаются `splitdrive()` содержащими только диск, и поэтому не изменяются `normpath()` на не-Windows системах. Поведение `normpath()` на Windows не изменилось, так как используются нативные системные API. Патч от Eryk Sun, с участием Barney Gale.
- [gh-99952](https://python-all.ru/3/whatsnew/changelog.html): Исправлена проблема с недоучётом ссылок в [`ctypes.Structure`](https://python-all.ru/3/library/ctypes.html#ctypes.Structure) при результатах `from_param()`, превышающих размер указателя C.
- [gh-67790](https://python-all.ru/3/whatsnew/changelog.html): Добавлена поддержка форматирования в стиле чисел с плавающей запятой для экземпляров [`fractions.Fraction`](https://python-all.ru/3/library/fractions.html#fractions.Fraction).
- [gh-99266](https://python-all.ru/3/whatsnew/changelog.html): Сохранять более подробные сообщения об ошибках в [`ctypes`](https://python-all.ru/3/library/ctypes.html#module-ctypes).
- [gh-86682](https://python-all.ru/3/whatsnew/changelog.html): Обеспечить правильное имя модуля для коллекций, создаваемых во время выполнения, с помощью новой (внутренней) [`sys._getframemodulename()`](https://python-all.ru/3/library/sys.html#sys._getframemodulename).
- [gh-88597](https://python-all.ru/3/whatsnew/changelog.html): У [`uuid`](https://python-all.ru/3/library/uuid.html#module-uuid) теперь есть интерфейс командной строки. Попробуйте `python -m uuid -h`.
- [gh-60580](https://python-all.ru/3/whatsnew/changelog.html): Определение `ctypes.wintypes.BYTE` изменено с [`c_byte`](https://python-all.ru/3/library/ctypes.html#ctypes.c_byte) на [`c_ubyte`](https://python-all.ru/3/library/ctypes.html#ctypes.c_ubyte) для соответствия Windows SDK. Патч от Anatoly Techtonik и Oleg Iarygin.
- [gh-94518](https://python-all.ru/3/whatsnew/changelog.html): `_posixsubprocess` теперь инициализирует все переменные UID и GID, используя зарезервированное значение `-1` вместо отдельного флага. Патч от Oleg Iarygin.
- [bpo-38941](https://python-all.ru/3/whatsnew/changelog.html): Модуль [`xml.etree.ElementTree`](https://python-all.ru/3/library/xml.etree.elementtree.html#module-xml.etree.ElementTree) теперь выводит [`DeprecationWarning`](https://python-all.ru/3/library/exceptions.html#DeprecationWarning) при проверке истинностного значения [`xml.etree.ElementTree.Element`](https://python-all.ru/3/library/xml.etree.elementtree.html#xml.etree.ElementTree.Element). Ранее реализация на Python выводила [`FutureWarning`](https://python-all.ru/3/library/exceptions.html#FutureWarning), а реализация на C ничего не выводила.
- [bpo-40077](https://python-all.ru/3/whatsnew/changelog.html): Преобразовать типы `elementtree` в типы, хранящиеся в куче (heap types). Патч от Erlend E. Aasland.
- [bpo-29847](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка, при которой [`pathlib.Path`](https://python-all.ru/3/library/pathlib.html#pathlib.Path) принимал и игнорировал именованные аргументы. Патч предоставлен Yurii Karabas.
- [gh-77772](https://python-all.ru/3/whatsnew/changelog.html): [`ctypes.CDLL`](https://python-all.ru/3/library/ctypes.html#ctypes.CDLL), [`ctypes.OleDLL`](https://python-all.ru/3/library/ctypes.html#ctypes.OleDLL), [`ctypes.WinDLL`](https://python-all.ru/3/library/ctypes.html#ctypes.WinDLL) и [`ctypes.PyDLL`](https://python-all.ru/3/library/ctypes.html#ctypes.PyDLL) теперь принимают [объекты, подобные путям](https://python-all.ru/3/glossary.html#term-path-like-object) в качестве аргумента `name`. Патч от Robert Hoelzl.

### Документация

- [gh-88324](https://python-all.ru/3/whatsnew/changelog.html): Переформулировать [`subprocess`](https://python-all.ru/3/library/subprocess.html#module-subprocess), чтобы подчеркнуть поведение по умолчанию аргументов *stdin*, *stdout* и *stderr*. Удалено неточное утверждение о наследовании файловых дескрипторов дочерним процессом.

### Тесты

- [gh-101334](https://python-all.ru/3/whatsnew/changelog.html): `test_tarfile` обновлён, чтобы проходить при запуске с высоким UID.

### Сборка

- [gh-101282](https://python-all.ru/3/whatsnew/changelog.html): Обновлена конфигурация BOLT, чтобы не использовать устаревшее применение `--split functions`. Патч от Donghee Na.
- [gh-101522](https://python-all.ru/3/whatsnew/changelog.html): Разрешено переопределять версии и пути зависимостей Windows с помощью свойств MSBuild.
- [gh-77532](https://python-all.ru/3/whatsnew/changelog.html): Небольшие исправления для сборки с `PlatformToolset=ClangCL` на Windows.
- [gh-101152](https://python-all.ru/3/whatsnew/changelog.html): В соответствии с [**PEP 699**](https://python-all.ru/3/whatsnew/changelog.html), поле `ma_version_tag` в [`PyDictObject`](https://python-all.ru/3/c-api/dict.html#c.PyDictObject) объявлено устаревшим для модулей расширения. Обращение к этому полю будет вызывать предупреждение компилятора во время компиляции. Это поле будет удалено в Python 3.14.
- [gh-100340](https://python-all.ru/3/whatsnew/changelog.html): Разрешает -Wno-int-conversion для wasm-sdk 17 и новее, что позволяет собирать WASI-сборки с последней версией SDK.
- [gh-101060](https://python-all.ru/3/whatsnew/changelog.html): Условно добавлять `-fno-reorder-blocks-and-partition` в configure. Исправляет `--enable-bolt` при использовании Clang, так как этот флаг, по-видимому, применим только к GCC.
- [gh-98705](https://python-all.ru/3/whatsnew/changelog.html): `__bool__` определён в системных заголовочных файлах AIX, что ломает сборку в AIX, поэтому он отменён.
- [gh-98636](https://python-all.ru/3/whatsnew/changelog.html): Исправлен регресс в обнаружении библиотеки `gdbm_compat` при сборке модуля `_gdbm`.
- [gh-96305](https://python-all.ru/3/whatsnew/changelog.html): Теперь `_aix_support` использует простой код для получения информации о платформе вместо ныне несуществующего `_bootsubprocess` во время начальной загрузки.

### Windows

- [gh-101543](https://python-all.ru/3/whatsnew/changelog.html): Обеспечить использование пути установки в реестре только в том случае, если стандартная библиотека не была найдена другим способом.
- [gh-101467](https://python-all.ru/3/whatsnew/changelog.html): Запускатель `py.exe` теперь правильно выполняет фильтрацию, когда установлена только одна среда выполнения. Он также корректно обрабатывает соответствие по префиксу тегов, так что `-3.1` не соответствует `3.11`, но по-прежнему соответствует `3.1-32`.
- [gh-99834](https://python-all.ru/3/whatsnew/changelog.html): Обновление встроенной копии Tcl/Tk до 8.6.13.0.
- [gh-101135](https://python-all.ru/3/whatsnew/changelog.html): Восстановлена возможность запуска старых 32-битных версий из запускателя `py.exe`, когда доступны как 32-битные, так и 64-битные установки одной и той же версии.
- [gh-82052](https://python-all.ru/3/whatsnew/changelog.html): Исправлена проблема, при которой запись более 32 КБ вывода Unicode за один раз в консоль может привести к mojibake.
- [gh-100320](https://python-all.ru/3/whatsnew/changelog.html): Обеспечивает использование ключа реестра `PythonPath` из установки при запуске из другой копии Python, которая полагается на существующую установку для предоставления копии своих модулей и стандартной библиотеки.
- [gh-100247](https://python-all.ru/3/whatsnew/changelog.html): Восстановлена поддержка поиска запускателем `py.exe` команд shebang в своём конфигурационном файле по полному имени команды.

## Python 3.12.0 alpha 4

*Дата выпуска: 2023-01-10*

### Ядро и встроенные модули

- [gh-100776](https://python-all.ru/3/whatsnew/changelog.html): Исправлено вводящее в заблуждение значение по умолчанию в [`input()`](https://python-all.ru/3/library/functions.html#input)’s `__text_signature__`.
- [gh-99005](https://python-all.ru/3/whatsnew/changelog.html): Удалить `UNARY_POSITIVE`, `ASYNC_GEN_WRAP` и `LIST_TO_TUPLE`, заменив их на внутренние функции.
- [gh-99005](https://python-all.ru/3/whatsnew/changelog.html): Добавить новую инструкцию [`CALL_INTRINSIC_1`](https://python-all.ru/3/library/dis.html#opcode-CALL_INTRINSIC_1). Удалить `IMPORT_STAR`, `PRINT_EXPR` и `STOPITERATION_ERROR`, заменив их на инструкцию `CALL_INTRINSIC_1`.
- [gh-100288](https://python-all.ru/3/whatsnew/changelog.html): Удалить специализированную инструкцию LOAD\_ATTR\_METHOD\_WITH\_DICT. Статистика показывает, что она не используется.
- [gh-100720](https://python-all.ru/3/whatsnew/changelog.html): Добавлен `_PyFrame_NumSlotsForCodeObject`, который возвращает количество слотов, необходимых во фрейме для данного объекта кода.
- [gh-100719](https://python-all.ru/3/whatsnew/changelog.html): Удалено поле co\_nplaincellvars из объекта кода, так как оно избыточно.
- [gh-100637](https://python-all.ru/3/whatsnew/changelog.html): Исправить расчёт `int.__sizeof__()`, чтобы он включал однозлементный массив `ob_digit` для `0` и `False`.
- [gh-100649](https://python-all.ru/3/whatsnew/changelog.html): Обновлять поле native\_thread\_id структуры PyThreadState после fork.
- [gh-100126](https://python-all.ru/3/whatsnew/changelog.html): Исправлена проблема, при которой «неполные» фреймы могли быть кратковременно видны C-коду во время разрушения других фреймов, что могло привести к повреждению или жёстким сбоям интерпретатора при выполнении финализаторов.
- [gh-87447](https://python-all.ru/3/whatsnew/changelog.html): Исправлен [`SyntaxError`](https://python-all.ru/3/library/exceptions.html#SyntaxError) при проверке перепривязки в включениях с именами, которые на самом деле не переопределяются.

  Теперь разрешено переприсваивание `b` в `[(b := 1) for a, b.prop in some_iter]`. Переприсваивание `a` по-прежнему запрещено согласно [**PEP 572**](https://python-all.ru/3/whatsnew/changelog.html).
- [gh-100268](https://python-all.ru/3/whatsnew/changelog.html): Добавлен [`int.is_integer()`](https://python-all.ru/3/library/stdtypes.html#int.is_integer) для улучшения совместимости по утиной типизации между [`int`](https://python-all.ru/3/library/functions.html#int) и [`float`](https://python-all.ru/3/library/functions.html#float).
- [gh-100425](https://python-all.ru/3/whatsnew/changelog.html): Повышена точность `sum()` с помощью компенсированного суммирования.

### Библиотека

- [gh-100374](https://python-all.ru/3/whatsnew/changelog.html): Исправлен неверный результат и задержка в [`socket.getfqdn()`](https://python-all.ru/3/library/socket.html#socket.getfqdn). Патч от Dominic Socular.

### Ядро и встроенные модули

- [gh-100357](https://python-all.ru/3/whatsnew/changelog.html): Преобразовать `vars`, `dir`, `next`, `getattr` и `iter` для использования Argument Clinic.
- [gh-100117](https://python-all.ru/3/whatsnew/changelog.html): Улучшен вывод [`codeobject.co_lines()`](https://python-all.ru/3/reference/datamodel.html#codeobject.co_lines) за счёт генерации только одной записи для каждого диапазона строк.
- [gh-90043](https://python-all.ru/3/whatsnew/changelog.html): Обработка NaN при специализации [`COMPARE_OP`](https://python-all.ru/3/library/dis.html#opcode-COMPARE_OP) для значений [`float`](https://python-all.ru/3/library/functions.html#float).
- [gh-100222](https://python-all.ru/3/whatsnew/changelog.html): Переопределение typedef `_Py_CODEUNIT` как объединения для описания его структуры компилятору C, позволяющее избежать нарушения типов и улучшить читаемость.
- [gh-99955](https://python-all.ru/3/whatsnew/changelog.html): Внутренние функции компилятора (в compile.c) теперь последовательно возвращают -1 при ошибке и 0 при успехе.
- [gh-100188](https://python-all.ru/3/whatsnew/changelog.html): Инструкции `BINARY_SUBSCR_LIST_INT` и `BINARY_SUBSCR_TUPLE_INT` больше не используются для отрицательных целых чисел, поскольку они всегда промахиваются при их обработке.
- [gh-99110](https://python-all.ru/3/whatsnew/changelog.html): Инициализация frame-\>previous в frameobject.c для исправления ошибки сегментации при доступе к фреймам, созданным с помощью [`PyFrame_New()`](https://python-all.ru/3/c-api/frame.html#c.PyFrame_New).
- [gh-94155](https://python-all.ru/3/whatsnew/changelog.html): Улучшен алгоритм хеширования для объектов кода, позволяющий уменьшить количество коллизий.
- [gh-99540](https://python-all.ru/3/whatsnew/changelog.html): `None` теперь хешируется в константное значение. Это не изменение требований.
- [gh-100143](https://python-all.ru/3/whatsnew/changelog.html): При сборке с `--enable-pystats` сбор статистики теперь по умолчанию отключён. Чтобы включить его на раннем этапе запуска, передайте флаг `-Xpystats`. Статистика теперь всегда выгружается, даже если сбор отключён.
- [gh-100146](https://python-all.ru/3/whatsnew/changelog.html): Улучшение опкода `BUILD_LIST`: теперь он работает аналогично опкоду `BUILD_TUPLE`, заимствуя ссылки из стека вместо многократного использования стековых операций для установки элементов списка. Подробности реализации находятся в новом внутреннем API `_PyList_FromArraySteal()`.
- [gh-100110](https://python-all.ru/3/whatsnew/changelog.html): Специализация `FOR_ITER` для кортежей.
- [gh-100050](https://python-all.ru/3/whatsnew/changelog.html): Учёт уже полученных ошибок при поиске несовпадающих скобок в токенизаторе. Исправление от Pablo Galindo.
- [gh-92216](https://python-all.ru/3/whatsnew/changelog.html): Улучшение производительности [`hasattr()`](https://python-all.ru/3/library/functions.html#hasattr) для объектов типа с отсутствующим атрибутом.
- [gh-99582](https://python-all.ru/3/whatsnew/changelog.html): Заморозка модуля [`zipimport`](https://python-all.ru/3/library/zipimport.html#module-zipimport) в `_bootstrap_python`.
- [gh-99554](https://python-all.ru/3/whatsnew/changelog.html): Более эффективная упаковка таблиц отладочных местоположений при компиляции байт-кода.
- [gh-98522](https://python-all.ru/3/whatsnew/changelog.html): Добавление внутреннего номера версии для объектов кода, что позволяет лучше версионировать вложенные функции и генераторы и, следовательно, лучше их специализировать. Это изменение незаметно как для Python, так и для C-расширений.
- [gh-94603](https://python-all.ru/3/whatsnew/changelog.html): Улучшение производительности `list.pop` для небольших списков.

### Библиотека

- [gh-89051](https://python-all.ru/3/whatsnew/changelog.html): Добавление [`ssl.OP_LEGACY_SERVER_CONNECT`](https://python-all.ru/3/library/ssl.html#ssl.OP_LEGACY_SERVER_CONNECT)

### Ядро и встроенные модули

- [bpo-32782](https://python-all.ru/3/whatsnew/changelog.html): Массивы `ctypes` нулевой длины теперь сообщают правильный itemsize при создании `memoryview` из них, вместо того чтобы всегда возвращать 0.

### Библиотека

- [gh-100833](https://python-all.ru/3/whatsnew/changelog.html): Ускорение [`math.fsum()`](https://python-all.ru/3/library/math.html#math.fsum) за счёт удаления защитных квалификаторов `volatile`.
- [gh-100805](https://python-all.ru/3/whatsnew/changelog.html): Изменение реализации [`random.choice()`](https://python-all.ru/3/library/random.html#random.choice) для восстановления совместимости с массивами NumPy.
- [gh-100813](https://python-all.ru/3/whatsnew/changelog.html): Добавление константы `socket.IP_PKTINFO`.
- [gh-100792](https://python-all.ru/3/whatsnew/changelog.html): Ускорение [`email.message.Message.__contains__()`](https://python-all.ru/3/library/email.compat32-message.html#email.message.Message.__contains__) в два раза.
- [gh-91851](https://python-all.ru/3/whatsnew/changelog.html): Микрооптимизации для [`fractions.Fraction.__round__()`](https://python-all.ru/3/library/fractions.html#fractions.Fraction.__round__), [`fractions.Fraction.__ceil__()`](https://python-all.ru/3/library/fractions.html#fractions.Fraction.__ceil__) и [`fractions.Fraction.__floor__()`](https://python-all.ru/3/library/fractions.html#fractions.Fraction.__floor__).
- [gh-90104](https://python-all.ru/3/whatsnew/changelog.html): Предотвращение RecursionError в `repr`, если определение поля dataclass содержит циклическую ссылку.
- [gh-100689](https://python-all.ru/3/whatsnew/changelog.html): Исправление аварийного завершения в `pyexpat` за счёт статического выделения капсулы `PyExpat_CAPI`.
- [gh-100740](https://python-all.ru/3/whatsnew/changelog.html): Исправление `unittest.mock.Mock`, который не соблюдал спецификацию для имён атрибутов с префиксом `assert`.
- [gh-91219](https://python-all.ru/3/whatsnew/changelog.html): Изменение `SimpleHTTPRequestHandler` для поддержки наследования с целью предоставления другого набора имён индексных файлов вместо использования параметров `__init__`.
- [gh-100690](https://python-all.ru/3/whatsnew/changelog.html): Объекты `Mock`, которые не являются небезопасными, теперь будут вызывать `AttributeError` при доступе к атрибуту, имя которого совпадает с именем утверждения, но без префикса `assert_`, например, при доступе к `called_once` вместо `assert_called_once`. Это дополнение к уже существующему поведению для атрибутов с префиксами `assert`, `assret`, `asert`, `aseert` и `assrt`.
- [gh-89727](https://python-all.ru/3/whatsnew/changelog.html): Упрощение и оптимизация [`os.walk()`](https://python-all.ru/3/library/os.html#os.walk) за счёт использования проверок [`isinstance()`](https://python-all.ru/3/library/functions.html#isinstance) для проверки вершины стека.
- [gh-100485](https://python-all.ru/3/whatsnew/changelog.html): Добавлена math.sumprod() для вычисления суммы произведений.
- [gh-86508](https://python-all.ru/3/whatsnew/changelog.html): Исправлено [`asyncio.open_connection()`](https://python-all.ru/3/library/asyncio-stream.html#asyncio.open_connection) для пропуска привязки к локальным адресам другого семейства. Исправление от Kumar Aditya.
- [gh-97930](https://python-all.ru/3/whatsnew/changelog.html): `importlib.resources.files` теперь принимает модуль в качестве привязки вместо того, чтобы принимать только пакеты. Если передан модуль, ресурсы разрешаются рядом с этим модулем (в том же пакете или в корне пакета). Параметр был переименован из `package` в `anchor` с прокладкой совместимости для тех, кто передаёт по ключевому слову. Кроме того, новый параметр `anchor` теперь является необязательным и по умолчанию будет равен модулю вызывающего.
- [gh-100585](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка, из-за которой importlib.resources.as\_file оставлял открытыми файловые указатели.
- [gh-100562](https://python-all.ru/3/whatsnew/changelog.html): Улучшена производительность [`pathlib.Path.absolute()`](https://python-all.ru/3/library/pathlib.html#pathlib.Path.absolute) почти в 2 раза. Это достигается ценой снижения производительности в [`pathlib.Path.cwd()`](https://python-all.ru/3/library/pathlib.html#pathlib.Path.cwd), который обычно реже используется в пользовательском коде.
- [gh-100519](https://python-all.ru/3/whatsnew/changelog.html): Небольшое упрощение `http.cookiejar.eff_request_host()`, которое улучшает читаемость и лучше соответствует формулировкам RFC.
- [gh-100287](https://python-all.ru/3/whatsnew/changelog.html): Исправлено взаимодействие [`unittest.mock.seal()`](https://python-all.ru/3/library/unittest.mock.html#unittest.mock.seal) с [`unittest.mock.AsyncMock`](https://python-all.ru/3/library/unittest.mock.html#unittest.mock.AsyncMock).
- [gh-100488](https://python-all.ru/3/whatsnew/changelog.html): Добавлен `Fraction.is_integer()` для проверки, является ли [`fractions.Fraction`](https://python-all.ru/3/library/fractions.html#fractions.Fraction) целым числом. Это улучшает совместимость с утиной типизацией для [`float`](https://python-all.ru/3/library/functions.html#float) и [`int`](https://python-all.ru/3/library/functions.html#int).
- [gh-100474](https://python-all.ru/3/whatsnew/changelog.html): [`http.server`](https://python-all.ru/3/library/http.server.html#module-http.server) теперь проверяет, что индексная страница действительно является обычным файлом, прежде чем пытаться её отдать. Это позволяет избежать проблем с каталогами с именем `index.html`.
- [gh-100363](https://python-all.ru/3/whatsnew/changelog.html): Ускорен [`asyncio.get_running_loop()`](https://python-all.ru/3/library/asyncio-eventloop.html#asyncio.get_running_loop) за счёт удаления избыточных проверок `getpid`. Исправление от Kumar Aditya.
- [gh-78878](https://python-all.ru/3/whatsnew/changelog.html): Исправлено падение при создании экземпляра `_ctypes.CField`.
- [gh-100348](https://python-all.ru/3/whatsnew/changelog.html): Исправлен циклический ссылочный цикл в `asyncio._SelectorSocketTransport` путём удаления `_read_ready_cb` в `close`.
- [gh-100344](https://python-all.ru/3/whatsnew/changelog.html): Реализована реализация на C для [`asyncio.current_task()`](https://python-all.ru/3/library/asyncio-task.html#asyncio.current_task), обеспечивающая ускорение в 4–6 раз.
- [gh-100272](https://python-all.ru/3/whatsnew/changelog.html): Исправлена JSON-сериализация OrderedDict. Теперь она сохраняет порядок ключей.
- [gh-83076](https://python-all.ru/3/whatsnew/changelog.html): Создание экземпляров `Mock()` и `AsyncMock()` теперь происходит в 3,8 раза быстрее.
- [gh-100234](https://python-all.ru/3/whatsnew/changelog.html): Установлено значение по умолчанию 1,0 для параметра `lambd` в random.expovariate().
- [gh-100228](https://python-all.ru/3/whatsnew/changelog.html): [`DeprecationWarning`](https://python-all.ru/3/library/exceptions.html#DeprecationWarning) может быть возбуждено при вызове [`os.fork()`](https://python-all.ru/3/library/os.html#os.fork) или [`os.forkpty()`](https://python-all.ru/3/library/os.html#os.forkpty) из многопоточных процессов. Форк с потоками небезопасен и может вызвать взаимоблокировки, падения и тонкие проблемы. Отсутствие предупреждения не означает, что вызов fork был безопасным, поскольку Python может не знать обо всех потоках.
- [gh-100039](https://python-all.ru/3/whatsnew/changelog.html): Улучшены сигнатуры для перечислений и флагов.
- [gh-100133](https://python-all.ru/3/whatsnew/changelog.html): Исправлена регрессия в [`asyncio`](https://python-all.ru/3/library/asyncio.html#module-asyncio), из-за которой подпроцесс иногда терял данные, полученные из канала.
- [bpo-44592](https://python-all.ru/3/whatsnew/changelog.html): Исправлена непоследовательная обработка чувствительности к регистру аргумента *extrasaction* в [`csv.DictWriter`](https://python-all.ru/3/library/csv.html#csv.DictWriter).
- [gh-100098](https://python-all.ru/3/whatsnew/changelog.html): Исправлено приведение подклассов `tuple` к `tuple` при использовании в качестве значений перечисления.
- [gh-85432](https://python-all.ru/3/whatsnew/changelog.html): Параметр *fmt* чисто-питоновской реализации [`datetime.time.strftime()`](https://python-all.ru/3/library/datetime.html#datetime.time.strftime) переименован в *format*. Параметр *t* в [`datetime.datetime.fromtimestamp()`](https://python-all.ru/3/library/datetime.html#datetime.datetime.fromtimestamp) переименован в *timestamp*. Эти изменения означают, что имена параметров в чисто-питоновской реализации теперь совпадают с именами параметров в реализации на C. Исправление от Alex Waygood.
- [gh-98778](https://python-all.ru/3/whatsnew/changelog.html): Обновлён [`HTTPError`](https://python-all.ru/3/library/urllib.error.html#urllib.error.HTTPError) для корректной инициализации, даже если `fp` равен `None`. Исправление от Donghee Na.
- [gh-99925](https://python-all.ru/3/whatsnew/changelog.html): Унифицированы сообщения об ошибках при JSON-сериализации между `json.dumps(float('nan'), allow_nan=False)` и `json.dumps(float('nan'), allow_nan=False, indent=<SOMETHING>)`. Теперь оба включают представление значения, которое не удалось сериализовать.
- [gh-89727](https://python-all.ru/3/whatsnew/changelog.html): Исправлена проблема с [`os.walk()`](https://python-all.ru/3/library/os.html#os.walk), при которой возникал [`RecursionError`](https://python-all.ru/3/library/exceptions.html#RecursionError) на глубоких структурах каталогов, путём изменения реализации `os.walk()` на итеративную вместо рекурсивной.
- [gh-94943](https://python-all.ru/3/whatsnew/changelog.html): Добавлена [поддержка Dataclass](https://python-all.ru/3/howto/enum.html#enum-dataclass-support) в [`Enum`](https://python-all.ru/3/library/enum.html#enum.Enum) [`__repr__()`](https://python-all.ru/3/library/enum.html#enum.Enum.__repr__). При наследовании от [`dataclass`](https://python-all.ru/3/library/dataclasses.html#dataclasses.dataclass) показывать только имена полей в секции значения члена [`repr()`](https://python-all.ru/3/library/functions.html#repr), а не имя класса dataclass.
- [gh-83035](https://python-all.ru/3/whatsnew/changelog.html): Исправлена обработка [`inspect.getsource()`](https://python-all.ru/3/library/inspect.html#inspect.getsource) вызовов декораторов с вложенными скобками.
- [gh-99576](https://python-all.ru/3/whatsnew/changelog.html): Исправлен метод `.save()` для `LWPCookieJar` и `MozillaCookieJar`: сохранённый файл не усекался при повторном сохранении.
- [gh-94912](https://python-all.ru/3/whatsnew/changelog.html): Добавлен декоратор [`inspect.markcoroutinefunction()`](https://python-all.ru/3/library/inspect.html#inspect.markcoroutinefunction), который вручную помечает функцию как корутину для `iscoroutinefunction()`.
- [gh-99509](https://python-all.ru/3/whatsnew/changelog.html): Добавлена поддержка [**PEP 585**](https://python-all.ru/3/whatsnew/changelog.html) для `multiprocessing.queues.Queue`.
- [gh-99482](https://python-all.ru/3/whatsnew/changelog.html): Удалён код частичной совместимости `Jython` из нескольких модулей stdlib.
- [gh-99433](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка [`doctest`](https://python-all.ru/3/library/doctest.html#module-doctest) при [`types.MethodWrapperType`](https://python-all.ru/3/library/types.html#types.MethodWrapperType) в модулях.
- [gh-85267](https://python-all.ru/3/whatsnew/changelog.html): Несколько улучшений в обработке [`inspect.signature()`](https://python-all.ru/3/library/inspect.html#inspect.signature) `__text_signature`. - Исправлен случай, когда `inspect.signature()` отбрасывал параметры - Исправлен случай, когда `inspect.signature()` вызывал [`tokenize.TokenError`](https://python-all.ru/3/library/tokenize.html#tokenize.TokenError) - Разрешает `inspect.signature()` понимать умолчания, включающие бинарные операции над константами - `inspect.signature()` документирован как вызывающий только [`TypeError`](https://python-all.ru/3/library/exceptions.html#TypeError) или [`ValueError`](https://python-all.ru/3/library/exceptions.html#ValueError), но иногда вызывал [`RuntimeError`](https://python-all.ru/3/library/exceptions.html#RuntimeError). Эти случаи теперь вызывают `ValueError` - Удалён мёртвый код
- [gh-91166](https://python-all.ru/3/whatsnew/changelog.html): [`asyncio`](https://python-all.ru/3/library/asyncio.html#module-asyncio) оптимизирован, чтобы избежать излишнего копирования при записи в сокет, и использует [`sendmsg()`](https://python-all.ru/3/library/socket.html#socket.socket.sendmsg), если платформа поддерживает это. Исправление от Kumar Aditya.
- [gh-98030](https://python-all.ru/3/whatsnew/changelog.html): Добавлены недостающие опции 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](https://python-all.ru/3/whatsnew/changelog.html): Снижено потребление памяти для [`urllib.parse.unquote()`](https://python-all.ru/3/library/urllib.parse.html#urllib.parse.unquote) и [`urllib.parse.unquote_to_bytes()`](https://python-all.ru/3/library/urllib.parse.html#urllib.parse.unquote_to_bytes) при больших значениях.
- [gh-96127](https://python-all.ru/3/whatsnew/changelog.html): `inspect.signature` вызывал `TypeError` при вызове с mock-объектами. Теперь он корректно возвращает `(*args, **kwargs)` как выведенную сигнатуру.
- [gh-95882](https://python-all.ru/3/whatsnew/changelog.html): Исправлен регресс в 3.11 в [`asynccontextmanager()`](https://python-all.ru/3/library/contextlib.html#contextlib.asynccontextmanager), из-за которого исключения распространялись с неверными трассировками, и исправлен регресс в 3.11 в [`contextmanager()`](https://python-all.ru/3/library/contextlib.html#contextlib.contextmanager), что приводило к распространению исключений с неверными трассировками для [`StopIteration`](https://python-all.ru/3/library/exceptions.html#StopIteration).
- [gh-78707](https://python-all.ru/3/whatsnew/changelog.html): Объявлено устаревшим передача более одного позиционного аргумента в [`pathlib.PurePath.relative_to()`](https://python-all.ru/3/library/pathlib.html#pathlib.PurePath.relative_to) и [`is_relative_to()`](https://python-all.ru/3/library/pathlib.html#pathlib.PurePath.is_relative_to).
- [gh-92122](https://python-all.ru/3/whatsnew/changelog.html): Исправлены синтаксические ошибки reStructuredText в строковых документах модуля [`enum`](https://python-all.ru/3/library/enum.html#module-enum).
- [gh-91851](https://python-all.ru/3/whatsnew/changelog.html): Оптимизирована арифметика [`Fraction`](https://python-all.ru/3/library/fractions.html#fractions.Fraction) для малых компонентов.
- [bpo-24132](https://python-all.ru/3/whatsnew/changelog.html): Сделаны [`pathlib.PurePath`](https://python-all.ru/3/library/pathlib.html#pathlib.PurePath) и [`Path`](https://python-all.ru/3/library/pathlib.html#pathlib.Path) возможными для наследования (изначально приватными). Ранее попытка создать экземпляр подкласса приводила к возбуждению [`AttributeError`](https://python-all.ru/3/library/exceptions.html#AttributeError). Исправление от Barney Gale.
- [bpo-40447](https://python-all.ru/3/whatsnew/changelog.html): Принимать [`os.PathLike`](https://python-all.ru/3/library/os.html#os.PathLike) (например, [`pathlib.Path`](https://python-all.ru/3/library/pathlib.html#pathlib.Path)) в аргументах `stripdir` функций [`compileall.compile_file()`](https://python-all.ru/3/library/compileall.html#compileall.compile_file) и [`compileall.compile_dir()`](https://python-all.ru/3/library/compileall.html#compileall.compile_dir).
- [bpo-36880](https://python-all.ru/3/whatsnew/changelog.html): Исправлена проблема с подсчётом ссылок, когда колбэк [`ctypes`](https://python-all.ru/3/library/ctypes.html#module-ctypes) с типом возврата [`py_object`](https://python-all.ru/3/library/ctypes.html#ctypes.py_object) возвращает `None`, что могло вызывать аварийные завершения.

### Документация

- [gh-100616](https://python-all.ru/3/whatsnew/changelog.html): Документирован существующий параметр `attr` функции [`curses.window.vline()`](https://python-all.ru/3/library/curses.html#curses.window.vline) в [`curses`](https://python-all.ru/3/library/curses.html#module-curses).
- [gh-100472](https://python-all.ru/3/whatsnew/changelog.html): Удалено утверждение в документации о том, что параметры `stripdir`, `prependdir` и `limit_sl_dest` функций [`compileall.compile_dir()`](https://python-all.ru/3/library/compileall.html#compileall.compile_dir) и [`compileall.compile_file()`](https://python-all.ru/3/library/compileall.html#compileall.compile_file) могут быть [`bytes`](https://python-all.ru/3/library/stdtypes.html#bytes).
- [bpo-25377](https://python-all.ru/3/whatsnew/changelog.html): Уточнено использование восьмеричного формата аргумента mode в help(os.chmod) а также в help(os.fchmod)

### Тесты

- [gh-100454](https://python-all.ru/3/whatsnew/changelog.html): Начато выполнение SSL-тестов с OpenSSL 3.1.0-beta1.
- [gh-100086](https://python-all.ru/3/whatsnew/changelog.html): Средство запуска тестов Python (libregrtest) теперь записывает в журнал информацию о сборке Python такую как сборка “debug” vs “release”, или оптимизации LTO и PGO. Исправление от Victor Stinner.
- [gh-93018](https://python-all.ru/3/whatsnew/changelog.html): Сделать два теста терпимыми к системной libexpat с применёнными исправлениями безопасности из бэкпортов.

### Сборка

- [gh-100540](https://python-all.ru/3/whatsnew/changelog.html): Удалён параметр `--with-system-ffi` `configure`; `libffi` теперь всегда должен предоставляться системой на всех платформах, кроме Windows. Этот параметр не оказывал влияния на платформах, отличных от Darwin, в течение нескольких выпусков, а в 3.11 имел лишь неочевидный эффект вызова `pkg-config` для поиска `libffi` и никогда не устанавливал `-DUSING_APPLE_OS_LIBFFI`. Теперь на платформах Darwin `configure` будет сначала проверять наличие OS `libffi`, а затем переходить к той же обработке, что и на других платформах, если он не найден.
- [gh-88267](https://python-all.ru/3/whatsnew/changelog.html): Избегать экспорта символов Python в связанных приложениях Windows, когда ядро собрано как статическое.
- [bpo-41916](https://python-all.ru/3/whatsnew/changelog.html): Разрешить переопределение ac\_cv\_cxx\_thread, чтобы кросс-компилированный Python мог установить -pthread для CXX.

### Windows

- [gh-100180](https://python-all.ru/3/whatsnew/changelog.html): Обновление установщика Windows до OpenSSL 1.1.1s
- [gh-99191](https://python-all.ru/3/whatsnew/changelog.html): Использовать `_MSVC_LANG >= 202002L` вместо менее точного `_MSC_VER >=1929` для более точной проверки поддержки C++20 в `PC/_wmimodule.cpp`.
- [gh-79218](https://python-all.ru/3/whatsnew/changelog.html): Определить `MS_WIN64` для Mingw-w64 64bit, исправление ошибки компиляции Cython.
- [gh-99941](https://python-all.ru/3/whatsnew/changelog.html): Обеспечить, чтобы [`asyncio.Protocol.data_received()`](https://python-all.ru/3/library/asyncio-protocol.html#asyncio.Protocol.data_received) получал неизменяемый объект [`bytes`](https://python-all.ru/3/library/stdtypes.html#bytes) (как документировано), а не [`bytearray`](https://python-all.ru/3/library/stdtypes.html#bytearray).
- [bpo-43984](https://python-all.ru/3/whatsnew/changelog.html): [`winreg.SetValueEx()`](https://python-all.ru/3/library/winreg.html#winreg.SetValueEx) теперь оставляет целевое значение нетронутым в случае ошибок преобразования. Ранее `-1` было бы записано при таких ошибках.
- [bpo-34816](https://python-all.ru/3/whatsnew/changelog.html): `hasattr(ctypes.windll, 'nonexistant')` теперь возвращает `False` вместо возбуждения [`OSError`](https://python-all.ru/3/library/exceptions.html#OSError).

### macOS

- [gh-100180](https://python-all.ru/3/whatsnew/changelog.html): Обновление установщика macOS до OpenSSL 1.1.1s
- [gh-100540](https://python-all.ru/3/whatsnew/changelog.html): Удалена устаревшая прослойка `dlfcn.h` из модуля расширения `_ctypes`, которая не требовалась начиная с Mac OS X 10.2.

### Tools/Demos

- [bpo-45256](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка, приводившая к возникновению [`AttributeError`](https://python-all.ru/3/library/exceptions.html#AttributeError) в `python-gdb.py` при использовании `py-locals` без фрейма.
- [gh-100342](https://python-all.ru/3/whatsnew/changelog.html): Добавлена отсутствующая проверка `NULL` на возможный сбой выделения памяти при разборе `*args` в Argument Clinic.

### C API

- [gh-99947](https://python-all.ru/3/whatsnew/changelog.html): При возникновении SystemError во время импорта теперь в качестве причины будет установлено исходное неожиданное исключение.
- [gh-99240](https://python-all.ru/3/whatsnew/changelog.html): При разборе аргументов после освобождения только что выделенной памяти указатель на неё сбрасывается в NULL.
- [gh-98724](https://python-all.ru/3/whatsnew/changelog.html): Макросы [`Py_CLEAR`](https://python-all.ru/3/c-api/refcounting.html#c.Py_CLEAR), [`Py_SETREF`](https://python-all.ru/3/c-api/refcounting.html#c.Py_SETREF) и [`Py_XSETREF`](https://python-all.ru/3/c-api/refcounting.html#c.Py_XSETREF) теперь вычисляют свои аргументы только один раз. Если аргумент имеет побочные эффекты, эти эффекты больше не дублируются. Патч от Victor Stinner.

## Python 3.12.0 alpha 3

*Дата выпуска: 2022-12-06*

### Безопасность

- [gh-100001](https://python-all.ru/3/whatsnew/changelog.html): `python -m http.server` больше не допускает вывод управляющих символов терминала, отправленных в мусорном запросе, в журнал stderr сервера.

  Это достигается изменением метода [`http.server`](https://python-all.ru/3/library/http.server.html#module-http.server) `BaseHTTPRequestHandler` `.log_message` для замены управляющих символов на `\xHH` шестнадцатеричную escape-последовательность перед выводом.
- [gh-87604](https://python-all.ru/3/whatsnew/changelog.html): Предотвращена публикация списка активных аудит-хуков на интерпретатор через модуль [`gc`](https://python-all.ru/3/library/gc.html#module-gc)

### Ядро и встроенные модули

- [gh-99891](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка в токенизаторе, которая могла вызывать бесконечную рекурсию при показе синтаксических предупреждений, возникающих в первой строке исходного кода. Патч от Pablo Galindo.
- [gh-91054](https://python-all.ru/3/whatsnew/changelog.html): Добавлены API [`PyCode_AddWatcher()`](https://python-all.ru/3/c-api/code.html#c.PyCode_AddWatcher) и [`PyCode_ClearWatcher()`](https://python-all.ru/3/c-api/code.html#c.PyCode_ClearWatcher) для регистрации колбэков, получающих уведомления о создании и уничтожении объектов кода.
- [gh-99729](https://python-all.ru/3/whatsnew/changelog.html): Исправлена проблема, из-за которой фреймы могли быть видны коду Python в процессе их разрушения, что потенциально приводило к повреждению памяти или жёстким сбоям интерпретатора.
- [gh-99708](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка, при которой компилятор аварийно завершался на if-выражении с пустым телом.
- [gh-99578](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка со ссылками в `_imp.create_builtin()` после создания первого под-интерпретатора для модулей `builtins` и `sys`. Патч от Victor Stinner.
- [gh-99581](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка, вызывающая переполнение буфера, если токенизатор копирует строку без символа новой строки из файла, длина которой равна длине доступного буфера токенизатора. Патч от Pablo Galindo.
- [gh-99553](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка, при которой подкласс [`ExceptionGroup`](https://python-all.ru/3/library/exceptions.html#ExceptionGroup) мог оборачивать [`BaseException`](https://python-all.ru/3/library/exceptions.html#BaseException).

### Библиотека

- [gh-99547](https://python-all.ru/3/whatsnew/changelog.html): Добавлена функция isjunction в os.path для проверки, является ли путь точкой соединения (junction). Добавлена аналогичная функциональность в pathlib.Path как is\_junction.
- [gh-99370](https://python-all.ru/3/whatsnew/changelog.html): Исправлен путь к zip-файлу для виртуального окружения, созданного из неустановленного Python на платформах POSIX.

### Ядро и встроенные модули

- [gh-99377](https://python-all.ru/3/whatsnew/changelog.html): Добавлены аудит-события для создания потоков и операций очистки.
- [gh-98686](https://python-all.ru/3/whatsnew/changelog.html): Удалены «специализации» `BINARY_OP_GENERIC` и `COMPARE_OP_GENERIC`.
- [gh-99298](https://python-all.ru/3/whatsnew/changelog.html): Удалены оставшиеся пути ошибок для специализаций атрибутов, и теперь отказываемся специализировать доступ к атрибутам для типов, на которых ещё не был вызван [`PyType_Ready()`](https://python-all.ru/3/c-api/type.html#c.PyType_Ready).
- [gh-99127](https://python-all.ru/3/whatsnew/changelog.html): Разрешены некоторые возможности [`syslog`](https://python-all.ru/3/library/syslog.html#module-syslog) только для главного интерпретатора. Патч от Donghee Na.
- [gh-91053](https://python-all.ru/3/whatsnew/changelog.html): Оптимизирующие интерпретаторы и JIT-компиляторы могут нуждаться в инвалидации внутренних метаданных при изменении функций. Это изменение добавляет возможность предоставить колбэк, который будет вызываться каждый раз при создании, изменении или уничтожении функции.
- [gh-90994](https://python-all.ru/3/whatsnew/changelog.html): Улучшены сообщения об ошибках при синтаксической ошибке с аргументами вызова. Рассмотрены три случая: - Именованному аргументу не присвоено значение, например `foo(a=)`. - Звёздочному аргументу присвоено значение, например `foo(*args=[0])`. - Аргументу с двойной звёздочкой (ключевому) присвоено значение, например `foo(**kwarg={'a': 0})`.
- [bpo-45026](https://python-all.ru/3/whatsnew/changelog.html): Оптимизирован итератор объекта [`range`](https://python-all.ru/3/library/stdtypes.html#range). Он теперь компактнее, быстрее выполняется итерация по диапазонам с большими числами. Компактнее сериализация, быстрее десериализация.
- [bpo-31718](https://python-all.ru/3/whatsnew/changelog.html): Возбуждается [`ValueError`](https://python-all.ru/3/library/exceptions.html#ValueError) вместо [`SystemError`](https://python-all.ru/3/library/exceptions.html#SystemError) при вызове методов неинициализированных объектов [`io.IncrementalNewlineDecoder`](https://python-all.ru/3/library/io.html#io.IncrementalNewlineDecoder). Исправление от Oren Milman.
- [bpo-38031](https://python-all.ru/3/whatsnew/changelog.html): Исправлена возможная ошибка утверждения (assertion) в [`io.FileIO`](https://python-all.ru/3/library/io.html#io.FileIO), когда открыватель (opener) возвращает недопустимый файловый дескриптор.

### Библиотека

- [gh-100001](https://python-all.ru/3/whatsnew/changelog.html): Также экранируются s в http.server BaseHTTPRequestHandler.log\_message, чтобы технически можно было разобрать строку и восстановить исходные данные. Без этого xHH неоднозначен: является ли это заменой шестнадцатеричного кода, которую мы вставили, или в исходной строке запроса были символы r"x".
- [gh-99957](https://python-all.ru/3/whatsnew/changelog.html): Добавлен параметр `frozen_default` в [`typing.dataclass_transform()`](https://python-all.ru/3/library/typing.html#typing.dataclass_transform).
- [gh-79033](https://python-all.ru/3/whatsnew/changelog.html): Исправлено [`asyncio.Server.wait_closed()`](https://python-all.ru/3/library/asyncio-eventloop.html#asyncio.Server.wait_closed), чтобы действительно выполняло обещанное в документации – ожидание завершения всех существующих соединений после закрытия сервера.
- [gh-51524](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка при вызове trace.CoverageResults с корректным входным файлом (infile).
- [gh-99645](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка при обработке очистки классов в [`unittest.TestCase`](https://python-all.ru/3/library/unittest.html#unittest.TestCase). Теперь `addClassCleanup()` использует отдельные списки для разных подклассов `TestCase`, а `doClassCleanups()` очищает только конкретный класс.
- [gh-99508](https://python-all.ru/3/whatsnew/changelog.html): Исправлено `TypeError` в `Lib/importlib/_bootstrap_external.py` при вызове `_imp.source_hash()`.
- [gh-66285](https://python-all.ru/3/whatsnew/changelog.html): Исправлено [`asyncio`](https://python-all.ru/3/library/asyncio.html#module-asyncio), чтобы не разделять цикл событий и сигнальный файловый дескриптор пробуждения в порождённых процессах. Исправление от Kumar Aditya.
- [gh-97001](https://python-all.ru/3/whatsnew/changelog.html): Освобождается GIL при вызове termios API, чтобы избежать блокировки потоков.
- [gh-92647](https://python-all.ru/3/whatsnew/changelog.html): Используется окончательное состояние перечисления для определения ветви поиска или создания функционального API.
- [gh-99388](https://python-all.ru/3/whatsnew/changelog.html): Добавлен параметр *loop\_factory* в [`asyncio.run()`](https://python-all.ru/3/library/asyncio-runner.html#asyncio.run), позволяющий указать собственную фабрику циклов событий. Исправление от Kumar Aditya.
- [gh-99341](https://python-all.ru/3/whatsnew/changelog.html): Исправлено [`ast.increment_lineno()`](https://python-all.ru/3/library/ast.html#ast.increment_lineno), чтобы также охватывалось [`ast.TypeIgnore`](https://python-all.ru/3/library/ast.html#ast.TypeIgnore) при изменении номеров строк.
- [gh-99382](https://python-all.ru/3/whatsnew/changelog.html): Проверяется количество аргументов при подстановке в пользовательских дженериках, содержащих [`TypeVarTuple`](https://python-all.ru/3/library/typing.html#typing.TypeVarTuple) и один или несколько [`TypeVar`](https://python-all.ru/3/library/typing.html#typing.TypeVar).
- [gh-99379](https://python-all.ru/3/whatsnew/changelog.html): Исправлена подстановка [`ParamSpec`](https://python-all.ru/3/library/typing.html#typing.ParamSpec), за которым следует [`TypeVarTuple`](https://python-all.ru/3/library/typing.html#typing.TypeVarTuple), в обобщённых псевдонимах.
- [gh-99344](https://python-all.ru/3/whatsnew/changelog.html): Исправлена подстановка [`TypeVarTuple`](https://python-all.ru/3/library/typing.html#typing.TypeVarTuple) и [`ParamSpec`](https://python-all.ru/3/library/typing.html#typing.ParamSpec) вместе в пользовательских дженериках.
- [gh-99284](https://python-all.ru/3/whatsnew/changelog.html): Удалён старый непроверенный и недокументированный хак `_use_broken_old_ctypes_structure_semantics_` из [`ctypes`](https://python-all.ru/3/library/ctypes.html#module-ctypes).
- [gh-99201](https://python-all.ru/3/whatsnew/changelog.html): Исправлено [`IndexError`](https://python-all.ru/3/library/exceptions.html#IndexError) при инициализации переменных конфигурации в Windows, если `HAVE_DYNAMIC_LOADING` не задан.
- [gh-99240](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка двойного освобождения памяти в Argument Clinic `str_converter` путём выноса очистки памяти в новый раздел `post_parsing`.
- [gh-64490](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка счётчика ссылок при упаковке аргументов в кортеж в Argument Clinic.
- [gh-99029](https://python-all.ru/3/whatsnew/changelog.html): [`pathlib.PurePath.relative_to()`](https://python-all.ru/3/library/pathlib.html#pathlib.PurePath.relative_to) теперь рассматривает голые пути дисков Windows как относительные. Это приводит его поведение в соответствие с другими частями pathlib.
- [gh-98253](https://python-all.ru/3/whatsnew/changelog.html): Реализация модуля typing стала более устойчивой к утечкам ссылок в бинарных модулях расширения.

  Ранее утечка ссылок в модуле расширения на основе типизированного C API могла приводить к утечке внутренних данных модуля typing, что, в свою очередь, вызывало утечки практически в любом другом пакете с типизированными сигнатурами функций. Хотя пакет typing не является первоисточником проблемы, такие нелокальные зависимости усложняют отладку крупных проектов, поэтому реализация была изменена, чтобы уменьшить вред за счёт лучшей изоляции.
- [gh-98458](https://python-all.ru/3/whatsnew/changelog.html): Исправлен бесконечный цикл в unittest при возбуждении самоссылающегося цепочечного исключения
- [gh-93453](https://python-all.ru/3/whatsnew/changelog.html): [`asyncio.get_event_loop()`](https://python-all.ru/3/library/asyncio-eventloop.html#asyncio.get_event_loop) и многие другие функции [`asyncio`](https://python-all.ru/3/library/asyncio.html#module-asyncio), такие как [`asyncio.ensure_future()`](https://python-all.ru/3/library/asyncio-future.html#asyncio.ensure_future), [`asyncio.shield()`](https://python-all.ru/3/library/asyncio-task.html#asyncio.shield) или [`asyncio.gather()`](https://python-all.ru/3/library/asyncio-task.html#asyncio.gather), а также метод `get_event_loop()` из `asyncio.BaseDefaultEventLoopPolicy` теперь возбуждают [`RuntimeError`](https://python-all.ru/3/library/exceptions.html#RuntimeError), если вызваны при отсутствии выполняющегося цикла событий и не задан текущий цикл событий. Ранее они неявно создавали и устанавливали новый текущий цикл событий. [`DeprecationWarning`](https://python-all.ru/3/library/exceptions.html#DeprecationWarning) больше не выводится, если нет выполняющегося цикла событий, но текущий цикл событий задан.
- [gh-97966](https://python-all.ru/3/whatsnew/changelog.html): На [`os.uname_result`](https://python-all.ru/3/library/os.html#os.uname_result) восстановлено ожидание, что `_fields` и `_asdict` будут включать все шесть свойств, включая `processor`.
- [gh-98248](https://python-all.ru/3/whatsnew/changelog.html): Обеспечены информативные сообщения об ошибках в [`struct.pack()`](https://python-all.ru/3/library/struct.html#struct.pack), когда его целочисленные аргументы выходят за диапазон.
- [gh-98108](https://python-all.ru/3/whatsnew/changelog.html): `zipfile.Path` теперь можно сериализовать, если его параметры инициализации были сериализуемы (например, для путей файловой системы).
- [gh-98098](https://python-all.ru/3/whatsnew/changelog.html): Созданы пакеты из модулей zipfile и test\_zipfile с разделением функциональности `zipfile.Path`.
- [gh-82836](https://python-all.ru/3/whatsnew/changelog.html): Исправлены свойства [`is_private`](https://python-all.ru/3/library/ipaddress.html#ipaddress.IPv4Address.is_private) в модуле [`ipaddress`](https://python-all.ru/3/library/ipaddress.html#module-ipaddress). Ранее не приватные сети (0.0.0.0/0) возвращали `True` из этого метода; теперь они корректно возвращают `False`.
- [gh-96828](https://python-all.ru/3/whatsnew/changelog.html): Добавлена опция [`OP_ENABLE_KTLS`](https://python-all.ru/3/library/ssl.html#ssl.OP_ENABLE_KTLS) для включения использования kTLS (kernel TLS). Патч от Illia Volochii.
- [gh-88863](https://python-all.ru/3/whatsnew/changelog.html): Чтобы избежать видимых утечек памяти при возникновении [`asyncio.open_connection()`](https://python-all.ru/3/library/asyncio-stream.html#asyncio.open_connection), разрываются циклические ссылки, создаваемые локальными экземплярами исключений и future (которые содержат экземпляр исключения в качестве своей переменной-члена). Патч от Dong Uk, Kang.
- [gh-91078](https://python-all.ru/3/whatsnew/changelog.html): `TarFile.next()` теперь возвращает `None` при вызове на пустом tar-файле.
- [bpo-47220](https://python-all.ru/3/whatsnew/changelog.html): Документирован необязательный параметр *колбэк* функции `WeakMethod`. Патч от Géry Ogam.
- [bpo-44817](https://python-all.ru/3/whatsnew/changelog.html): Игнорируются WinError 53 (ERROR\_BAD\_NETPATH), 65 (ERROR\_NETWORK\_ACCESS\_DENIED) и 161 (ERROR\_BAD\_PATHNAME) при использовании ntpath.realpath().
- [bpo-41260](https://python-all.ru/3/whatsnew/changelog.html): Параметр *fmt* чистой реализации Python функции [`datetime.date.strftime()`](https://python-all.ru/3/library/datetime.html#datetime.date.strftime) переименован в *format*.
- [bpo-15999](https://python-all.ru/3/whatsnew/changelog.html): Все встроенные функции теперь принимают аргументы любого типа вместо только `bool` и `int` для булевых параметров.

### Документация

- [gh-99931](https://python-all.ru/3/whatsnew/changelog.html): Используется [sphinxext-opengraph](https://python-all.ru/3/whatsnew/changelog.html) для генерации [метаданных OpenGraph](https://python-all.ru/3/whatsnew/changelog.html).
- [gh-89682](https://python-all.ru/3/whatsnew/changelog.html): Переформулирована docstring по умолчанию `__contains__`, чтобы уточнить, что она возвращает [`bool`](https://python-all.ru/3/library/functions.html#bool).
- [gh-88330](https://python-all.ru/3/whatsnew/changelog.html): Улучшено описание того, что такое ресурс, в документации importlib.resources.
- [gh-92892](https://python-all.ru/3/whatsnew/changelog.html): Документировано, что вызов вариативных функций с помощью ctypes требует особой осторожности на macOS/arm64 (и, возможно, на других платформах).
- [bpo-41825](https://python-all.ru/3/whatsnew/changelog.html): Перестроена документация для семейства функций [`os.wait*`](https://python-all.ru/3/library/os.html#os.wait) и улучшена документация для [`os.waitid()`](https://python-all.ru/3/library/os.html#os.waitid) с более подробным объяснением возможных констант аргументов.

### Тесты

- [gh-99892](https://python-all.ru/3/whatsnew/changelog.html): Пропускать test\_normalization() из test\_unicodedata, если не удаётся скачать файл NormalizationTest.txt с pythontest.net. Патч от Victor Stinner.
- [gh-99934](https://python-all.ru/3/whatsnew/changelog.html): Исправлен test\_marsh на (32-битном) x86: test\_deterministic sets завершался ошибкой.
- [gh-99741](https://python-all.ru/3/whatsnew/changelog.html): Реализована многофазная инициализация (PEP 489/630/687) для внутреннего (для тестирования) модуля \_xxsubinterpreters.
- [gh-99659](https://python-all.ru/3/whatsnew/changelog.html): Optional big memory tests in `test_sqlite3` now catch the correct `sqlite.DataError` exception type in case of too large strings and/or blobs passed.
- [gh-99593](https://python-all.ru/3/whatsnew/changelog.html): Покрытие Unicode C API тестами.
- [gh-96002](https://python-all.ru/3/whatsnew/changelog.html): Добавлен функциональный тест для Argument Clinic.

### Сборка

- [gh-99086](https://python-all.ru/3/whatsnew/changelog.html): Исправлены `-Wimplicit-int`, `-Wstrict-prototypes` и `-Wimplicit-function-declaration` предупреждения компилятора в проверках **configure**.
- [gh-99337](https://python-all.ru/3/whatsnew/changelog.html): Исправлена проблема компиляции с GCC 12 на macOS.
- [gh-99289](https://python-all.ru/3/whatsnew/changelog.html): Добавлена переменная `COMPILEALL_OPTS` в Makefile для переопределения параметров [`compileall`](https://python-all.ru/3/library/compileall.html#module-compileall) (по умолчанию: `-j0`) в `make install`. Также объединены команды `compileall` в одну команду, собирающую .pyc файлы для всех уровней оптимизации (0, 1, 2) одновременно. Патч от Victor Stinner.
- [gh-98872](https://python-all.ru/3/whatsnew/changelog.html): Исправлена возможная утечка fd (файлового дескриптора) в `Programs/_freeze_module.c`, появившаяся в Python 3.11.
- [gh-88226](https://python-all.ru/3/whatsnew/changelog.html): Всегда определять метки `TARGET_*` в `Python/ceval.c`, даже если `USE_COMPUTED_GOTOS` отключён. Это позволяет устанавливать точки останова на эти метки, например, в `gdb`.

### Windows

- [gh-99345](https://python-all.ru/3/whatsnew/changelog.html): Использованы более быстрые функции инициализации для определения места установки пакета Windows Store.
- [gh-98629](https://python-all.ru/3/whatsnew/changelog.html): Исправлена инициализация [`sys.version`](https://python-all.ru/3/library/sys.html#sys.version) и `sys._git` на Windows.
- [gh-99442](https://python-all.ru/3/whatsnew/changelog.html): Исправлена обработка в [менеджере установки Python](https://python-all.ru/3/using/windows.html#launcher), когда `argv[0]` не включает расширение файла.
- [bpo-40882](https://python-all.ru/3/whatsnew/changelog.html): Исправлена утечка памяти в [`multiprocessing.shared_memory.SharedMemory`](https://python-all.ru/3/library/multiprocessing.shared_memory.html#multiprocessing.shared_memory.SharedMemory) на Windows.

### macOS

- [gh-87235](https://python-all.ru/3/whatsnew/changelog.html): На macOS `python3 /dev/fd/9 9</path/to/script.py` не удавалось выполнить для любого скрипта длиннее нескольких байт.
- [gh-98940](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка фильтра файлов `Mac/Extras.install.py`.

### Tools/Demos

- [gh-64490](https://python-all.ru/3/whatsnew/changelog.html): Исправление ошибок varargs в Argument Clinic.

  - Исправлена ошибка выхода за границы в `_PyArg_UnpackKeywordsWithVararg()`.
  - Исправлена некорректная проверка, допускавшая более одного varargs в clinic.py.
  - Исправлена ошибка вычисления `noptargs` в сгенерированном коде.
  - Не генерировать `noptargs`, если есть аргумент vararg и нет необязательных аргументов.

### C API

- [gh-98680](https://python-all.ru/3/whatsnew/changelog.html): Константы `PyBUF_*` были помечены как часть Limited API Python 3.11+. Они были доступны в 3.11.0 с определённым для 3.11 [`Py_LIMITED_API`](https://python-all.ru/3/c-api/stable.html#c.Py_LIMITED_API) и необходимы для использования buffer API.
- [gh-99612](https://python-all.ru/3/whatsnew/changelog.html): Исправление [`PyUnicode_DecodeUTF8Stateful()`](https://python-all.ru/3/c-api/unicode.html#c.PyUnicode_DecodeUTF8Stateful) для данных, содержащих только ASCII: `*consumed` не был установлен.
- [gh-47146](https://python-all.ru/3/whatsnew/changelog.html): Заголовок `structmember.h` объявлен устаревшим. Его неустаревшее содержимое теперь доступно простым включением `Python.h`, с добавлением префикса `Py_`, если он отсутствовал. (Устаревшее содержимое: [`T_OBJECT`](https://python-all.ru/3/c-api/structures.html#c.T_OBJECT), [`T_NONE`](https://python-all.ru/3/c-api/structures.html#c.T_NONE) и флаги-заглушки.) Патч от Petr Viktorin на основе ранних работ Alexander Belopolsky и Matthias Braun.

## Python 3.12.0 alpha 2

*Дата выпуска: 2022-11-14*

### Безопасность

- [gh-98433](https://python-all.ru/3/whatsnew/changelog.html): Декодер кодека IDNA, используемый для DNS-имён хостов функциями [`socket`](https://python-all.ru/3/library/socket.html#module-socket) или [`asyncio`](https://python-all.ru/3/library/asyncio.html#module-asyncio), больше не использует квадратичный алгоритм. Это предотвращает потенциальный отказ в обслуживании по CPU, если бы была декодирована нестандартная строка с чрезмерно длинным именем хоста, содержащая двунаправленные символы. Некоторые протоколы, такие как HTTP-редиректы [`urllib`](https://python-all.ru/3/library/urllib.html#module-urllib) `3xx`, потенциально позволяют атакующему предоставить такое имя.

  Отдельные метки в IDNA-кодированном DNS-имени теперь будут вызывать ошибку на раннем этапе декодирования IDNA, если они длиннее 1024 символов Unicode, учитывая, что каждая декодированная DNS-метка должна содержать не более 63 символов, а всё декодированное DNS-имя ограничено 255 символами. Только приложение, предоставляющее имя хоста или метку, состоящую в основном из «пустых» символов [**RFC 3454**](https://python-all.ru/3/whatsnew/changelog.html) раздела 3.1 (символы, которые должны быть удалены), может столкнуться с этим новым ограничением. См. также [**RFC 5894**](https://python-all.ru/3/whatsnew/changelog.html) раздел 6 и [**RFC 3491**](https://python-all.ru/3/whatsnew/changelog.html).
- [gh-98739](https://python-all.ru/3/whatsnew/changelog.html): Обновление встроенной библиотеки libexpat до версии 2.5.0

### Ядро и встроенные объекты

- [gh-81057](https://python-all.ru/3/whatsnew/changelog.html): В документации чётко сказано, что [`PyImport_Inittab`](https://python-all.ru/3/c-api/import.html#c.PyImport_Inittab), [`PyImport_AppendInittab()`](https://python-all.ru/3/c-api/import.html#c.PyImport_AppendInittab) и [`PyImport_ExtendInittab()`](https://python-all.ru/3/c-api/import.html#c.PyImport_ExtendInittab) не следует использовать после вызова [`Py_Initialize()`](https://python-all.ru/3/c-api/interp-lifecycle.html#c.Py_Initialize). Теперь это соблюдается для двух функций. Кроме того, среда выполнения теперь использует внутреннюю копию `PyImport_Inittab` для защиты от изменений.
- [gh-99298](https://python-all.ru/3/whatsnew/changelog.html): Исправлена проблема, которая могла приводить к некорректной обработке ошибок для некоторых инструкций байткода.
- [gh-99254](https://python-all.ru/3/whatsnew/changelog.html): Компилятор теперь удаляет все неиспользуемые константы из объектов кода (кроме первой, которая может быть docstring).
- [gh-99205](https://python-all.ru/3/whatsnew/changelog.html): Исправлена проблема, из-за которой память [`PyThreadState`](https://python-all.ru/3/c-api/threads.html#c.PyThreadState) и [`PyInterpreterState`](https://python-all.ru/3/c-api/subinterpreters.html#c.PyInterpreterState) не освобождалась должным образом.
- [gh-81057](https://python-all.ru/3/whatsnew/changelog.html): 18 глобальных C-переменных, хранящих состояние распределителей памяти, перемещены в `_PyRuntimeState`. Это строго внутреннее изменение, не меняющее поведение.
- [gh-99181](https://python-all.ru/3/whatsnew/changelog.html): Исправление ошибки в [`except*`](https://python-all.ru/3/reference/compound_stmts.html#except-star) при нехешируемых исключениях.
- [gh-99204](https://python-all.ru/3/whatsnew/changelog.html): Исправление вычисления `sys._base_executable` внутри виртуального окружения POSIX с использованием копий двоичного файла python, когда базовая установка не предоставляет имя исполняемого файла, используемого venv. Вычисление будет использовать альтернативные имена («python\<MAJOR\>», «python\<MAJOR\>.\<MINOR\>»).
- [gh-96055](https://python-all.ru/3/whatsnew/changelog.html): Обновление [`faulthandler`](https://python-all.ru/3/library/faulthandler.html#module-faulthandler) для вывода сообщения об ошибке с правильным номером неожиданного сигнала. Патч от Donghee Na.
- [gh-99153](https://python-all.ru/3/whatsnew/changelog.html): Исправление расположения [`SyntaxError`](https://python-all.ru/3/library/exceptions.html#SyntaxError) для блока [`try`](https://python-all.ru/3/reference/compound_stmts.html#try) с обоими [`except`](https://python-all.ru/3/reference/compound_stmts.html#except) и [`except*`](https://python-all.ru/3/reference/compound_stmts.html#except-star).
- [gh-98686](https://python-all.ru/3/whatsnew/changelog.html): Слияние адаптивной логики опкодов с каждым не-быстрым вариантом инструкции, а также слияние логики в `EXTENDED_ARG_QUICK` с [`EXTENDED_ARG`](https://python-all.ru/3/library/dis.html#opcode-EXTENDED_ARG). С этими изменениями ускорение, происходящее при создании объекта кода, теперь отвечает только за инициализацию счётчиков прогрева и вставку суперинструкций.
- [gh-99103](https://python-all.ru/3/whatsnew/changelog.html): Исправление позиций сообщения об ошибке для специализированных якорей трассировки, когда исходная строка содержит символы Unicode.
- [gh-99139](https://python-all.ru/3/whatsnew/changelog.html): Улучшение предложения ошибки для исключений [`NameError`](https://python-all.ru/3/library/exceptions.html#NameError) для экземпляров. Теперь, если в методе возникает `NameError` и у экземпляра есть атрибут, точно равный имени в исключении, предложение будет включать `self.<NAME>` вместо наиболее близкого совпадения в области видимости метода. Патч от Pablo Galindo.
- [gh-98401](https://python-all.ru/3/whatsnew/changelog.html): Восьмеричные escape-последовательности со значением больше `0o377` (например, `"\477"`), устаревшие в Python 3.11, теперь вызывают [`SyntaxWarning`](https://python-all.ru/3/library/exceptions.html#SyntaxWarning), а не [`DeprecationWarning`](https://python-all.ru/3/library/exceptions.html#DeprecationWarning). В будущей версии Python они будут вызывать [`SyntaxError`](https://python-all.ru/3/library/exceptions.html#SyntaxError). Исправление от Виктора Стиннера.
- [gh-98401](https://python-all.ru/3/whatsnew/changelog.html): Пара «обратная косая черта – символ», не являющаяся допустимой escape-последовательностью, теперь вызывает [`SyntaxWarning`](https://python-all.ru/3/library/exceptions.html#SyntaxWarning), а не [`DeprecationWarning`](https://python-all.ru/3/library/exceptions.html#DeprecationWarning). Например, `re.compile("\d+\.\d+")` теперь выдаёт `SyntaxWarning` (`"\d"` – недопустимая escape-последовательность). Для регулярных выражений используйте raw-строки: `re.compile(r"\d+\.\d+")`. В будущей версии Python будет возбуждаться [`SyntaxError`](https://python-all.ru/3/library/exceptions.html#SyntaxError), а не `SyntaxWarning`. Исправление от Victor Stinner.
- [gh-96793](https://python-all.ru/3/whatsnew/changelog.html): Обрабатывать StopIteration и StopAsyncIteration, возбуждаемые в генераторе или корутине, в байткоде, а не в обёрточном C-коде.
- [gh-98931](https://python-all.ru/3/whatsnew/changelog.html): Улучшить сообщение об ошибке [`SyntaxError`](https://python-all.ru/3/library/exceptions.html#SyntaxError), когда пользователь вводит `import x from y` вместо `from y import x`. Исправление от Pablo Galindo.
- [gh-98852](https://python-all.ru/3/whatsnew/changelog.html): Исправить индексацию псевдонимов типов, содержащих сырые обобщённые типы или типы вроде [`TypeVar`](https://python-all.ru/3/library/typing.html#typing.TypeVar): например, `tuple[A, T][int]` и `tuple[TypeVar, T][int]`, где `A` – обобщённый тип, а `T` – переменная типа.
- [gh-98925](https://python-all.ru/3/whatsnew/changelog.html): Уменьшить глубину рекурсии для модуля marshal на WASI для поддержки (разрабатываемого) wasmtime 2.0.
- [gh-98783](https://python-all.ru/3/whatsnew/changelog.html): Исправить множественные падения в отладочном режиме, когда используются подклассы `str` вместо самого `str`.
- [gh-98811](https://python-all.ru/3/whatsnew/changelog.html): Использовать полные исходные позиции для упрощения обнаружения импортов `__future__`, которые находятся не в начале файла. Также исправлено смещение в возбуждаемом исключении в одном случае, которое было сдвинуто на единицу и мешало подсветке.
- [gh-96793](https://python-all.ru/3/whatsnew/changelog.html): Добавить специализацию [`FOR_ITER`](https://python-all.ru/3/library/dis.html#opcode-FOR_ITER) для генераторов. Это позволяет избежать нескольких уровней диспетчеризации и проверок при переходе от инструкции `FOR_ITER` в вызывающем коде к [`RESUME`](https://python-all.ru/3/library/dis.html#opcode-RESUME) в генераторе.
- [gh-98762](https://python-all.ru/3/whatsnew/changelog.html): Исправить исходные позиции подшаблонов [`match`](https://python-all.ru/3/reference/compound_stmts.html#match).
- [gh-98586](https://python-all.ru/3/whatsnew/changelog.html): Добавлены методы [`PyObject_Vectorcall()`](https://python-all.ru/3/c-api/call.html#c.PyObject_Vectorcall) и [`PyObject_VectorcallMethod()`](https://python-all.ru/3/c-api/call.html#c.PyObject_VectorcallMethod) в [Limited API](https://python-all.ru/3/c-api/stable.html#stable) вместе с вспомогательной макроконстантой [`PY_VECTORCALL_ARGUMENTS_OFFSET`](https://python-all.ru/3/c-api/call.html#c.PY_VECTORCALL_ARGUMENTS_OFFSET).

  Наличие этих функций позволяет осуществлять более эффективные [**PEP 590**](https://python-all.ru/3/whatsnew/changelog.html) векторные вызовы из двоичных модулей расширений, которые избегают накладных расходов на упаковку/распаковку аргументов.
- [gh-99257](https://python-all.ru/3/whatsnew/changelog.html): Исправить проблему, когда дескрипторы членов (например, для [`__slots__`](https://python-all.ru/3/reference/datamodel.html#object.__slots__)) могли вести себя некорректно или падать вместо возбуждения [`TypeError`](https://python-all.ru/3/library/exceptions.html#TypeError) при доступе через экземпляр недопустимого типа.
- [gh-93143](https://python-all.ru/3/whatsnew/changelog.html): Вместо изменения `co_code` интерпретатор теперь будет отображать [`RuntimeWarning`](https://python-all.ru/3/library/exceptions.html#RuntimeWarning) и присваивать [`None`](https://python-all.ru/3/library/constants.html#None) любым быстрым локальным переменным, которые остались несвязанными после переходов или выполнения операторов [`del`](https://python-all.ru/3/reference/simple_stmts.html#del) во время трассировки.
- [gh-96421](https://python-all.ru/3/whatsnew/changelog.html): При вызове Python-кода из C-кода через [`PyEval_EvalFrameEx()`](https://python-all.ru/3/c-api/veryhigh.html#c.PyEval_EvalFrameEx) или соответствующую функцию C-API в стек вызовов вставляется прокладочный кадр (shim frame). Это происходит в функции `_PyEval_EvalFrameDefault()`. Дополнительный кадр должен быть невидим для всего Python-кода и большинства C-расширений, но внешние профилировщики и отладчики должны знать о нём. Такие прокладочные кадры можно обнаружить, проверив `frame->owner == FRAME_OWNED_BY_CSTACK`.

  Расширения, реализующие собственные интерпретаторы с помощью PEP 523, должны знать об этом прокладочном кадре и изменениях семантики [`RETURN_VALUE`](https://python-all.ru/3/library/dis.html#opcode-RETURN_VALUE), [`YIELD_VALUE`](https://python-all.ru/3/library/dis.html#opcode-YIELD_VALUE) и [`RETURN_GENERATOR`](https://python-all.ru/3/library/dis.html#opcode-RETURN_GENERATOR), которые теперь очищают кадр.

### Сборка

- [gh-98415](https://python-all.ru/3/whatsnew/changelog.html): Исправить обнаружение MAC-адресов для [`uuid`](https://python-all.ru/3/library/uuid.html#module-uuid) на некоторых ОС. Исправление от Chaim Sanders.

### Ядро и встроенные объекты

- [gh-98686](https://python-all.ru/3/whatsnew/changelog.html): Ускорить все объекты кода и более агрессивно специализировать адаптивные инструкции байткода.
- [gh-92119](https://python-all.ru/3/whatsnew/changelog.html): Выводить имя класса исключения вместо его строкового представления при возбуждении ошибок из вызовов [`ctypes`](https://python-all.ru/3/library/ctypes.html#module-ctypes).
- [gh-91058](https://python-all.ru/3/whatsnew/changelog.html): [`ImportError`](https://python-all.ru/3/library/exceptions.html#ImportError), возбуждаемое при неудачном `from <module> import <name>`, теперь содержит предложения для значения `<name>` на основе доступных имён в `<module>`. Исправление от Pablo Galindo.
- [gh-96793](https://python-all.ru/3/whatsnew/changelog.html): [`FOR_ITER`](https://python-all.ru/3/library/dis.html#opcode-FOR_ITER) теперь оставляет итератор на стеке при завершении цикла. Это помогает специализации циклов для генераторов.
- [gh-90716](https://python-all.ru/3/whatsnew/changelog.html): Добавить модуль \_pylong.py. Он содержит асимптотически более быстрые алгоритмы, которые можно использовать для операций над целыми числами со множеством цифр. Он используется longobject.c для ускорения некоторых операций.
- [gh-95389](https://python-all.ru/3/whatsnew/changelog.html): Открыть [`ETH_P_ALL`](https://python-all.ru/3/library/socket.html#socket.ETH_P_ALL) и некоторые из констант [ETHERTYPE\_\*](https://python-all.ru/3/library/socket.html#socket-ethernet-types) в [`socket`](https://python-all.ru/3/library/socket.html#module-socket). Исправление от Noam Cohen.

### Библиотека

- [gh-93696](https://python-all.ru/3/whatsnew/changelog.html): Разрешить [`pdb`](https://python-all.ru/3/library/pdb.html#module-pdb) находить исходный код для замороженных модулей в стандартной библиотеке.
- [gh-99418](https://python-all.ru/3/whatsnew/changelog.html): Исправить ошибку в [`urllib.parse.urlparse()`](https://python-all.ru/3/library/urllib.parse.html#urllib.parse.urlparse), из-за которой схемы URL, начинающиеся с цифры, знака плюс или минуса, разбирались некорректно.
- [gh-94597](https://python-all.ru/3/whatsnew/changelog.html): Объявить устаревшим `asyncio.AbstractChildWatcher`, который будет удалён в Python 3.14. Исправление от Kumar Aditya.
- [gh-99305](https://python-all.ru/3/whatsnew/changelog.html): Улучшить производительность [`secrets.token_hex()`](https://python-all.ru/3/library/secrets.html#secrets.token_hex).
- [gh-74044](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка, при которой [`inspect.signature()`](https://python-all.ru/3/library/inspect.html#inspect.signature) сообщал неверные аргументы для декорированных методов.
- [gh-99275](https://python-all.ru/3/whatsnew/changelog.html): Исправить `SystemError` в [`ctypes`](https://python-all.ru/3/library/ctypes.html#module-ctypes), когда исключение не было установлено во время `__initsubclass__`.
- [gh-99277](https://python-all.ru/3/whatsnew/changelog.html): удалена старая версия `_SSLProtocolTransport.get_write_buffer_limits` в `asyncio.sslproto`
- [gh-99248](https://python-all.ru/3/whatsnew/changelog.html): исправлена ошибка с отрицательными числами в verify()
- [gh-99155](https://python-all.ru/3/whatsnew/changelog.html): исправлена [`statistics.NormalDist`](https://python-all.ru/3/library/statistics.html#statistics.NormalDist) pickle с протоколами `0` и `1`.
- [gh-93464](https://python-all.ru/3/whatsnew/changelog.html): `enum.auto()` теперь корректно активируется при сочетании с другими значениями присваивания. Например, `ONE = auto(), 'some text'` теперь вычисляется как `(1, 'some text')`.
- [gh-99134](https://python-all.ru/3/whatsnew/changelog.html): обновлена встроенная копия pip до версии 22.3.1.
- [gh-92584](https://python-all.ru/3/whatsnew/changelog.html): удалён пакет `distutils`. Он был объявлен устаревшим в Python 3.10 с помощью [**PEP 632**](https://python-all.ru/3/whatsnew/changelog.html) «Deprecate distutils module». Для проектов, всё ещё использующих `distutils` и не имеющих возможности перейти на другие решения, можно установить проект `setuptools`: он по-прежнему предоставляет `distutils`. Исправление от Victor Stinner.
- [gh-98999](https://python-all.ru/3/whatsnew/changelog.html): теперь `_pyio` согласован с `_io` в том, что вызывает `ValueError` при выполнении методов над закрытыми буферами.
- [gh-83004](https://python-all.ru/3/whatsnew/changelog.html): устранена утечка ссылок при неудачной инициализации модуля в `_zoneinfo`
- [gh-83004](https://python-all.ru/3/whatsnew/changelog.html): устранены утечки ссылок при неудачной инициализации модуля в `_pickle`
- [gh-83004](https://python-all.ru/3/whatsnew/changelog.html): устранена утечка ссылок при неудачной инициализации модуля в `_io`.
- [gh-98897](https://python-all.ru/3/whatsnew/changelog.html): исправлена утечка памяти в [`math.dist()`](https://python-all.ru/3/library/math.html#math.dist), когда обе точки имеют разную размерность. Исправление от Kumar Aditya.
- [gh-98878](https://python-all.ru/3/whatsnew/changelog.html): при подсказке имени в [`traceback`](https://python-all.ru/3/library/traceback.html#module-traceback) теперь используются встроенные имена фрейма, чтобы не допустить аварийного завершения, если `__builtins__` не является словарём.
- [gh-98139](https://python-all.ru/3/whatsnew/changelog.html): в `importlib._bootstrap` улучшено строковое представление пространства имён пакета до `<module 'x' (namespace) from ['path']>`.
- [gh-90352](https://python-all.ru/3/whatsnew/changelog.html): исправлено `_SelectorDatagramTransport`, чтобы наследовался от [`DatagramTransport`](https://python-all.ru/3/library/asyncio-protocol.html#asyncio.DatagramTransport) в [`asyncio`](https://python-all.ru/3/library/asyncio.html#module-asyncio). Исправление от Kumar Aditya.
- [gh-98793](https://python-all.ru/3/whatsnew/changelog.html): исправлена проверка типов аргументов в функциях `_overlapped.WSAConnect()` и `_overlapped.Overlapped.WSASendTo()`.
- [gh-98744](https://python-all.ru/3/whatsnew/changelog.html): предотвращение аварийного завершения в [`traceback`](https://python-all.ru/3/library/traceback.html#module-traceback) при получении смещения в байтах для некоторых файлов исходного кода, содержащих определённые символы Unicode.
- [gh-98740](https://python-all.ru/3/whatsnew/changelog.html): исправлена внутренняя ошибка в модуле [`re`](https://python-all.ru/3/library/re.html#module-re), которая в очень редких случаях препятствовала компиляции регулярного выражения, содержащего [условное выражение](https://python-all.ru/3/library/re.html#re-conditional-expression) без ветки else.
- [gh-98703](https://python-all.ru/3/whatsnew/changelog.html): исправлено [`asyncio.StreamWriter.drain()`](https://python-all.ru/3/library/asyncio-stream.html#asyncio.StreamWriter.drain), чтобы колбэк `protocol.connection_lost` вызывался только один раз в Windows.
- [gh-98624](https://python-all.ru/3/whatsnew/changelog.html): добавлен мьютекс в unittest.mock.NonCallableMock для защиты параллельного доступа к атрибутам моков.
- [gh-98658](https://python-all.ru/3/whatsnew/changelog.html): класс [`array.array`](https://python-all.ru/3/library/array.html#array.array) теперь поддерживает индексацию, что делает его [обобщённым типом](https://python-all.ru/3/glossary.html#term-generic-type).
- [gh-98284](https://python-all.ru/3/whatsnew/changelog.html): улучшено сообщение [`TypeError`](https://python-all.ru/3/library/exceptions.html#TypeError) для неопределённых абстрактных методов экземпляра [`abc.ABC`](https://python-all.ru/3/library/abc.html#abc.ABC). Имена отсутствующих методов теперь выделяются одинарными кавычками.
- [gh-96151](https://python-all.ru/3/whatsnew/changelog.html): разрешено использовать `BUILTINS` в качестве допустимого имени поля для замороженных датаклассов.
- [gh-98086](https://python-all.ru/3/whatsnew/changelog.html): обеспечена возможность применения `patch.dict()` к асинхронным функциям.
- [gh-72719](https://python-all.ru/3/whatsnew/changelog.html): удалены модули `asyncore` и `asynchat`, которые были объявлены устаревшими в [**PEP 594**](https://python-all.ru/3/whatsnew/changelog.html).
- [gh-96192](https://python-all.ru/3/whatsnew/changelog.html): исправлена обработка `bytes` [объектов, подобных путям](https://python-all.ru/3/glossary.html#term-path-like-object) в `os.ismount()`.
- [gh-94172](https://python-all.ru/3/whatsnew/changelog.html): [`ftplib`](https://python-all.ru/3/library/ftplib.html#module-ftplib): удалён атрибут класса `FTP_TLS.ssl_version`: используйте вместо него параметр *context*. Исправление от Victor Stinner.
- [gh-94172](https://python-all.ru/3/whatsnew/changelog.html): удалены параметры *keyfile* и *certfile* из модулей [`ftplib`](https://python-all.ru/3/library/ftplib.html#module-ftplib), [`imaplib`](https://python-all.ru/3/library/imaplib.html#module-imaplib), [`poplib`](https://python-all.ru/3/library/poplib.html#module-poplib) и [`smtplib`](https://python-all.ru/3/library/smtplib.html#module-smtplib), а также параметры *key\_file*, *cert\_file* и *check\_hostname* из модуля [`http.client`](https://python-all.ru/3/library/http.client.html#module-http.client) – все они устарели начиная с Python 3.6. Вместо них используйте параметр *context* (*ssl\_context* в `imaplib`). Исправление от Victor Stinner.
- [gh-83638](https://python-all.ru/3/whatsnew/changelog.html): добавлен атрибут [`autocommit`](https://python-all.ru/3/library/sqlite3.html#sqlite3.Connection.autocommit) к [`sqlite3.Connection`](https://python-all.ru/3/library/sqlite3.html#sqlite3.Connection) и параметр *autocommit* к [`sqlite3.connect()`](https://python-all.ru/3/library/sqlite3.html#sqlite3.connect) для управления [**PEP 249**](https://python-all.ru/3/whatsnew/changelog.html)-совместимой [обработкой транзакций](https://python-all.ru/3/library/sqlite3.html#sqlite3-transaction-control-autocommit). Исправление от Erlend E. Aasland.
- [gh-92452](https://python-all.ru/3/whatsnew/changelog.html): исправлено состояние гонки, которое могло приводить к некорректному возврату [`sysconfig.get_config_var()`](https://python-all.ru/3/library/sysconfig.html#sysconfig.get_config_var) [`None`](https://python-all.ru/3/library/constants.html#None) в многопоточных программах.
- [gh-91803](https://python-all.ru/3/whatsnew/changelog.html): исправлена ошибка при использовании метода объектов, замокированных с помощью [`unittest.mock.create_autospec()`](https://python-all.ru/3/library/unittest.mock.html#unittest.mock.create_autospec), после его запечатывания функцией [`unittest.mock.seal()`](https://python-all.ru/3/library/unittest.mock.html#unittest.mock.seal).
- [bpo-38523](https://python-all.ru/3/whatsnew/changelog.html): [`shutil.copytree()`](https://python-all.ru/3/library/shutil.html#shutil.copytree) теперь применяет аргумент *ignore\_dangling\_symlinks* рекурсивно.
- [bpo-40358](https://python-all.ru/3/whatsnew/changelog.html): добавлен аргумент walk\_up в [`pathlib.PurePath.relative_to()`](https://python-all.ru/3/library/pathlib.html#pathlib.PurePath.relative_to).
- [bpo-36267](https://python-all.ru/3/whatsnew/changelog.html): Исправление IndexError в [`argparse.ArgumentParser`](https://python-all.ru/3/library/argparse.html#argparse.ArgumentParser), когда действию `store_true` передан явный аргумент.

### Документация

- [gh-98832](https://python-all.ru/3/whatsnew/changelog.html): Изменена формулировка докстринга для [`pathlib.Path.iterdir()`](https://python-all.ru/3/library/pathlib.html#pathlib.Path.iterdir).
- [gh-97966](https://python-all.ru/3/whatsnew/changelog.html): Обновлена документация uname для уточнения особенностей атрибута platform и указания, когда он стал вычисляться при позднем связывании (late-bound).

### Тесты

- [gh-98903](https://python-all.ru/3/whatsnew/changelog.html): Набор тестов Python теперь завершается с кодом 4, если не было запущено ни одного теста. Это должно помочь в обнаружении опечаток в именах тестов и тестовых методах.
- [gh-98713](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка в тестах [`typing`](https://python-all.ru/3/library/typing.html#module-typing), где тест, полагавшийся на детали реализации CPython, не был декорирован `@cpython_only` и не пропускался на других реализациях.
- [gh-87390](https://python-all.ru/3/whatsnew/changelog.html): Добавлены тесты для распаковки со звёздочкой (star-unpacking) в соответствии с PEP 646, а также некоторые другие тесты для PEP 646.
- [gh-96853](https://python-all.ru/3/whatsnew/changelog.html): Возвращено явное покрытие тестами `Py_Initialize` (а значит и `Py_InitializeEx`) в тесты встраивания (все остальные тесты встраивания были перенесены на `Py_InitializeFromConfig` в Python 3.11).
- [bpo-34272](https://python-all.ru/3/whatsnew/changelog.html): Некоторые тесты C API были перемещены в новый каталог Lib/test/test\_capi/.

### Сборка

- [gh-99086](https://python-all.ru/3/whatsnew/changelog.html): Исправление предупреждения компилятора `-Wimplicit-int` в проверке `PTHREAD_SCOPE_SYSTEM` на этапе **configure**.
- [gh-99016](https://python-all.ru/3/whatsnew/changelog.html): Исправление сборки с `PYTHON_FOR_REGEN=python3.8`.
- [gh-97731](https://python-all.ru/3/whatsnew/changelog.html): Указание полного пути к исходному расположению для `make docclean` (необходимо для кросс-сборок).
- [gh-98949](https://python-all.ru/3/whatsnew/changelog.html): Удалена неиспользуемая зависимость сборки от `readelf`.
- [gh-98989](https://python-all.ru/3/whatsnew/changelog.html): Использовать `python3.11`, если доступен, для регенерации и заморозки (freezing).
- [gh-98831](https://python-all.ru/3/whatsnew/changelog.html): Добавлен новый инструментарий, в `Tools/cases_generator`, для генерации оператора switch интерпретатора из списка определений опкодов. Это влияет только на добавление, изменение или удаление определений инструкций. Определения инструкций теперь находятся в `Python/bytecodes.c` в виде [пользовательского DSL (в разработке)](https://python-all.ru/3/whatsnew/changelog.html). Инструментарий читает этот файл и записывает `Python/generated_cases.c.h`, который затем включается `Python/ceval.c` для предоставления большинства ветвей основного switch интерпретатора.
- [gh-98817](https://python-all.ru/3/whatsnew/changelog.html): Удалён PCbuild/lib.pyproj: он ни для чего не используется, представляет лишь незначительное удобство для пользователей Visual Studio (которые, вероятно, в большинстве даже не знают о нём) и требует больших усилий по поддержке в актуальном состоянии.
- [gh-98776](https://python-all.ru/3/whatsnew/changelog.html): Исправление `make regen-test-levenshtein` для сборок вне дерева исходников (out-of-tree builds).
- [gh-98707](https://python-all.ru/3/whatsnew/changelog.html): Не использовать поставляемые (vendored) заголовки `libmpdec`, если [`--with-system-libmpdec`](https://python-all.ru/3/using/configure.html#cmdoption-with-system-libmpdec) передан **configure**. Не использовать поставляемые заголовки `libexpat`, если [`--with-system-expat`](https://python-all.ru/3/using/configure.html#cmdoption-with-system-expat) передан **configure**.

### Windows

- [gh-98689](https://python-all.ru/3/whatsnew/changelog.html): Обновление сборок Windows до zlib v1.2.13. В v1.2.12 есть [**CVE 2022-37434**](https://python-all.ru/3/whatsnew/changelog.html), но уязвимый `inflateGetHeader` API не используется в Python.
- [gh-98790](https://python-all.ru/3/whatsnew/changelog.html): Предполагается, что отсутствие каталога `DLLs` означает, что стандартные модули расширения находятся в каталоге исполняемого файла.
- [gh-98745](https://python-all.ru/3/whatsnew/changelog.html): Обновление `py.exe` лаунчера для установки 3.11 по умолчанию и 3.12 по запросу.
- [gh-98692](https://python-all.ru/3/whatsnew/changelog.html): Исправление [менеджера установки Python](https://python-all.ru/3/using/windows.html#launcher), который игнорировал нераспознанные shebang-строки вместо обработки их как локальных путей
- [gh-94328](https://python-all.ru/3/whatsnew/changelog.html): Обновление установщика Windows для использования SQLite 3.39.4.

### macOS

- [gh-94328](https://python-all.ru/3/whatsnew/changelog.html): Обновление установщика macOS до SQLite 3.39.4.

### C API

- [gh-98724](https://python-all.ru/3/whatsnew/changelog.html): Макросы [`Py_CLEAR`](https://python-all.ru/3/c-api/refcounting.html#c.Py_CLEAR), [`Py_SETREF`](https://python-all.ru/3/c-api/refcounting.html#c.Py_SETREF) и [`Py_XSETREF`](https://python-all.ru/3/c-api/refcounting.html#c.Py_XSETREF) теперь вычисляют свой аргумент только один раз. Если аргумент имеет побочные эффекты, эти побочные эффекты больше не дублируются. Патч от Victor Stinner.
- [gh-98978](https://python-all.ru/3/whatsnew/changelog.html): Исправление use-after-free (использование после освобождения) в вызовах функций `Py_SetPythonHome(NULL)`, `Py_SetProgramName(NULL)` и `_Py_SetProgramFullPath(NULL)`. Проблема сообщена Benedikt Reinartz. Патч от Victor Stinner.
- [gh-98410](https://python-all.ru/3/whatsnew/changelog.html): Добавление `getbufferproc` и `releasebufferproc` в стабильный API.
- [gh-98610](https://python-all.ru/3/whatsnew/changelog.html): Некоторые настраиваемые возможности суб-интерпретаторов изменились. Теперь они всегда разрешают подпроцессы ([`subprocess`](https://python-all.ru/3/library/subprocess.html#module-subprocess)), тогда как раньше подпроцессы могли быть опционально запрещены для суб-интерпретатора. Вместо этого теперь можно запретить `os.exec()`. Поддержка запрета фоновых потоков (daemon threads) теперь реализована. Запрет всех потоков по-прежнему разрешен, но по умолчанию никогда не применяется. Обратите внимание, что опциональные ограничения доступны только через `_Py_NewInterpreterFromConfig()`, который не является публичным API. Они не затрагивают главный интерпретатор, а также [`Py_NewInterpreter()`](https://python-all.ru/3/c-api/subinterpreters.html#c.Py_NewInterpreter).
- [gh-98608](https://python-all.ru/3/whatsnew/changelog.html): Добавлен `_PyInterpreterConfig`, а `_Py_NewInterpreter()` переименован в `_Py_NewInterpreterFromConfig()`. Аргумент «isolated\_subinterpreters» теперь представляет собой детальную конфигурацию, которая отражает предыдущее поведение. Обратите внимание, что это всё «приватный» API.
- [gh-96853](https://python-all.ru/3/whatsnew/changelog.html): `Py_InitializeEx` теперь корректно вызывает `PyConfig_Clear` после инициализации интерпретатора (пропуск не приводил к утечке памяти только потому, что ни одно из динамически выделяемых полей конфигурации не заполняется функцией-обёрткой).
- [gh-91248](https://python-all.ru/3/whatsnew/changelog.html): Добавлены функции [`PyFrame_GetVar()`](https://python-all.ru/3/c-api/frame.html#c.PyFrame_GetVar) и [`PyFrame_GetVarString()`](https://python-all.ru/3/c-api/frame.html#c.PyFrame_GetVarString) для получения переменной фрейма по её имени. Патч от Victor Stinner.

## Python 3.12.0 alpha 1

*Дата выпуска: 2022-10-25*

### Безопасность

- [gh-97616](https://python-all.ru/3/whatsnew/changelog.html): Исправлено умножение списка на целое число (`list *= int`): теперь обнаруживается целочисленное переполнение, когда новая выделенная длина близка к максимальному размеру. Проблема сообщена Jordan Limor. Патч от Victor Stinner.
- [gh-97514](https://python-all.ru/3/whatsnew/changelog.html): В Linux модуль [`multiprocessing`](https://python-all.ru/3/library/multiprocessing.html#module-multiprocessing) возвращается к использованию доменных сокетов Unix, основанных на файловой системе, для связи с процессом *forkserver* вместо пространства имён абстрактных сокетов Linux. Это затрагивает только код, который выбирает использование метода запуска ["forkserver"](https://python-all.ru/3/library/multiprocessing.html#multiprocessing-start-methods).

  Абстрактные сокеты не имеют прав доступа и могли позволить любому пользователю в том же [сетевом пространстве имён](https://python-all.ru/3/whatsnew/changelog.html) (часто во всей системе) внедрить код в процесс *forkserver* модуля multiprocessing. Это было потенциальным повышением привилегий. Права доступа к сокетам на основе файловой системы ограничивают это пользователем процесса *forkserver*, как было по умолчанию в Python 3.8 и ранее.

  Это предотвращает [**CVE 2022-42919**](https://python-all.ru/3/whatsnew/changelog.html) в Linux.
- [gh-87389](https://python-all.ru/3/whatsnew/changelog.html): [`http.server`](https://python-all.ru/3/library/http.server.html#module-http.server): Исправлена уязвимость открытого перенаправления в HTTP-сервере, когда путь URI начинается с `//`. Уязвимость обнаружена и первоначальное исправление предложено Hamza Avvan.
- [gh-79096](https://python-all.ru/3/whatsnew/changelog.html): LWPCookieJar и MozillaCookieJar создают файлы с правами доступа 600 вместо 644 (Microsoft Windows не затронут).
- [gh-92888](https://python-all.ru/3/whatsnew/changelog.html): Исправлено `memoryview` использование после освобождения (use-after-free) при доступе к резервному буферу в определённых случаях.
- [gh-68966](https://python-all.ru/3/whatsnew/changelog.html): Устаревший модуль mailcap теперь отказывается вставлять небезопасный текст (имена файлов, MIME-типы, параметры) в команды оболочки. Вместо использования такого текста он выдаёт предупреждение и действует так, как если бы совпадение не было найдено (или для тестовых команд – как будто тест провалился).

### Ядро и встроенные модули

- [gh-98374](https://python-all.ru/3/whatsnew/changelog.html): Подавление ImportError для недопустимого запроса команды help(). Патч от Donghee Na.
- [gh-98461](https://python-all.ru/3/whatsnew/changelog.html): Исправлено расположение в исходном коде в байт-коде для списковых, множественных и словарных включений, а также генераторных выражений.
- [gh-98354](https://python-all.ru/3/whatsnew/changelog.html): Добавлена проверка Unicode для атрибута `name` аргумента `spec`, передаваемого в функцию `_imp.create_builtin()`.
- [gh-98398](https://python-all.ru/3/whatsnew/changelog.html): Исправлено расположение в исходном коде байт-кода 'assert'.
- [gh-98390](https://python-all.ru/3/whatsnew/changelog.html): Исправлено расположение подвыражений логических выражений путём сокращения их области до области подвыражения.
- [gh-98254](https://python-all.ru/3/whatsnew/changelog.html): Модули из стандартной библиотеки теперь потенциально предлагаются в сообщениях об ошибках, выводимых интерпретатором, когда [`NameError`](https://python-all.ru/3/library/exceptions.html#NameError) всплывает на верхний уровень. Патч от Pablo Galindo.
- [gh-97997](https://python-all.ru/3/whatsnew/changelog.html): Добавлено смещение текущего столбца в состояние токенизатора, чтобы избежать вычисления информации о столбцах AST с помощью арифметики указателей.
- [gh-97973](https://python-all.ru/3/whatsnew/changelog.html): Изменён токенизатор, чтобы он возвращал всю необходимую информацию, которая нужна парсеру для установки информации о расположении в узлах AST, так что парсеру не придётся вычислять её с помощью арифметики указателей.

### Библиотека

- [gh-96078](https://python-all.ru/3/whatsnew/changelog.html): [`os.sched_yield()`](https://python-all.ru/3/library/os.html#os.sched_yield) теперь освобождает GIL при вызове sched\_yield(2). Патч от Donghee Na.
- [gh-97955](https://python-all.ru/3/whatsnew/changelog.html): Миграция [`zoneinfo`](https://python-all.ru/3/library/zoneinfo.html#module-zoneinfo) на Argument Clinic.

### Ядро и встроенные модули

- [gh-97912](https://python-all.ru/3/whatsnew/changelog.html): Компилятор теперь избегает квадратичного поведения при определении того, какие инструкции должны использовать опкод [`LOAD_FAST_CHECK`](https://python-all.ru/3/library/dis.html#opcode-LOAD_FAST_CHECK).
- [gh-97002](https://python-all.ru/3/whatsnew/changelog.html): Исправлена проблема, при которой несколько объектов фрейма могли быть связаны с одним и тем же фреймом интерпретатора, что потенциально приводило к повреждению памяти и жёстким крахам интерпретатора.
- [gh-97943](https://python-all.ru/3/whatsnew/changelog.html): Исправление ошибки: [`PyFunction_GetAnnotations()`](https://python-all.ru/3/c-api/function.html#c.PyFunction_GetAnnotations) должна возвращать заимствованную ссылку (borrowed reference). Ранее она возвращала новую ссылку (new reference).
- [gh-97922](https://python-all.ru/3/whatsnew/changelog.html): Сборщик мусора теперь запускается только по механизму eval breaker цикла выполнения байт-кода Python, а не при выделении объектов. GC также может запускаться при вызове [`PyErr_CheckSignals()`](https://python-all.ru/3/c-api/exceptions.html#c.PyErr_CheckSignals), чтобы расширения на C, которым необходимо долго работать без выполнения какого-либо кода Python, также имели возможность периодически запускать GC.
- [gh-65961](https://python-all.ru/3/whatsnew/changelog.html): Если `__package__` отличается от `__spec__.parent`, возбуждается `DeprecationWarning` вместо `ImportWarning`.

  Также удалён `importlib.util.set_package()`, который был запланирован к удалению.
- [gh-97850](https://python-all.ru/3/whatsnew/changelog.html): Давно устаревший `module_repr()` теперь полностью исключён.
- [gh-86298](https://python-all.ru/3/whatsnew/changelog.html): В случаях, когда `warnings.warn_explicit()` обращается к загрузчику модуля, выдаётся `DeprecationWarning`, если `m.__loader__` отличается от `m.__spec__.loader`.
- [gh-97779](https://python-all.ru/3/whatsnew/changelog.html): Все объекты фреймов Python теперь создаются на основе «полных» фреймов.
- [gh-91052](https://python-all.ru/3/whatsnew/changelog.html): Добавлен API для подписки на события изменения выбранных словарей.
- [gh-97752](https://python-all.ru/3/whatsnew/changelog.html): Исправлена возможная потеря данных или сбои при доступе к члену `f_back` вновь созданных фреймов генераторов или корутин.
- [gh-97591](https://python-all.ru/3/whatsnew/changelog.html): Исправлена отсутствующая пара incref/decref в `Exception.__setstate__()`. Патч от Ofey Chan.
- [gh-97670](https://python-all.ru/3/whatsnew/changelog.html): Удалены функция `sys.getdxp()` и скрипт `Tools/scripts/analyze_dxp.py`. DXP расшифровывается как «динамические пары выполнения». Они были связаны с макросами `DYNAMIC_EXECUTION_PROFILE` и `DXPAIRS`, которые удалены в Python 3.11. Теперь Python можно собрать с [`./configure --enable-pystats`](https://python-all.ru/3/using/configure.html#cmdoption-enable-pystats) для сбора статистики по опкодам Python. Патч от Victor Stinner.
- [gh-94526](https://python-all.ru/3/whatsnew/changelog.html): Исправлена конфигурация путей Python, используемая для инициализации [`sys.path`](https://python-all.ru/3/library/sys.html#sys.path) при запуске Python. Пути больше не кодируются в UTF-8/strict, чтобы избежать ошибок кодирования при наличии суррогатных символов (байтовые пути декодируются с помощью обработчика ошибок surrogateescape). Патч от Victor Stinner.
- [gh-96670](https://python-all.ru/3/whatsnew/changelog.html): Парсер теперь возбуждает [`SyntaxError`](https://python-all.ru/3/library/exceptions.html#SyntaxError) при разборе исходного кода, содержащего нулевые байты. Патч от Pablo Galindo.
- [gh-96975](https://python-all.ru/3/whatsnew/changelog.html): Исправлен сбой, возникающий при вызове [`PyEval_GetFrame()`](https://python-all.ru/3/c-api/reflection.html#c.PyEval_GetFrame), когда верхний фрейм Python находится в частично инициализированном состоянии.
- [gh-96848](https://python-all.ru/3/whatsnew/changelog.html): Исправлен разбор командной строки: отклоняется опция [`-X int_max_str_digits`](https://python-all.ru/3/using/cmdline.html#cmdoption-X) без значения (недопустимо), когда переменная окружения [`PYTHONINTMAXSTRDIGITS`](https://python-all.ru/3/using/cmdline.html#envvar-PYTHONINTMAXSTRDIGITS) установлена в допустимый предел. Патч от Victor Stinner.
- [gh-95921](https://python-all.ru/3/whatsnew/changelog.html): Исправлена излишне широкая информация о позиции в исходном коде для цепочек сравнений, используемых в условиях ветвления.

### Библиотека

- [gh-96821](https://python-all.ru/3/whatsnew/changelog.html): Исправлено неопределённое поведение в `audioop.c`.

### Ядро и встроенные объекты

- [gh-96821](https://python-all.ru/3/whatsnew/changelog.html): Исправлено неопределённое поведение в `_testcapimodule.c`.
- [gh-95778](https://python-all.ru/3/whatsnew/changelog.html): Если [`ValueError`](https://python-all.ru/3/library/exceptions.html#ValueError) возбуждается из-за целого числа, превышающего предел, в сообщении об ошибке упоминается функция [`sys.set_int_max_str_digits()`](https://python-all.ru/3/library/sys.html#sys.set_int_max_str_digits). Патч от Victor Stinner.
- [gh-96387](https://python-all.ru/3/whatsnew/changelog.html): При завершении Python поток, удерживающий GIL, иногда мог вечно ждать поток (обычно демона), который запросил освобождение GIL, хотя поток уже завершился. Для устранения состояния гонки поток, запросивший освобождение GIL, теперь сбрасывает свой запрос перед выходом. Проблема обнаружена и проанализирована Mingliang ZHAO. Патч от Victor Stinner.
- [gh-96864](https://python-all.ru/3/whatsnew/changelog.html): Исправлена возможная ошибка утверждения, фатальная ошибка или [`SystemError`](https://python-all.ru/3/library/exceptions.html#SystemError), если событие трассировки строк возбуждает исключение, когда включена трассировка опкодов.
- [gh-95778](https://python-all.ru/3/whatsnew/changelog.html): Функция `PyLong_FromString` была реорганизована для повышения удобства сопровождения и расширяемости.
- [gh-96678](https://python-all.ru/3/whatsnew/changelog.html): Исправлено неопределённое поведение в C-коде при арифметике с нулевым указателем.
- [gh-96754](https://python-all.ru/3/whatsnew/changelog.html): Гарантируется, что все создаваемые объекты фреймов создаются из допустимых фреймов интерпретатора. Предотвращает появление недопустимых фреймов в трассировках стека и обработчиках сигналов.
- [gh-90997](https://python-all.ru/3/whatsnew/changelog.html): Улучшена производительность чтения и записи встроенных кэшей байт-кода на некоторых платформах.
- [gh-96751](https://python-all.ru/3/whatsnew/changelog.html): Удалён мёртвый код из опкода `CALL_FUNCTION_EX`.
- [gh-90751](https://python-all.ru/3/whatsnew/changelog.html): [`memoryview`](https://python-all.ru/3/library/stdtypes.html#memoryview) теперь поддерживает полуточные числа (half-float). Патч от Donghee Na и Antoine Pitrou.
- [gh-96678](https://python-all.ru/3/whatsnew/changelog.html): Исправлен случай неопределённого поведения в ceval.c

### Библиотека

- [gh-64373](https://python-all.ru/3/whatsnew/changelog.html): Преобразован `_functools` для использования Argument Clinic.
- [gh-96641](https://python-all.ru/3/whatsnew/changelog.html): `KeyWrapper` больше не раскрывается в `_functools`.

### Ядро и встроенные объекты

- [gh-96636](https://python-all.ru/3/whatsnew/changelog.html): Обеспечивает немедленное включение трассировки `sys.setrace()`. В предварительных версиях 3.11 некоторые события трассировки могли теряться при включении трассировки в методе `__del__` или прерывании.
- [gh-96572](https://python-all.ru/3/whatsnew/changelog.html): Исправлено использование после освобождения в режиме сборки trace refs. Исправление от Kumar Aditya.
- [gh-96611](https://python-all.ru/3/whatsnew/changelog.html): При загрузке файла с недопустимым UTF-8 внутри многострочной строки теперь выбрасывается корректное SyntaxError.
- [gh-96612](https://python-all.ru/3/whatsnew/changelog.html): Гарантирует, что неполные фреймы не отображаются в трассировках tracemalloc.
- [gh-90230](https://python-all.ru/3/whatsnew/changelog.html): Исправлены предупреждения компилятора и ошибки тестов при сборке с `--enable-pystats`.
- [gh-96587](https://python-all.ru/3/whatsnew/changelog.html): Корректно выбрасывает `SyntaxError` для групп исключений ([**PEP 654**](https://python-all.ru/3/whatsnew/changelog.html)) на версиях Python до 3.11.
- [gh-96569](https://python-all.ru/3/whatsnew/changelog.html): Устранены два случая неопределённого поведения путём добавления проверок на NULL.
- [gh-96582](https://python-all.ru/3/whatsnew/changelog.html): Исправлено возможное разыменование указателя `NULL` в `_PyThread_CurrentFrames`. Исправление от Kumar Aditya.
- [gh-91079](https://python-all.ru/3/whatsnew/changelog.html): Проверка рекурсии Python отделена от проверки рекурсии C, что снижает вероятность переполнения стека C и позволяет безопасно увеличивать лимит рекурсии.
- [gh-93911](https://python-all.ru/3/whatsnew/changelog.html): Исправлена проблема, которая могла мешать корректной специализации [`LOAD_ATTR`](https://python-all.ru/3/library/dis.html#opcode-LOAD_ATTR) при доступе к свойствам.
- [gh-96348](https://python-all.ru/3/whatsnew/changelog.html): Выдаётся DeprecationWarning при вызове [`throw()`](https://python-all.ru/3/reference/expressions.html#generator.throw), [`throw()`](https://python-all.ru/3/reference/datamodel.html#coroutine.throw) или [`athrow()`](https://python-all.ru/3/reference/expressions.html#agen.athrow) с более чем одним аргументом.
- [gh-95196](https://python-all.ru/3/whatsnew/changelog.html): Отключена некорректная сериализация (pickling) дескрипторов classmethod, реализованных на C.
- [gh-96364](https://python-all.ru/3/whatsnew/changelog.html): Исправлены текстовые сигнатуры `list.__getitem__` и `dict.__getitem__`.
- [gh-96352](https://python-all.ru/3/whatsnew/changelog.html): Исправлено отсутствие атрибутов `name` и `obj` у [`AttributeError`](https://python-all.ru/3/library/exceptions.html#AttributeError) в [`object.__getattribute__()`](https://python-all.ru/3/reference/datamodel.html#object.__getattribute__). Исправление от Philip Georgi.
- [gh-93554](https://python-all.ru/3/whatsnew/changelog.html): Изменены опкоды переходов так, чтобы все условные переходы были прямыми. Обратные переходы преобразуются ассемблером в условный прямой переход, целью которого является блок fallthrough (с инвертированным условием), за которым следует безусловный обратный переход. Например:

  `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](https://python-all.ru/3/whatsnew/changelog.html): При загрузке файла с недопустимым UTF-8 теперь сообщается о повреждённом символе в правильной позиции.
- [gh-96237](https://python-all.ru/3/whatsnew/changelog.html): Внутреннее поле `_PyInterpreterFrame.f_func` переименовано в `_PyInterpreterFrame.f_funcobj` и может быть любым объектом. Поля `f_globals` и `f_builtin` могут содержать мусорные значения.

  Безопаснее всего обращаться со структурой `_PyInterpreterFrame` как с непрозрачной.
- [gh-96187](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка, из-за которой `_PyCode_GetExtra` возвращал мусор для отрицательных индексов. Исправление от Pablo Galindo.
- [gh-96143](https://python-all.ru/3/whatsnew/changelog.html): Добавлена новая опция командной строки `-X perf` Python, а также функции [`sys.activate_stack_trampoline()`](https://python-all.ru/3/library/sys.html#sys.activate_stack_trampoline) и [`sys.deactivate_stack_trampoline()`](https://python-all.ru/3/library/sys.html#sys.deactivate_stack_trampoline) в модуле [`sys`](https://python-all.ru/3/library/sys.html#module-sys), которые позволяют включать/отключать интерпретатор таким образом, чтобы профилировщик `perf` Linux мог обнаруживать вызовы Python. Новая функция [`sys.is_stack_trampoline_active()`](https://python-all.ru/3/library/sys.html#sys.is_stack_trampoline_active) позволяет запрашивать состояние trampoline perf. Дизайн: Pablo Galindo. Исправление от Pablo Galindo и Christian Heimes с участием Gregory P. Smith \[Google\] и Mark Shannon.
- [gh-96071](https://python-all.ru/3/whatsnew/changelog.html): Исправлена взаимоблокировка в [`PyGILState_Ensure()`](https://python-all.ru/3/c-api/threads.html#c.PyGILState_Ensure) при выделении нового состояния потока. Исправление от Kumar Aditya.
- [gh-96046](https://python-all.ru/3/whatsnew/changelog.html): [`PyType_Ready()`](https://python-all.ru/3/c-api/type.html#c.PyType_Ready) теперь инициализирует `ht_cached_keys` и выполняет дополнительные проверки, чтобы убедиться, что объекты типов настроены правильно. Это предотвращает сбои в сторонних пакетах, которые не используют стандартный API для создания новых типов.
- [gh-96005](https://python-all.ru/3/whatsnew/changelog.html): На WASI [`ENOTCAPABLE`](https://python-all.ru/3/library/errno.html#errno.ENOTCAPABLE) теперь отображается в [`PermissionError`](https://python-all.ru/3/library/exceptions.html#PermissionError). Модуль [`errno`](https://python-all.ru/3/library/errno.html#module-errno) предоставляет новый номер ошибки. `getpath.py` теперь игнорирует `PermissionError`, когда не может открыть ключевые файлы `pybuilddir.txt` и `pyenv.cfg`.
- [gh-93678](https://python-all.ru/3/whatsnew/changelog.html): Добавлена тестовая обвязка для прямых модульных тестов этапа оптимизации компилятора. Функция `_testinternalcapi.optimize_cfg()` запускает оптимизатор на последовательности инструкций. Класс `CfgOptimizationTestCase` в `test.support` содержит утилиты для вызова оптимизатора и проверки результата.
- [gh-95245](https://python-all.ru/3/whatsnew/changelog.html): Уменьшает размер «простого» объекта Python с 8 до 6 машинных слов за счёт перемещения указателя weakreflist в pre-header непосредственно перед указателем dict/values объекта.
- [gh-90997](https://python-all.ru/3/whatsnew/changelog.html): Компилировать виртуальные блоки [`try`](https://python-all.ru/3/reference/compound_stmts.html#try)/[`except`](https://python-all.ru/3/reference/compound_stmts.html#except) для обработки исключений, возникших во время вызовов [`close()`](https://python-all.ru/3/reference/expressions.html#generator.close) или [`throw()`](https://python-all.ru/3/reference/expressions.html#generator.throw) через приостановленный фрейм.
- [gh-95977](https://python-all.ru/3/whatsnew/changelog.html): Оптимизирован вызов [`__get__()`](https://python-all.ru/3/reference/datamodel.html#object.__get__) с помощью vectorcall. Исправление от Kumar Aditya.
- [gh-91210](https://python-all.ru/3/whatsnew/changelog.html): Улучшено сообщение об ошибке, когда параметр без значения по умолчанию следует за параметром со значением по умолчанию; теперь показывается одно и то же сообщение, даже если последовательность «без значения/со значением» предваряется только позиционными параметрами.
- [gh-95922](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка, из-за которой функция `eliminate_empty_basic_blocks` компилятора игнорировала последний блок кодовой единицы.
- [gh-95818](https://python-all.ru/3/whatsnew/changelog.html): пропускать неполные фреймы в [`PyThreadState_GetFrame()`](https://python-all.ru/3/c-api/threads.html#c.PyThreadState_GetFrame).
- [gh-95876](https://python-all.ru/3/whatsnew/changelog.html): исправлена строка форматирования в `_PyPegen_raise_error_known_location`, которая могла приводить к повреждению памяти на некоторых 64-битных системах. Функция создавала кортеж с `i` (int) вместо `n` (Py\_ssize\_t) для аргументов типа Py\_ssize\_t.
- [gh-95605](https://python-all.ru/3/whatsnew/changelog.html): исправлено вводящее в заблуждение содержимое сообщения об ошибке при преобразовании строки, состоящей только из пробельных символов, в [`float`](https://python-all.ru/3/library/functions.html#float).
- [gh-95150](https://python-all.ru/3/whatsnew/changelog.html): обновлены хеширование и сравнение объектов кода для учёта всех таблиц отладки и обработки исключений. Это исправляет проблему, из-за которой некоторые неидентичные объекты кода могли «дедуплицироваться» во время компиляции.
- [gh-91146](https://python-all.ru/3/whatsnew/changelog.html): уменьшен размер выделяемой памяти для [`list`](https://python-all.ru/3/library/stdtypes.html#list) с [`str.split()`](https://python-all.ru/3/library/stdtypes.html#str.split) и [`str.rsplit()`](https://python-all.ru/3/library/stdtypes.html#str.rsplit). Патч от Donghee Na и Inada Naoki.
- [gh-87092](https://python-all.ru/3/whatsnew/changelog.html): создана абстракция «метка целевого перехода» в компиляторе, чтобы этап генерации кода компилятора не работал напрямую с базовыми блоками. Это подготавливает код к изменениям в механизме генерации CFG.
- [gh-95355](https://python-all.ru/3/whatsnew/changelog.html): `_PyPegen_Parser_New` теперь корректно обнаруживает ошибки выделения памяти для токенов. Патч от Honglin Zhu.
- [gh-90081](https://python-all.ru/3/whatsnew/changelog.html): выполнение кода Python в функциях трассировки/профилирования на полной скорости. Исправляет замедление в ранних версиях 3.11.
- [gh-95324](https://python-all.ru/3/whatsnew/changelog.html): выводить предупреждение в режиме отладки, если объект не вызывает [`PyObject_GC_UnTrack()`](https://python-all.ru/3/c-api/gcsupport.html#c.PyObject_GC_UnTrack) перед освобождением. Патч от Pablo Galindo.
- [gh-95245](https://python-all.ru/3/whatsnew/changelog.html): объединение управляемого словаря и указателя на значения в один тегированный указатель для экономии одного слова в пре-заголовке.
- [gh-93678](https://python-all.ru/3/whatsnew/changelog.html): добавлена структура cfg\_builder и выполнен рефакторинг соответствующего кода, чтобы cfg можно было построить без экземпляра структуры компилятора.
- [gh-95185](https://python-all.ru/3/whatsnew/changelog.html): предотвращены сбои в конструкторе AST при компиляции некоторых чрезвычайно длинных выражений, таких как `"+0"*1000000`. Теперь вместо этого возбуждается [`RecursionError`](https://python-all.ru/3/library/exceptions.html#RecursionError). Патч от Pablo Galindo.
- [gh-93351](https://python-all.ru/3/whatsnew/changelog.html): позиции узлов [`ast.AST`](https://python-all.ru/3/library/ast.html#ast.AST) теперь проверяются при передаче в [`compile()`](https://python-all.ru/3/library/functions.html#compile) и другие связанные функции. При обнаружении недопустимых позиций будет возбуждено [`ValueError`](https://python-all.ru/3/library/exceptions.html#ValueError).
- [gh-94438](https://python-all.ru/3/whatsnew/changelog.html): исправлена проблема, из-за которой расширенные аргументы опкодов и некоторые условные извлечения (pop) игнорировались при вычислении допустимых целей перехода для присваиваний атрибуту `f_lineno` объектов фреймов. В некоторых случаях это могло привести к несогласованному внутреннему состоянию, вызывающему жёсткий сбой интерпретатора.
- [gh-95060](https://python-all.ru/3/whatsnew/changelog.html): недокументированная функция `PyCode_Addr2Location` теперь корректно возвращает управление, когда аргумент `addrq` меньше нуля.
- [gh-95113](https://python-all.ru/3/whatsnew/changelog.html): замена всех инструкций `EXTENDED_ARG_QUICK` на базовые инструкции [`EXTENDED_ARG`](https://python-all.ru/3/library/dis.html#opcode-EXTENDED_ARG) в неквикенном коде. Потребители неадаптивного байт-кода должны иметь возможность обрабатывать расширенные аргументы так же, как они обрабатывались в CPython 3.10 и старше.
- [gh-91409](https://python-all.ru/3/whatsnew/changelog.html): исправлена некорректная информация о местоположении в исходном коде, вызванная некоторыми оптимизациями в компиляторе байт-кода.

### Библиотека

- [gh-95023](https://python-all.ru/3/whatsnew/changelog.html): реализованы [`os.setns()`](https://python-all.ru/3/library/os.html#os.setns) и [`os.unshare()`](https://python-all.ru/3/library/os.html#os.unshare) для Linux. Патч от Noam Cohen.

### Ядро и встроенные модули

- [gh-94036](https://python-all.ru/3/whatsnew/changelog.html): исправлена некорректная информация о местоположении в исходном коде для некоторых многострочных обращений к атрибутам и вызовов методов.
- [gh-94938](https://python-all.ru/3/whatsnew/changelog.html): исправлено обнаружение ошибок в некоторых встроенных функциях, когда имя ключевого аргумента является экземпляром подкласса str с переопределёнными `__eq__` и `__hash__`. Ранее это могло вызывать SystemError или другое нежелательное поведение.

### Библиотека

- [gh-94996](https://python-all.ru/3/whatsnew/changelog.html): [`ast.parse()`](https://python-all.ru/3/library/ast.html#ast.parse) больше не будет разбирать определения функций с только позиционными параметрами, если передано `feature_version` меньше `(3, 8)`. Патч от Shantanu Jain.

### Ядро и встроенные модули

- [gh-94739](https://python-all.ru/3/whatsnew/changelog.html): разрешены переходы внутрь, из и через обработчики исключений в отладчике.

### Библиотека

- [gh-94949](https://python-all.ru/3/whatsnew/changelog.html): [`ast.parse()`](https://python-all.ru/3/library/ast.html#ast.parse) больше не будет разбирать контекстные менеджеры в скобках, если передано `feature_version` меньше `(3, 9)`. Патч от Shantanu Jain.
- [gh-94947](https://python-all.ru/3/whatsnew/changelog.html): [`ast.parse()`](https://python-all.ru/3/library/ast.html#ast.parse) больше не будет разбирать выражения присваивания при передаче `feature_version` меньше `(3, 8)`. Патч от Shantanu Jain.

### Ядро и встроенные модули

- [gh-91256](https://python-all.ru/3/whatsnew/changelog.html): гарантирует, что имя программы известно для текста справки во время запуска интерпретатора.
- [gh-94869](https://python-all.ru/3/whatsnew/changelog.html): исправлены смещения столбцов для некоторых выражений в многострочных f-строках узлов [`ast`](https://python-all.ru/3/library/ast.html#module-ast). Патч от Pablo Galindo.
- [gh-94893](https://python-all.ru/3/whatsnew/changelog.html): Исправлена проблема, при которой манипуляции с объектами фреймов могли повредить кэши встроенного байткода.
- [gh-94822](https://python-all.ru/3/whatsnew/changelog.html): Исправлена проблема, при которой поиск дескрипторов метакласса мог игнорироваться, если одноимённый атрибут также существовал в самом классе.
- [gh-91153](https://python-all.ru/3/whatsnew/changelog.html): Исправлена проблема, при которой присваивание элемента [`bytearray`](https://python-all.ru/3/library/stdtypes.html#bytearray) могло привести к краху, если размер изменялся методом `__index__()` нового значения.
- [gh-90699](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка подсчёта ссылок в `bool.__repr__()`. Исправление от Kumar Aditya.
- [gh-94694](https://python-all.ru/3/whatsnew/changelog.html): Исправлена проблема, которая могла приводить к появлению вводящей в заблуждение или неверной информации о смещении колонок в коде с многострочным поиском методов. В некоторых случаях (при компиляции вручную построенного AST) это могло приводить к жёсткому краху интерпретатора.
- [gh-93252](https://python-all.ru/3/whatsnew/changelog.html): Исправлена проблема, из-за которой внутренние фреймы продолжали существовать после неудачных вызовов функций Python, что могло приводить к утечкам памяти или жёстким крахам интерпретатора.
- [gh-94215](https://python-all.ru/3/whatsnew/changelog.html): Исправлена проблема, при которой исключения, возбуждаемые событиями построчной трассировки, приводили к тому, что фреймы оставались в недопустимом состоянии, что могло вызывать жёсткий крах интерпретатора.
- [gh-92228](https://python-all.ru/3/whatsnew/changelog.html): Отключена оптимизация встраивания маленьких выходных блоков компилятора для выходных блоков, связанных со строками исходного кода. Это исправляет ошибку, при которой отладчик не мог определить, где заканчивается обработчик исключений и начинается следующий блок кода.
- [gh-94485](https://python-all.ru/3/whatsnew/changelog.html): Номер строки инструкции `RESUME` модуля устанавливается в 0, как указано в [**PEP 626**](https://python-all.ru/3/whatsnew/changelog.html).
- [gh-94438](https://python-all.ru/3/whatsnew/changelog.html): Учитываются инструкции, которые могут помещать NULL в стек при установке номера строки в фрейме. Предотвращает некоторые (маловероятные) крахи.
- [gh-91719](https://python-all.ru/3/whatsnew/changelog.html): Перезагружать `opcode` при возбуждении `unknown opcode error` в главном цикле интерпретатора, чтобы компиляторы C могли генерировать код диспетчеризации независимо.
- [gh-94329](https://python-all.ru/3/whatsnew/changelog.html): Компиляция и выполнение кода с распаковкой очень больших последовательностей (тысячи элементов). Ранее такой код не компилировался. Теперь он компилируется и выполняется корректно.
- [gh-94360](https://python-all.ru/3/whatsnew/changelog.html): Исправлен крах токенизатора при чтении закодированных файлов с синтаксическими ошибками из `stdin` с текстом, закодированным не в UTF-8. Исправление от Pablo Galindo.
- [gh-88116](https://python-all.ru/3/whatsnew/changelog.html): Исправлена проблема при чтении номеров строк из объектов кода, если закодированные номера строк близки к `INT_MIN`. Исправление от Pablo Galindo.
- [gh-94262](https://python-all.ru/3/whatsnew/changelog.html): Не создаются объекты фреймов для неполных фреймов. Это предотвращает возможность наблюдения создания генераторов и замыканий из Python и C-расширений, восстанавливая поведение версий 3.10 и более ранних.
- [gh-94192](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка для словарных литералов с недопустимым выражением в качестве значения.
- [gh-87995](https://python-all.ru/3/whatsnew/changelog.html): Экземпляры [`types.MappingProxyType`](https://python-all.ru/3/library/types.html#types.MappingProxyType) теперь хешируемы, если хешируемо базовое отображение.
- [gh-93883](https://python-all.ru/3/whatsnew/changelog.html): Изменена стратегия отображения улучшенных местоположений ошибок в traceback. Индикаторы показываются только тогда, когда местоположение не охватывает всю строку.
- [gh-94163](https://python-all.ru/3/whatsnew/changelog.html): Добавлены инструкции [`BINARY_SLICE`](https://python-all.ru/3/library/dis.html#opcode-BINARY_SLICE) и [`STORE_SLICE`](https://python-all.ru/3/library/dis.html#opcode-STORE_SLICE) для более эффективной обработки и лучшей специализации операций среза, когда срез явно указан в исходном коде.
- [gh-94021](https://python-all.ru/3/whatsnew/changelog.html): Исправлено предупреждение о недостижимом коде в `Python/specialize.c`.
- [gh-93911](https://python-all.ru/3/whatsnew/changelog.html): Специализирована `LOAD_ATTR` для объектов с пользовательским `__getattribute__`.
- [gh-93955](https://python-all.ru/3/whatsnew/changelog.html): Улучшена производительность поиска атрибутов у объектов с пользовательскими `__getattribute__` и `__getattr__`. Исправление от Ken Jin.
- [gh-93911](https://python-all.ru/3/whatsnew/changelog.html): Специализирована `LOAD_ATTR` для атрибутов `property()`.
- [gh-93678](https://python-all.ru/3/whatsnew/changelog.html): Выполнен рефакторинг кода оптимизации компилятора, чтобы больше не требовалось передавать `struct assembler` и `struct compiler`. Вместо этого каждая функция принимает CFG и другие данные, которые ей действительно нужны. Это позволит тестировать этот код напрямую.
- [gh-93841](https://python-all.ru/3/whatsnew/changelog.html): При сборке с `-enable-pystats` добавлены функции `sys._stats_on()`, `sys._stats_off()`, `sys._stats_clear()` и `sys._stats_dump()` для сбора статистики по частям программы.
- [gh-93516](https://python-all.ru/3/whatsnew/changelog.html): Сохраняется смещение первой трассируемой инструкции в объекте кода, чтобы избежать его повторного вычисления для каждой инструкции при трассировке.
- [gh-93516](https://python-all.ru/3/whatsnew/changelog.html): Лениво создаётся таблица соответствия смещений байткода номерам строк для ускорения вычисления номеров строк при трассировке.
- [gh-89828](https://python-all.ru/3/whatsnew/changelog.html): [`types.GenericAlias`](https://python-all.ru/3/library/types.html#types.GenericAlias) больше не передаёт атрибут `__class__`. Например, `isinstance(list[int], type)` больше не возвращает `True`.
- [gh-93678](https://python-all.ru/3/whatsnew/changelog.html): Выполнен рефакторинг компилятора для уменьшения шаблонного кода и повторений.
- [gh-93671](https://python-all.ru/3/whatsnew/changelog.html): Исправлен случай экспоненциального бэктрекинга, возникающий при глубоко вложенных шаблонах последовательностей в операторах match. Исправление от Pablo Galindo.
- [gh-93662](https://python-all.ru/3/whatsnew/changelog.html): Обеспечена корректность смещений конечной колонки в многострочных вызовах методов. Ранее конечная колонка могла предшествовать смещению колонки.

### Библиотека

- [gh-93461](https://python-all.ru/3/whatsnew/changelog.html): [`importlib.invalidate_caches()`](https://python-all.ru/3/library/importlib.html#importlib.invalidate_caches) теперь удаляет записи из [`sys.path_importer_cache`](https://python-all.ru/3/library/sys.html#sys.path_importer_cache) с относительным путём в качестве имени. Это решает проблему кэширования, когда процесс меняет свою текущую рабочую директорию.

  `FileFinder` больше не вставляет точку в путь, например `/egg/./spam` теперь `/egg/spam`.

### Ядро и встроенные модули

- [gh-93621](https://python-all.ru/3/whatsnew/changelog.html): Изменён порядок инструкций байт-кода, генерируемых для [`with`](https://python-all.ru/3/reference/compound_stmts.html#with) и [`async with`](https://python-all.ru/3/reference/compound_stmts.html#async-with), чтобы уменьшить количество записей в таблице исключений.
- [gh-93533](https://python-all.ru/3/whatsnew/changelog.html): Уменьшен размер встроенного кэша для `LOAD_METHOD` на 2 байта.
- [gh-93444](https://python-all.ru/3/whatsnew/changelog.html): Удалены избыточные поля из структуры basicblock компилятора: `b_nofallthrough`, `b_exit`, `b_return`. Они легко вычисляются по опкоду последней инструкции блока.
- [gh-93429](https://python-all.ru/3/whatsnew/changelog.html): Инструкция `LOAD_METHOD` удалена. Она была снова объединена с `LOAD_ATTR`.
- [gh-93418](https://python-all.ru/3/whatsnew/changelog.html): Исправлен assert, когда в f-строке есть знак равенства '=' после выражения, но нет закрывающей скобки. Например, f"{i=".
- [gh-93382](https://python-all.ru/3/whatsnew/changelog.html): Кэшировать результат функции [`PyCode_GetCode()`](https://python-all.ru/3/c-api/code.html#c.PyCode_GetCode), чтобы восстановить поиск *O*(1) атрибута `co_code`.
- [gh-93359](https://python-all.ru/3/whatsnew/changelog.html): Обеспечена возможность компиляции пользовательских узлов [`ast`](https://python-all.ru/3/library/ast.html#module-ast) без явно указанных конечных позиций. Патч от Pablo Galindo.
- [gh-93356](https://python-all.ru/3/whatsnew/changelog.html): Код для обработчиков исключений генерируется в конце байт-кода модуля. Это позволяет избежать одного перехода, если исключение не возникло.
- [gh-93354](https://python-all.ru/3/whatsnew/changelog.html): Используется экспоненциальное откладывание (backoff) для счётчиков специализации в интерпретаторе. Это позволяет значительно уменьшить количество неудачных специализаций и избежать замедления тех частей программы, которые не подходят для специализации.
- [gh-93283](https://python-all.ru/3/whatsnew/changelog.html): Улучшено сообщение об ошибке при недопустимом синтаксисе символа преобразования в выражениях f-строк.
- [gh-93345](https://python-all.ru/3/whatsnew/changelog.html): Исправлен сбой при подстановке `TypeVar` во вложенный обобщённый псевдоним после `TypeVarTuple`.
- [gh-93223](https://python-all.ru/3/whatsnew/changelog.html): Когда инструкция байт-кода выполняет переход на безусловный переход, первая инструкция часто может быть оптимизирована для прямого перехода на цель безусловного перехода. По соображениям трассировки ранее это происходило только при наличии одинакового номера строки у обеих инструкций. Теперь это также происходит, если безусловный переход искусственный, т.е. не имеет связанного номера строки.
- [gh-84694](https://python-all.ru/3/whatsnew/changelog.html): Опция конфигурации `--experimental-isolated-subinterpreters` и макрос `EXPERIMENTAL_ISOLATED_SUBINTERPRETERS` были удалены.
- [gh-91924](https://python-all.ru/3/whatsnew/changelog.html): Исправление отладочной функции `__lltrace__`, если кодировка stdout не UTF-8. Патч от Victor Stinner.
- [gh-93040](https://python-all.ru/3/whatsnew/changelog.html): Оборачивает неиспользуемые параметры в `Objects/obmalloc.c` с помощью `Py_UNUSED`.
- [gh-93143](https://python-all.ru/3/whatsnew/changelog.html): Избегание проверок `NULL` для неинициализированных локальных переменных путём определения на этапе компиляции, какие переменные должны быть инициализированы.
- [gh-93061](https://python-all.ru/3/whatsnew/changelog.html): Обратные переходы после циклов `async for` больше не получают сомнительные номера строк.
- [gh-93065](https://python-all.ru/3/whatsnew/changelog.html): Исправлена реализация HAMT в contextvars для обработки итерации по глубоким деревьям.

  Ошибка была обнаружена и исправлена Eli Libman. Подробнее см. [MagicStack/immutables#84](https://python-all.ru/3/whatsnew/changelog.html).
- [gh-93012](https://python-all.ru/3/whatsnew/changelog.html): Добавлена новая функция [`PyType_FromMetaclass()`](https://python-all.ru/3/c-api/type.html#c.PyType_FromMetaclass), которая обобщает существующую [`PyType_FromModuleAndSpec()`](https://python-all.ru/3/c-api/type.html#c.PyType_FromModuleAndSpec) с помощью дополнительного аргумента – метакласса. Это полезно для инструментов связывания языков, где её можно использовать для перехвата операций, связанных с типами, таких как наследование или доступ к статическим атрибутам, путём указания метакласса с пользовательскими слотами.

  Важно, что [`PyType_FromMetaclass()`](https://python-all.ru/3/c-api/type.html#c.PyType_FromMetaclass) доступен в Limited API, что обеспечивает путь для миграции большего количества инструментов связывания на Stable ABI.
- [gh-93021](https://python-all.ru/3/whatsnew/changelog.html): Исправление `__text_signature__` для методов `__get__()`, реализованных на C. Патч от Jelle Zijlstra.
- [gh-89914](https://python-all.ru/3/whatsnew/changelog.html): Операнд инструкции `YIELD_VALUE` устанавливается равным глубине стека. Это сделано для улучшения обработки фреймов на `yield` и может помочь отладчикам.
- [gh-92955](https://python-all.ru/3/whatsnew/changelog.html): Исправлена утечка памяти в итераторах строк и позиций объекта кода, так как они не финализировались при завершении. Патч от Kumar Aditya.
- [gh-92930](https://python-all.ru/3/whatsnew/changelog.html): Исправлен сбой в `_pickle.c` при изменении коллекций во время `__reduce__` или `persistent_id`.
- [gh-90690](https://python-all.ru/3/whatsnew/changelog.html): Инструкция PRECALL удалена. Она давала лишь небольшое преимущество для специализации и не нужна в подавляющем большинстве случаев.
- [gh-92914](https://python-all.ru/3/whatsnew/changelog.html): Всегда округлять выделяемый размер для списков до ближайшего чётного числа.
- [gh-92858](https://python-all.ru/3/whatsnew/changelog.html): Улучшено сообщение об ошибке для некоторых блоков, содержащих синтаксическую ошибку перед ':'.
- [gh-90473](https://python-all.ru/3/whatsnew/changelog.html): Уменьшено ограничение рекурсии по умолчанию на WASI для работы с ограниченным размером стека вызовов.
- [gh-92804](https://python-all.ru/3/whatsnew/changelog.html): Исправлена утечка памяти в итераторе `memoryview`, так как он не финализировался при завершении. Исправление от Kumar Aditya.
- [gh-92777](https://python-all.ru/3/whatsnew/changelog.html): Специализация `LOAD_METHOD` для объектов с ленивыми словарями. Исправление от Ken Jin.
- [gh-92658](https://python-all.ru/3/whatsnew/changelog.html): Добавлена поддержка подключения и привязки к сокетам Hyper-V на узлах и гостях Windows Hyper-V.
- [gh-92236](https://python-all.ru/3/whatsnew/changelog.html): Удалено ложное событие “LINE” при запуске генератора или корутины, видимое в функциях трассировки, реализованных на C.

### Библиотека

- [gh-91102](https://python-all.ru/3/whatsnew/changelog.html): `_warnings.warn_explicit()` портирован на Argument Clinic.

### Ядро и встроенные объекты

- [gh-92619](https://python-all.ru/3/whatsnew/changelog.html): Компилятор теперь дублирует выходной блок, только если ни одна из его инструкций не имеет номера строки (ранее проверялась только первая инструкция в блоке, что приводило к излишнему дублированию блоков).
- [gh-88750](https://python-all.ru/3/whatsnew/changelog.html): Устаревшая переменная окружения `PYTHONTHREADDEBUG`, предназначенная только для отладочной сборки, больше не выполняет никаких действий.

### Библиотека

- [gh-92261](https://python-all.ru/3/whatsnew/changelog.html): Исправлено зависание при попытке итерации по `typing.Union`.

### Ядро и встроенные объекты

- [gh-91432](https://python-all.ru/3/whatsnew/changelog.html): Специализирован опкод [`FOR_ITER`](https://python-all.ru/3/library/dis.html#opcode-FOR_ITER) с использованием механизма PEP 659.
- [gh-91399](https://python-all.ru/3/whatsnew/changelog.html): Удалена дублирующаяся запись ‘{0, 0, 0, 0, 0, 0}’ в ‘Objects/unicodetype\_db.h’.
- [gh-91578](https://python-all.ru/3/whatsnew/changelog.html): Обновлено сообщение об ошибке для абстрактного класса.
- [bpo-47091](https://python-all.ru/3/whatsnew/changelog.html): Улучшена производительность повторения [`list`](https://python-all.ru/3/library/stdtypes.html#list) и [`tuple`](https://python-all.ru/3/library/stdtypes.html#tuple) за счёт использования `memcpy` для копирования данных и выполнения увеличения счётчиков ссылок за один шаг.
- [bpo-46142](https://python-all.ru/3/whatsnew/changelog.html): Вывод `--help` сделан короче за счёт переноса части информации в новые параметры командной строки `--help-env` и `--help-xoptions`. Также добавлен параметр `--help-all` для вывода полной справки.
- [bpo-42316](https://python-all.ru/3/whatsnew/changelog.html): Документированы случаи, когда выражение присваивания требует круглых скобок.

### Библиотека

- [gh-89237](https://python-all.ru/3/whatsnew/changelog.html): Исправлено зависание в Windows в `subprocess.wait_closed()` в [`asyncio`](https://python-all.ru/3/library/asyncio.html#module-asyncio) с [`ProactorEventLoop`](https://python-all.ru/3/library/asyncio-eventloop.html#asyncio.ProactorEventLoop). Исправление от Kumar Aditya.
- [gh-97928](https://python-all.ru/3/whatsnew/changelog.html): [`tkinter.Text.count()`](https://python-all.ru/3/library/tkinter.html#tkinter.Text.count) теперь вызывает исключение для параметров, начинающихся с «-», вместо того чтобы молча их игнорировать.
- [gh-98393](https://python-all.ru/3/whatsnew/changelog.html): Модуль [`os`](https://python-all.ru/3/library/os.html#module-os) больше не принимает пути, подобные байтовым строкам, такие как типы [`bytearray`](https://python-all.ru/3/library/stdtypes.html#bytearray) и [`memoryview`](https://python-all.ru/3/library/stdtypes.html#memoryview): для байтовых строк принимается только точный тип [`bytes`](https://python-all.ru/3/library/stdtypes.html#bytes). Исправление от Victor Stinner.
- [gh-98363](https://python-all.ru/3/whatsnew/changelog.html): Добавлена функция itertools.batched() для группировки данных в списки заданной длины, при этом последний список может быть короче остальных.
- [gh-98331](https://python-all.ru/3/whatsnew/changelog.html): Обновлены встроенные копии pip и setuptools до версий 22.3 и 65.5.0 соответственно.
- [gh-98307](https://python-all.ru/3/whatsnew/changelog.html): Метод [`createSocket()`](https://python-all.ru/3/library/logging.handlers.html#logging.handlers.SysLogHandler.createSocket) был добавлен в [`SysLogHandler`](https://python-all.ru/3/library/logging.handlers.html#logging.handlers.SysLogHandler).
- [gh-96035](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка в [`urllib.parse.urlparse()`](https://python-all.ru/3/library/urllib.parse.html#urllib.parse.urlparse), из-за которой некоторые номера портов, содержащие пробелы, символы подчёркивания, знаки плюса и минуса или не-ASCII цифры, некорректно принимались.
- [gh-98257](https://python-all.ru/3/whatsnew/changelog.html): Функции [`sys.setprofile()`](https://python-all.ru/3/library/sys.html#sys.setprofile) и [`sys.settrace()`](https://python-all.ru/3/library/sys.html#sys.settrace) сделаны реентерабельными. Они больше не могут завершаться ошибкой: `RuntimeError("Cannot install a trace function while another trace function is being installed")`. Исправление от Victor Stinner.
- [gh-98251](https://python-all.ru/3/whatsnew/changelog.html): Разрешено [`venv`](https://python-all.ru/3/library/venv.html#module-venv) передавать переменные `PYTHON*` в `ensurepip` и `pip`, если они не влияют на разрешение путей.
- [gh-94597](https://python-all.ru/3/whatsnew/changelog.html): Устарели методы `asyncio.AbstractEventLoopPolicy.get_child_watcher()` и `asyncio.AbstractEventLoopPolicy.set_child_watcher()`, которые будут удалены в Python 3.14. Исправление от Kumar Aditya.
- [gh-98178](https://python-all.ru/3/whatsnew/changelog.html): На macOS исправлен сбой в [`syslog.syslog()`](https://python-all.ru/3/library/syslog.html#syslog.syslog) в многопоточных приложениях. На macOS функция libc `syslog()` не является потокобезопасной, поэтому `syslog.syslog()` больше не освобождает GIL для её вызова. Исправление от Victor Stinner.
- [gh-44098](https://python-all.ru/3/whatsnew/changelog.html): Освобождение GIL при создании объектов [`mmap.mmap`](https://python-all.ru/3/library/mmap.html#mmap.mmap) на Unix.
- [gh-87730](https://python-all.ru/3/whatsnew/changelog.html): Последовательная обработка сетевых ошибок в поддержке FTP модуля urllib, чтобы тестовый набор не выдавал ошибки при наличии сети, но недоступности публичного интернета.
- [gh-94597](https://python-all.ru/3/whatsnew/changelog.html): Классы наблюдателя за дочерними процессами `MultiLoopChildWatcher`, `FastChildWatcher` и `SafeChildWatcher` устарели и будут удалены в Python 3.14. Патч от Kumar Aditya.
- [gh-98023](https://python-all.ru/3/whatsnew/changelog.html): Изменить наблюдателя за дочерними процессами по умолчанию на `PidfdChildWatcher` в Linux-системах, которые его поддерживают. Патч от Kumar Aditya.
- [gh-90985](https://python-all.ru/3/whatsnew/changelog.html): Ранее в 3.11 мы объявили `asyncio.Task.cancel("message")` устаревшим. Мы поняли, что были слишком строги, и отменили это решение.
- [gh-65961](https://python-all.ru/3/whatsnew/changelog.html): Не полагайтесь только на `__cached__` в модулях; код также будет поддерживать `__spec__.cached`.
- [gh-97646](https://python-all.ru/3/whatsnew/changelog.html): Заменить устаревшее `application/javascript` на `text/javascript` в [`mimetypes`](https://python-all.ru/3/library/mimetypes.html#module-mimetypes). См. [**RFC 9239**](https://python-all.ru/3/whatsnew/changelog.html). Патч от Noam Cohen.
- [gh-97930](https://python-all.ru/3/whatsnew/changelog.html): Применить изменения из importlib\_resources 5.8 и 5.9: `Traversable.joinpath` предоставляет конкретную реализацию. `as_file` теперь поддерживает каталоги ресурсов.
- [gh-97850](https://python-all.ru/3/whatsnew/changelog.html): Удалить устаревшие `importlib.util.set_loader()` и `importlib.util.module_for_loader()` из [`importlib.util`](https://python-all.ru/3/library/importlib.html#module-importlib.util).
- [gh-97837](https://python-all.ru/3/whatsnew/changelog.html): Изменить текст предупреждения об устаревании в [`unittest`](https://python-all.ru/3/library/unittest.html#module-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](https://python-all.ru/3/whatsnew/changelog.html): Исправляет [`AttributeError`](https://python-all.ru/3/library/exceptions.html#AttributeError), когда [`subprocess.check_output()`](https://python-all.ru/3/library/subprocess.html#subprocess.check_output) используется с аргументом `input=None` и используется один из аргументов *encoding* или *errors*.
- [gh-97008](https://python-all.ru/3/whatsnew/changelog.html): Подсказки по написанию [`NameError`](https://python-all.ru/3/library/exceptions.html#NameError) и [`AttributeError`](https://python-all.ru/3/library/exceptions.html#AttributeError), предоставляемые с [gh-82711](https://python-all.ru/3/whatsnew/changelog.html), теперь также выводятся модулем на чистом Python [`traceback`](https://python-all.ru/3/library/traceback.html#module-traceback). Тесты для этих подсказок теперь проверяют обе реализации, чтобы убедиться в их эквивалентности. Патч от Carl Friedrich Bolz-Tereick и Łukasz Langa.
- [gh-97799](https://python-all.ru/3/whatsnew/changelog.html): `dataclass` теперь использует [`inspect.get_annotations()`](https://python-all.ru/3/library/inspect.html#inspect.get_annotations) для проверки аннотаций у объектов классов.
- [gh-97781](https://python-all.ru/3/whatsnew/changelog.html): Удалены устаревшие интерфейсы в `importlib.metadata` (точки входа, доступ к которым осуществлялся как словарь, неявное создание словаря из последовательности объектов `EntryPoint`, изменяемость результата `EntryPoints`, доступ к точке входа по индексу). `entry_points` теперь имеет более простой и понятный API (возвращает `EntryPoints`).
- [gh-96827](https://python-all.ru/3/whatsnew/changelog.html): Избегать ложных трассировок из [`asyncio`](https://python-all.ru/3/library/asyncio.html#module-asyncio), когда очистка исполнителя по умолчанию задерживается до закрытия цикла событий (например, в результате прерывания с клавиатуры).
- [gh-95534](https://python-all.ru/3/whatsnew/changelog.html): `gzip.GzipFile.read()` читается на 10% быстрее.
- [gh-97592](https://python-all.ru/3/whatsnew/changelog.html): Избегать сбоя в C-версии [`asyncio.Future.remove_done_callback()`](https://python-all.ru/3/library/asyncio-future.html#asyncio.Future.remove_done_callback) при передаче некорректного аргумента.
- [gh-97639](https://python-all.ru/3/whatsnew/changelog.html): Удалить проверку `tokenize.NL` из [`tabnanny`](https://python-all.ru/3/library/tabnanny.html#module-tabnanny).
- [gh-97545](https://python-all.ru/3/whatsnew/changelog.html): Ускорить работу Semaphore.
- [gh-73588](https://python-all.ru/3/whatsnew/changelog.html): Исправить генерацию имени по умолчанию для [`tkinter.Checkbutton`](https://python-all.ru/3/library/tkinter.html#tkinter.Checkbutton). Ранее флажки в разных родительских виджетах могли иметь одно и то же краткое имя и разделять одно состояние, если аргументы “name” и “variable” не указаны. Теперь они глобально уникальны.
- [gh-96865](https://python-all.ru/3/whatsnew/changelog.html): исправить Flag на использование границы CONFORM

  Это восстанавливает предыдущее поведение Flag, разрешающее объединять флаги с непоследовательными значениями; например,

  class Skip(Flag): TWO = 2 EIGHT = 8

  Skip.TWO | Skip.EIGHT -\> \<Skip.TWO|EIGHT: 10\>
- [gh-97005](https://python-all.ru/3/whatsnew/changelog.html): Обновить встроенную библиотеку libexpat до версии 2.4.9
- [gh-85760](https://python-all.ru/3/whatsnew/changelog.html): Исправить состояние гонки в [`asyncio`](https://python-all.ru/3/library/asyncio.html#module-asyncio), когда [`process_exited()`](https://python-all.ru/3/library/asyncio-protocol.html#asyncio.SubprocessProtocol.process_exited) вызывается до [`pipe_data_received()`](https://python-all.ru/3/library/asyncio-protocol.html#asyncio.SubprocessProtocol.pipe_data_received), что приводит к неконсистентному выводу. Патч от Kumar Aditya.
- [gh-96704](https://python-all.ru/3/whatsnew/changelog.html): Передавать правильный `contextvars.Context`, когда обработчик исключения `asyncio` вызывается от имени задачи или колбэк-дескриптора. Это добавляет новый метод `Task`, `get_context`, а также новый метод `Handle` с тем же именем. Если этот метод не найден у объекта задачи (возможно, потому что это сторонняя библиотека, которая ещё не предоставляет этот метод), используется контекст, действующий на момент вызова обработчика исключения.
- [gh-96819](https://python-all.ru/3/whatsnew/changelog.html): Исправлена проверка в `multiprocessing.resource_tracker`, которая гарантирует, что длина записи в канал не превышает `PIPE_BUF`.
- [gh-95865](https://python-all.ru/3/whatsnew/changelog.html): Уменьшить использование памяти [`urllib.parse.quote_from_bytes()`](https://python-all.ru/3/library/urllib.parse.html#urllib.parse.quote_from_bytes) для больших значений.

  Автор: Dennis Sweeney.
- [gh-96741](https://python-all.ru/3/whatsnew/changelog.html): Исправлена аннотация типа для атрибута dataclass `pstats.FunctionProfile.ncalls` на `str`.
- [gh-96734](https://python-all.ru/3/whatsnew/changelog.html): Обновить базу данных [`unicodedata`](https://python-all.ru/3/library/unicodedata.html#module-unicodedata) до Unicode 15.0.0.
- [gh-96735](https://python-all.ru/3/whatsnew/changelog.html): Исправить неопределённое поведение в [`struct.unpack()`](https://python-all.ru/3/library/struct.html#struct.unpack).
- [gh-46412](https://python-all.ru/3/whatsnew/changelog.html): Улучшена производительность `bool(db)` для больших баз данных ndb/gdb. Ранее вызывался `len(db)`, который перебирал все ключи, хотя ответ (пусто или нет) становится известен после первого ключа.
- [gh-96652](https://python-all.ru/3/whatsnew/changelog.html): Исправлена реализация faulthandler для `faulthandler.register(signal, chain=True)`, если функция `sigaction()` недоступна: не вызывать предыдущий обработчик сигнала, если он равен NULL. Патч от Victor Stinner.
- [gh-68163](https://python-all.ru/3/whatsnew/changelog.html): Исправлено преобразование [`numbers.Rational`](https://python-all.ru/3/library/numbers.html#numbers.Rational) в [`float`](https://python-all.ru/3/library/functions.html#float).
- [gh-96538](https://python-all.ru/3/whatsnew/changelog.html): Ускорены функции `bisect.bisect()` за счёт использования тип-стабильности.
- [gh-96465](https://python-all.ru/3/whatsnew/changelog.html): Хеши Fraction теперь кешируются.
- [gh-96079](https://python-all.ru/3/whatsnew/changelog.html): В [`typing`](https://python-all.ru/3/library/typing.html#module-typing) исправлены отсутствующее поле `name` и неверный `__module__` в \_AnnotatedAlias.
- [gh-96415](https://python-all.ru/3/whatsnew/changelog.html): Удалён `types._cell_factory` из пространства имён модуля.
- [gh-95987](https://python-all.ru/3/whatsnew/changelog.html): Исправлен `repr` подклассов `Any`.
- [gh-96388](https://python-all.ru/3/whatsnew/changelog.html): Обход отсутствующих функций сокетов в [`socket`](https://python-all.ru/3/library/socket.html#socket.socket)’s `__repr__`.
- [gh-96385](https://python-all.ru/3/whatsnew/changelog.html): Исправлен `TypeVarTuple.__typing_prepare_subst__`. `TypeError` не возникало при использовании более одного `TypeVarTuple`, например `[*T, *V]` в подстановках псевдонимов типов.
- [gh-96142](https://python-all.ru/3/whatsnew/changelog.html): Добавлены `match_args`, `kw_only`, `slots` и `weakref_slot` в `_DataclassParams`.
- [gh-96073](https://python-all.ru/3/whatsnew/changelog.html): В [`inspect`](https://python-all.ru/3/library/inspect.html#module-inspect) исправлена излишне активная замена «`typing.`» в форматирующих аннотациях.
- [gh-89258](https://python-all.ru/3/whatsnew/changelog.html): Добавлен метод [`getChildren()`](https://python-all.ru/3/library/logging.html#logging.Logger.getChildren) в [`logging.Logger`](https://python-all.ru/3/library/logging.html#logging.Logger) для получения непосредственных дочерних логгеров логгера.
- [gh-96346](https://python-all.ru/3/whatsnew/changelog.html): Использование двойного кеширования для скомпилированных RE-шаблонов.
- [gh-96349](https://python-all.ru/3/whatsnew/changelog.html): Исправлено незначительное снижение производительности в `threading.Event.__init__()`.
- [gh-90467](https://python-all.ru/3/whatsnew/changelog.html): Исправлен `asyncio.streams.StreamReaderProtocol`, чтобы сохранять сильную ссылку на созданную задачу, предотвращая её сборку мусора.
- [gh-96172](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка в `unicodedata`: `east_asian_width` возвращал неправильное значение для неназначенных символов, а также для ещё неназначенных, но зарезервированных символов.
- [gh-96159](https://python-all.ru/3/whatsnew/changelog.html): Исправлено снижение производительности в logging.TimedRotatingFileHandler. Проверка специальных файлов выполняется только после наступления времени смены файла (rollover).
- [gh-96175](https://python-all.ru/3/whatsnew/changelog.html): Исправлен неиспользуемый параметр `localName` в классе `Attr` в [`xml.dom.minidom`](https://python-all.ru/3/library/xml.dom.minidom.html#module-xml.dom.minidom).
- [gh-96145](https://python-all.ru/3/whatsnew/changelog.html): Добавлен AttrDict в модуль json для использования с object\_hook.
- [gh-96052](https://python-all.ru/3/whatsnew/changelog.html): Исправлена обработка предупреждений компилятора (SyntaxWarning и DeprecationWarning) в [`codeop.compile_command()`](https://python-all.ru/3/library/codeop.html#codeop.compile_command) при проверке неполного ввода. Ранее выдавались предупреждения и возбуждалось исключение SyntaxError. Теперь для неполного ввода всегда возвращается `None` без вывода предупреждений.
- [gh-96125](https://python-all.ru/3/whatsnew/changelog.html): Исправлено некорректное условие, приводящее к неправильному `sys.thread_info.name` на платформах с pthread.
- [gh-96019](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка в скрипте `makeunicodedata.py`, приводящая к экономии около 13 КБ места в модуле `unicodedata`, а именно в данных разложения символов.
- [gh-95463](https://python-all.ru/3/whatsnew/changelog.html): Удалено несовместимое изменение из [bpo-28080](https://python-all.ru/3/whatsnew/changelog.html), вызвавшее регрессию, при которой игнорировалась кодировка utf8 в `ZipInfo.flag_bits`. Патч от Pablo Galindo.
- [gh-69142](https://python-all.ru/3/whatsnew/changelog.html): Добавлен код формата strftime `%:z` (генерирует смещение часового пояса с двоеточиями в качестве разделителя); см. [поведение strftime() и strptime()](https://python-all.ru/3/library/datetime.html#strftime-strptime-behavior).
- [gh-95899](https://python-all.ru/3/whatsnew/changelog.html): Исправлен [`asyncio.Runner`](https://python-all.ru/3/library/asyncio-runner.html#asyncio.Runner), чтобы [`asyncio.set_event_loop()`](https://python-all.ru/3/library/asyncio-eventloop.html#asyncio.set_event_loop) вызывался только один раз, избегая многократного вызова `attach_loop()` на дочерних наблюдателях. Патч от Kumar Aditya.
- [gh-95736](https://python-all.ru/3/whatsnew/changelog.html): Исправлен [`unittest.IsolatedAsyncioTestCase`](https://python-all.ru/3/library/unittest.html#unittest.IsolatedAsyncioTestCase), чтобы устанавливать цикл событий до вызова функций настройки. Патч от Kumar Aditya.
- [gh-95865](https://python-all.ru/3/whatsnew/changelog.html): Ускорен [`urllib.parse.quote_from_bytes()`](https://python-all.ru/3/library/urllib.parse.html#urllib.parse.quote_from_bytes) путём замены спискового включения на `map()`.
- [gh-95861](https://python-all.ru/3/whatsnew/changelog.html): Добавлена поддержка вычисления коэффициента корреляции Спирмена в существующую функцию statistics.correlation().
- [gh-95804](https://python-all.ru/3/whatsnew/changelog.html): Исправлен обработчик завершения `logging`, чтобы он учитывал `MemoryHandler.flushOnClose`.
- [gh-95704](https://python-all.ru/3/whatsnew/changelog.html): Когда задача перехватывает [`asyncio.CancelledError`](https://python-all.ru/3/library/asyncio-exceptions.html#asyncio.CancelledError) и возбуждает другую ошибку, эта другая ошибка в общем случае не должна подавляться без уведомления.
- [gh-95149](https://python-all.ru/3/whatsnew/changelog.html): Перечисление [`HTTPStatus`](https://python-all.ru/3/library/http.html#http.HTTPStatus) предоставляет несколько свойств для указания категории HTTP-статуса, например `HTTPStatus.OK.is_success`.
- [gh-95609](https://python-all.ru/3/whatsnew/changelog.html): Обновление встроенного pip до версии 22.2.2.
- [gh-95289](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка, из-за которой [`asyncio.TaskGroup`](https://python-all.ru/3/library/asyncio-task.html#asyncio.TaskGroup) не распространял исключение, когда [`asyncio.CancelledError`](https://python-all.ru/3/library/asyncio-exceptions.html#asyncio.CancelledError) заменялось другим исключением с помощью менеджера контекста. Патч от Kumar Aditya и Guido van Rossum.
- [gh-94909](https://python-all.ru/3/whatsnew/changelog.html): Исправлено некорректное объединение относительных путей Windows с дисками в инициализаторе [`pathlib.PurePath`](https://python-all.ru/3/library/pathlib.html#pathlib.PurePath).
- [gh-95385](https://python-all.ru/3/whatsnew/changelog.html): Ускорен `json.dumps()`, когда сортировка ключей не запрашивается (по умолчанию).
- [gh-83901](https://python-all.ru/3/whatsnew/changelog.html): Улучшено сообщение об ошибке [`Signature.bind`](https://python-all.ru/3/library/inspect.html#inspect.Signature.bind) для отсутствующих именованных аргументов (keyword-only).
- [gh-95339](https://python-all.ru/3/whatsnew/changelog.html): Обновление встроенного pip до версии 22.2.1.
- [gh-95045](https://python-all.ru/3/whatsnew/changelog.html): Исправлен сбой сборщика мусора (GC) при освобождении `_lsprof.Profiler` – теперь объект удаляется из отслеживания до вызова любых колбэков. Патч от Kumar Aditya.
- [gh-95231](https://python-all.ru/3/whatsnew/changelog.html): Корректная обработка ошибки, если [`EPERM`](https://python-all.ru/3/library/errno.html#errno.EPERM) или [`ENOSYS`](https://python-all.ru/3/library/errno.html#errno.ENOSYS) возникает при загрузке методов `crypt`. Это может произойти при попытке загрузить `MD5` в ядре Linux с включённым FIPS.
- [gh-95097](https://python-all.ru/3/whatsnew/changelog.html): Исправлен [`asyncio.run()`](https://python-all.ru/3/library/asyncio-runner.html#asyncio.run) для реализаций [`asyncio.Task`](https://python-all.ru/3/library/asyncio-task.html#asyncio.Task) без метода [`uncancel()`](https://python-all.ru/3/library/asyncio-task.html#asyncio.Task.uncancel). Патч от Kumar Aditya.
- [gh-95087](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка IndexError при разборе неверной даты в модуле [`email`](https://python-all.ru/3/library/email.html#module-email).
- [gh-95199](https://python-all.ru/3/whatsnew/changelog.html): Обновление встроенного setuptools до версии 63.2.0.
- [gh-95194](https://python-all.ru/3/whatsnew/changelog.html): Обновление встроенного pip до версии 22.2.
- [gh-93899](https://python-all.ru/3/whatsnew/changelog.html): Исправлена проверка существования флагов [`os.EFD_CLOEXEC`](https://python-all.ru/3/library/os.html#os.EFD_CLOEXEC), [`os.EFD_NONBLOCK`](https://python-all.ru/3/library/os.html#os.EFD_NONBLOCK) и [`os.EFD_SEMAPHORE`](https://python-all.ru/3/library/os.html#os.EFD_SEMAPHORE) на старых версиях ядра, где эти флаги отсутствуют. Патч от Kumar Aditya.
- [gh-95166](https://python-all.ru/3/whatsnew/changelog.html): Исправлен [`concurrent.futures.Executor.map()`](https://python-all.ru/3/library/concurrent.futures.html#concurrent.futures.Executor.map) – теперь он отменяет ожидание future при ошибке (например, TimeoutError или KeyboardInterrupt).
- [gh-95132](https://python-all.ru/3/whatsnew/changelog.html): Исправлен регресс в [`sqlite3`](https://python-all.ru/3/library/sqlite3.html#module-sqlite3), при котором `*args` и `**kwds` неправильно передавались из [`connect()`](https://python-all.ru/3/library/sqlite3.html#sqlite3.connect) в фабрику [`Connection`](https://python-all.ru/3/library/sqlite3.html#sqlite3.Connection). Регресс был внесён в 3.11a1 с PR 24421 ([gh-85128](https://python-all.ru/3/whatsnew/changelog.html)). Патч от Erlend E. Aasland.
- [gh-93157](https://python-all.ru/3/whatsnew/changelog.html): Исправлено: модуль [`fileinput`](https://python-all.ru/3/library/fileinput.html#module-fileinput) не поддерживал опцию `errors`, когда `inplace` истинно.
- [gh-91212](https://python-all.ru/3/whatsnew/changelog.html): Исправлено мерцание окна turtle, когда трассировщик выключен. Патч от Shin-myoung-serp.
- [gh-95077](https://python-all.ru/3/whatsnew/changelog.html): Добавлено предупреждение об устаревании для доступа `member.member` к перечислению (например, `Color.RED.BLUE`). Удалён `EnumMeta.__getattr__`.
- [gh-95109](https://python-all.ru/3/whatsnew/changelog.html): Обеспечена своевременная доставка тайм-аутов, запланированных с помощью [`asyncio.Timeout`](https://python-all.ru/3/library/asyncio-task.html#asyncio.Timeout), которые уже истекли.
- [gh-95105](https://python-all.ru/3/whatsnew/changelog.html): `wsgiref.types.InputStream.__iter__()` должен возвращать `Iterator[bytes]`, а не `Iterable[bytes]`. Патч от Shantanu Jain.
- [gh-95066](https://python-all.ru/3/whatsnew/changelog.html): Замена assert на исключение в [`ast.parse()`](https://python-all.ru/3/library/ast.html#ast.parse), когда `feature_version` содержит неверную мажорную версию. Патч от Shantanu Jain.
- [gh-77617](https://python-all.ru/3/whatsnew/changelog.html): Добавлен [`sqlite3`](https://python-all.ru/3/library/sqlite3.html#module-sqlite3) [интерфейс командной строки](https://python-all.ru/3/library/sqlite3.html#sqlite3-cli). Патч от Erlend Aasland.
- [gh-95005](https://python-all.ru/3/whatsnew/changelog.html): Замена \_PyAccu на \_PyUnicodeWriter в JSON-кодировщике и StringIO, а также удаление реализации \_PyAccu.
- [gh-90085](https://python-all.ru/3/whatsnew/changelog.html): Удаление опций командной строки `-c/--clock` и `-t/--time` утилиты [`timeit`](https://python-all.ru/3/library/timeit.html#module-timeit). Эти опции были объявлены устаревшими начиная с Python 3.3, а функциональность была удалена в Python 3.7. Патч от Shantanu Jain.
- [gh-94857](https://python-all.ru/3/whatsnew/changelog.html): Исправлена утечка ссылок (refleak) в `_io.TextIOWrapper.reconfigure`. Патч от Kumar Aditya.
- [gh-94821](https://python-all.ru/3/whatsnew/changelog.html): Исправлена привязка unix-сокета к пустому адресу в Linux – теперь используется доступный адрес из абстрактного пространства имён вместо «0».
- [gh-94736](https://python-all.ru/3/whatsnew/changelog.html): Исправлен сбой при освобождении экземпляра подкласса `_multiprocessing.SemLock`. Патч от Kumar Aditya.
- [gh-81620](https://python-all.ru/3/whatsnew/changelog.html): Добавлена функция random.binomialvariate().
- [gh-74116](https://python-all.ru/3/whatsnew/changelog.html): Разрешено ожидание [`asyncio.StreamWriter.drain()`](https://python-all.ru/3/library/asyncio-stream.html#asyncio.StreamWriter.drain) одновременно несколькими задачами. Патч от Kumar Aditya.
- [gh-87822](https://python-all.ru/3/whatsnew/changelog.html): При вызове с `capture_locals=True` функции модуля [`traceback`](https://python-all.ru/3/library/traceback.html#module-traceback) подавляют исключения, возникающие при вызовах `repr()` для локальных переменных фреймов. Это сделано, чтобы приоритет был у исходного исключения, а не у ошибок рендеринга. Вместо отсутствующего значения выводится указание на ошибку. (Патч от Simon-Martin Schroeder).
- [gh-88050](https://python-all.ru/3/whatsnew/changelog.html): Исправлен транспорт подпроцесса [`asyncio`](https://python-all.ru/3/library/asyncio.html#module-asyncio) – теперь он корректно завершает процесс, когда тот заблокирован, и избегает `RuntimeError` при закрытии цикла событий. Патч от Kumar Aditya.
- [gh-94637](https://python-all.ru/3/whatsnew/changelog.html): `SSLContext.set_default_verify_paths()` теперь освобождает GIL вокруг вызова `SSL_CTX_set_default_verify_paths`. Этот вызов функции выполняет интенсивную работу с вводом-выводом и процессором.
- [gh-94309](https://python-all.ru/3/whatsnew/changelog.html): Объявлены устаревшими псевдонимы [`typing.Hashable`](https://python-all.ru/3/library/typing.html#typing.Hashable) и [`typing.Sized`](https://python-all.ru/3/library/typing.html#typing.Sized)
- [gh-92546](https://python-all.ru/3/whatsnew/changelog.html): Недокументированный тест производительности `python -m pprint` перенесён в набор `pprint` pyperformance. Исправление от Олега Ярыгина.
- [gh-94607](https://python-all.ru/3/whatsnew/changelog.html): Исправлено создание подклассов сложных дженериков с переменными типа в [`typing`](https://python-all.ru/3/library/typing.html#module-typing). Ранее выводилось сообщение об ошибке `Some type variables ... are not listed in Generic[...]`. `typing` больше не заполняет `__parameters__` атрибутом `__parameters__` класса Python.
- [gh-94619](https://python-all.ru/3/whatsnew/changelog.html): Удалён давно устаревший `module_repr()` из [`importlib`](https://python-all.ru/3/library/importlib.html#module-importlib).
- [gh-93910](https://python-all.ru/3/whatsnew/changelog.html): Возможность обращаться к другим значениям перечисления внутри самого перечисления (например, `Color.RED.BLUE`) восстановлена для устранения регрессии производительности.
- [gh-93896](https://python-all.ru/3/whatsnew/changelog.html): Исправлено поведение [`asyncio.run()`](https://python-all.ru/3/library/asyncio-runner.html#asyncio.run) и [`unittest.IsolatedAsyncioTestCase`](https://python-all.ru/3/library/unittest.html#unittest.IsolatedAsyncioTestCase) – теперь они всегда устанавливают текущий цикл событий, как это было в Python 3.10 и ранее. Исправление от Кумара Адитьи.
- [gh-94343](https://python-all.ru/3/whatsnew/changelog.html): Разрешена установка атрибутов `reprlib.Repr` во время инициализации объекта
- [gh-94382](https://python-all.ru/3/whatsnew/changelog.html): Статические типы модуля `_multiprocessing` перенесены на heap-типы. Исправление от Кумара Адитьи.
- [gh-78724](https://python-all.ru/3/whatsnew/changelog.html): Исправлен крах в [`struct.Struct`](https://python-all.ru/3/library/struct.html#struct.Struct), когда он был не полностью инициализирован. Теперь инициализация выполняется в [`__new__()`](https://python-all.ru/3/reference/datamodel.html#object.__new__). Исправление от Кумара Адитьи.
- [gh-94510](https://python-all.ru/3/whatsnew/changelog.html): Повторные вызовы [`sys.setprofile()`](https://python-all.ru/3/library/sys.html#sys.setprofile) и [`sys.settrace()`](https://python-all.ru/3/library/sys.html#sys.settrace) теперь вызывают [`RuntimeError`](https://python-all.ru/3/library/exceptions.html#RuntimeError). Исправление от Пабло Галиндо.
- [gh-92336](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка, из-за которой [`linecache.getline()`](https://python-all.ru/3/library/linecache.html#linecache.getline) завершался ошибкой на повреждённых файлах с [`UnicodeDecodeError`](https://python-all.ru/3/library/exceptions.html#UnicodeDecodeError) или [`SyntaxError`](https://python-all.ru/3/library/exceptions.html#SyntaxError). Теперь, как указано в документации, возвращается пустая строка.
- [gh-94398](https://python-all.ru/3/whatsnew/changelog.html): После того, как [`asyncio.TaskGroup`](https://python-all.ru/3/library/asyncio-task.html#asyncio.TaskGroup) начал завершение работы (т.е. хотя бы одна задача завершилась ошибкой, и группа задач начала отмену остальных задач), добавление новых задач в группу должно быть невозможно.
- [gh-94383](https://python-all.ru/3/whatsnew/changelog.html): `xml.etree`: Удалён метод `ElementTree.Element.copy()` чистой реализации на Python, объявленный устаревшим в Python 3.10. Используйте функцию [`copy.copy()`](https://python-all.ru/3/library/copy.html#copy.copy). Реализация `xml.etree` на C не имеет метода `copy()`, только метод `__copy__()`. Исправление от Виктора Стиннера.
- [gh-94379](https://python-all.ru/3/whatsnew/changelog.html): [`zipimport`](https://python-all.ru/3/library/zipimport.html#module-zipimport): Remove `find_loader()` and `find_module()` methods, deprecated in Python 3.10: use the `find_spec()` method instead. See [**PEP 451**](https://python-all.ru/3/whatsnew/changelog.html) for the rationale. Patch by Victor Stinner.
- [gh-94352](https://python-all.ru/3/whatsnew/changelog.html): [`shlex.split()`](https://python-all.ru/3/library/shlex.html#shlex.split): Передача `None` в аргумент *s* теперь вызывает исключение, а не читает [`sys.stdin`](https://python-all.ru/3/library/sys.html#sys.stdin). Эта возможность была объявлена устаревшей в Python 3.9. Исправление от Виктора Стиннера.
- [gh-94318](https://python-all.ru/3/whatsnew/changelog.html): Удалены завершающие пробелы в текстовом выводе [`pydoc`](https://python-all.ru/3/library/pydoc.html#module-pydoc).
- [gh-89988](https://python-all.ru/3/whatsnew/changelog.html): Исправлена утечка памяти в [`pickle.Pickler`](https://python-all.ru/3/library/pickle.html#pickle.Pickler) при поиске `dispatch_table`. Исправление от Кумара Адитьи.
- [gh-90016](https://python-all.ru/3/whatsnew/changelog.html): Объявлены устаревшими [`sqlite3`](https://python-all.ru/3/library/sqlite3.html#module-sqlite3) [адаптеры и преобразователи по умолчанию](https://python-all.ru/3/library/sqlite3.html#sqlite3-default-converters). Исправление от Эрленда Э. Аасланда.
- [gh-94254](https://python-all.ru/3/whatsnew/changelog.html): Типы модуля [`struct`](https://python-all.ru/3/library/struct.html#module-struct) сделаны неизменяемыми. Исправление от Кумара Адитьи.
- [gh-93259](https://python-all.ru/3/whatsnew/changelog.html): Теперь вызывается `ValueError`, когда `None` или пустая строка передаётся в `Distribution.from_name` (и другие вызывающие функции).
- [gh-74696](https://python-all.ru/3/whatsnew/changelog.html): [`shutil.make_archive()`](https://python-all.ru/3/library/shutil.html#shutil.make_archive) теперь передаёт аргумент *root\_dir* пользовательским архиваторам, которые его поддерживают.
- [gh-94216](https://python-all.ru/3/whatsnew/changelog.html): Модуль [`dis`](https://python-all.ru/3/library/dis.html#module-dis) теперь содержит коды операций для псевдоинструкций (тех, которые используются компилятором во время генерации кода, но затем удаляются или заменяются реальными кодами операций до формирования окончательного байт-кода).
- [gh-93096](https://python-all.ru/3/whatsnew/changelog.html): Удалён недокументированный `python -m codecs`. Используйте `python -m unittest test.test_codecs.EncodedFileTest`.
- [gh-94207](https://python-all.ru/3/whatsnew/changelog.html): `_struct.Struct` теперь отслеживается сборщиком мусора (GC) для устранения утечки ссылок в модуле `_struct`.
- [gh-93096](https://python-all.ru/3/whatsnew/changelog.html): Удалён недокументированный аргумент `-t` функции `python -m base64`. Используйте `python -m unittest test.test_base64.LegacyBase64TestCase.test_encodebytes`.
- [gh-94226](https://python-all.ru/3/whatsnew/changelog.html): Удалена функция `locale.format()`, объявленная устаревшей в Python 3.7. Используйте [`locale.format_string()`](https://python-all.ru/3/library/locale.html#locale.format_string). Исправление от Виктора Стиннера.
- [gh-94199](https://python-all.ru/3/whatsnew/changelog.html): Удалена функция `ssl.match_hostname()`. Функция `ssl.match_hostname()` была объявлена устаревшей в Python 3.7. Начиная с Python 3.7 проверку имени хоста выполняет OpenSSL, поэтому Python больше не использует функцию `ssl.match_hostname()`. Исправление от Виктора Стиннера.
- [gh-94214](https://python-all.ru/3/whatsnew/changelog.html): Документирован объект `context`, используемый в классе `venv.EnvBuilder`. Также в него добавлен путь к библиотеке нового окружения.
- [gh-94199](https://python-all.ru/3/whatsnew/changelog.html): Remove the `ssl.wrap_socket()` function, deprecated in Python 3.7: instead, create a [`ssl.SSLContext`](https://python-all.ru/3/library/ssl.html#ssl.SSLContext) object and call its [`ssl.SSLContext.wrap_socket`](https://python-all.ru/3/library/ssl.html#ssl.SSLContext.wrap_socket) method. Any package that still uses `ssl.wrap_socket()` is broken and insecure. The function neither sends a SNI TLS extension nor validates server hostname. Code is subject to [**CWE 295**](https://python-all.ru/3/whatsnew/changelog.html) Improper Certificate Validation. Patch by Victor Stinner.
- [gh-94199](https://python-all.ru/3/whatsnew/changelog.html): Удалена функция `ssl.RAND_pseudo_bytes()`, объявленная устаревшей в Python 3.6. Используйте [`os.urandom()`](https://python-all.ru/3/library/os.html#os.urandom) или [`ssl.RAND_bytes()`](https://python-all.ru/3/library/ssl.html#ssl.RAND_bytes). Исправление от Виктора Стиннера.
- [gh-94199](https://python-all.ru/3/whatsnew/changelog.html): [`hashlib`](https://python-all.ru/3/library/hashlib.html#module-hashlib): Remove the pure Python implementation of [`hashlib.pbkdf2_hmac()`](https://python-all.ru/3/library/hashlib.html#hashlib.pbkdf2_hmac), deprecated in Python 3.10. Python 3.10 and newer requires OpenSSL 1.1.1 ([**PEP 644**](https://python-all.ru/3/whatsnew/changelog.html)): this OpenSSL version provides a C implementation of `pbkdf2_hmac()` which is faster. Patch by Victor Stinner.
- [gh-94196](https://python-all.ru/3/whatsnew/changelog.html): [`gzip`](https://python-all.ru/3/library/gzip.html#module-gzip): Удалён атрибут `filename` класса [`gzip.GzipFile`](https://python-all.ru/3/library/gzip.html#gzip.GzipFile), объявленный устаревшим в Python 2.6. Используйте атрибут [`name`](https://python-all.ru/3/library/gzip.html#gzip.GzipFile.name). В режиме записи атрибут `filename` добавлял расширение `'.gz'` к имени файла, если оно отсутствовало. Исправление от Виктора Стиннера.
- [gh-94182](https://python-all.ru/3/whatsnew/changelog.html): запускать `asyncio.PidfdChildWatcher` на работающем цикле событий, что позволяет циклам событий запускать подпроцессы, когда на главном потоке нет работающего цикла событий по умолчанию.
- [gh-94169](https://python-all.ru/3/whatsnew/changelog.html): Удалить `io.OpenWrapper` и `_pyio.OpenWrapper`, устаревшие в Python 3.10; вместо них используйте [`open()`](https://python-all.ru/3/library/functions.html#open). Функция `open()` ([`io.open()`](https://python-all.ru/3/library/io.html#io.open)) является встроенной. Начиная с Python 3.10, `_pyio.open()` также является статическим методом. Патч от Victor Stinner.
- [gh-91742](https://python-all.ru/3/whatsnew/changelog.html): Исправлен сбой [`pdb`](https://python-all.ru/3/library/pdb.html#module-pdb) после перехода, вызванный разыменованием нулевого указателя. Патч от Kumar Aditya.
- [gh-94101](https://python-all.ru/3/whatsnew/changelog.html): Ручное создание экземпляров [`ssl.SSLSession`](https://python-all.ru/3/library/ssl.html#ssl.SSLSession) больше не разрешено, так как это приводило к неправильно настроенным экземплярам, которые вызывали сбой интерпретатора при доступе к их атрибутам.
- [gh-84753](https://python-all.ru/3/whatsnew/changelog.html): [`inspect.iscoroutinefunction()`](https://python-all.ru/3/library/inspect.html#inspect.iscoroutinefunction), [`inspect.isgeneratorfunction()`](https://python-all.ru/3/library/inspect.html#inspect.isgeneratorfunction) и [`inspect.isasyncgenfunction()`](https://python-all.ru/3/library/inspect.html#inspect.isasyncgenfunction) теперь корректно возвращают `True` для утино-типизированных объектов, похожих на функции, например экземпляров [`unittest.mock.AsyncMock`](https://python-all.ru/3/library/unittest.mock.html#unittest.mock.AsyncMock).

  Это делает [`inspect.iscoroutinefunction()`](https://python-all.ru/3/library/inspect.html#inspect.iscoroutinefunction) согласованным с поведением `asyncio.iscoroutinefunction()`. Патч от Mehdi ABAAKOUK.
- [gh-94028](https://python-all.ru/3/whatsnew/changelog.html): Исправлена регрессия в [`sqlite3`](https://python-all.ru/3/library/sqlite3.html#module-sqlite3), когда объекты операторов не очищались и не сбрасывались должным образом после использования в итераторах курсора. Регрессия была внесена PR 27884 в Python 3.11a1. Патч от Erlend E. Aasland.
- [gh-93973](https://python-all.ru/3/whatsnew/changelog.html): Добавлен именованный аргумент `all_errors` в `asyncio.create_connection`, чтобы несколько ошибок соединения можно было вызывать как `ExceptionGroup`.
- [gh-93963](https://python-all.ru/3/whatsnew/changelog.html): Официально объявлены устаревшими классы из `importlib.abc`, перенесённые в `importlib.resources.abc`.
- [gh-93858](https://python-all.ru/3/whatsnew/changelog.html): Предотвращение ошибки при активации venv во вложенных экземплярах fish.
- [gh-93820](https://python-all.ru/3/whatsnew/changelog.html): Сериализация [`enum.Flag`](https://python-all.ru/3/library/enum.html#enum.Flag) по имени.
- [gh-93847](https://python-all.ru/3/whatsnew/changelog.html): Исправлено представление (repr) перечисления обобщённых псевдонимов.
- [gh-91404](https://python-all.ru/3/whatsnew/changelog.html): Откат утечки памяти [`re`](https://python-all.ru/3/library/re.html#module-re), когда совпадение прерывается сигналом или ошибкой выделения памяти, так как реализованное исправление вызвало значительную регрессию производительности.
- [gh-83499](https://python-all.ru/3/whatsnew/changelog.html): Исправлено двойное закрытие файлового дескриптора в [`tempfile`](https://python-all.ru/3/library/tempfile.html#module-tempfile).
- [gh-93820](https://python-all.ru/3/whatsnew/changelog.html): Исправлена регрессия при [`copy.copy()`](https://python-all.ru/3/library/copy.html#copy.copy) объектов [`enum.Flag`](https://python-all.ru/3/library/enum.html#enum.Flag) с несколькими элементами-флагами.
- [gh-79512](https://python-all.ru/3/whatsnew/changelog.html): Исправлены имена и значение `__module__` для классов [`weakref`](https://python-all.ru/3/library/weakref.html#module-weakref) таких как [`ReferenceType`](https://python-all.ru/3/library/weakref.html#weakref.ReferenceType), [`ProxyType`](https://python-all.ru/3/library/weakref.html#weakref.ProxyType), [`CallableProxyType`](https://python-all.ru/3/library/weakref.html#weakref.CallableProxyType). Это делает их сериализуемыми (pickleable).
- [gh-91389](https://python-all.ru/3/whatsnew/changelog.html): Исправлена проблема, при которой утилиты [`dis`](https://python-all.ru/3/library/dis.html#module-dis) могли сообщать об отсутствующей или неверной информации о позиции при наличии записей `CACHE`.
- [gh-93626](https://python-all.ru/3/whatsnew/changelog.html): Установить для `__future__.annotations` mandatoryRelease `None`, чтобы указать, что в настоящее время он 'TBD'.
- [gh-90473](https://python-all.ru/3/whatsnew/changelog.html): Emscripten и WASI не имеют домашнего каталога и не могут предоставить [**PEP 370**](https://python-all.ru/3/whatsnew/changelog.html) каталог пользовательского сайта.
- [gh-90494](https://python-all.ru/3/whatsnew/changelog.html): [`copy.copy()`](https://python-all.ru/3/library/copy.html#copy.copy) и [`copy.deepcopy()`](https://python-all.ru/3/library/copy.html#copy.deepcopy) теперь всегда вызывают TypeError, если `__reduce__()` возвращает кортеж длиной 6, вместо того чтобы молча игнорировать 6-й элемент или выдавать неверный результат.
- [gh-90549](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка в модуле multiprocessing, при которой глобальный именованный ресурс (например, семафор) мог утекать при порождении дочернего процесса (а не при форке).
- [gh-93521](https://python-all.ru/3/whatsnew/changelog.html): Исправлен случай, когда dataclasses пытались добавить `__weakref__` в `__slots__` для dataclass, указавшего `weakref_slot=True`, хотя он уже был определён в одном из его базовых классов. Это приводило к `TypeError` при создании нового класса.
- [gh-79579](https://python-all.ru/3/whatsnew/changelog.html): [`sqlite3`](https://python-all.ru/3/library/sqlite3.html#module-sqlite3) теперь корректно обнаруживает DML-запросы с ведущими комментариями. Патч от Erlend E. Aasland.
- [gh-93421](https://python-all.ru/3/whatsnew/changelog.html): Обновление [`sqlite3.Cursor.rowcount`](https://python-all.ru/3/library/sqlite3.html#sqlite3.Cursor.rowcount) после завершения выполнения DML-оператора. Это исправляет количество строк для SQL-запросов, таких как `UPDATE ... RETURNING`. Патч от Erlend E. Aasland.
- [gh-93475](https://python-all.ru/3/whatsnew/changelog.html): Экспорт констант `FICLONE` и `FICLONERANGE` в [`fcntl`](https://python-all.ru/3/library/fcntl.html#module-fcntl). Патч от Illia Volochii.
- [gh-93370](https://python-all.ru/3/whatsnew/changelog.html): Объявление `version` и `version_info` устаревшими.
- [gh-91810](https://python-all.ru/3/whatsnew/changelog.html): Подавление записи XML-декларации в открытых файлах в `ElementTree.write()` с `encoding='unicode'` и `xml_declaration=None`.
- [gh-91162](https://python-all.ru/3/whatsnew/changelog.html): Поддержка разделения распакованного кортежа произвольной длины на параметры `TypeVar` и `TypeVarTuple`. Например:

  - `A[T, *Ts][*tuple[int, ...]]` -\> `A[int, *tuple[int, ...]]`
  - `A[*Ts, T][*tuple[int, ...]]` -\> `A[*tuple[int, ...], int]`
- [gh-93353](https://python-all.ru/3/whatsnew/changelog.html): Исправлен контекстный менеджер [`importlib.resources.as_file()`](https://python-all.ru/3/library/importlib.resources.html#importlib.resources.as_file) для удаления временного файла, если он уничтожается поздно во время финализации Python: сохранять локальную ссылку на функцию [`os.remove()`](https://python-all.ru/3/library/os.html#os.remove). Патч от Victor Stinner.
- [gh-83658](https://python-all.ru/3/whatsnew/changelog.html): Сделать так, чтобы `multiprocessing.Pool` вызывал исключение, если `maxtasksperchild` не является `None` или положительным целым числом.
- [gh-93312](https://python-all.ru/3/whatsnew/changelog.html): Добавлен флаг [`os.PIDFD_NONBLOCK`](https://python-all.ru/3/library/os.html#os.PIDFD_NONBLOCK) для открытия файлового дескриптора процесса с [`os.pidfd_open()`](https://python-all.ru/3/library/os.html#os.pidfd_open) в неблокирующем режиме. Патч от Kumar Aditya.
- [gh-88123](https://python-all.ru/3/whatsnew/changelog.html): Реализован `Enum.__contains__`, возвращающий `True` или `False`, чтобы заменить устаревшее поведение, которое иногда вызывало [`TypeError`](https://python-all.ru/3/library/exceptions.html#TypeError).
- [gh-93297](https://python-all.ru/3/whatsnew/changelog.html): Исправлено, чтобы группы задач asyncio не допускали сборки мусора для дочерних задач
- [gh-85308](https://python-all.ru/3/whatsnew/changelog.html): Изменено [`argparse.ArgumentParser`](https://python-all.ru/3/library/argparse.html#argparse.ArgumentParser) для использования [кодировки файловой системы и обработчика ошибок](https://python-all.ru/3/glossary.html#term-filesystem-encoding-and-error-handler) вместо стандартной текстовой кодировки при чтении аргументов из файла (например, опция `fromfile_prefix_chars`). Это изменение влияет на Windows; файл аргументов должен быть закодирован в UTF-8 вместо кодовой страницы ANSI.
- [gh-93156](https://python-all.ru/3/whatsnew/changelog.html): Обращение к последовательности [`pathlib.PurePath.parents`](https://python-all.ru/3/library/pathlib.html#pathlib.PurePath.parents) абсолютного пути с использованием отрицательных индексов приводило к неверным результатам.
- [gh-93162](https://python-all.ru/3/whatsnew/changelog.html): Добавлена возможность для [`logging.config.dictConfig()`](https://python-all.ru/3/library/logging.config.html#logging.config.dictConfig) полезно настраивать [`QueueHandler`](https://python-all.ru/3/library/logging.handlers.html#logging.handlers.QueueHandler) и [`QueueListener`](https://python-all.ru/3/library/logging.handlers.html#logging.handlers.QueueListener) как пару, а также добавлены API [`logging.getHandlerByName()`](https://python-all.ru/3/library/logging.html#logging.getHandlerByName) и [`logging.getHandlerNames()`](https://python-all.ru/3/library/logging.html#logging.getHandlerNames) для доступа к обработчикам по имени.
- [gh-93243](https://python-all.ru/3/whatsnew/changelog.html): The `smtpd` module was removed per the schedule in [**PEP 594**](https://python-all.ru/3/whatsnew/changelog.html).
- [gh-92886](https://python-all.ru/3/whatsnew/changelog.html): Замена операторов `assert` на `raise AssertionError()` в `BaseHandler`, чтобы тестируемое поведение сохранялось при выполнении с оптимизациями `(-O)`.
- [gh-90155](https://python-all.ru/3/whatsnew/changelog.html): Исправлена некорректная работа [`asyncio.Semaphore`](https://python-all.ru/3/library/asyncio-sync.html#asyncio.Semaphore) при отмене acquire.
- [gh-90817](https://python-all.ru/3/whatsnew/changelog.html): Функция `locale.resetlocale()` устарела и будет удалена в Python 3.13. Используйте вместо неё `locale.setlocale(locale.LC_ALL, "")`. Патч от Victor Stinner.
- [gh-91513](https://python-all.ru/3/whatsnew/changelog.html): Добавлен атрибут `taskName` в модуль [`logging`](https://python-all.ru/3/library/logging.html#module-logging) для использования с задачами [`asyncio`](https://python-all.ru/3/library/asyncio.html#module-asyncio).
- [gh-74696](https://python-all.ru/3/whatsnew/changelog.html): [`shutil.make_archive()`](https://python-all.ru/3/library/shutil.html#shutil.make_archive) больше не меняет временно текущий рабочий каталог при создании стандартных архивов `.zip` или tar.
- [gh-92728](https://python-all.ru/3/whatsnew/changelog.html): Функция `re.template()` и соответствующие флаги `re.TEMPLATE` и `re.T` восстановлены после того, как они были удалены в 3.11.0b1, но теперь они устарели, поэтому могут быть удалены из Python 3.13.
- [gh-93033](https://python-all.ru/3/whatsnew/changelog.html): Поиск в некоторых строках (зависит от платформы: например, \[U+0xFFFF, U+0x0100\] в Windows или \[U+0xFFFFFFFF, U+0x00010000\] в Linux 64-bit) теперь выполняется до 10 раз быстрее.
- [gh-89973](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка `re.error`, возникающая в [`fnmatch`](https://python-all.ru/3/library/fnmatch.html#module-fnmatch), если шаблон содержит диапазон символов с верхней границей меньше нижней (например, `[c-a]`). Теперь такие диапазоны интерпретируются как пустые.
- [gh-93044](https://python-all.ru/3/whatsnew/changelog.html): Аргумент базы данных [`sqlite3.connect()`](https://python-all.ru/3/library/sqlite3.html#sqlite3.connect) больше не преобразуется в bytes перед передачей фабрике.
- [gh-93010](https://python-all.ru/3/whatsnew/changelog.html): В одном особом случае пакет email пытался добавить несуществующий `InvalidHeaderError` в список дефектов. Должен был быть `InvalidHeaderDefect`.
- [gh-92986](https://python-all.ru/3/whatsnew/changelog.html): Исправлено [`ast.unparse()`](https://python-all.ru/3/library/ast.html#ast.unparse), когда `ImportFrom.level` равно `None`
- [gh-92932](https://python-all.ru/3/whatsnew/changelog.html): Теперь [`dis()`](https://python-all.ru/3/library/dis.html#dis.dis) и [`get_instructions()`](https://python-all.ru/3/library/dis.html#dis.get_instructions) обрабатывают значения операндов для инструкций, перед которыми стоит `EXTENDED_ARG_QUICK`. Патч от Sam Gross и Donghee Na.
- [gh-92675](https://python-all.ru/3/whatsnew/changelog.html): Исправлено `venv.ensure_directories()` для приёма аргументов [`pathlib.Path`](https://python-all.ru/3/library/pathlib.html#pathlib.Path) в дополнение к путям [`str`](https://python-all.ru/3/library/stdtypes.html#str). Патч от David Foster.
- [gh-87901](https://python-all.ru/3/whatsnew/changelog.html): Удалён аргумент `encoding` из [`os.popen()`](https://python-all.ru/3/library/os.html#os.popen), который был добавлен в 3.11b1.
- [gh-91922](https://python-all.ru/3/whatsnew/changelog.html): Исправлена функция `sqlite.connect()` и конструктор `sqlite.Connection` на локалях, отличных от UTF-8. Кроме того, они теперь поддерживают пути в байтах, которые не декодируются текущей кодировкой файловой системы.
- [gh-92869](https://python-all.ru/3/whatsnew/changelog.html): Добавлено [`c_time_t`](https://python-all.ru/3/library/ctypes.html#ctypes.c_time_t) в [`ctypes`](https://python-all.ru/3/library/ctypes.html#module-ctypes), который имеет тот же размер, что и тип `time_t` в C.
- [gh-92839](https://python-all.ru/3/whatsnew/changelog.html): Исправлен сбой при вызове bisect.insort() или bisect.insort\_left() с аргументом key, не равным `None`.
- [gh-90473](https://python-all.ru/3/whatsnew/changelog.html): [`subprocess`](https://python-all.ru/3/library/subprocess.html#module-subprocess) теперь завершается с ошибкой на ранних этапах на платформах Emscripten и WASI для обхода отсутствия [`os.pipe()`](https://python-all.ru/3/library/os.html#os.pipe) на WASI.
- [gh-89325](https://python-all.ru/3/whatsnew/changelog.html): Удалено множество старых устаревших возможностей [`unittest`](https://python-all.ru/3/library/unittest.html#module-unittest): псевдонимы методов [`TestCase`](https://python-all.ru/3/library/unittest.html#unittest.TestCase), недокументированный и сломанный метод `TestCase` `assertDictContainsSubset`, недокументированный параметр [`TestLoader.loadTestsFromModule`](https://python-all.ru/3/library/unittest.html#unittest.TestLoader.loadTestsFromModule) *use\_load\_tests* и псевдоним класса [`TextTestResult`](https://python-all.ru/3/library/unittest.html#unittest.TextTestResult) с подчёркиванием в начале.
- [gh-92734](https://python-all.ru/3/whatsnew/changelog.html): Разрешить многоэлементные представления, выдаваемые [`reprlib`](https://python-all.ru/3/library/reprlib.html#module-reprlib), форматировать с настраиваемым отступом.
- [gh-92671](https://python-all.ru/3/whatsnew/changelog.html): Исправлено [`ast.unparse()`](https://python-all.ru/3/library/ast.html#ast.unparse) для пустых кортежей в контексте цели присваивания.
- [gh-91581](https://python-all.ru/3/whatsnew/changelog.html): [`utcfromtimestamp()`](https://python-all.ru/3/library/datetime.html#datetime.datetime.utcfromtimestamp) больше не пытается разрешать `fold` в чистой реализации на Python, поскольку fold никогда не равен 1 в UTC. В дополнение к небольшому ускорению в обычном случае это также предотвращает некоторые ошибки, когда метка времени близка к [`datetime.min`](https://python-all.ru/3/library/datetime.html#datetime.datetime.min). Патч от Paul Ganssle.
- [gh-86388](https://python-all.ru/3/whatsnew/changelog.html): Удалена функциональность randrange(), устаревшая с Python 3.10. Ранее randrange(10.0) без потерь преобразовывался в randrange(10). Теперь это вызывает TypeError. Кроме того, исключение, возникающее для нецелых значений, таких как randrange(10.5) или randrange('10'), изменено с ValueError на TypeError.
- [gh-90385](https://python-all.ru/3/whatsnew/changelog.html): Добавлен [`pathlib.Path.walk()`](https://python-all.ru/3/library/pathlib.html#pathlib.Path.walk) как альтернатива [`os.walk()`](https://python-all.ru/3/library/os.html#os.walk).
- [gh-92550](https://python-all.ru/3/whatsnew/changelog.html): Исправлено [`pathlib.Path.rglob()`](https://python-all.ru/3/library/pathlib.html#pathlib.Path.rglob) для пустого шаблона.
- [gh-92591](https://python-all.ru/3/whatsnew/changelog.html): Фильтры [`logging`](https://python-all.ru/3/library/logging.html#module-logging) теперь могут возвращать экземпляр [`logging.LogRecord`](https://python-all.ru/3/library/logging.html#logging.LogRecord), чтобы фильтры, прикреплённые к [`logging.Handler`](https://python-all.ru/3/library/logging.html#logging.Handler), могли обогащать записи без побочных эффектов на другие обработчики.
- [gh-92445](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка в [`argparse`](https://python-all.ru/3/library/argparse.html#module-argparse), когда `nargs="*"` вызывал ошибку вместо возврата пустого списка при передаче 0 аргументов, если choice также был определён в `parser.add_argument`.
- [gh-92547](https://python-all.ru/3/whatsnew/changelog.html): Удалены недокументированные возможности [`sqlite3`](https://python-all.ru/3/library/sqlite3.html#module-sqlite3), объявленные устаревшими в Python 3.10:

  - `sqlite3.enable_shared_cache()`
  - `sqlite3.OptimizedUnicode`

  Патч от Erlend E. Aasland.
- [gh-92530](https://python-all.ru/3/whatsnew/changelog.html): Исправлена проблема, возникавшая после прерывания [`threading.Condition.notify()`](https://python-all.ru/3/library/threading.html#threading.Condition.notify).
- [gh-92531](https://python-all.ru/3/whatsnew/changelog.html): Функция statistics.median\_grouped() теперь всегда возвращает число с плавающей запятой. Ранее она не преобразовывала тип входных данных для последовательностей длины 1.
- [gh-84131](https://python-all.ru/3/whatsnew/changelog.html): Устаревший метод `link_to` [`pathlib.Path`](https://python-all.ru/3/library/pathlib.html#pathlib.Path) был удалён. Вместо него используйте метод [`hardlink_to()`](https://python-all.ru/3/library/pathlib.html#pathlib.Path.hardlink_to) из Python 3.10, так как его семантика согласуется с семантикой [`symlink_to()`](https://python-all.ru/3/library/pathlib.html#pathlib.Path.symlink_to).
- [gh-89336](https://python-all.ru/3/whatsnew/changelog.html): Удалены API модуля [`configparser`](https://python-all.ru/3/library/configparser.html#module-configparser): псевдоним класса `SafeConfigParser`, свойство и параметр `ParsingError.filename`, а также метод `ConfigParser.readfp` – все они были объявлены устаревшими начиная с Python 3.2.
- [gh-92391](https://python-all.ru/3/whatsnew/changelog.html): Добавлен [`__class_getitem__()`](https://python-all.ru/3/reference/datamodel.html#object.__class_getitem__) в [`csv.DictReader`](https://python-all.ru/3/library/csv.html#csv.DictReader) и [`csv.DictWriter`](https://python-all.ru/3/library/csv.html#csv.DictWriter), что позволяет параметризовать их во время выполнения. Патч от Marc Mueller.
- [gh-91968](https://python-all.ru/3/whatsnew/changelog.html): Добавлены константы `SO_RTABLE` и `SO_USER_COOKIE` в [`socket`](https://python-all.ru/3/library/socket.html#module-socket).
- [gh-91810](https://python-all.ru/3/whatsnew/changelog.html): Метод [`write()`](https://python-all.ru/3/library/xml.etree.elementtree.html#xml.etree.ElementTree.ElementTree.write) [`ElementTree`](https://python-all.ru/3/library/xml.etree.elementtree.html#xml.etree.ElementTree.ElementTree) и функция [`tostring()`](https://python-all.ru/3/library/xml.etree.elementtree.html#xml.etree.ElementTree.tostring) теперь используют кодировку текстового файла («UTF-8», если кодировка не определена) вместо кодировки локали в XML-декларации, когда указан `encoding="unicode"`.
- [gh-81790](https://python-all.ru/3/whatsnew/changelog.html): [`os.path.splitdrive()`](https://python-all.ru/3/library/os.path.html#os.path.splitdrive) теперь поддерживает пути к устройствам DOS с ссылками UNC (начинающиеся с `\\?\UNC\`). Автор: Barney Gale.
- [gh-91760](https://python-all.ru/3/whatsnew/changelog.html): Применены более строгие правила для числовых ссылок на группы и имён групп в регулярных выражениях. Теперь в качестве числовой ссылки принимается только последовательность цифр ASCII. Имя группы в байтовых шаблонах и строках замены теперь может содержать только буквы ASCII, цифры и символ подчёркивания.
- [gh-90622](https://python-all.ru/3/whatsnew/changelog.html): Рабочие процессы для [`concurrent.futures.ProcessPoolExecutor`](https://python-all.ru/3/library/concurrent.futures.html#concurrent.futures.ProcessPoolExecutor) больше не создаются по требованию (функция, добавленная в 3.9), когда метод запуска контекста multiprocessing равен `"fork"`, так как это может привести к взаимоблокировкам в дочерних процессах из-за вызова fork во время выполнения потоков.
- [gh-91577](https://python-all.ru/3/whatsnew/changelog.html): Перенесены импорты в методах `SharedMemory` на уровень модуля, чтобы они могли выполняться на поздних этапах финализации Python.
- [gh-91581](https://python-all.ru/3/whatsnew/changelog.html): Удалён необрабатываемый случай ошибки в C-реализации вызовов [`datetime.fromtimestamp`](https://python-all.ru/3/library/datetime.html#datetime.datetime.fromtimestamp) без часового пояса (т.е. получение местного времени из метки времени эпохи). Это не должно иметь заметного для пользователя эффекта, кроме возможно более точного сообщения об ошибке при вызове с метками времени, соответствующими 10000-01-01 по местному времени. Патч от Paul Ganssle.
- [gh-91539](https://python-all.ru/3/whatsnew/changelog.html): Повышена производительность `urllib.request.getproxies_environment` при большом количестве переменных окружения
- [gh-91524](https://python-all.ru/3/whatsnew/changelog.html): Ускорена замена регулярных выражений (функции [`re.sub()`](https://python-all.ru/3/library/re.html#re.sub) и [`re.subn()`](https://python-all.ru/3/library/re.html#re.subn) и соответствующие методы [`re.Pattern`](https://python-all.ru/3/library/re.html#re.Pattern)) для строк замены, содержащих ссылки на группы, в 2–3 раза.
- [gh-91447](https://python-all.ru/3/whatsnew/changelog.html): Исправлено поведение findtext в модуле xml: теперь пустая строка возвращается только тогда, когда атрибут text имеет значение `None`.
- [gh-91456](https://python-all.ru/3/whatsnew/changelog.html): Объявлено устаревшим текущее поведение auto() по умолчанию: в версии 3.13 значением по умолчанию будет всегда возвращать наибольшее значение члена, увеличенное на 1, и возбуждать исключение при использовании несовместимых типов значений.
- [bpo-47231](https://python-all.ru/3/whatsnew/changelog.html): Исправлена проблема с непоследовательными конечными слешами в каталогах с длинными именами в tarfile.
- [bpo-39064](https://python-all.ru/3/whatsnew/changelog.html): [`zipfile.ZipFile`](https://python-all.ru/3/library/zipfile.html#zipfile.ZipFile) теперь возбуждает [`zipfile.BadZipFile`](https://python-all.ru/3/library/zipfile.html#zipfile.BadZipFile) вместо `ValueError` при чтении повреждённого zip-файла, в котором смещение центрального каталога отрицательно.
- [bpo-41287](https://python-all.ru/3/whatsnew/changelog.html): Исправлена обработка аргумента `doc` в подклассах [`property()`](https://python-all.ru/3/library/functions.html#property).
- [gh-90005](https://python-all.ru/3/whatsnew/changelog.html): Зависимость `libffi` от [`ctypes`](https://python-all.ru/3/library/ctypes.html#module-ctypes) теперь определяется с помощью `pkg-config`.
- [bpo-32547](https://python-all.ru/3/whatsnew/changelog.html): Конструкторы [`DictWriter`](https://python-all.ru/3/library/csv.html#csv.DictWriter) и [`DictReader`](https://python-all.ru/3/library/csv.html#csv.DictReader) теперь приводят аргумент `fieldnames` к [`list`](https://python-all.ru/3/library/stdtypes.html#list), если он является итератором.
- [bpo-35540](https://python-all.ru/3/whatsnew/changelog.html): Исправлен сбой [`dataclasses.asdict()`](https://python-all.ru/3/library/dataclasses.html#dataclasses.asdict), когда [`collections.defaultdict`](https://python-all.ru/3/library/collections.html#collections.defaultdict) присутствует в атрибутах.
- [bpo-47063](https://python-all.ru/3/whatsnew/changelog.html): Добавлен параметр index\_pages для поддержки использования нестандартных имён страниц индекса.
- [bpo-47025](https://python-all.ru/3/whatsnew/changelog.html): Прекращена поддержка [`bytes`](https://python-all.ru/3/library/stdtypes.html#bytes) на [`sys.path`](https://python-all.ru/3/library/sys.html#sys.path).
- [bpo-46951](https://python-all.ru/3/whatsnew/changelog.html): Упорядочено содержимое архивов zipapp для повышения воспроизводимости сборок.
- [bpo-42777](https://python-all.ru/3/whatsnew/changelog.html): Реализован [`pathlib.Path.is_mount()`](https://python-all.ru/3/library/pathlib.html#pathlib.Path.is_mount) для путей Windows.
- [bpo-46755](https://python-all.ru/3/whatsnew/changelog.html): В `QueueHandler` очищен `stack_info` из `LogRecord`, чтобы предотвратить двойную запись трассировки стека.
- [bpo-45393](https://python-all.ru/3/whatsnew/changelog.html): Исправлено форматирование для `await x` и `not x` в таблице приоритетов операторов при использовании системы [`help()`](https://python-all.ru/3/library/functions.html#help).
- [bpo-46642](https://python-all.ru/3/whatsnew/changelog.html): Улучшено сообщение об ошибке при попытке создать подкласс экземпляра [`typing.TypeVar`](https://python-all.ru/3/library/typing.html#typing.TypeVar), [`typing.ParamSpec`](https://python-all.ru/3/library/typing.html#typing.ParamSpec), [`typing.TypeVarTuple`](https://python-all.ru/3/library/typing.html#typing.TypeVarTuple) и т.д. На основе патча от Gregory Beauregard.
- [bpo-46364](https://python-all.ru/3/whatsnew/changelog.html): Использование сокетов вместо каналов для stdin подпроцессов, создаваемых [`asyncio`](https://python-all.ru/3/library/asyncio.html#module-asyncio), ограничено только платформой AIX.
- [bpo-28249](https://python-all.ru/3/whatsnew/changelog.html): Устанавливает [`doctest.DocTest.lineno`](https://python-all.ru/3/library/doctest.html#doctest.DocTest.lineno) в `None`, когда объект не имеет [`__doc__`](https://python-all.ru/3/library/stdtypes.html#definition.__doc__).
- [bpo-46197](https://python-all.ru/3/whatsnew/changelog.html): Исправлена изоляция окружения [`ensurepip`](https://python-all.ru/3/library/ensurepip.html#module-ensurepip) для подпроцесса, запускающего `pip`.
- [bpo-45924](https://python-all.ru/3/whatsnew/changelog.html): Исправлена некорректная трассировка [`asyncio`](https://python-all.ru/3/library/asyncio.html#module-asyncio) при многократном возбуждении исключения future. Исправление от Kumar Aditya.
- [bpo-45046](https://python-all.ru/3/whatsnew/changelog.html): Добавлена поддержка контекстных менеджеров в [`unittest`](https://python-all.ru/3/library/unittest.html#module-unittest): методы [`enterContext()`](https://python-all.ru/3/library/unittest.html#unittest.TestCase.enterContext) и [`enterClassContext()`](https://python-all.ru/3/library/unittest.html#unittest.TestCase.enterClassContext) класса [`TestCase`](https://python-all.ru/3/library/unittest.html#unittest.TestCase), метод [`enterAsyncContext()`](https://python-all.ru/3/library/unittest.html#unittest.IsolatedAsyncioTestCase.enterAsyncContext) класса [`IsolatedAsyncioTestCase`](https://python-all.ru/3/library/unittest.html#unittest.IsolatedAsyncioTestCase) и функция [`unittest.enterModuleContext()`](https://python-all.ru/3/library/unittest.html#unittest.enterModuleContext).
- [bpo-44173](https://python-all.ru/3/whatsnew/changelog.html): Включён быстрый поиск несжатых незашифрованных `zipfile.ZipExtFile`
- [bpo-42627](https://python-all.ru/3/whatsnew/changelog.html): Исправлен некорректный разбор настроек прокси в реестре Windows
- [bpo-42047](https://python-all.ru/3/whatsnew/changelog.html): Добавлена поддержка [`threading.get_native_id()`](https://python-all.ru/3/library/threading.html#threading.get_native_id) для DragonFly BSD. Патч от David Carlier.
- [bpo-14243](https://python-all.ru/3/whatsnew/changelog.html): Функция [`tempfile.NamedTemporaryFile`](https://python-all.ru/3/library/tempfile.html#tempfile.NamedTemporaryFile) имеет новый необязательный параметр *delete\_on\_close*
- [bpo-41246](https://python-all.ru/3/whatsnew/changelog.html): Передавать одну и ту же функцию обратного вызова для завершения перекрывающейся операции в функции `recv`, `recv_into`, `recvfrom`, `sendto`, `send` и `sendfile` внутри `IocpProactor`.
- [bpo-39264](https://python-all.ru/3/whatsnew/changelog.html): Исправлен `collections.UserDict.get()`, чтобы не вызывать [`__missing__()`](https://python-all.ru/3/reference/datamodel.html#object.__missing__), когда значение не найдено. Это соответствует поведению [`dict`](https://python-all.ru/3/library/stdtypes.html#dict). Патч от Bar Harel.
- [bpo-38693](https://python-all.ru/3/whatsnew/changelog.html): [`importlib`](https://python-all.ru/3/library/importlib.html#module-importlib) теперь использует f-строки вместо `str.format`.
- [bpo-38267](https://python-all.ru/3/whatsnew/changelog.html): Добавлен параметр *timeout* в [`asyncio.loop.shutdown_default_executor()`](https://python-all.ru/3/library/asyncio-eventloop.html#asyncio.loop.shutdown_default_executor). Значение по умолчанию – `None`, что означает, что исполнитель получит неограниченное количество времени. При вызове из [`asyncio.Runner`](https://python-all.ru/3/library/asyncio-runner.html#asyncio.Runner) или [`asyncio.run()`](https://python-all.ru/3/library/asyncio-runner.html#asyncio.run) таймаут по умолчанию составляет 5 минут.
- [bpo-34828](https://python-all.ru/3/whatsnew/changelog.html): [`sqlite3.Connection.iterdump()`](https://python-all.ru/3/library/sqlite3.html#sqlite3.Connection.iterdump) теперь обрабатывает базы данных, которые используют `AUTOINCREMENT` в одной или нескольких таблицах.
- [bpo-32990](https://python-all.ru/3/whatsnew/changelog.html): Поддержка чтения wave-файлов с форматом `WAVE_FORMAT_EXTENSIBLE` в модуле [`wave`](https://python-all.ru/3/library/wave.html#module-wave).
- [bpo-26253](https://python-all.ru/3/whatsnew/changelog.html): Разрешить настраиваемый уровень сжатия для потоков tarfile в [`tarfile.open()`](https://python-all.ru/3/library/tarfile.html#tarfile.open).

### Документация

- [gh-85525](https://python-all.ru/3/whatsnew/changelog.html): Удалена лишняя строка
- [gh-86404](https://python-all.ru/3/whatsnew/changelog.html): Устаревшие инструменты `make suspicious` и `rstlint.py` теперь удалены. Они заменены на [sphinx-lint](https://python-all.ru/3/whatsnew/changelog.html).
- [gh-97741](https://python-all.ru/3/whatsnew/changelog.html): Исправлено `!` в синтаксисе цели ссылки домена c с помощью патча `conf.py`, чтобы он работал как задумано для отключения разрешения цели ссылки.
- [gh-96432](https://python-all.ru/3/whatsnew/changelog.html): Литералы дробей теперь поддерживают пробелы вокруг косой черты `Fraction('2 / 3')`.
- [gh-96098](https://python-all.ru/3/whatsnew/changelog.html): Улучшена обнаруживаемость высокоуровневого модуля concurrent.futures за счёт предоставления более понятных ссылок из низкоуровневых модулей threading и multiprocessing.
- [gh-95957](https://python-all.ru/3/whatsnew/changelog.html): «Что нового в 3.11» теперь содержит инструкции по указанию флагов компилятора и компоновщика для Tcl/Tk и OpenSSL на RHEL 7 и CentOS 7.
- [gh-95588](https://python-all.ru/3/whatsnew/changelog.html): Уточнён противоречивый совет, данный в документации [`ast`](https://python-all.ru/3/library/ast.html#module-ast) относительно того, что [`ast.literal_eval()`](https://python-all.ru/3/library/ast.html#ast.literal_eval) «безопасен» для использования с ненадёжными входными данными, при этом предупреждающий, что он может привести к аварийному завершению процесса. Последнее утверждение верно и признано неисправимым без большого объёма работы, неподходящей для исправления ошибок. Поэтому мы оставляем предупреждение и больше не утверждаем, что `literal_eval` безопасен.
- [gh-91207](https://python-all.ru/3/whatsnew/changelog.html): Исправлена неработающая таблица стилей в документации Windows CHM htmlhelp и добавлено предупреждение о том, что она устарела. Предоставлено C.A.M. Gerlach.
- [gh-95454](https://python-all.ru/3/whatsnew/changelog.html): Заменены некорректно записанные значения true/false в документации. Патч от Robert O’Shea
- [gh-95451](https://python-all.ru/3/whatsnew/changelog.html): Обновлена документация библиотеки с [информацией о доступности](https://python-all.ru/3/library/intro.html#wasm-availability) на платформах WebAssembly `wasm32-emscripten` и `wasm32-wasi`.
- [gh-95415](https://python-all.ru/3/whatsnew/changelog.html): Использовать согласованный синтаксис для указания доступности платформы. Директива теперь поддерживает тело содержимого и выдаёт предупреждение при обнаружении неизвестной платформы.
- [gh-94321](https://python-all.ru/3/whatsnew/changelog.html): Документировать протокол типа в стиле [**PEP 246**](https://python-all.ru/3/whatsnew/changelog.html) [`sqlite3.PrepareProtocol`](https://python-all.ru/3/library/sqlite3.html#sqlite3.PrepareProtocol).
- [gh-86128](https://python-all.ru/3/whatsnew/changelog.html): Документировать ограничение в ThreadPoolExecutor, при котором его обработчик завершения выполняется до любых обработчиков в atexit.
- [gh-61162](https://python-all.ru/3/whatsnew/changelog.html): Уточнить поведение [`sqlite3`](https://python-all.ru/3/library/sqlite3.html#module-sqlite3) при [Как использовать контекстный менеджер соединения](https://python-all.ru/3/library/sqlite3.html#sqlite3-connection-context-manager).
- [gh-87260](https://python-all.ru/3/whatsnew/changelog.html): Согласовать спецификации аргументов [`sqlite3`](https://python-all.ru/3/library/sqlite3.html#module-sqlite3) с фактической реализацией.
- [gh-86986](https://python-all.ru/3/whatsnew/changelog.html): Минимальная версия Sphinx, необходимая для сборки документации, теперь – 3.2.
- [gh-88831](https://python-all.ru/3/whatsnew/changelog.html): Дополнена документация asyncio.create\_task(). Разъяснена необходимость сохранять сильные ссылки на задачи, добавлен пример кода с подробностями.
- [gh-86438](https://python-all.ru/3/whatsnew/changelog.html): Разъяснено, что [`-W`](https://python-all.ru/3/using/cmdline.html#cmdoption-W) и [`PYTHONWARNINGS`](https://python-all.ru/3/using/cmdline.html#envvar-PYTHONWARNINGS) сопоставляются буквально и без учёта регистра, а не как регулярные выражения, в [`warnings`](https://python-all.ru/3/library/warnings.html#module-warnings).
- [gh-93031](https://python-all.ru/3/whatsnew/changelog.html): Обновлён вывод введения учебного руководства для использования SyntaxError с сообщением «недопустимый диапазон» в Python 3.10+.
- [gh-92240](https://python-all.ru/3/whatsnew/changelog.html): Добавлены даты выхода для «Что нового в Python 3.X» для версий 3.0, 3.1, 3.2, 3.8 и 3.10.
- [bpo-47161](https://python-all.ru/3/whatsnew/changelog.html): Документировано, что [`pathlib.PurePath`](https://python-all.ru/3/library/pathlib.html#pathlib.PurePath) не схлопывает начальные двойные слеши, поскольку они обозначают UNC-пути.
- [bpo-40838](https://python-all.ru/3/whatsnew/changelog.html): Документировано, что [`inspect.getdoc()`](https://python-all.ru/3/library/inspect.html#inspect.getdoc), [`inspect.getmodule()`](https://python-all.ru/3/library/inspect.html#inspect.getmodule) и [`inspect.getsourcefile()`](https://python-all.ru/3/library/inspect.html#inspect.getsourcefile) могут возвращать `None`.
- [bpo-43689](https://python-all.ru/3/whatsnew/changelog.html): Документация `Differ` теперь также упоминает другие пробельные символы, которые затрудняют понимание вывода diff.
- [bpo-38056](https://python-all.ru/3/whatsnew/changelog.html): Переработана документация [обработчиков ошибок](https://python-all.ru/3/library/codecs.html#error-handlers) в [`codecs`](https://python-all.ru/3/library/codecs.html#module-codecs).
- [bpo-13553](https://python-all.ru/3/whatsnew/changelog.html): Документированы аргументы tkinter.Tk.

### Тесты

- [gh-95027](https://python-all.ru/3/whatsnew/changelog.html): В Windows при запуске набора тестов Python с опцией `-jN` в качестве кодировки для временного файла stdout теперь используется кодовая страница ANSI, а не UTF-8, которая может приводить к ошибкам декодирования. Исправление от Victor Stinner.
- [gh-96624](https://python-all.ru/3/whatsnew/changelog.html): Исправлен сбой при повторных запусках `test.test_unittest`, вызванный побочными эффектами в `test_dotted_but_module_not_loaded`.
- [gh-95243](https://python-all.ru/3/whatsnew/changelog.html): Снижено влияние неустранимого состояния гонки при использовании find\_unused\_port() в testSockName() путём повторных попыток найти неиспользуемый порт перед тем, как сообщить об ошибке. Исправление от Ross Burton.
- [gh-95573](https://python-all.ru/3/whatsnew/changelog.html): [Lib/test/test\_asyncio/test\_ssl.py](https://python-all.ru/src/3.14/Lib/test/test_asyncio/test_ssl.py) выявил ошибку в ядре macOS, при которой интенсивная конкурентная нагрузка на неблокирующие сокеты иногда приводит к выдаче [`errno.ENOBUFS`](https://python-all.ru/3/library/errno.html#errno.ENOBUFS) («Нет места в буфере»). В Apple отправлен отчёт FB11063974; в качестве временного решения размер буфера в тестах на macOS уменьшен, чтобы избежать периодических сбоев. Исправление от Fantix King.
- [gh-95280](https://python-all.ru/3/whatsnew/changelog.html): Исправлена проблема с `test_ssl` `test_get_ciphers` в системах, требующих шифры с совершенной прямой секретностью (PFS).
- [gh-95212](https://python-all.ru/3/whatsnew/changelog.html): Тестовый сценарий multiprocessing `test_shared_memory_recreate` сделан безопасным для параллельного выполнения.
- [gh-95218](https://python-all.ru/3/whatsnew/changelog.html): Тесты для importlib.resources перемещены в test\_importlib.resources.
- [gh-93963](https://python-all.ru/3/whatsnew/changelog.html): Обновлены тесты для использования предпочтительного расположения для абстрактных базовых классов `importlib.resources`.
- [gh-94675](https://python-all.ru/3/whatsnew/changelog.html): Добавлен регрессионный тест для экспоненциального замедления [`re`](https://python-all.ru/3/library/re.html#module-re) при использовании rjsmin.
- [gh-91330](https://python-all.ru/3/whatsnew/changelog.html): Добавлены дополнительные тесты для [`dataclasses`](https://python-all.ru/3/library/dataclasses.html#module-dataclasses), чтобы охватить поведение с полями на основе дескрипторов данных.
- [gh-94208](https://python-all.ru/3/whatsnew/changelog.html): `test_ssl` теперь проверяет поддерживаемые версии TLS и протоколы в большем количестве тестов.
- [gh-94315](https://python-all.ru/3/whatsnew/changelog.html): Теперь тесты проверяют возможность переопределения DAC вместо того, чтобы полагаться на [`os.geteuid()`](https://python-all.ru/3/library/os.html#os.geteuid).
- [gh-54781](https://python-all.ru/3/whatsnew/changelog.html): Переименован test\_tk в test\_tkinter, и test\_ttk\_guionly в test\_ttk. Исправление от Victor Stinner.
- [gh-93839](https://python-all.ru/3/whatsnew/changelog.html): `Lib/ctypes/test/` перемещён в `Lib/test/test_ctypes/`. Исправление от Victor Stinner.
- [gh-93951](https://python-all.ru/3/whatsnew/changelog.html): В test\_bdb.StateTestCase.test\_skip исключено включение вспомогательных импортёров.
- [gh-93957](https://python-all.ru/3/whatsnew/changelog.html): Улучшено представление ошибок от подпроцессов в test\_venv.EnsurePipTest.test\_with\_pip.
- [gh-93884](https://python-all.ru/3/whatsnew/changelog.html): Добавлены тестовые сценарии для [`PyNumber_ToBase()`](https://python-all.ru/3/c-api/number.html#c.PyNumber_ToBase), принимающие большое число или объект не типа int в качестве параметра.
- [gh-93852](https://python-all.ru/3/whatsnew/changelog.html): test\_asyncio, test\_logging, test\_socket и test\_socketserver теперь создают домены AF\_UNIX в текущем каталоге, чтобы больше не выдавать ошибку `OSError("AF_UNIX path too long")`, если временный каталог (переменная окружения `TMPDIR`) слишком длинный. Исправление от Victor Stinner.
- [gh-93353](https://python-all.ru/3/whatsnew/changelog.html): regrtest теперь проверяет, не оставляет ли тест временные файлы или каталоги при запуске с опцией -jN. Исправление от Victor Stinner.
- [gh-84461](https://python-all.ru/3/whatsnew/changelog.html): `run_tests.py` теперь правильно обрабатывает переменные окружения кросс-компиляции и передаёт `HOSTRUNNER` в регрессионные тесты.
- [gh-93616](https://python-all.ru/3/whatsnew/changelog.html): `test_modulefinder` теперь создаёт временный каталог в `ModuleFinderTest.setUp()` вместо области видимости модуля.
- [gh-93575](https://python-all.ru/3/whatsnew/changelog.html): Исправлена проблема с test\_unicode test\_raiseMemError. Теперь тестовый сценарий использует `test.support.calcobjsize` для вычисления размера структур PyUnicode. [`sys.getsizeof()`](https://python-all.ru/3/library/sys.html#sys.getsizeof) может возвращать другой размер, если строка содержит UTF-8 память.
- [gh-90473](https://python-all.ru/3/whatsnew/changelog.html): на WASI нет системного вызова `chmod(2)`. [`os.chmod()`](https://python-all.ru/3/library/os.html#os.chmod) теперь фиктивная функция на WASI. Пропускаются все тесты, зависящие от рабочего `os.chmod()`.
- [gh-90473](https://python-all.ru/3/whatsnew/changelog.html): Пропускаются тесты на WASI, требующие симлинков с абсолютными путями.
- [gh-57539](https://python-all.ru/3/whatsnew/changelog.html): Увеличено тестовое покрытие calendar для `calendar.LocaleTextCalendar.formatweekday()`.
- [gh-90473](https://python-all.ru/3/whatsnew/changelog.html): Пропускаются тесты симлинков на WASI. wasmtime использует `openat2(2)` с флагом `RESOLVE_BENEATH`, что предотвращает создание симлинков с абсолютными путями.
- [gh-89858](https://python-all.ru/3/whatsnew/changelog.html): Исправлен `test_embed` для сборок с исходниками вне дерева. Патч от Kumar Aditya.
- [gh-92886](https://python-all.ru/3/whatsnew/changelog.html): Исправление тестов, которые падают при запуске с оптимизациями (`-O`) в `test_imaplib.py`.
- [gh-92886](https://python-all.ru/3/whatsnew/changelog.html): Исправление тестов, которые падают при запуске с оптимизациями (`-O`) в `test_zipimport.py`
- [gh-92886](https://python-all.ru/3/whatsnew/changelog.html): Исправление тестов, которые падают при запуске с оптимизациями (`-O`) в `test_py_compile.py`
- [gh-92886](https://python-all.ru/3/whatsnew/changelog.html): Исправление тестов, которые падают при запуске с оптимизациями (`-O`) в `test_sys_settrace.py`.
- [gh-92886](https://python-all.ru/3/whatsnew/changelog.html): Исправление тестов, которые падают при запуске с оптимизациями (`-O`) в `_test_multiprocessing.py`
- [gh-92670](https://python-all.ru/3/whatsnew/changelog.html): Пропускается тест `test_shutil.TestCopy.test_copyfile_nonexistent_dir` на AIX, так как тест использует косую черту в конце, чтобы заставить ОС считать путь каталогом, но на AIX косая черта в конце не действует и путь считается файлом.
- [gh-92514](https://python-all.ru/3/whatsnew/changelog.html): Удалён неиспользуемый `test.support.BasicTestRunner`. Патч от Jelle Zijlstra.
- [bpo-47016](https://python-all.ru/3/whatsnew/changelog.html): Создан workflow GitHub Actions для проверки встроенных pip и setuptools. Патч от Illia Volochii и Adam Turner.

### Сборка

- [gh-96761](https://python-all.ru/3/whatsnew/changelog.html): Исправлен процесс сборки компилятора clang для **\_bootstrap\_python**, если применяется оптимизация LTO. Патч от Matthias Görgens и Donghee Na.
- [gh-96883](https://python-all.ru/3/whatsnew/changelog.html): `wasm32-emscripten` сборки для браузеров теперь включают [`concurrent.futures`](https://python-all.ru/3/library/concurrent.futures.html#module-concurrent.futures) для [`asyncio`](https://python-all.ru/3/library/asyncio.html#module-asyncio) и [`unittest.mock`](https://python-all.ru/3/library/unittest.mock.html#module-unittest.mock).
- [gh-85936](https://python-all.ru/3/whatsnew/changelog.html): CPython теперь использует опцию ThinLTO в качестве политики по умолчанию, если компилятор Clang принимает этот флаг. Патч от Donghee Na.
- [gh-96729](https://python-all.ru/3/whatsnew/changelog.html): Обеспечена возможность обновления до и от официальных релизов Python для сборок Windows, собранных с `Tools\msi\buildrelease.bat`.
- [gh-96269](https://python-all.ru/3/whatsnew/changelog.html): Цели общих модулей теперь зависят от новой переменной `MODULE_DEPS`, которая включает `EXPORTSYMS`. Это исправляет проблему порядка сборки на неподдерживаемой платформе AIX.
- [gh-84461](https://python-all.ru/3/whatsnew/changelog.html): Платформа `wasm32-emscripten` больше не собирает модуль [`resource`](https://python-all.ru/3/library/resource.html#module-resource), [`getresuid()`](https://python-all.ru/3/library/os.html#os.getresuid), [`getresgid()`](https://python-all.ru/3/library/os.html#os.getresgid) и их сеттеры. API являются заглушками и не функциональны.
- [gh-95973](https://python-all.ru/3/whatsnew/changelog.html): Добавлена новая опция конфигурации `--with-dsymutil` для линковки отладочной информации в macOS. Патч от Pablo Galindo.
- [gh-90536](https://python-all.ru/3/whatsnew/changelog.html): Использование пост-линковочного оптимизатора BOLT для повышения производительности, особенно на приложениях среднего и большого размера.
- [gh-93744](https://python-all.ru/3/whatsnew/changelog.html): Удалена опция сборки `configure --with-cxx-main`: она не работала много лет. Удалена переменная `MAINCC` из `configure` и `Makefile`. Патч от Victor Stinner.
- [gh-94801](https://python-all.ru/3/whatsnew/changelog.html): Исправлена регрессия в скрипте `configure`, которая приводила к игнорированию пользовательских `CPPFLAGS` при проверках заголовков. Регрессия была внесена в [gh-94802](https://python-all.ru/3/whatsnew/changelog.html).
- [gh-95145](https://python-all.ru/3/whatsnew/changelog.html): Сборки wasm32-wasi больше не зависят от pthread-заглушек WASIX. Теперь Python имеет собственный заглушечный pthread API.
- [gh-95174](https://python-all.ru/3/whatsnew/changelog.html): Python теперь обнаруживает отсутствие функции `dup` в WASI и обходит некоторые отсутствующие константы [`errno`](https://python-all.ru/3/library/errno.html#module-errno), [`select`](https://python-all.ru/3/library/select.html#module-select) и [`socket`](https://python-all.ru/3/library/socket.html#module-socket).
- [gh-95174](https://python-all.ru/3/whatsnew/changelog.html): Python теперь пропускает отсутствующие функции и методы [`socket`](https://python-all.ru/3/library/socket.html#module-socket) на WASI. WASI может создавать сокеты только из существующих файловых дескрипторов / accept и не имеет netdb.
- [gh-95085](https://python-all.ru/3/whatsnew/changelog.html): Платформы `wasm32-unknown-emscripten` и `wasm32-unknown-wasi` переведены в [**PEP 11**](https://python-all.ru/3/whatsnew/changelog.html) поддержку платформы третьего уровня.
- [gh-94847](https://python-all.ru/3/whatsnew/changelog.html): Исправлена проблема сборки модуля `_decimal` на GCC при компиляции с LTO и pydebug. Отладочные сборки больше не принуждают встраивание функций.
- [gh-94841](https://python-all.ru/3/whatsnew/changelog.html): Исправление возможной регрессии производительности [`PyObject_Free()`](https://python-all.ru/3/c-api/memory.html#c.PyObject_Free), скомпилированного с MSVC версии 1932.
- [gh-94801](https://python-all.ru/3/whatsnew/changelog.html): `configure` теперь использует пользовательские флаги, такие как `ZLIB_CFLAGS` и `ZLIB_LIBS`, при поиске заголовков и библиотек.
- [gh-94773](https://python-all.ru/3/whatsnew/changelog.html): `deepfreeze.py` теперь поддерживает объект кода с неизменяемыми множествами, которые содержат несовместимые, не сортируемые типы.
- [gh-94682](https://python-all.ru/3/whatsnew/changelog.html): Сборка и тестирование с OpenSSL 1.1.1q
- [gh-90005](https://python-all.ru/3/whatsnew/changelog.html): Зависимости модулей [`readline`](https://python-all.ru/3/library/readline.html#module-readline) и [`curses`](https://python-all.ru/3/library/curses.html#module-curses) теперь обнаруживаются в скрипте `configure` с помощью `pkg-config`. Автоматически обнаруживаются только `ncurses` / `ncursesw`. Старая библиотека `curses` не настраивается автоматически. Обходной путь для отсутствующей библиотеки `termcap` или `tinfo` удалён.
- [gh-90005](https://python-all.ru/3/whatsnew/changelog.html): Исправление сборки расширения `_ctypes` без `pkg-config`.
- [gh-90005](https://python-all.ru/3/whatsnew/changelog.html): Зависимости модуля `_dbm` теперь обнаруживаются configure.
- [gh-94404](https://python-all.ru/3/whatsnew/changelog.html): `makesetup` теперь обходит проблему с sed на macOS и использует правильные CFLAGS для объектных файлов, которые попадают в общее расширение. CFLAGS модулей используются перед PY\_STDMODULE\_CFLAGS, чтобы избежать конфликтов с системными заголовочными файлами.
- [gh-93939](https://python-all.ru/3/whatsnew/changelog.html): Модули расширения C теперь собираются с помощью `configure` и `make` вместо `distutils` и `setup.py`.
- [gh-93939](https://python-all.ru/3/whatsnew/changelog.html): Скрипты `2to3`, `idle` и `pydoc` теперь генерируются и устанавливаются с помощью `Makefile` вместо `setup.py`.
- [gh-94280](https://python-all.ru/3/whatsnew/changelog.html): Обновлён скрипт регенерации pegen в Windows для поиска и использования Python 3.9 или выше. Ранее для регенерации pegen уже требовалась версия 3.9 или выше, но скрипт мог использовать более низкие версии Python.
- [gh-93584](https://python-all.ru/3/whatsnew/changelog.html): Устранение состояния гонки в `Makefile` при установке PGO-сборки. Все цели `test` и `install` теперь зависят от цели `all`.
- [gh-93491](https://python-all.ru/3/whatsnew/changelog.html): `configure` теперь обнаруживает и сообщает [**уровни поддержки PEP 11**](https://python-all.ru/3/whatsnew/changelog.html).
- [gh-69093](https://python-all.ru/3/whatsnew/changelog.html): Исправление правила `Modules/Setup.stdlib.in` для расширения `_sqlite3`.
- [gh-93207](https://python-all.ru/3/whatsnew/changelog.html): Для сборки Python теперь требуется `va_start()` с двумя параметрами, например `va_start(args, format),`. `va_start()` больше не вызывается с одним параметром. Патч от Kumar Aditya.
- [gh-93202](https://python-all.ru/3/whatsnew/changelog.html): Python теперь всегда использует форматы printf `%zu` и `%zd` для форматирования числа `size_t` или `Py_ssize_t`. Для сборки Python 3.12 требуется компилятор C11, поэтому эти форматы printf теперь всегда поддерживаются. Патч от Victor Stinner.
- [gh-90473](https://python-all.ru/3/whatsnew/changelog.html): Отключение pymalloc и увеличение размера стека на `wasm32-wasi`.
- [bpo-34449](https://python-all.ru/3/whatsnew/changelog.html): Удаление недопустимого ключа компилятора `-fPIC` для HP aCC на HP-UX. Патч от Michael Osipov.

### Windows

- [gh-98360](https://python-all.ru/3/whatsnew/changelog.html): Исправление того, что [`multiprocessing`](https://python-all.ru/3/library/multiprocessing.html#module-multiprocessing) порождает дочерние процессы в Windows из виртуального окружения, чтобы гарантировать, что дочерние процессы, которые также используют `multiprocessing` для порождения других дочерних процессов, распознают, что они находятся в виртуальном окружении.
- [gh-98414](https://python-all.ru/3/whatsnew/changelog.html): Исправление обработки опции `-V:<company>/` в программе запуска `py.exe`, когда предпочтения по умолчанию заданы в переменных окружения или конфигурационных файлах.
- [gh-97728](https://python-all.ru/3/whatsnew/changelog.html): Исправление возможных сбоев, вызванных использованием неинициализированных переменных при передаче недопустимых аргументов в [`os.system()`](https://python-all.ru/3/library/os.html#os.system) в Windows и в Windows-специфичных модулях (например, `winreg`).
- [gh-90989](https://python-all.ru/3/whatsnew/changelog.html): Сделано так, что [менеджер установки Python](https://python-all.ru/3/using/windows.html#launcher) по умолчанию устанавливается для каждого пользователя (если только уже не существует установки для всех пользователей), и уточнён некоторый текст в установщике.
- [gh-97649](https://python-all.ru/3/whatsnew/changelog.html): Каталог `Tools` больше не устанавливается в Windows
- [gh-96965](https://python-all.ru/3/whatsnew/changelog.html): Обновление libffi до версии 3.4.3
- [gh-96577](https://python-all.ru/3/whatsnew/changelog.html): Исправление потенциального переполнения буфера в `msilib`.
- [gh-96559](https://python-all.ru/3/whatsnew/changelog.html): Исправление того, что программа запуска Windows не использует совместимую интерпретацию тегов по умолчанию, найденных в конфигурационных файлах, когда команде не был передан тег.
- [gh-94781](https://python-all.ru/3/whatsnew/changelog.html): Исправление `pcbuild.proj` для очистки предыдущих экземпляров выходных файлов в каталогах `Python\deepfreeze` и `Python\frozen_modules` в Windows. Патч от Charlie Zhao.
- [gh-89545](https://python-all.ru/3/whatsnew/changelog.html): Обновление кода [`platform`](https://python-all.ru/3/library/platform.html#module-platform), получающего версию Windows, для использования нативных запросов инструментария управления Windows (WMI) для определения версии, типа и архитектуры ОС.
- [gh-95733](https://python-all.ru/3/whatsnew/changelog.html): Сделать некоторые требования пакета Windows Store необязательными, чтобы разрешить установку на более ранних обновлениях Windows.
- [gh-95656](https://python-all.ru/3/whatsnew/changelog.html): Включение API [`enable_load_extension()`](https://python-all.ru/3/library/sqlite3.html#sqlite3.Connection.enable_load_extension) [`sqlite3`](https://python-all.ru/3/library/sqlite3.html#module-sqlite3).
- [gh-95587](https://python-all.ru/3/whatsnew/changelog.html): Исправление некоторых проблем, при которых установщик Windows некорректно обнаруживал некоторые функции существующей установки при обновлении.
- [gh-94399](https://python-all.ru/3/whatsnew/changelog.html): Восстановление поведения [менеджера установки Python](https://python-all.ru/3/using/windows.html#launcher) для шебанг-строк `/usr/bin/env`, который теперь будет искать исполняемый файл, соответствующий указанной команде, в `PATH`. Если ничего не найдено, используется обычный процесс поиска.
- [gh-95445](https://python-all.ru/3/whatsnew/changelog.html): Исправление неудачного удаления каталога HTML-документации при деинсталляции с помощью Windows msi.
- [gh-95359](https://python-all.ru/3/whatsnew/changelog.html): Исправление обработки [менеджером установки Python](https://python-all.ru/3/using/windows.html#launcher) команд `py.ini` (он некорректно ожидал префикс `py_` для ключей) и сбоев при чтении пользовательского конфигурационного файла.
- [gh-95285](https://python-all.ru/3/whatsnew/changelog.html): Исправлена обработка командной строки в [диспетчере установки Python](https://python-all.ru/3/using/windows.html#launcher), когда передаётся только короткое имя исполняемого файла.
- [gh-90844](https://python-all.ru/3/whatsnew/changelog.html): Обеспечен корректный запуск виртуальных окружений, если в пути есть пробелы.
- [gh-94772](https://python-all.ru/3/whatsnew/changelog.html): Исправлена некорректная обработка shebang-строк в запускателе py.exe.
- [gh-94018](https://python-all.ru/3/whatsnew/changelog.html): [`zipfile`](https://python-all.ru/3/library/zipfile.html#module-zipfile) теперь удаляет завершающие пробелы из компонентов пути при извлечении файлов в Windows.
- [gh-93824](https://python-all.ru/3/whatsnew/changelog.html): Включена поддержка перетаскивания файлов на Python-файлы в проводнике Windows для Windows ARM64.
- [gh-43414](https://python-all.ru/3/whatsnew/changelog.html): [`os.get_terminal_size()`](https://python-all.ru/3/library/os.html#os.get_terminal_size) теперь пытается считать размер из любого переданного дескриптора, а не только из файловых дескрипторов 0, 1 и 2.
- [gh-92817](https://python-all.ru/3/whatsnew/changelog.html): Обеспечивает, что `py.exe` будет предпочитать активное виртуальное окружение тегам по умолчанию, заданным через переменные окружения или файл `py.ini`.
- [gh-92984](https://python-all.ru/3/whatsnew/changelog.html): Явное отключение инкрементальной компоновки для сборок, отличных от Debug.
- [gh-92841](https://python-all.ru/3/whatsnew/changelog.html): [`asyncio`](https://python-all.ru/3/library/asyncio.html#module-asyncio) больше не выбрасывает `RuntimeError: Event loop is closed` при завершении интерпретатора после асинхронной активности сокета. Патч от Oleg Iarygin.
- [bpo-46907](https://python-all.ru/3/whatsnew/changelog.html): Установщик Windows обновлён для использования SQLite 3.38.4.
- [gh-91061](https://python-all.ru/3/whatsnew/changelog.html): Принимать os.PathLike в качестве аргумента winsound.PlaySound.
- [bpo-42658](https://python-all.ru/3/whatsnew/changelog.html): Поддержка нативных для Windows регистронезависимых сравнений путей с использованием `LCMapStringEx` вместо [`str.lower()`](https://python-all.ru/3/library/stdtypes.html#str.lower) в `ntpath.normcase()`. Добавлен `LCMapStringEx` в модуль `_winapi`.
- [bpo-38704](https://python-all.ru/3/whatsnew/changelog.html): Запрещена установка на неподдерживаемые версии Windows.

### macOS

- [gh-97897](https://python-all.ru/3/whatsnew/changelog.html): В macOS 13 SDK добавлена поддержка системных вызовов `mkfifoat` и `mknodat`. Использование опции `dir_fd` с [`os.mkfifo()`](https://python-all.ru/3/library/os.html#os.mkfifo) или [`os.mknod()`](https://python-all.ru/3/library/os.html#os.mknod) могло приводить к segfault, если CPython собран с macOS 13 SDK, но запущен на более ранней версии macOS. Это предотвращено добавлением поддержки обнаружения этих системных вызовов во время выполнения («weaklinking»), как это сделано для других новых системных вызовов в macOS.

### IDLE

- [gh-97527](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка в предыдущем исправлении, из-за которой IDLE не запускался при использовании с Python 3.10.8, 3.12.0a1 и как минимум Microsoft Python 3.10.2288.0, установленными без пакета Lib/test. Версия 3.11.0 никогда не была затронута.
- [gh-65802](https://python-all.ru/3/whatsnew/changelog.html): Документирование обработки расширений в диалогах «Сохранить как».
- [gh-95191](https://python-all.ru/3/whatsnew/changelog.html): Включение подсказок при сохранении Shell (интерактивный ввод и вывод).
- [gh-95511](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка в контекстном меню Shell «копировать с подсказками», из-за которой копировалась лишняя строка при выделении целых строк.
- [gh-95471](https://python-all.ru/3/whatsnew/changelog.html): В меню «Правка» переместить `Select All` и добавить новый разделитель.
- [gh-95411](https://python-all.ru/3/whatsnew/changelog.html): Включена возможность использования модульного браузера IDLE с файлами .pyw.
- [gh-89610](https://python-all.ru/3/whatsnew/changelog.html): Добавлено .pyi как распознаваемое расширение для IDLE на macOS. Это позволяет открывать файлы-заглушки двойным щелчком в Finder.

### Tools/Demos

- [gh-68686](https://python-all.ru/3/whatsnew/changelog.html): Удалены скрипты ptags и eptags.
- [gh-97681](https://python-all.ru/3/whatsnew/changelog.html): Удалён каталог `Tools/demo/`, содержавший старые демонстрационные скрипты. Копия доступна в проекте [old-demos](https://python-all.ru/3/whatsnew/changelog.html). Патч от Victor Stinner.
- [gh-97669](https://python-all.ru/3/whatsnew/changelog.html): Удалены устаревшие примеры скриптов из каталога `Tools/scripts/`. Копия доступна в проекте [old-demos](https://python-all.ru/3/whatsnew/changelog.html). Патч от Victor Stinner.
- [gh-95853](https://python-all.ru/3/whatsnew/changelog.html): Скрипт `wasm_build.py` теперь предварительно собирает порты Emscripten, проверяет на наличие повреждённых версий EMSDK и предупреждает о переменных окружения pkg-config.
- [gh-95853](https://python-all.ru/3/whatsnew/changelog.html): Новый инструмент `Tools/wasm/wasm_builder.py` автоматизирует этапы настройки, компиляции и тестирования при сборке CPython на платформах WebAssembly.
- [gh-95731](https://python-all.ru/3/whatsnew/changelog.html): Исправлена обработка строк документации модулей в `Tools/i18n/pygettext.py`.
- [gh-93939](https://python-all.ru/3/whatsnew/changelog.html): Добавлен скрипт `Tools/scripts/check_modules.py` для проверки и валидации встроенных и разделяемых модулей расширения. Скрипт также обрабатывает `Modules/Setup` и в конечном итоге заменит `setup.py`.
- [gh-94538](https://python-all.ru/3/whatsnew/changelog.html): Исправлен вывод Argument Clinic в пользовательские файлы назначения. Патч от Erlend E. Aasland.
- [gh-94430](https://python-all.ru/3/whatsnew/changelog.html): Разрешить именованные параметры `module` и `self` с пользовательскими именами C в Argument Clinic. Патч от Erlend E. Aasland.
- [gh-86087](https://python-all.ru/3/whatsnew/changelog.html): Скрипт `Tools/scripts/parseentities.py`, который использовался для разбора HTML4-сущностей, удален.

### C API

- [gh-98393](https://python-all.ru/3/whatsnew/changelog.html): Функция [`PyUnicode_FSDecoder()`](https://python-all.ru/3/c-api/unicode.html#c.PyUnicode_FSDecoder) больше не принимает байтоподобные пути, такие как типы [`bytearray`](https://python-all.ru/3/library/stdtypes.html#bytearray) и [`memoryview`](https://python-all.ru/3/library/stdtypes.html#memoryview): для байтовых строк принимается только тип [`bytes`](https://python-all.ru/3/library/stdtypes.html#bytes). Патч от Victor Stinner.
- [gh-91051](https://python-all.ru/3/whatsnew/changelog.html): Добавлены [`PyType_Watch()`](https://python-all.ru/3/c-api/type.html#c.PyType_Watch) и связанные API для поддержки колбэков на [`PyType_Modified()`](https://python-all.ru/3/c-api/type.html#c.PyType_Modified).
- [gh-95756](https://python-all.ru/3/whatsnew/changelog.html): Ленивое создание и кеширование атрибутов `co_` для повышения производительности геттеров кода.
- [gh-96512](https://python-all.ru/3/whatsnew/changelog.html): Конфигурация [ограничения длины преобразования целых чисел в строки](https://python-all.ru/3/library/stdtypes.html#int-max-str-digits) теперь находится в структуре PyConfig C API.
- [gh-95589](https://python-all.ru/3/whatsnew/changelog.html): Классы расширений, которые устанавливают `tp_dictoffset` и `tp_weaklistoffset`, теряют поддержку множественного наследования, но теперь безопасны. Классы расширений должны вместо этого использовать [`Py_TPFLAGS_MANAGED_DICT`](https://python-all.ru/3/c-api/typeobj.html#c.Py_TPFLAGS_MANAGED_DICT) и [`Py_TPFLAGS_MANAGED_WEAKREF`](https://python-all.ru/3/c-api/typeobj.html#c.Py_TPFLAGS_MANAGED_WEAKREF).
- [gh-95781](https://python-all.ru/3/whatsnew/changelog.html): Нераспознанный символ формата в [`PyUnicode_FromFormat()`](https://python-all.ru/3/c-api/unicode.html#c.PyUnicode_FromFormat) и [`PyUnicode_FromFormatV()`](https://python-all.ru/3/c-api/unicode.html#c.PyUnicode_FromFormatV) теперь вызывает [`SystemError`](https://python-all.ru/3/library/exceptions.html#SystemError). В предыдущих версиях это приводило к тому, что вся оставшаяся часть строки формата копировалась как есть в результирующую строку, а любые дополнительные аргументы отбрасывались.
- [gh-92678](https://python-all.ru/3/whatsnew/changelog.html): Восстановлено поведение версии 3.10 для множественного наследования классов расширений C, которые хранят свой словарь в конце структуры.
- [gh-92678](https://python-all.ru/3/whatsnew/changelog.html): Поддержка расширений C, использующих управляемые словари, с помощью установки флага `Py_TPFLAGS_MANAGED_DICT`.
- [gh-93274](https://python-all.ru/3/whatsnew/changelog.html): API для реализации vectorcall ([`Py_TPFLAGS_HAVE_VECTORCALL`](https://python-all.ru/3/c-api/typeobj.html#c.Py_TPFLAGS_HAVE_VECTORCALL), [`PyVectorcall_NARGS()`](https://python-all.ru/3/c-api/call.html#c.PyVectorcall_NARGS) и [`PyVectorcall_Call()`](https://python-all.ru/3/c-api/call.html#c.PyVectorcall_Call)) был добавлен в ограниченный API и стабильный ABI.
- [gh-95504](https://python-all.ru/3/whatsnew/changelog.html): Исправлено размещение знака при указании ширины или точности в [`PyUnicode_FromFormat()`](https://python-all.ru/3/c-api/unicode.html#c.PyUnicode_FromFormat) и [`PyUnicode_FromFormatV()`](https://python-all.ru/3/c-api/unicode.html#c.PyUnicode_FromFormatV). Патч от Philip Georgi.
- [gh-93012](https://python-all.ru/3/whatsnew/changelog.html): Флаг [`Py_TPFLAGS_HAVE_VECTORCALL`](https://python-all.ru/3/c-api/typeobj.html#c.Py_TPFLAGS_HAVE_VECTORCALL) теперь удаляется из класса при переопределении метода [`__call__()`](https://python-all.ru/3/reference/datamodel.html#object.__call__) этого класса. Это делает vectorcall безопасным для изменяемых типов (т.е. типов в куче без флага `immutable`). Изменяемые типы, которые не переопределяют [`tp_call`](https://python-all.ru/3/c-api/typeobj.html#c.PyTypeObject.tp_call), теперь наследуют флаг `Py_TPFLAGS_HAVE_VECTORCALL`.
- [gh-95388](https://python-all.ru/3/whatsnew/changelog.html): Создание [`immutable types`](https://python-all.ru/3/c-api/typeobj.html#c.Py_TPFLAGS_IMMUTABLETYPE) с изменяемыми базовыми классами устарело и планируется к отключению в Python 3.14.
- [gh-92678](https://python-all.ru/3/whatsnew/changelog.html): Добавлены нестабильные функции C API `_PyObject_VisitManagedDict` и `_PyObject_ClearManagedDict`, чтобы позволить расширениям C разрешить виртуальной машине управлять словарями своих объектов.
- [gh-94936](https://python-all.ru/3/whatsnew/changelog.html): Добавлены [`PyCode_GetVarnames()`](https://python-all.ru/3/c-api/code.html#c.PyCode_GetVarnames), [`PyCode_GetCellvars()`](https://python-all.ru/3/c-api/code.html#c.PyCode_GetCellvars) и [`PyCode_GetFreevars()`](https://python-all.ru/3/c-api/code.html#c.PyCode_GetFreevars) для доступа к `co_varnames`, `co_cellvars` и `co_freevars` соответственно через C API.
- [gh-94930](https://python-all.ru/3/whatsnew/changelog.html): Исправлено `SystemError`, возникающее при использовании [`PyArg_ParseTupleAndKeywords()`](https://python-all.ru/3/c-api/arg.html#c.PyArg_ParseTupleAndKeywords) с `#` в `(...)`, но без определения `PY_SSIZE_T_CLEAN`.
- [gh-94731](https://python-all.ru/3/whatsnew/changelog.html): Python снова использует приведения в стиле C для большинства операций приведения при компиляции с C++. Это может вызвать предупреждения компилятора, если они включены, например, с опциями `-Wold-style-cast` или `-Wzero-as-null-pointer-constant` для `g++`.
- [gh-93937](https://python-all.ru/3/whatsnew/changelog.html): Следующие функции и тип фрейма теперь доступны напрямую с `#include <Python.h>`, больше не нужно добавлять `#include <frameobject.h>`:

  - [`PyFrame_Check()`](https://python-all.ru/3/c-api/frame.html#c.PyFrame_Check)
  - [`PyFrame_GetBack()`](https://python-all.ru/3/c-api/frame.html#c.PyFrame_GetBack)
  - [`PyFrame_GetBuiltins()`](https://python-all.ru/3/c-api/frame.html#c.PyFrame_GetBuiltins)
  - [`PyFrame_GetGenerator()`](https://python-all.ru/3/c-api/frame.html#c.PyFrame_GetGenerator)
  - [`PyFrame_GetGlobals()`](https://python-all.ru/3/c-api/frame.html#c.PyFrame_GetGlobals)
  - [`PyFrame_GetLasti()`](https://python-all.ru/3/c-api/frame.html#c.PyFrame_GetLasti)
  - [`PyFrame_GetLocals()`](https://python-all.ru/3/c-api/frame.html#c.PyFrame_GetLocals)
  - [`PyFrame_Type`](https://python-all.ru/3/c-api/frame.html#c.PyFrame_Type)

  Патч от Victor Stinner.
- [gh-91321](https://python-all.ru/3/whatsnew/changelog.html): Исправлена совместимость Python C API с C++ старше C++11. Патч от Victor Stinner.
- [gh-91731](https://python-all.ru/3/whatsnew/changelog.html): Избегайте определения `static_assert` при компиляции с C++11, где это ключевое слово, и его переопределение может привести к неопределенному поведению. Патч от Pablo Galindo.
- [gh-89546](https://python-all.ru/3/whatsnew/changelog.html): [`PyType_FromMetaclass()`](https://python-all.ru/3/c-api/type.html#c.PyType_FromMetaclass) (и другие функции `PyType_From*`) теперь проверяют, что смещения и [`tp_basicsize`](https://python-all.ru/3/c-api/typeobj.html#c.PyTypeObject.tp_basicsize) базового класса помещаются в `tp_basicsize` нового класса.
- [gh-93503](https://python-all.ru/3/whatsnew/changelog.html): Добавлены две новые публичные функции в публичный C API, [`PyEval_SetProfileAllThreads()`](https://python-all.ru/3/c-api/profiling.html#c.PyEval_SetProfileAllThreads) и [`PyEval_SetTraceAllThreads()`](https://python-all.ru/3/c-api/profiling.html#c.PyEval_SetTraceAllThreads), которые позволяют устанавливать функции трассировки и профилирования во всех запущенных потоках в дополнение к вызывающему. Также две аналогичные функции для модуля [`threading`](https://python-all.ru/3/library/threading.html#module-threading) ([`threading.setprofile_all_threads()`](https://python-all.ru/3/library/threading.html#threading.setprofile_all_threads) и [`threading.settrace_all_threads()`](https://python-all.ru/3/library/threading.html#threading.settrace_all_threads)), которые позволяют делать то же самое из Python. Патч от Pablo Galindo.
- [gh-93442](https://python-all.ru/3/whatsnew/changelog.html): Добавлены перегрузки C++ для \_Py\_CAST\_impl() для обработки 0/NULL. Это позволит расширениям C++, которые передают 0 или NULL в макросы, использующие \_Py\_CAST(), продолжать компилироваться.
- [gh-93466](https://python-all.ru/3/whatsnew/changelog.html): Идентификаторы слотов в PyType\_Spec не должны повторяться. Документация была обновлена, чтобы упомянуть это. В некоторых случаях повторяющихся слотов PyType\_FromSpec и связанные функции теперь будут вызывать исключение.
- [gh-92898](https://python-all.ru/3/whatsnew/changelog.html): Исправлены предупреждения компилятора C++ при приведении аргументов функции к `PyObject*`. Патч от Serge Guelton.
- [gh-93103](https://python-all.ru/3/whatsnew/changelog.html): Объявлены устаревшими глобальные переменные конфигурации, такие как [`Py_IgnoreEnvironmentFlag`](https://python-all.ru/3/c-api/interp-lifecycle.html#c.Py_IgnoreEnvironmentFlag), в документации: вместо них следует использовать API [`Py_InitializeFromConfig()`](https://python-all.ru/3/c-api/interp-lifecycle.html#c.Py_InitializeFromConfig). Патч от Victor Stinner.
- [gh-77782](https://python-all.ru/3/whatsnew/changelog.html): Объявлена устаревшей глобальная переменная конфигурации, такая как [`Py_IgnoreEnvironmentFlag`](https://python-all.ru/3/c-api/interp-lifecycle.html#c.Py_IgnoreEnvironmentFlag): вместо нее следует использовать API [`Py_InitializeFromConfig()`](https://python-all.ru/3/c-api/interp-lifecycle.html#c.Py_InitializeFromConfig). Патч от Victor Stinner.
- [gh-92913](https://python-all.ru/3/whatsnew/changelog.html): Обеспечивается, что изменения [`PyConfig.module_search_paths`](https://python-all.ru/3/c-api/init_config.html#c.PyConfig.module_search_paths) игнорируются, если не установлено [`PyConfig.module_search_paths_set`](https://python-all.ru/3/c-api/init_config.html#c.PyConfig.module_search_paths_set).
- [gh-92781](https://python-all.ru/3/whatsnew/changelog.html): Избегайте смешивания объявлений и кода в C API для исправления предупреждения компилятора: "ISO C90 запрещает смешивание объявлений и кода" \[-Werror=declaration-after-statement\]. Патч от Victor Stinner.
- [gh-92651](https://python-all.ru/3/whatsnew/changelog.html): Удалён заголовочный файл `token.h`. Публичного C API токенизатора никогда не существовало. Заголовочный файл `token.h` был предназначен только для внутреннего использования Python. Исправление от Victor Stinner.
- [gh-92536](https://python-all.ru/3/whatsnew/changelog.html): Удалены устаревшие Unicode API, основанные на `Py_UNICODE*`.
- [gh-85858](https://python-all.ru/3/whatsnew/changelog.html): Удалены функция `PyUnicode_InternImmortal()` и макрос `SSTATE_INTERNED_IMMORTAL`. Исправление от Victor Stinner.
- [gh-92193](https://python-all.ru/3/whatsnew/changelog.html): Добавлена новая функция [`PyFunction_SetVectorcall()`](https://python-all.ru/3/c-api/function.html#c.PyFunction_SetVectorcall) в C API, которая устанавливает поле vectorcall для заданного [`PyFunctionObject`](https://python-all.ru/3/c-api/function.html#c.PyFunctionObject).

  Предупреждение: расширения, использующие этот API, должны сохранять поведение неизменённой функции!
- [gh-59121](https://python-all.ru/3/whatsnew/changelog.html): Исправлена проверка assert, которая мешала `PyRun_InteractiveOne` предоставлять трассировки при разборе из переданного файлового дескриптора.
- [bpo-45383](https://python-all.ru/3/whatsnew/changelog.html): API [`PyType_FromSpec()`](https://python-all.ru/3/c-api/type.html#c.PyType_FromSpec) теперь находит и использует метакласс на основе переданных базовых классов. При конфликте метаклассов будет вызвана ошибка.

## Python 3.11.0 beta 1

*Дата выпуска: 2022-05-06*

### Безопасность

- [gh-57684](https://python-all.ru/3/whatsnew/changelog.html): Добавлены опция командной строки [`-P`](https://python-all.ru/3/using/cmdline.html#cmdoption-P) и переменная окружения [`PYTHONSAFEPATH`](https://python-all.ru/3/using/cmdline.html#envvar-PYTHONSAFEPATH), чтобы не добавлять потенциально небезопасный путь к [`sys.path`](https://python-all.ru/3/library/sys.html#sys.path). Исправление от Victor Stinner.

### Ядро и встроенные модули

- [gh-89519](https://python-all.ru/3/whatsnew/changelog.html): Цепочка дескрипторов classmethod (введённая в [bpo-19072](https://python-all.ru/3/whatsnew/changelog.html)) признана устаревшей. Её больше нельзя использовать для обёртывания других дескрипторов, таких как property(). Базовая конструкция этой возможности была ошибочной и вызвала ряд проблем у пользователей.
- [gh-92345](https://python-all.ru/3/whatsnew/changelog.html): `pymain_run_python()` теперь импортирует `readline` и `rlcompleter` до того, как sys.path расширяется, чтобы включить текущую рабочую каталог интерактивного интерпретатора. Неинтерактивные интерпретаторы не затронуты.
- [bpo-43857](https://python-all.ru/3/whatsnew/changelog.html): Улучшено сообщение [`AttributeError`](https://python-all.ru/3/library/exceptions.html#AttributeError) при удалении отсутствующего атрибута. Исправление от Géry Ogam.
- [gh-92245](https://python-all.ru/3/whatsnew/changelog.html): Обеспечено соблюдение PEP 523 во всех случаях. В версии 3.11a7 специализация могла препятствовать соблюдению PEP 523 при вызовах Python-кода из Python-кода.
- [gh-92203](https://python-all.ru/3/whatsnew/changelog.html): Добавлен параметр closure, передаваемый только по ключу, в [`exec()`](https://python-all.ru/3/library/functions.html#exec). Его можно указывать только при выполнении exec с объектом кода, который использует свободные переменные. При указании он должен быть кортежем, содержащим ровно столько ячеек переменных, сколько ссылается объект кода. closure имеет значение по умолчанию `None` и должен быть равен `None`, если объект кода не ссылается ни на одну свободную переменную.
- [gh-91173](https://python-all.ru/3/whatsnew/changelog.html): Отключены замороженные модули в отладочных сборках. Исправление от Kumar Aditya.
- [gh-92114](https://python-all.ru/3/whatsnew/changelog.html): Улучшено сообщение об ошибке при взятии подстроки у типа с `__class_getitem__`, установленным в `None`.
- [gh-92112](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка, вызванная «злым» пользовательским `mro()` у метакласса.
- [gh-92063](https://python-all.ru/3/whatsnew/changelog.html): Инструкция `PRECALL_METHOD_DESCRIPTOR_FAST_WITH_KEYWORDS` теперь гарантирует, что методы вызываются только для объектов правильного типа.
- [gh-92031](https://python-all.ru/3/whatsnew/changelog.html): Деоптимизация статически размещённых объектов кода во время `Py_FINALIZE()`, чтобы будущие вызовы `_PyCode_Quicken` всегда начинались с неускоренного кода.
- [gh-92036](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка в под-интерпретаторах, связанная со сборщиком мусора. При удалении под-интерпретатора все объекты, отслеживаемые его GC, перестают отслеживаться. Чтобы предотвратить сбой в функциях-деаллокаторах, ожидающих, что объекты отслеживаются GC, намеренно сохраняется сильная ссылка на эти объекты, так что они никогда не удаляются и их деаллокаторы не вызываются. Исправление от Victor Stinner.
- [gh-92032](https://python-all.ru/3/whatsnew/changelog.html): Интерпретатор теперь может автодополнять «мягкие» ключевые слова: на данный момент `match`, `case` и `_` (шаблон подстановки) из [**PEP 634**](https://python-all.ru/3/whatsnew/changelog.html).
- [gh-87999](https://python-all.ru/3/whatsnew/changelog.html): Предупреждение, выдаваемое парсером Python для числового литерала, за которым сразу следует ключевое слово, изменено с предупреждения об устаревании на предупреждение о синтаксисе.
- [gh-91869](https://python-all.ru/3/whatsnew/changelog.html): Исправлена проблема, при которой специализированные опкоды с расширенными аргументами могли выдавать некорректный вывод трассировки или приводить к ошибкам утверждений.
- [gh-91603](https://python-all.ru/3/whatsnew/changelog.html): Ускорено создание экземпляра [`types.UnionType`](https://python-all.ru/3/library/types.html#types.UnionType). На основе исправления от Yurii Karabas.
- [gh-89373](https://python-all.ru/3/whatsnew/changelog.html): Если Python собран в режиме отладки, Python теперь гарантирует, что функции-деаллокаторы не изменяют текущее исключение. Исправление от Victor Stinner.
- [gh-91632](https://python-all.ru/3/whatsnew/changelog.html): Исправлена небольшая утечка памяти при завершении: освобождается память типа `generic_alias_iterator`. Исправление от Donghee Na.
- [gh-81548](https://python-all.ru/3/whatsnew/changelog.html): Восьмеричные управляющие последовательности со значением больше `0o377` теперь вызывают [`DeprecationWarning`](https://python-all.ru/3/library/exceptions.html#DeprecationWarning). В будущей версии Python они станут [`SyntaxWarning`](https://python-all.ru/3/library/exceptions.html#SyntaxWarning), а со временем – [`SyntaxError`](https://python-all.ru/3/library/exceptions.html#SyntaxError).
- [bpo-43950](https://python-all.ru/3/whatsnew/changelog.html): Используется единая компактная таблица для начала строк, концов и смещений столбцов. Снижает потребление памяти для информации о местоположении вдвое
- [gh-91102](https://python-all.ru/3/whatsnew/changelog.html): Использован Argument Clinic для `EncodingMap`. Исправление от Oleg Iarygin.
- [gh-91636](https://python-all.ru/3/whatsnew/changelog.html): Исправлен крах в граничном случае сборки мусора, когда функция `PyFunction_Type.tp_clear` могла оставить объект функции Python в неконсистентном состоянии.
- [gh-91603](https://python-all.ru/3/whatsnew/changelog.html): Ускорены проверки [`isinstance()`](https://python-all.ru/3/library/functions.html#isinstance) и [`issubclass()`](https://python-all.ru/3/library/functions.html#issubclass) для [`types.UnionType`](https://python-all.ru/3/library/types.html#types.UnionType). Патч от Yurii Karabas.
- [gh-91625](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка, из-за которой адаптивные опкоды игнорировали любые предшествующие `EXTENDED_ARG` при неудаче специализации.
- [gh-78607](https://python-all.ru/3/whatsnew/changelog.html): Специальная сборка LLTRACE теперь ищет имя `__lltrace__`, определённое в глобальных переменных модуля, а не имя `__ltrace__`, которое появилось из-за опечатки.
- [gh-91576](https://python-all.ru/3/whatsnew/changelog.html): Ускорена итерация по ASCII-строкам на 50%. Патч от Kumar Aditya.
- [gh-89279](https://python-all.ru/3/whatsnew/changelog.html): Улучшена производительность интерпретатора на Windows за счёт подстановки некоторых конкретных макросов.
- [gh-91502](https://python-all.ru/3/whatsnew/changelog.html): Добавлена новая функция `_PyFrame_IsEntryFrame()` API, чтобы проверять, является ли [`PyFrameObject`](https://python-all.ru/3/c-api/frame.html#c.PyFrameObject) входным фреймом. Патч от Pablo Galindo.
- [gh-91266](https://python-all.ru/3/whatsnew/changelog.html): Рефакторинг методов удаления `bytearray` `strip`, `lstrip` и `rstrip` для использования общей реализации.
- [gh-91479](https://python-all.ru/3/whatsnew/changelog.html): Поле `__note__` структуры [`BaseException`](https://python-all.ru/3/library/exceptions.html#BaseException) (добавленное в ранней версии 3.11) заменено на окончательную разработку [**PEP 678**](https://python-all.ru/3/whatsnew/changelog.html). А именно, `BaseException` получает метод `add_note()`, а его поле `__notes__` создаётся при необходимости.
- [gh-46055](https://python-all.ru/3/whatsnew/changelog.html): Ускорен сдвиг вправо отрицательных целых чисел за счёт устранения ненужного создания временных объектов. Оригинальный патч от Xinhang Xu, переработан Mark Dickinson.
- [gh-91462](https://python-all.ru/3/whatsnew/changelog.html): Вывод низкоуровневой трассировки (lltrace) интерпретатора сделан более читаемым: отображаются имена опкодов (вместо просто чисел), а также содержимое стека перед каждым опкодом.
- [gh-89455](https://python-all.ru/3/whatsnew/changelog.html): Исправлена неинициализированная логическая переменная в коде вывода трассировки, появившаяся в результате начальной реализации групп исключений [bpo-45292](https://python-all.ru/3/whatsnew/changelog.html).
- [gh-91421](https://python-all.ru/3/whatsnew/changelog.html): Исправлено потенциальное целочисленное переполнение в \_Py\_DecodeUTF8Ex.
- [gh-91428](https://python-all.ru/3/whatsnew/changelog.html): В отладочные сборки добавлено `static const char *const _PyOpcode_OpName[256] = {...};` в `opcode.h` для упрощения отладки интерпретатора Python. Теперь удобнее делать различные формы отладочного вывода более читаемыми, включая имена опкодов вместо соответствующих десятичных чисел.
- [bpo-47120](https://python-all.ru/3/whatsnew/changelog.html): Сделать [`POP_JUMP_IF_TRUE`](https://python-all.ru/3/library/dis.html#opcode-POP_JUMP_IF_TRUE), [`POP_JUMP_IF_FALSE`](https://python-all.ru/3/library/dis.html#opcode-POP_JUMP_IF_FALSE), [`POP_JUMP_IF_NONE`](https://python-all.ru/3/library/dis.html#opcode-POP_JUMP_IF_NONE) и [`POP_JUMP_IF_NOT_NONE`](https://python-all.ru/3/library/dis.html#opcode-POP_JUMP_IF_NOT_NONE) виртуальными, с отображением на новые относительные опкоды перехода.
- [bpo-45317](https://python-all.ru/3/whatsnew/changelog.html): Добавлена внутренняя документация, объясняющая устройство нового (для 3.11) стека фреймов.

### Библиотека

- [bpo-47197](https://python-all.ru/3/whatsnew/changelog.html): ctypes неправильно обрабатывал типы возвращаемых значений `void`, так что, например, функция, объявленная как `ctypes.CFUNCTYPE(None, ctypes.c_int)`, вызывалась с сигнатурой `int f(int)` вместо `void f(int)`. Целевые платформы Wasm требуют вызова указателей на функции с корректными сигнатурами, поэтому это приводило к крахам. Проблема исправлена.

### Ядро и встроенные объекты

- [bpo-47120](https://python-all.ru/3/whatsnew/changelog.html): Сделать опкоды `JUMP_IF_TRUE_OR_POP` и `JUMP_IF_FALSE_OR_POP` относительными вместо абсолютных.
- [bpo-47177](https://python-all.ru/3/whatsnew/changelog.html): Заменить член `f_lasti` внутренней структуры `_PyInterpreterFrame` на указатель `prev_instr`, что снижает накладные расходы в основном цикле интерпретатора. Атрибут `f_lasti` фреймовых объектов уровня Python сохраняется для обратной совместимости.
- [bpo-46961](https://python-all.ru/3/whatsnew/changelog.html): Операции взятия остатка от деления, включая трёхаргументную форму [`pow()`](https://python-all.ru/3/library/functions.html#pow), теперь последовательно возвращают целые числа из кэша малых целых, когда это применимо.
- [bpo-46962](https://python-all.ru/3/whatsnew/changelog.html): Классы и функции, которые безусловно объявляли свои докстринги, игнорируя флаг компиляции `--without-doc-strings`, больше этого не делают.

  Затронутые классы: `ctypes.UnionType`, [`pickle.PickleBuffer`](https://python-all.ru/3/library/pickle.html#pickle.PickleBuffer), `testcapi.RecursingInfinitelyError` и [`types.GenericAlias`](https://python-all.ru/3/library/types.html#types.GenericAlias).

  Затронутые функции: 24 метода в [`ctypes`](https://python-all.ru/3/library/ctypes.html#module-ctypes).

  Патч от Oleg Iarygin.
- [bpo-46942](https://python-all.ru/3/whatsnew/changelog.html): Использовать Argument Clinic для конструктора [`types.MethodType`](https://python-all.ru/3/library/types.html#types.MethodType). Патч от Oleg Iarygin.
- [bpo-46764](https://python-all.ru/3/whatsnew/changelog.html): Исправлена обёртка связанных методов с помощью @classmethod
- [bpo-43464](https://python-all.ru/3/whatsnew/changelog.html): Оптимизация [`set.intersection()`](https://python-all.ru/3/library/stdtypes.html#set.intersection) для аргументов, не являющихся множествами.
- [bpo-46721](https://python-all.ru/3/whatsnew/changelog.html): Оптимизация [`set.issuperset()`](https://python-all.ru/3/library/stdtypes.html#set.issuperset) для аргумента, не являющегося множеством.
- [bpo-46509](https://python-all.ru/3/whatsnew/changelog.html): Добавлены типизированные версии `Py_DECREF()`, используемые для `float`, `int`, `str`, `bool` и `None`, чтобы избежать разыменования указателей во время выполнения, когда типы известны на этапе компиляции C.

### Сборка

- [bpo-46045](https://python-all.ru/3/whatsnew/changelog.html): не используйте POSIX-семафоры на NetBSD

### Ядро и встроенные модули

- [bpo-36819](https://python-all.ru/3/whatsnew/changelog.html): Исправлены сбои во встроенных кодировщиках с обработчиками ошибок, которые возвращают позицию меньше или равную начальной позиции не кодируемых символов.
- [bpo-34093](https://python-all.ru/3/whatsnew/changelog.html): `marshal.dumps()` использует `FLAG_REF` для всех интернированных строк. Это делает вывод более детерминированным и помогает воспроизводимой сборке.
- [bpo-26579](https://python-all.ru/3/whatsnew/changelog.html): Добавлена `object.__getstate__`, которая предоставляет реализацию метода `__getstate__()` по умолчанию.

  Копирование и сериализация экземпляров подклассов встроенных типов bytearray, set, frozenset, collections.OrderedDict, collections.deque, weakref.WeakSet и datetime.tzinfo теперь копируют и сериализуют атрибуты экземпляров, реализованные как слоты.

### Библиотека

- [gh-87901](https://python-all.ru/3/whatsnew/changelog.html): Добавлен параметр *encoding* в [`os.popen()`](https://python-all.ru/3/library/os.html#os.popen).
- [gh-90997](https://python-all.ru/3/whatsnew/changelog.html): Исправлена проблема, при которой утилиты [`dis`](https://python-all.ru/3/library/dis.html#module-dis) могли интерпретировать заполненные записи inline-кэша как допустимые инструкции.
- [gh-92332](https://python-all.ru/3/whatsnew/changelog.html): Устарело [`typing.Text`](https://python-all.ru/3/library/typing.html#typing.Text) (удаление класса в настоящее время не планируется). Исправление от Alex Waygood.
- [gh-78157](https://python-all.ru/3/whatsnew/changelog.html): Устарело превращение вложенных классов в определениях перечислений в члены – в версии 3.13 они станут обычными классами; добавлены функции `member` и `nonmember`, позволяющие управлять результатами уже сейчас.
- [gh-92356](https://python-all.ru/3/whatsnew/changelog.html): Исправлена регрессия производительности при вызовах функций ctypes.
- [gh-90997](https://python-all.ru/3/whatsnew/changelog.html): Показывать фактические именованные значения, хранящиеся в inline-кэшах, когда `show_caches=True` передаётся утилитам [`dis`](https://python-all.ru/3/library/dis.html#module-dis).
- [gh-92301](https://python-all.ru/3/whatsnew/changelog.html): Предпочитать `close_range()` итерации по procfs для закрытия файловых дескрипторов в [`subprocess`](https://python-all.ru/3/library/subprocess.html#module-subprocess) для повышения производительности.
- [gh-67248](https://python-all.ru/3/whatsnew/changelog.html): Сортировка разрозненных тем в Cmd.do\_help()
- [gh-92210](https://python-all.ru/3/whatsnew/changelog.html): Перенос `socket.__init__` в Argument Clinic. Исправление от Cinder.
- [gh-80010](https://python-all.ru/3/whatsnew/changelog.html): Добавлена поддержка обобщённого разбора ISO 8601 в [`datetime.datetime.fromisoformat()`](https://python-all.ru/3/library/datetime.html#datetime.datetime.fromisoformat), [`datetime.date.fromisoformat()`](https://python-all.ru/3/library/datetime.html#datetime.date.fromisoformat) и [`datetime.time.fromisoformat()`](https://python-all.ru/3/library/datetime.html#datetime.time.fromisoformat). Исправление от Paul Ganssle.
- [gh-92118](https://python-all.ru/3/whatsnew/changelog.html): Исправлена регрессия в версии 3.11 в [`contextmanager()`](https://python-all.ru/3/library/contextlib.html#contextlib.contextmanager), из-за которой исключения распространялись с неверной трассировкой.
- [gh-90887](https://python-all.ru/3/whatsnew/changelog.html): Добавлены константы `COPYFILE_STAT`, `COPYFILE_ACL` и `COPYFILE_XATTR` для `os.fcopyfile()`, доступные в macOS.
- [gh-91215](https://python-all.ru/3/whatsnew/changelog.html): Для [`@~dataclasses.dataclass`](https://python-all.ru/3/library/dataclasses.html#dataclasses.dataclass) добавлен *weakref\_slot*. Новый параметр по умолчанию равен `False`. Если значение истинно и `slots=True`, добавляется слот с именем `"__weakref__"`, который позволит создавать слабые ссылки на экземпляры. Предложено Eric V. Smith
- [gh-85984](https://python-all.ru/3/whatsnew/changelog.html): Новая функция os.login\_tty() для Unix.
- [gh-92128](https://python-all.ru/3/whatsnew/changelog.html): Добавлен [`__class_getitem__()`](https://python-all.ru/3/reference/datamodel.html#object.__class_getitem__) в [`logging.LoggerAdapter`](https://python-all.ru/3/library/logging.html#logging.LoggerAdapter) и [`logging.StreamHandler`](https://python-all.ru/3/library/logging.handlers.html#logging.StreamHandler), что позволяет параметризовать их во время выполнения. Исправление от Alex Waygood.
- [gh-92049](https://python-all.ru/3/whatsnew/changelog.html): Запрещена сериализация констант `re._constants.SUCCESS` и т.д. Ранее сериализация не завершалась ошибкой, но результат нельзя было десериализовать.
- [gh-92062](https://python-all.ru/3/whatsnew/changelog.html): [`inspect.Parameter`](https://python-all.ru/3/library/inspect.html#inspect.Parameter) теперь вызывает [`ValueError`](https://python-all.ru/3/library/exceptions.html#ValueError), если `name` является ключевым словом, в дополнение к существующей проверке, что это идентификатор.
- [gh-87390](https://python-all.ru/3/whatsnew/changelog.html): Добавлен атрибут `__unpacked__` в [`types.GenericAlias`](https://python-all.ru/3/library/types.html#types.GenericAlias). Исправление от Jelle Zijlstra.
- [gh-88089](https://python-all.ru/3/whatsnew/changelog.html): Добавлена поддержка обобщённого [`typing.NamedTuple`](https://python-all.ru/3/library/typing.html#typing.NamedTuple).
- [gh-91996](https://python-all.ru/3/whatsnew/changelog.html): Новое перечисление http.HTTPMethod для удобного представления всех доступных HTTP методов запросов
- [gh-91984](https://python-all.ru/3/whatsnew/changelog.html): Изменены тестовые строки в test\_argparse.py, чтобы они не содержали пробелы в конце строк.
- [gh-91952](https://python-all.ru/3/whatsnew/changelog.html): Добавлена поддержка `encoding="locale"` в `TextIOWrapper.reconfigure()`.
- [gh-91954](https://python-all.ru/3/whatsnew/changelog.html): Добавлены аргументы *encoding* и *errors* в [`subprocess.getoutput()`](https://python-all.ru/3/library/subprocess.html#subprocess.getoutput) и [`subprocess.getstatusoutput()`](https://python-all.ru/3/library/subprocess.html#subprocess.getstatusoutput).
- [bpo-47029](https://python-all.ru/3/whatsnew/changelog.html): Всегда закрывать конец чтения канала, используемого [`multiprocessing.Queue`](https://python-all.ru/3/library/multiprocessing.html#multiprocessing.Queue), *после* последней записи буферизованных данных в конец записи канала, чтобы избежать [`BrokenPipeError`](https://python-all.ru/3/library/exceptions.html#BrokenPipeError) при сборке мусора и при вызовах [`multiprocessing.Queue.close()`](https://python-all.ru/3/library/multiprocessing.html#multiprocessing.Queue.close). Исправление от Géry Ogam.
- [gh-91928](https://python-all.ru/3/whatsnew/changelog.html): Добавлен псевдоним `datetime.UTC` для `datetime.timezone.utc`.

  Патч от Kabir Kwatra.
- [gh-68966](https://python-all.ru/3/whatsnew/changelog.html): Модуль `mailcap` теперь устарел и будет удалён в Python 3.13. См. [**PEP 594**](https://python-all.ru/3/whatsnew/changelog.html) с обоснованием и модуль [`mimetypes`](https://python-all.ru/3/library/mimetypes.html#module-mimetypes) как альтернативу. Патч от Victor Stinner.
- [gh-91401](https://python-all.ru/3/whatsnew/changelog.html): Добавлена возможность отключать использование [`subprocess`](https://python-all.ru/3/library/subprocess.html#module-subprocess) в `vfork()` на случай необходимости; также документирован существующий механизм для `posix_spawn()`.
- [gh-64783](https://python-all.ru/3/whatsnew/changelog.html): Исправлено значение [`signal.NSIG`](https://python-all.ru/3/library/signal.html#signal.NSIG) на FreeBSD, чтобы оно принимало номера сигналов больше 32, как `signal.SIGRTMIN` и `signal.SIGRTMAX`. Патч от Victor Stinner.
- [gh-91910](https://python-all.ru/3/whatsnew/changelog.html): Добавлен отсутствующий префикс f для f-строк в сообщениях об ошибках из модулей [`multiprocessing`](https://python-all.ru/3/library/multiprocessing.html#module-multiprocessing) и [`asyncio`](https://python-all.ru/3/library/asyncio.html#module-asyncio).
- [gh-91860](https://python-all.ru/3/whatsnew/changelog.html): Добавлен [`typing.dataclass_transform()`](https://python-all.ru/3/library/typing.html#typing.dataclass_transform), реализующий [**PEP 681**](https://python-all.ru/3/whatsnew/changelog.html). Патч от Jelle Zijlstra.
- [gh-91832](https://python-all.ru/3/whatsnew/changelog.html): Добавлен атрибут `required` в вывод repr для [`argparse.Action`](https://python-all.ru/3/library/argparse.html#argparse.Action).
- [gh-91827](https://python-all.ru/3/whatsnew/changelog.html): В модуль [`tkinter`](https://python-all.ru/3/library/tkinter.html#module-tkinter) добавлен метод `info_patchlevel()`, возвращающий точную версию библиотеки Tcl в виде именованного кортежа, аналогично [`sys.version_info`](https://python-all.ru/3/library/sys.html#sys.version_info).
- [gh-84461](https://python-all.ru/3/whatsnew/changelog.html): Добавлен [`--enable-wasm-pthreads`](https://python-all.ru/3/using/configure.html#cmdoption-enable-wasm-pthreads) для включения поддержки pthreads в сборках WASM. `Emscripten/node` больше не включает многопоточность по умолчанию. Добавлены дополнительные файловые системы.
- [gh-91821](https://python-all.ru/3/whatsnew/changelog.html): Исправлен нестабильный тест `test_from_tuple` в `test_decimal.py`.
- [gh-91217](https://python-all.ru/3/whatsnew/changelog.html): Модуль xdrlib объявлен устаревшим.
- [gh-91217](https://python-all.ru/3/whatsnew/changelog.html): Модуль uu объявлен устаревшим.
- [gh-91760](https://python-all.ru/3/whatsnew/changelog.html): Для числовых ссылок на группы и имён групп в регулярных выражениях будут применяться более строгие правила. Пока что выводится предупреждение об устаревании для тех ссылок и имён, которые в будущих версиях Python станут ошибками.
- [gh-84461](https://python-all.ru/3/whatsnew/changelog.html): Добавлен временный именованный кортеж [`sys._emscripten_info`](https://python-all.ru/3/library/sys.html#sys._emscripten_info) с информацией о платформе Emscripten во время сборки и выполнения.
- [gh-90623](https://python-all.ru/3/whatsnew/changelog.html): [`signal.raise_signal()`](https://python-all.ru/3/library/signal.html#signal.raise_signal) и [`os.kill()`](https://python-all.ru/3/library/os.html#os.kill) теперь немедленно проверяют ожидающие сигналы. Патч от Victor Stinner.
- [gh-91734](https://python-all.ru/3/whatsnew/changelog.html): Исправлена поддержка звука OSS на Solaris.
- [gh-90633](https://python-all.ru/3/whatsnew/changelog.html): Включать переданное значение в исключение, выбрасываемое [`typing.assert_never()`](https://python-all.ru/3/library/typing.html#typing.assert_never). Патч от Jelle Zijlstra.
- [gh-91700](https://python-all.ru/3/whatsnew/changelog.html): При компиляции регулярного выражения, содержащего условное выражение `(?(group)...)`, теперь выбрасывается соответствующее `re.error`, если номер группы ссылается на неопределённую группу. Ранее выбрасывалось внутреннее RuntimeError.
- [gh-91231](https://python-all.ru/3/whatsnew/changelog.html): Добавлен необязательный именованный параметр *shutdown\_timeout* в конструктор `multiprocessing.BaseManager`. Процесс будет завершён принудительно, если terminate() выполняется дольше таймаута. Патч от Victor Stinner.
- [gh-91621](https://python-all.ru/3/whatsnew/changelog.html): Исправлен [`typing.get_type_hints()`](https://python-all.ru/3/library/typing.html#typing.get_type_hints) для [`collections.abc.Callable`](https://python-all.ru/3/library/collections.abc.html#collections.abc.Callable). Патч от Shantanu Jain.
- [gh-90568](https://python-all.ru/3/whatsnew/changelog.html): При разборе `\N` последовательностей символов Юникода с именованными последовательностями в [`regular expression`](https://python-all.ru/3/library/re.html#module-re) теперь выбрасывается `re.error` вместо `TypeError`.
- [gh-91670](https://python-all.ru/3/whatsnew/changelog.html): Удалена устаревшая конфигурационная переменная `SO` в [`sysconfig`](https://python-all.ru/3/library/sysconfig.html#module-sysconfig).
- [gh-91217](https://python-all.ru/3/whatsnew/changelog.html): Модуль telnetlib объявлен устаревшим.
- [gh-91217](https://python-all.ru/3/whatsnew/changelog.html): Модуль sunau объявлен устаревшим.
- [gh-91217](https://python-all.ru/3/whatsnew/changelog.html): Модуль spwd объявлен устаревшим.
- [gh-91217](https://python-all.ru/3/whatsnew/changelog.html): Модуль sndhdr объявлен устаревшим; необходимая функциональность включена непосредственно в `email.mime.MIMEAudio`.
- [gh-91616](https://python-all.ru/3/whatsnew/changelog.html): В модуле [`re`](https://python-all.ru/3/library/re.html#module-re) исправлено несоответствие [`fullmatch()`](https://python-all.ru/3/library/re.html#re.Pattern.fullmatch) при использовании атомарных групп или possessive квантификаторов.
- [gh-91217](https://python-all.ru/3/whatsnew/changelog.html): Модуль 'pipes' объявлен устаревшим.
- [gh-91217](https://python-all.ru/3/whatsnew/changelog.html): Модуль ossaudiodev объявлен устаревшим.
- [bpo-47256](https://python-all.ru/3/whatsnew/changelog.html): В модуле [`re`](https://python-all.ru/3/library/re.html#module-re) максимальное количество захватывающих групп ограничено числом 1 073 741 823 в 64-битной сборке; это увеличивает глубину возврата (backtracking).
- [gh-91217](https://python-all.ru/3/whatsnew/changelog.html): Модуль nis объявлен устаревшим.
- [gh-91595](https://python-all.ru/3/whatsnew/changelog.html): Исправлено сравнение символа и целого числа внутри `Tools.gdb.libpython.write_repr()`. Патч от Yu Liu.
- [gh-74166](https://python-all.ru/3/whatsnew/changelog.html): Добавлена опция возбуждения всех ошибок из [`create_connection()`](https://python-all.ru/3/library/socket.html#socket.create_connection) в [`ExceptionGroup`](https://python-all.ru/3/library/exceptions.html#ExceptionGroup), когда ему не удаётся создать соединение. По умолчанию по-прежнему возбуждается только последняя ошибка, возникшая при переборе нескольких адресов.
- [gh-91487](https://python-all.ru/3/whatsnew/changelog.html): Оптимизирована скорость UDP в asyncio – более чем в 100 раз быстрее при передаче большого файла.
- [gh-91575](https://python-all.ru/3/whatsnew/changelog.html): Обновлено регистронезависимое сравнение в модуле [`re`](https://python-all.ru/3/library/re.html#module-re) до последней версии Unicode.
- [gh-90622](https://python-all.ru/3/whatsnew/changelog.html): В `concurrent.futures.process.ProcessPoolExecutor` запрещён метод запуска multiprocessing «fork» при использовании новой возможности `max_tasks_per_child`, поскольку смешение потоков и fork может привести к зависанию дочерних процессов. В такой ситуации по умолчанию используется безопасный метод запуска «spawn», если не был указан `mp_context`.
- [gh-89022](https://python-all.ru/3/whatsnew/changelog.html): В [`sqlite3`](https://python-all.ru/3/library/sqlite3.html#module-sqlite3) коды результатов `SQLITE_MISUSE` теперь сопоставляются с [`InterfaceError`](https://python-all.ru/3/library/sqlite3.html#sqlite3.InterfaceError) вместо [`ProgrammingError`](https://python-all.ru/3/library/sqlite3.html#sqlite3.ProgrammingError). Кроме того, при неудачной привязке параметров возбуждаются более точные исключения. Патч от Erlend E. Aasland.
- [gh-91526](https://python-all.ru/3/whatsnew/changelog.html): Прекращён вызов `os.device_encoding(file.fileno())` в `TextIOWrapper`. Эта функция была сложной, никогда не документировалась и не работала в большинстве случаев. (Патч от Inada Naoki.)
- [gh-88116](https://python-all.ru/3/whatsnew/changelog.html): Изменены функции, связанные с фреймами, в модуле [`inspect`](https://python-all.ru/3/library/inspect.html#module-inspect); теперь они возвращают обычный объект (обратно совместимый со старым интерфейсом, подобным кортежу), который включает расширенную информацию о позиции [**PEP 657**](https://python-all.ru/3/whatsnew/changelog.html) (номер конечной строки, столбец и конечный столбец). Затронутые функции: [`inspect.getframeinfo()`](https://python-all.ru/3/library/inspect.html#inspect.getframeinfo), [`inspect.getouterframes()`](https://python-all.ru/3/library/inspect.html#inspect.getouterframes), [`inspect.getinnerframes()`](https://python-all.ru/3/library/inspect.html#inspect.getinnerframes), [`inspect.stack()`](https://python-all.ru/3/library/inspect.html#inspect.stack) и [`inspect.trace()`](https://python-all.ru/3/library/inspect.html#inspect.trace). Патч от Pablo Galindo.
- [gh-69093](https://python-all.ru/3/whatsnew/changelog.html): Добавлена поддержка индексации и срезов для [`sqlite3.Blob`](https://python-all.ru/3/library/sqlite3.html#sqlite3.Blob). Патч от Aviv Palivoda и Erlend E. Aasland.
- [gh-69093](https://python-all.ru/3/whatsnew/changelog.html): Добавлена поддержка [менеджера контекста](https://python-all.ru/3/glossary.html#term-context-manager) для [`sqlite3.Blob`](https://python-all.ru/3/library/sqlite3.html#sqlite3.Blob). Патч от Aviv Palivoda и Erlend E. Aasland.
- [gh-91217](https://python-all.ru/3/whatsnew/changelog.html): Устарел модуль nntplib.
- [gh-91217](https://python-all.ru/3/whatsnew/changelog.html): Устарел модуль msilib.
- [gh-91404](https://python-all.ru/3/whatsnew/changelog.html): Улучшена производительность сопоставления с [`re`](https://python-all.ru/3/library/re.html#module-re) за счёт использования вычисляемых переходов (или «threaded code») на поддерживаемых платформах и удаления дорогостоящих косвенных обращений по указателям.
- [gh-91217](https://python-all.ru/3/whatsnew/changelog.html): Устарел модуль imghdr.
- [gh-91217](https://python-all.ru/3/whatsnew/changelog.html): Устарел модуль crypt.
- [gh-91276](https://python-all.ru/3/whatsnew/changelog.html): Освобождено место для более длинных опкодов в выводе [`dis`](https://python-all.ru/3/library/dis.html#module-dis).
- [bpo-47000](https://python-all.ru/3/whatsnew/changelog.html): `TextIOWrapper` теперь использует кодировку локали, когда указан `encoding="locale"`, даже в режиме UTF-8.
- [gh-91230](https://python-all.ru/3/whatsnew/changelog.html): [`warnings.catch_warnings()`](https://python-all.ru/3/library/warnings.html#warnings.catch_warnings) теперь принимает аргументы для [`warnings.simplefilter()`](https://python-all.ru/3/library/warnings.html#warnings.simplefilter), предоставляя более лаконичный способ локально игнорировать предупреждения или превращать их в ошибки.
- [gh-91217](https://python-all.ru/3/whatsnew/changelog.html): Устарел модуль chunk.
- [gh-91498](https://python-all.ru/3/whatsnew/changelog.html): Добавлена опция `TCP_CONNECTION_INFO` (доступна на macOS) в [`socket`](https://python-all.ru/3/library/socket.html#module-socket).
- [bpo-47260](https://python-all.ru/3/whatsnew/changelog.html): Исправлено потенциальное бездействие `os.closerange()` в песочнице seccomp в Linux.
- [bpo-47087](https://python-all.ru/3/whatsnew/changelog.html): Реализованы `typing.Required` и `typing.NotRequired` ([**PEP 655**](https://python-all.ru/3/whatsnew/changelog.html)). Патч от David Foster и Jelle Zijlstra.
- [bpo-47061](https://python-all.ru/3/whatsnew/changelog.html): Устарели модули cgi и cgitb.
- [bpo-47061](https://python-all.ru/3/whatsnew/changelog.html): Устарел модуль audioop.
- [bpo-47000](https://python-all.ru/3/whatsnew/changelog.html): Добавлена [`locale.getencoding()`](https://python-all.ru/3/library/locale.html#locale.getencoding) для получения текущей кодировки локали. Она аналогична `locale.getpreferredencoding(False)`, но игнорирует [режим UTF-8 в Python](https://python-all.ru/3/library/os.html#utf8-mode).
- [bpo-42012](https://python-all.ru/3/whatsnew/changelog.html): Добавлен [`wsgiref.types`](https://python-all.ru/3/library/wsgiref.html#module-wsgiref.types), содержащий типы, специфичные для WSGI, для статической проверки типов.
- [bpo-47227](https://python-all.ru/3/whatsnew/changelog.html): Подавлено связывание выражений при большем количестве ошибок разбора [`re`](https://python-all.ru/3/library/re.html#module-re).
- [bpo-47211](https://python-all.ru/3/whatsnew/changelog.html): Удалены недокументированная и никогда не работавшая функция `re.template()` и флаг `re.TEMPLATE`. Позднее это было отменено в 3.11.0b2, и вместо этого они были объявлены устаревшими.
- [bpo-47135](https://python-all.ru/3/whatsnew/changelog.html): [`decimal.localcontext()`](https://python-all.ru/3/library/decimal.html#decimal.localcontext) теперь принимает атрибуты контекста через именованные аргументы.
- [bpo-43323](https://python-all.ru/3/whatsnew/changelog.html): Исправлены ошибки в модуле [`email`](https://python-all.ru/3/library/email.html#module-email), если сама кодировка содержит символы, которые невозможно декодировать/закодировать.
- [bpo-46841](https://python-all.ru/3/whatsnew/changelog.html): Дизассемблирование ускоренного кода.
- [bpo-46681](https://python-all.ru/3/whatsnew/changelog.html): Уровень сжатия из gzip.compress() теперь передаётся в zlib.
- [bpo-45100](https://python-all.ru/3/whatsnew/changelog.html): Добавлены [`typing.get_overloads()`](https://python-all.ru/3/library/typing.html#typing.get_overloads) и [`typing.clear_overloads()`](https://python-all.ru/3/library/typing.html#typing.clear_overloads). Патч от Jelle Zijlstra.
- [bpo-44807](https://python-all.ru/3/whatsnew/changelog.html): [`typing.Protocol`](https://python-all.ru/3/library/typing.html#typing.Protocol) больше не заменяет бесшумно методы `__init__()`, определённые в подклассах. Запись от Адриана Гарсии Бадарако.
- [bpo-46787](https://python-all.ru/3/whatsnew/changelog.html): Исправлена утечка памяти в исключении [`concurrent.futures.ProcessPoolExecutor`](https://python-all.ru/3/library/concurrent.futures.html#concurrent.futures.ProcessPoolExecutor).
- [bpo-46720](https://python-all.ru/3/whatsnew/changelog.html): Добавлена поддержка path-подобных объектов для [`multiprocessing.set_executable()`](https://python-all.ru/3/library/multiprocessing.html#multiprocessing.set_executable) в Windows – теперь она наравне с Unix-подобными системами. Запись от Жери Огама.
- [bpo-46696](https://python-all.ru/3/whatsnew/changelog.html): Добавлена константа `SO_INCOMING_CPU` в [`socket`](https://python-all.ru/3/library/socket.html#module-socket).
- [bpo-46053](https://python-all.ru/3/whatsnew/changelog.html): Исправлена поддержка аудио OSS на NetBSD.
- [bpo-45639](https://python-all.ru/3/whatsnew/changelog.html): `image/avif` и `image/webp` добавлены в [`mimetypes`](https://python-all.ru/3/library/mimetypes.html#module-mimetypes).
- [bpo-46285](https://python-all.ru/3/whatsnew/changelog.html): Добавлена опция командной строки `-p`/`--protocol` в модуль [`http.server`](https://python-all.ru/3/library/http.server.html#module-http.server), которая задаёт версию HTTP, которой соответствует сервер (соответствующие HTTP/1.1 серверы теперь можно запускать из интерфейса командной строки модуля `http.server`). Запись от Жери Огама.
- [bpo-44791](https://python-all.ru/3/whatsnew/changelog.html): Многоточие теперь принимается как последний аргумент [`typing.Concatenate`](https://python-all.ru/3/library/typing.html#typing.Concatenate).
- [bpo-46547](https://python-all.ru/3/whatsnew/changelog.html): Удалены переменные, просачивающиеся в пространство имён класса `pydoc.Helper`.
- [bpo-46415](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка в ipaddress.ip\_{address,interface,network}: теперь вместо TypeError при неверном кортеже в качестве параметра адреса возбуждается ValueError.
- [bpo-46075](https://python-all.ru/3/whatsnew/changelog.html): `CookieJar` с `DefaultCookiePolicy` теперь может обрабатывать куки от localhost, если в заголовке Set-Cookie явно указан domain=localhost.
- [bpo-45995](https://python-all.ru/3/whatsnew/changelog.html): Добавлен параметр «z» в спецификацию форматирования строк, который приводит отрицательный ноль в числах с плавающей точкой к положительному нулю после округления до точности формата. Предложено Джоном Бельмонте.
- [bpo-26175](https://python-all.ru/3/whatsnew/changelog.html): Полностью реализован интерфейс [`io.BufferedIOBase`](https://python-all.ru/3/library/io.html#io.BufferedIOBase) или [`io.TextIOBase`](https://python-all.ru/3/library/io.html#io.TextIOBase) для объектов [`tempfile.SpooledTemporaryFile`](https://python-all.ru/3/library/tempfile.html#tempfile.SpooledTemporaryFile). Это позволяет им корректно работать с более высокоуровневыми слоями (например, модулями сжатия). Запись от Кэри Меткалфа.
- [bpo-45138](https://python-all.ru/3/whatsnew/changelog.html): Исправлен регресс в колбэке трассировки [`sqlite3`](https://python-all.ru/3/library/sqlite3.html#module-sqlite3), когда связанные параметры не раскрывались в передаваемой строке оператора. Регресс был внесён в Python 3.10 фиксом [bpo-40318](https://python-all.ru/3/whatsnew/changelog.html). Запись от Эрленда Э. Аасланда.
- [bpo-44863](https://python-all.ru/3/whatsnew/changelog.html): Разрешено подклассам [`TypedDict`](https://python-all.ru/3/library/typing.html#typing.TypedDict) также включать [`Generic`](https://python-all.ru/3/library/typing.html#typing.Generic) в качестве базового класса в классовом синтаксисе. Это позволяет пользователю определять обобщённый `TypedDict`, как пользовательский обобщённый, но с семантикой `TypedDict`.
- [bpo-44587](https://python-all.ru/3/whatsnew/changelog.html): Исправлено BooleanOptionalAction – теперь не добавляется автоматически строка по умолчанию. Если требуется строка по умолчанию, используйте форматировщик.
- [bpo-43827](https://python-all.ru/3/whatsnew/changelog.html): Все позиционные или ключевые параметры `ABCMeta.__new__` теперь только позиционные, чтобы избежать конфликтов с ключевыми аргументами, передаваемыми в `__init_subclass__()`.
- [bpo-43218](https://python-all.ru/3/whatsnew/changelog.html): Предотвращено создание виртуального окружения, путь к которому содержит разделитель PATH. Это могло повлиять на использование скрипта активации. Запись от Дастина Родригеса.
- [bpo-38435](https://python-all.ru/3/whatsnew/changelog.html): Добавлен параметр `process_group` в [`subprocess.Popen`](https://python-all.ru/3/library/subprocess.html#subprocess.Popen), чтобы перенести больше функциональности с небезопасного параметра `preexec_fn`.
- [bpo-42066](https://python-all.ru/3/whatsnew/changelog.html): Исправлена сортировка кук в `CookieJar.__iter__()` – это лишнее поведение, не упомянутое в RFC 2965 или протоколе кук Netscape. Теперь порядок кук в `CookieJar` соответствует порядку заголовка `Set-Cookie`. Запись от Имана Кермани.
- [bpo-40617](https://python-all.ru/3/whatsnew/changelog.html): Добавлен [`create_window_function()`](https://python-all.ru/3/library/sqlite3.html#sqlite3.Connection.create_window_function) в [`sqlite3.Connection`](https://python-all.ru/3/library/sqlite3.html#sqlite3.Connection) для создания агрегатных оконных функций. Запись от Эрленда Э. Аасланда.
- [bpo-40676](https://python-all.ru/3/whatsnew/changelog.html): [`csv`](https://python-all.ru/3/library/csv.html#module-csv) переведён на Argument Clinic для [`csv.field_size_limit()`](https://python-all.ru/3/library/csv.html#csv.field_size_limit), [`csv.get_dialect()`](https://python-all.ru/3/library/csv.html#csv.get_dialect), [`csv.unregister_dialect()`](https://python-all.ru/3/library/csv.html#csv.unregister_dialect) и [`csv.list_dialects()`](https://python-all.ru/3/library/csv.html#csv.list_dialects).
- [bpo-39716](https://python-all.ru/3/whatsnew/changelog.html): Возбуждается `ArgumentError`, когда одно и то же имя подпарсера добавляется дважды в `argparse.ArgumentParser`. Это согласуется с поведением по умолчанию (когда одна и та же строка опции добавляется дважды в `ArgumentParser`).
- [bpo-36073](https://python-all.ru/3/whatsnew/changelog.html): Вместо падения с ошибкой сегментации при рекурсивном использовании курсоров в конвертерах [`sqlite3`](https://python-all.ru/3/library/sqlite3.html#module-sqlite3) теперь возбуждается [`ProgrammingError`](https://python-all.ru/3/library/sqlite3.html#sqlite3.ProgrammingError). Запись от Сергея Федосеева.
- [bpo-34975](https://python-all.ru/3/whatsnew/changelog.html): Добавлен метод `start_tls()` в `StreamWriter`, который обновляет соединение с помощью TLS, используя заданный [`SSLContext`](https://python-all.ru/3/library/ssl.html#ssl.SSLContext).
- [bpo-22276](https://python-all.ru/3/whatsnew/changelog.html): Методы [`Path`](https://python-all.ru/3/library/pathlib.html#pathlib.Path) [`glob()`](https://python-all.ru/3/library/pathlib.html#pathlib.Path.glob) и [`rglob()`](https://python-all.ru/3/library/pathlib.html#pathlib.Path.rglob) теперь возвращают только каталоги, если *pattern* заканчивается разделителем компонентов пути (`/` или [`sep`](https://python-all.ru/3/library/os.html#os.sep)). Запись от Эйсуке Кавашимы.
- [bpo-24905](https://python-all.ru/3/whatsnew/changelog.html): Добавлен [`blobopen()`](https://python-all.ru/3/library/sqlite3.html#sqlite3.Connection.blobopen) в [`sqlite3.Connection`](https://python-all.ru/3/library/sqlite3.html#sqlite3.Connection). [`sqlite3.Blob`](https://python-all.ru/3/library/sqlite3.html#sqlite3.Blob) обеспечивает пошаговые операции ввода-вывода над большими двоичными объектами. Запись от Авива Паливоды и Эрленда Э. Аасланда.

### Документация

- [gh-91888](https://python-all.ru/3/whatsnew/changelog.html): Добавлена новая роль `gh` в документацию для создания ссылок на тикеты GitHub.
- [gh-91783](https://python-all.ru/3/whatsnew/changelog.html): Документированы проблемы безопасности, связанные с использованием функции [`shutil.unpack_archive()`](https://python-all.ru/3/library/shutil.html#shutil.unpack_archive).
- [gh-91547](https://python-all.ru/3/whatsnew/changelog.html): Удалена страница «Незадокументированные модули».
- [gh-91298](https://python-all.ru/3/whatsnew/changelog.html): В `importlib.resources.abc` уточнена документация протокола Traversable, применены изменения из importlib\_resources 5.7.1.
- [bpo-44347](https://python-all.ru/3/whatsnew/changelog.html): Уточнено значение параметра *dirs\_exist\_ok*, именованного аргумента функции [`shutil.copytree()`](https://python-all.ru/3/library/shutil.html#shutil.copytree).
- [bpo-36329](https://python-all.ru/3/whatsnew/changelog.html): Удалена команда ‘make -C Doc serve’ в пользу ‘make -C Doc htmlview’
- [bpo-47189](https://python-all.ru/3/whatsnew/changelog.html): Добавлена запись в раздел «Что нового в Python 3.11» о проекте Faster CPython. Документация от Ken Jin и Kumar Aditya.
- [bpo-38668](https://python-all.ru/3/whatsnew/changelog.html): Обновлено введение в документацию для [`os.path`](https://python-all.ru/3/library/os.path.html#module-os.path) – удалены предупреждения, ставшие неактуальными после реализации [**PEP 383**](https://python-all.ru/3/whatsnew/changelog.html) и [**PEP 529**](https://python-all.ru/3/whatsnew/changelog.html).
- [bpo-47115](https://python-all.ru/3/whatsnew/changelog.html): В документации теперь перечислено, какие члены структур C входят в состав [Limited API / Stable ABI](https://python-all.ru/3/c-api/stable.html#stable).
- [bpo-46962](https://python-all.ru/3/whatsnew/changelog.html): Все строки документации в примерах кода теперь обёрнуты в [`PyDoc_STR`](https://python-all.ru/3/c-api/intro.html#c.PyDoc_STR) в соответствии с рекомендацией [**раздела «Строки документации» из PEP 7**](https://python-all.ru/3/whatsnew/changelog.html). Исправление от Oleg Iarygin.
- [bpo-26792](https://python-all.ru/3/whatsnew/changelog.html): Улучшены строки документации для [`runpy.run_module()`](https://python-all.ru/3/library/runpy.html#runpy.run_module) и [`runpy.run_path()`](https://python-all.ru/3/library/runpy.html#runpy.run_path). Первоначальное исправление от Andrew Brezovsky.

### Тесты

- [gh-92169](https://python-all.ru/3/whatsnew/changelog.html): Использовать `warnings_helper.import_deprecated()` для единообразного импорта устаревших модулей в тестах. Исправление от Hugo van Kemenade.
- [gh-84461](https://python-all.ru/3/whatsnew/changelog.html): Если многопроцессность включена, libregrtest теперь может использовать исполняемый файл Python, отличный от `sys.executable`, с помощью флага `--python`.
- [gh-91904](https://python-all.ru/3/whatsnew/changelog.html): Исправлена инициализация `PYTHONREGRTEST_UNICODE_GUARD`, которая мешала запуску регрессионных тестов в локали, отличной от UTF-8.
- [gh-91752](https://python-all.ru/3/whatsnew/changelog.html): Добавлен @requires\_zlib в test.test\_tools.test\_freeze.TestFreeze.
- [gh-91607](https://python-all.ru/3/whatsnew/changelog.html): Исправлена `test_concurrent_futures` для проверки корректного контекста метода запуска многопроцессности в нескольких случаях, где логика теста путала это.
- [bpo-40280](https://python-all.ru/3/whatsnew/changelog.html): Тесты потоков теперь пропускаются на платформах WASM без поддержки pthread.
- [bpo-47109](https://python-all.ru/3/whatsnew/changelog.html): Тесты для `ctypes.macholib.dyld`, `ctypes.macholib.dylib` и `ctypes.macholib.framework` перенесены из времён ручного тестирования (до [`unittest`](https://python-all.ru/3/library/unittest.html#module-unittest)) в расположение и структуру `ctypes.test`. Исправление от Oleg Iarygin.
- [bpo-29890](https://python-all.ru/3/whatsnew/changelog.html): Добавлены тесты для создания [`ipaddress.IPv4Interface`](https://python-all.ru/3/library/ipaddress.html#ipaddress.IPv4Interface) и [`ipaddress.IPv6Interface`](https://python-all.ru/3/library/ipaddress.html#ipaddress.IPv6Interface) с аргументами-кортежами. Первоначальное исправление и тесты от louisom.

### Сборка

- [gh-89452](https://python-all.ru/3/whatsnew/changelog.html): Модуль gdbm-compat теперь предпочтительнее ndbm, если оба доступны в системе. Это позволяет избежать проблемного ndbm.h на macOS.
- [gh-91731](https://python-all.ru/3/whatsnew/changelog.html): Python теперь собирается с опцией компилятора `-std=c11`, а не `-std=c99`. Исправление от Victor Stinner.
- [bpo-47152](https://python-all.ru/3/whatsnew/changelog.html): Добавлены сценарий и цель make для генерации `sre_constants.h`.
- [bpo-47103](https://python-all.ru/3/whatsnew/changelog.html): Сборки Windows `PGInstrument` теперь копируют требуемую DLL в выходной каталог, что упрощает выполнение этапа профилирования при PGO-сборке.

### Windows

- [bpo-46907](https://python-all.ru/3/whatsnew/changelog.html): Обновлён установщик Windows для использования SQLite 3.38.3.
- [bpo-47239](https://python-all.ru/3/whatsnew/changelog.html): Исправлен вывод команд –list и –list-paths для [менеджера установки Python](https://python-all.ru/3/using/windows.html#launcher) при использовании в активном виртуальном окружении.
- [bpo-46907](https://python-all.ru/3/whatsnew/changelog.html): Обновлён установщик Windows для использования SQLite 3.38.2.
- [bpo-46785](https://python-all.ru/3/whatsnew/changelog.html): Исправлено состояние гонки между [`os.stat()`](https://python-all.ru/3/library/os.html#os.stat) и удалением файла в Windows за счёт использования кодов ошибок, возвращаемых `FindFirstFileW()`, когда это уместно, в `win32_xstat_impl`.
- [bpo-40859](https://python-all.ru/3/whatsnew/changelog.html): Обновлена сборка Windows для использования xz-5.2.5

### macOS

- [bpo-46907](https://python-all.ru/3/whatsnew/changelog.html): Обновлён установщик macOS до SQLite 3.38.4.

### Инструменты/Демонстрации

- [gh-91583](https://python-all.ru/3/whatsnew/changelog.html): Исправлена регрессия в коде, генерируемом Argument Clinic для функций с параметром `defining_class`.
- [gh-91575](https://python-all.ru/3/whatsnew/changelog.html): Добавлены сценарий `Tools/scripts/generate_re_casefix.py` и цель make `regen-re` для генерации дополнительных данных для регистронезависимого сопоставления в соответствии с текущей версией Unicode.
- [gh-91551](https://python-all.ru/3/whatsnew/changelog.html): Удалён древний редактор цветов Pynche. Он перемещён по адресу [https://gitlab.com/warsaw/pynche](https://python-all.ru/3/whatsnew/changelog.html)

### C API

- [gh-88279](https://python-all.ru/3/whatsnew/changelog.html): Объявлены устаревшими функции C: `PySys_SetArgv()`, `PySys_SetArgvEx()`, `PySys_SetPath()`. Исправление от Виктора Стиннера.
- [gh-92154](https://python-all.ru/3/whatsnew/changelog.html): Добавлена функция [`PyCode_GetCode()`](https://python-all.ru/3/c-api/code.html#c.PyCode_GetCode). Эта функция выполняет эквивалент кода Python `getattr(code_object, 'co_code')`.
- [gh-92173](https://python-all.ru/3/whatsnew/changelog.html): Исправлен аргумент `closure` для [`PyEval_EvalCodeEx()`](https://python-all.ru/3/c-api/veryhigh.html#c.PyEval_EvalCodeEx).
- [gh-91320](https://python-all.ru/3/whatsnew/changelog.html): Исправлены предупреждения компилятора C++ о «приведении в стиле C» (`g++ -Wold-style-cast`) в C API Python. Используйте `reinterpret_cast<>` и `static_cast<>` приведения в стиле C++ при использовании C API Python в C++. Исправление от Виктора Стиннера.
- [gh-80527](https://python-all.ru/3/whatsnew/changelog.html): Помечены как устаревшие функции с помощью [**PEP 623**](https://python-all.ru/3/whatsnew/changelog.html): `PyUnicode_AS_DATA()`, `PyUnicode_AS_UNICODE()`, `PyUnicode_GET_DATA_SIZE()`, `PyUnicode_GET_SIZE()`. Исправление от Виктора Стиннера.
- [gh-91768](https://python-all.ru/3/whatsnew/changelog.html): Тип аргумента функций [`Py_REFCNT()`](https://python-all.ru/3/c-api/refcounting.html#c.Py_REFCNT), [`Py_TYPE()`](https://python-all.ru/3/c-api/structures.html#c.Py_TYPE), [`Py_SIZE()`](https://python-all.ru/3/c-api/structures.html#c.Py_SIZE) и [`Py_IS_TYPE()`](https://python-all.ru/3/c-api/structures.html#c.Py_IS_TYPE) теперь `PyObject*`, а не `const PyObject*`. Исправление от Виктора Стиннера.
- [gh-91020](https://python-all.ru/3/whatsnew/changelog.html): Добавлен `PyBytes_Type.tp_alloc` для инициализации `PyBytesObject.ob_shash` для подклассов bytes.
- [bpo-40421](https://python-all.ru/3/whatsnew/changelog.html): Добавлена функция C API `PyFrame_GetLasti` для безопасного доступа к атрибуту `f_lasti` объекта frame из кода на C.
- [bpo-35134](https://python-all.ru/3/whatsnew/changelog.html): Удалён заголовочный файл `Include/code.h`. Расширения на C должны включать только основной заголовочный файл `<Python.h>`. Исправление от Виктора Стиннера.
- [bpo-47169](https://python-all.ru/3/whatsnew/changelog.html): [`PyOS_CheckStack()`](https://python-all.ru/3/c-api/sys.html#c.PyOS_CheckStack) теперь экспортируется в стабильный ABI на Windows.
- [bpo-47169](https://python-all.ru/3/whatsnew/changelog.html): [`PyThread_get_thread_native_id()`](https://python-all.ru/3/c-api/threads.html#c.PyThread_get_thread_native_id) исключён из стабильного ABI на платформах, где его нет (например, Solaris).
- [bpo-46343](https://python-all.ru/3/whatsnew/changelog.html): Добавлены [`PyErr_GetHandledException()`](https://python-all.ru/3/c-api/exceptions.html#c.PyErr_GetHandledException) и [`PyErr_SetHandledException()`](https://python-all.ru/3/c-api/exceptions.html#c.PyErr_SetHandledException) в качестве более простых альтернатив [`PyErr_GetExcInfo()`](https://python-all.ru/3/c-api/exceptions.html#c.PyErr_GetExcInfo) и [`PyErr_SetExcInfo()`](https://python-all.ru/3/c-api/exceptions.html#c.PyErr_SetExcInfo).

  Они включены в стабильный ABI.

## Python 3.11.0 alpha 7

*Дата выпуска: 2022-04-05*

### Ядро и встроенные модули

- [bpo-47212](https://python-all.ru/3/whatsnew/changelog.html): Возбуждается [`IndentationError`](https://python-all.ru/3/library/exceptions.html#IndentationError) вместо [`SyntaxError`](https://python-all.ru/3/library/exceptions.html#SyntaxError) для одинокого `except` без последующего отступа. Улучшены позиции `SyntaxError` для генератора без скобок, используемого в качестве аргумента. Исправление от Matthieu Dartiailh.
- [bpo-47186](https://python-all.ru/3/whatsnew/changelog.html): Заменить `JUMP_IF_NOT_EG_MATCH` на [`CHECK_EG_MATCH`](https://python-all.ru/3/library/dis.html#opcode-CHECK_EG_MATCH) + jump.
- [bpo-47176](https://python-all.ru/3/whatsnew/changelog.html): Сборки Emscripten не могут обрабатывать сигналы обычным способом из-за ограничений платформы. Python теперь может обрабатывать сигналы. Для использования установите Module.Py\_EmscriptenSignalBuffer в однобайтовый SharedArrayBuffer и задайте Py\_EMSCRIPTEN\_SIGNAL\_HANDLING равным 1. Запись числа в SharedArrayBuffer приведёт к возбуждению соответствующего сигнала в потоке Python.
- [bpo-47186](https://python-all.ru/3/whatsnew/changelog.html): Заменить `JUMP_IF_NOT_EXC_MATCH` на [`CHECK_EXC_MATCH`](https://python-all.ru/3/library/dis.html#opcode-CHECK_EXC_MATCH) + jump.
- [bpo-47120](https://python-all.ru/3/whatsnew/changelog.html): Заменить абсолютный опкод перехода [`JUMP_NO_INTERRUPT`](https://python-all.ru/3/library/dis.html#opcode-JUMP_NO_INTERRUPT) на относительный [`JUMP_BACKWARD_NO_INTERRUPT`](https://python-all.ru/3/library/dis.html#opcode-JUMP_BACKWARD_NO_INTERRUPT).
- [bpo-46841](https://python-all.ru/3/whatsnew/changelog.html): Избежать ненужных выделений памяти при сравнении объектов code.
- [bpo-47182](https://python-all.ru/3/whatsnew/changelog.html): Исправлен сбой при использовании именованного символа Юникода, такого как `"\N{digit nine}"`, после повторной инициализации основного интерпретатора.
- [bpo-47162](https://python-all.ru/3/whatsnew/changelog.html): WebAssembly не может работать с некорректными приведениями указателей на функции (разное количество или типы аргументов). Python теперь может использовать трамплины вызовов для смягчения проблемы. Определите `PY_CALL_TRAMPOLINE`, чтобы включить трамплины вызовов.
- [bpo-46775](https://python-all.ru/3/whatsnew/changelog.html): Некоторые коды ошибок Windows (\>= 10000) теперь отображаются в правильный errno и могут возбуждать подкласс [`OSError`](https://python-all.ru/3/library/exceptions.html#OSError). Исправление от donghee Na.
- [bpo-47129](https://python-all.ru/3/whatsnew/changelog.html): Улучшены сообщения об ошибках в синтаксических ошибках f-строк, касающихся пустых выражений.
- [bpo-47117](https://python-all.ru/3/whatsnew/changelog.html): Исправлен сбой при неудачном декодировании символов в интерактивном режиме, если буферы токенизатора не инициализированы. Исправление от Pablo Galindo.
- [bpo-47127](https://python-all.ru/3/whatsnew/changelog.html): Ускорены вызовы функций на C с именованными аргументами на 25% благодаря специализации. Исправление от Kumar Aditya.
- [bpo-47120](https://python-all.ru/3/whatsnew/changelog.html): Заменён `JUMP_ABSOLUTE` на относительный переход [`JUMP_BACKWARD`](https://python-all.ru/3/library/dis.html#opcode-JUMP_BACKWARD).
- [bpo-42197](https://python-all.ru/3/whatsnew/changelog.html): `PyFrame_FastToLocalsWithError()` и `PyFrame_LocalsToFast()` больше не вызываются во время профилирования или трассировки. Код на C может получить доступ к атрибуту `f_locals` объекта [`PyFrameObject`](https://python-all.ru/3/c-api/frame.html#c.PyFrameObject), вызвав [`PyFrame_GetLocals()`](https://python-all.ru/3/c-api/frame.html#c.PyFrame_GetLocals).
- [bpo-47070](https://python-all.ru/3/whatsnew/changelog.html): Улучшена производительность `array_inplace_repeat` за счёт сокращения числа вызовов `memcpy`. Рефакторинг методов `repeat`, `repeat`, `array`, `bytes`, `bytearray` и `unicodeobject`, выполняющих преобразование на месте, с переходом на общий `_PyBytes_Repeat`.
- [bpo-47053](https://python-all.ru/3/whatsnew/changelog.html): Уменьшена деоптимизация в специализированном опкоде `BINARY_OP_INPLACE_ADD_UNICODE`.
- [bpo-47045](https://python-all.ru/3/whatsnew/changelog.html): Удалено поле `f_state` из структуры \_PyInterpreterFrame. Добавлено поле `owner` в структуру \_PyInterpreterFrame для явного указания владения, что упрощает очистку и освобождение фреймов и генераторов.

### Библиотеки

- [bpo-46968](https://python-all.ru/3/whatsnew/changelog.html): Проверка наличия заголовочного файла «sys/auxv.h» в [`faulthandler`](https://python-all.ru/3/library/faulthandler.html#module-faulthandler) для предотвращения проблем компиляции в системах, где этого заголовка нет. Исправление от Pablo Galindo

### Ядро и встроенные модули

- [bpo-46329](https://python-all.ru/3/whatsnew/changelog.html): Использование младшего бита `LOAD_GLOBAL` для указания, нужно ли поместить значение `NULL` перед глобальной переменной. Немного упрощает последовательность вызова.
- [bpo-46841](https://python-all.ru/3/whatsnew/changelog.html): Ускорение байт-кода на месте с сохранением его как части соответствующего `PyCodeObject`.
- [bpo-47012](https://python-all.ru/3/whatsnew/changelog.html): Ускорение итерации по [`bytes`](https://python-all.ru/3/library/stdtypes.html#bytes) и [`bytearray`](https://python-all.ru/3/library/stdtypes.html#bytearray) на 30%. Исправление от Kumar Aditya.
- [bpo-47009](https://python-all.ru/3/whatsnew/changelog.html): Улучшена производительность [`list.append()`](https://python-all.ru/3/library/stdtypes.html#list.append) и списковых включений за счёт оптимизации для типичного случая, когда изменение размера не требуется. Исправление от Dennis Sweeney.
- [bpo-47005](https://python-all.ru/3/whatsnew/changelog.html): Улучшена производительность `bytearray_repeat` и `bytearray_irepeat` за счёт сокращения числа вызовов `memcpy`.

### Библиотеки

- [bpo-46829](https://python-all.ru/3/whatsnew/changelog.html): Объявлено устаревшим передачу сообщения в [`asyncio.Future.cancel()`](https://python-all.ru/3/library/asyncio-future.html#asyncio.Future.cancel) и [`asyncio.Task.cancel()`](https://python-all.ru/3/library/asyncio-task.html#asyncio.Task.cancel)

### Ядро и встроенные модули

- [bpo-46993](https://python-all.ru/3/whatsnew/changelog.html): Ускорение создания [`bytearray`](https://python-all.ru/3/library/stdtypes.html#bytearray) из [`list`](https://python-all.ru/3/library/stdtypes.html#list) и [`tuple`](https://python-all.ru/3/library/stdtypes.html#tuple) на 40%. Исправление от Kumar Aditya.
- [bpo-39829](https://python-all.ru/3/whatsnew/changelog.html): Удалён вызов `__len__()` при инициализации списка; инициализация перенесена в `list_extend`. Исправление от Jeremiah Pascual.
- [bpo-46944](https://python-all.ru/3/whatsnew/changelog.html): Ускорение выбрасывания исключения в генераторе с соглашением вызова [`METH_FASTCALL`](https://python-all.ru/3/c-api/structures.html#c.METH_FASTCALL). Исправление от Kumar Aditya.
- [bpo-46841](https://python-all.ru/3/whatsnew/changelog.html): Изменение [`STORE_SUBSCR`](https://python-all.ru/3/library/dis.html#opcode-STORE_SUBSCR) для использования записи inline-кэша (вместо её oparg) в качестве адаптивного счётчика.
- [bpo-46841](https://python-all.ru/3/whatsnew/changelog.html): Использование inline-кэша для `PRECALL` и [`CALL`](https://python-all.ru/3/library/dis.html#opcode-CALL); удаление внутренних механизмов управления (теперь неиспользуемыми) не-inline кэшами.
- [bpo-46881](https://python-all.ru/3/whatsnew/changelog.html): Статическое выделение и инициализация латинских символов.
- [bpo-46838](https://python-all.ru/3/whatsnew/changelog.html): Улучшены сообщения об ошибках синтаксиса для некорректных определений функций. Исправление от Pablo Galindo
- [bpo-43721](https://python-all.ru/3/whatsnew/changelog.html): Исправлены строки документации [`getter`](https://python-all.ru/3/library/functions.html#property.getter), [`setter`](https://python-all.ru/3/library/functions.html#property.setter) и [`deleter`](https://python-all.ru/3/library/functions.html#property.deleter), чтобы уточнить, что они создают новую копию свойства.
- [bpo-43224](https://python-all.ru/3/whatsnew/changelog.html): Внесены изменения в грамматику, необходимые для PEP 646.

### Библиотеки

- [bpo-47208](https://python-all.ru/3/whatsnew/changelog.html): Разрешено поставщикам переопределять `CTYPES_MAX_ARGCOUNT`.
- [bpo-23689](https://python-all.ru/3/whatsnew/changelog.html): Модуль [`re`](https://python-all.ru/3/library/re.html#module-re): исправлена утечка памяти, когда сопоставление прерывается сигналом или происходит сбой выделения памяти. Исправление от Ma Lin.
- [bpo-47167](https://python-all.ru/3/whatsnew/changelog.html): Разрешено переопределять будущую проверку соответствия в [`asyncio.Task`](https://python-all.ru/3/library/asyncio-task.html#asyncio.Task).
- [bpo-47151](https://python-all.ru/3/whatsnew/changelog.html): Если подпроцесс пытается использовать vfork и vfork возвращает ошибку, теперь он переключается на fork. Это позволяет использовать его в ситуациях, где vfork не разрешён ядром ОС.
- [bpo-47152](https://python-all.ru/3/whatsnew/changelog.html): Модуль [`re`](https://python-all.ru/3/library/re.html#module-re) преобразован в пакет. Модули `sre_compile`, `sre_constants` и `sre_parse` объявлены устаревшими.
- [bpo-4833](https://python-all.ru/3/whatsnew/changelog.html): Добавлен `ZipFile.mkdir()`
- [bpo-27929](https://python-all.ru/3/whatsnew/changelog.html): Исправлено [`asyncio.loop.sock_connect()`](https://python-all.ru/3/library/asyncio-eventloop.html#asyncio.loop.sock_connect): теперь разрешаются имена только для семейств [`socket.AF_INET`](https://python-all.ru/3/library/socket.html#socket.AF_INET) или [`socket.AF_INET6`](https://python-all.ru/3/library/socket.html#socket.AF_INET6). Разрешение может не иметь смысла для других семейств, например [`socket.AF_BLUETOOTH`](https://python-all.ru/3/library/socket.html#socket.AF_BLUETOOTH) и [`socket.AF_UNIX`](https://python-all.ru/3/library/socket.html#socket.AF_UNIX).
- [bpo-14265](https://python-all.ru/3/whatsnew/changelog.html): Добавлено полное квалифицированное имя теста в вывод unittest
- [bpo-47061](https://python-all.ru/3/whatsnew/changelog.html): модуль aifc помечен как устаревший.
- [bpo-39622](https://python-all.ru/3/whatsnew/changelog.html): Обработка Ctrl+C в программах asyncio для прерывания основной задачи.
- [bpo-47101](https://python-all.ru/3/whatsnew/changelog.html): [`hashlib.algorithms_available`](https://python-all.ru/3/library/hashlib.html#hashlib.algorithms_available) теперь включает только алгоритмы, которые предоставляются активными криптопровайдерами в OpenSSL 3.0. Устаревшие алгоритмы не включаются, если только устаревший провайдер не был загружен в контекст OSSL по умолчанию.
- [bpo-47099](https://python-all.ru/3/whatsnew/changelog.html): Все сообщения исключений `URLError`, вызываемые в `urllib.request.URLopener`, теперь содержат двоеточие между `ftp error` и остальной частью сообщения. Ранее `open_ftp()` двоеточие отсутствовало. Исправление от Олега Иарыгина.
- [bpo-47099](https://python-all.ru/3/whatsnew/changelog.html): Изменена цепочка исключений с `Exception.with_traceback()`/[`sys.exc_info()`](https://python-all.ru/3/library/sys.html#sys.exc_info) на [**PEP 3134**](https://python-all.ru/3/whatsnew/changelog.html). Исправление от Олега Иарыгина.
- [bpo-47095](https://python-all.ru/3/whatsnew/changelog.html): Внутренний модуль `_blake2` в составе [`hashlib`](https://python-all.ru/3/library/hashlib.html#module-hashlib) теперь предпочитает `libb2` с сайта [https://www.blake2.net/](https://python-all.ru/3/whatsnew/changelog.html), а не встроенную копию blake2 от Python.
- [bpo-47098](https://python-all.ru/3/whatsnew/changelog.html): Пакет Keccak Code Package для внутреннего модуля `_sha3` в составе [`hashlib`](https://python-all.ru/3/library/hashlib.html#module-hashlib) заменён на tiny\_sha3. Этот модуль используется как запасной вариант, когда Python собран без OpenSSL.
- [bpo-47088](https://python-all.ru/3/whatsnew/changelog.html): Реализован [`typing.LiteralString`](https://python-all.ru/3/library/typing.html#typing.LiteralString), часть [**PEP 675**](https://python-all.ru/3/whatsnew/changelog.html). Исправление от Jelle Zijlstra.
- [bpo-42885](https://python-all.ru/3/whatsnew/changelog.html): Оптимизированы [`re.search()`](https://python-all.ru/3/library/re.html#re.search), [`re.split()`](https://python-all.ru/3/library/re.html#re.split), [`re.findall()`](https://python-all.ru/3/library/re.html#re.findall), [`re.finditer()`](https://python-all.ru/3/library/re.html#re.finditer) и [`re.sub()`](https://python-all.ru/3/library/re.html#re.sub) для регулярных выражений, начинающихся с `\A` или `^`.
- [bpo-23691](https://python-all.ru/3/whatsnew/changelog.html): Защита итератора [`re.finditer()`](https://python-all.ru/3/library/re.html#re.finditer) от повторного входа.
- [bpo-47067](https://python-all.ru/3/whatsnew/changelog.html): Оптимизирован вызов объектов `GenericAlias` за счёт использования [**PEP 590**](https://python-all.ru/3/whatsnew/changelog.html) `vectorcall` и замены `PyObject_SetAttrString` на `PyObject_SetAttr`.
- [bpo-28080](https://python-all.ru/3/whatsnew/changelog.html): Добавлен параметр *metadata\_encoding* в конструктор [`zipfile.ZipFile`](https://python-all.ru/3/library/zipfile.html#zipfile.ZipFile) и опция `--metadata-encoding` в CLI [`zipfile`](https://python-all.ru/3/library/zipfile.html#module-zipfile), чтобы обеспечить чтение zip-файлов, в которых имена файлов закодированы нестандартными кодировками.
- [bpo-47000](https://python-all.ru/3/whatsnew/changelog.html): [`io.text_encoding()`](https://python-all.ru/3/library/io.html#io.text_encoding) теперь возвращает «utf-8», когда включён режим UTF-8.
- [bpo-42369](https://python-all.ru/3/whatsnew/changelog.html): Исправлена потокобезопасность `zipfile._SharedFile.tell()`, чтобы избежать исключения «zipfile.BadZipFile: Bad CRC-32 for file» при чтении `ZipFile` из нескольких потоков.
- [bpo-38256](https://python-all.ru/3/whatsnew/changelog.html): Исправлена работа [`binascii.crc32()`](https://python-all.ru/3/library/binascii.html#binascii.crc32), когда он скомпилирован с использованием crc32 из zlib, чтобы правильно обрабатывать входные данные размером 4+ ГиБ, вместо возврата неверного результата. Обходным решением до этого было передавать функции данные порциями меньше 4 ГиБ или просто вызывать функцию модуля zlib.

  Также [`binascii.crc32()`](https://python-all.ru/3/library/binascii.html#binascii.crc32) теперь освобождает GIL при вычислениях на больших входных данных, как это делают [`zlib.crc32()`](https://python-all.ru/3/library/zlib.html#zlib.crc32) и [`hashlib`](https://python-all.ru/3/library/hashlib.html#module-hashlib).

  Это также повышает производительность в Windows, поскольку теперь для [`binascii.crc32()`](https://python-all.ru/3/library/binascii.html#binascii.crc32) используется реализация crc32 из zlib, что даёт ускорение в 2–3 раза.

  Тот факт, что в стандартной библиотеке есть два модуля с API crc32, – известный исторический курьёз. Этот шаг приближает нас к единой реализации за ними.
- [bpo-47066](https://python-all.ru/3/whatsnew/changelog.html): Глобальные встроенные флаги (например, `(?i)`) теперь можно использовать только в начале регулярных выражений. Их использование не в начале выражения было объявлено устаревшим начиная с Python 3.6.
- [bpo-39394](https://python-all.ru/3/whatsnew/changelog.html): Предупреждение о встроенных флагах не в начале регулярного выражения теперь содержит позицию флага.
- [bpo-433030](https://python-all.ru/3/whatsnew/changelog.html): Добавлена поддержка атомарных групп (`(?>...)`) и притяжательных квантификаторов (`*+`, `++`, `?+`, `{m,n}+`) в [`regular expressions`](https://python-all.ru/3/library/re.html#module-re).
- [bpo-47062](https://python-all.ru/3/whatsnew/changelog.html): Реализован контекстный менеджер [`asyncio.Runner`](https://python-all.ru/3/library/asyncio-runner.html#asyncio.Runner).
- [bpo-46382](https://python-all.ru/3/whatsnew/changelog.html): [`dataclass()`](https://python-all.ru/3/library/dataclasses.html#dataclasses.dataclass) `slots=True` теперь правильно пропускает слоты, уже определённые в базовых классах. Исправление от Arie Bovenberg.
- [bpo-47057](https://python-all.ru/3/whatsnew/changelog.html): Использовано соглашение FASTCALL для `FutureIter.throw()`
- [bpo-47061](https://python-all.ru/3/whatsnew/changelog.html): Объявлены устаревшими различные модули, перечисленные в [**PEP 594**](https://python-all.ru/3/whatsnew/changelog.html):

  aifc, asynchat, asyncore, audioop, cgi, cgitb, chunk, crypt, imghdr, msilib, nntplib, nis, ossaudiodev, pipes, smtpd, sndhdr, spwd, sunau, telnetlib, uu, xdrlib
- [bpo-34790](https://python-all.ru/3/whatsnew/changelog.html): Удалена возможность передачи корутинных объектов в [`asyncio.wait()`](https://python-all.ru/3/library/asyncio-task.html#asyncio.wait).
- [bpo-47039](https://python-all.ru/3/whatsnew/changelog.html): Нормализация `repr()` объектов future и задач в asyncio.
- [bpo-2604](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка, из-за которой doctests с использованием глобальных переменных завершались сбоем при многократном запуске.
- [bpo-45150](https://python-all.ru/3/whatsnew/changelog.html): Добавлен вспомогательный [`hashlib.file_digest()`](https://python-all.ru/3/library/hashlib.html#hashlib.file_digest) для эффективного хеширования файловых объектов.
- [bpo-34861](https://python-all.ru/3/whatsnew/changelog.html): В cProfile ключом сортировки по умолчанию стало cumtime.
- [bpo-45997](https://python-all.ru/3/whatsnew/changelog.html): Исправлено повторное получение порядка FIFO в [`asyncio.Semaphore`](https://python-all.ru/3/library/asyncio-sync.html#asyncio.Semaphore).
- [bpo-47022](https://python-all.ru/3/whatsnew/changelog.html): Модули `asynchat`, `asyncore` и `smtpd` устарели как минимум с Python 3.6. Их документация и предупреждения об устаревании были обновлены, чтобы указать, что они будут удалены в Python 3.12 ([**PEP 594**](https://python-all.ru/3/whatsnew/changelog.html)).
- [bpo-43253](https://python-all.ru/3/whatsnew/changelog.html): Исправление аварийного завершения при закрытии транспортов, когда дескриптор базового сокета уже недействителен в цикле событий Proactor.
- [bpo-40280](https://python-all.ru/3/whatsnew/changelog.html): [`select.select()`](https://python-all.ru/3/library/select.html#select.select) теперь передаёт `NULL` в `select` для каждого пустого набора fdset.
- [bpo-47004](https://python-all.ru/3/whatsnew/changelog.html): Применены исправления ошибок из importlib\_metadata 4.11.3, включая исправление для EntryPoint.extras, который возвращал объекты совпадений, а не строки extras.
- [bpo-46998](https://python-all.ru/3/whatsnew/changelog.html): Разрешено создание подклассов [`typing.Any`](https://python-all.ru/3/library/typing.html#typing.Any). Патч от Shantanu Jain.
- [bpo-46995](https://python-all.ru/3/whatsnew/changelog.html): Устаревание отсутствующего [`asyncio.Task.set_name()`](https://python-all.ru/3/library/asyncio-task.html#asyncio.Task.set_name) для сторонних реализаций задач; планируется сделать его обязательным в Python 3.13.
- [bpo-46994](https://python-all.ru/3/whatsnew/changelog.html): Принимает явный contextvars.Context в [`asyncio.create_task()`](https://python-all.ru/3/library/asyncio-task.html#asyncio.create_task) и [`asyncio.loop.create_task()`](https://python-all.ru/3/library/asyncio-eventloop.html#asyncio.loop.create_task).
- [bpo-46981](https://python-all.ru/3/whatsnew/changelog.html): `typing.get_args(typing.Tuple[()])` теперь возвращает `()` вместо `((),)`.
- [bpo-46968](https://python-all.ru/3/whatsnew/changelog.html): Добавлен `os.sysconf_names['SC_MINSIGSTKSZ']`.
- [bpo-46985](https://python-all.ru/3/whatsnew/changelog.html): Обновление pip wheel, входящего в состав ensurepip (pip 22.0.4)
- [bpo-46968](https://python-all.ru/3/whatsnew/changelog.html): [`faulthandler`](https://python-all.ru/3/library/faulthandler.html#module-faulthandler): На Linux 5.14 и новее динамически определять размер стека обработчика сигналов, который CPython выделяет с помощью `getauxval(AT_MINSIGSTKSZ)`. Это изменение позволяет запросу расширения Python к ядру Linux на использование набора инструкций AMX\_TILE на процессорах Sapphire Rapids Xeon завершиться успешно, разблокируя использование ISA в фреймворках.
- [bpo-46917](https://python-all.ru/3/whatsnew/changelog.html): Значение [`math.nan`](https://python-all.ru/3/library/math.html#math.nan) теперь всегда доступно. Патч от Victor Stinner.
- [bpo-46955](https://python-all.ru/3/whatsnew/changelog.html): Предоставить `asyncio.base_events.Server` как [`asyncio.Server`](https://python-all.ru/3/library/asyncio-eventloop.html#asyncio.Server). Патч от Stefan Zabka.
- [bpo-23325](https://python-all.ru/3/whatsnew/changelog.html): Модуль [`signal`](https://python-all.ru/3/library/signal.html#module-signal) больше не предполагает, что [`SIG_IGN`](https://python-all.ru/3/library/signal.html#signal.SIG_IGN) и [`SIG_DFL`](https://python-all.ru/3/library/signal.html#signal.SIG_DFL) являются синглтонами малых целых чисел.
- [bpo-46932](https://python-all.ru/3/whatsnew/changelog.html): Обновление встроенного libexpat до версии 2.4.7
- [bpo-46933](https://python-all.ru/3/whatsnew/changelog.html): Модуль [`pwd`](https://python-all.ru/3/library/pwd.html#module-pwd) теперь опционален. [`os.path.expanduser()`](https://python-all.ru/3/library/os.path.html#os.path.expanduser) возвращает путь, когда модуль `pwd` недоступен.
- [bpo-40059](https://python-all.ru/3/whatsnew/changelog.html): [**PEP 680**](https://python-all.ru/3/whatsnew/changelog.html), модуль [`tomllib`](https://python-all.ru/3/library/tomllib.html#module-tomllib). Добавлена поддержка разбора TOML.
- [bpo-464471](https://python-all.ru/3/whatsnew/changelog.html): Добавлены менеджеры контекста [`asyncio.timeout()`](https://python-all.ru/3/library/asyncio-task.html#asyncio.timeout) и [`asyncio.timeout_at()`](https://python-all.ru/3/library/asyncio-task.html#asyncio.timeout_at). Патч от Tin Tvrtković и Andrew Svetlov.
- [bpo-46805](https://python-all.ru/3/whatsnew/changelog.html): Добавлены функции для работы с сырыми дейтаграммными сокетами в asyncio: `sock_sendto()`, `sock_recvfrom()` и `sock_recvfrom_into()`.
- [bpo-46644](https://python-all.ru/3/whatsnew/changelog.html): Больше не требуется, чтобы действительные типформы были вызываемыми. Это позволяет [`typing.Annotated`](https://python-all.ru/3/library/typing.html#typing.Annotated) оборачивать [`typing.ParamSpecArgs`](https://python-all.ru/3/library/typing.html#typing.ParamSpecArgs) и [`dataclasses.InitVar`](https://python-all.ru/3/library/dataclasses.html#dataclasses.InitVar). Патч от Gregory Beauregard.
- [bpo-46581](https://python-all.ru/3/whatsnew/changelog.html): Приводит распространение `ParamSpec` для `GenericAlias` в соответствие с `Concatenate` (и другими).
- [bpo-45413](https://python-all.ru/3/whatsnew/changelog.html): Определены схемы установки sysconfig *posix\_venv* и *nt\_venv* [sysconfig installation schemes](https://python-all.ru/3/library/sysconfig.html#installation-paths) для использования при начальной загрузке новых виртуальных окружений. Добавлена схема установки sysconfig *venv* для получения соответствующей из вышеуказанных. Эти схемы идентичны ранее существовавшим схемам установки *posix\_prefix* и *nt*. Модуль [`venv`](https://python-all.ru/3/library/venv.html#module-venv) теперь использует схему *venv* для создания новых виртуальных окружений вместо жёсткого прописывания путей в зависимости только от платформы. Дистрибьюторы Python, настраивающие схему установки *posix\_prefix* или *nt* способом, несовместимым со схемой установки, используемой в виртуальных окружениях, призываются не настраивать схемы *venv*. Когда сам Python работает в виртуальном окружении, [`sysconfig.get_default_scheme()`](https://python-all.ru/3/library/sysconfig.html#sysconfig.get_default_scheme) и [`sysconfig.get_preferred_scheme()`](https://python-all.ru/3/library/sysconfig.html#sysconfig.get_preferred_scheme) с `key="prefix"` возвращают *venv*.
- [bpo-43224](https://python-all.ru/3/whatsnew/changelog.html): Реализована поддержка PEP 646 в typing.py.
- [bpo-43224](https://python-all.ru/3/whatsnew/changelog.html): Разрешена распаковка объектов types.GenericAlias, например `*tuple[int, str]`.
- [bpo-46557](https://python-all.ru/3/whatsnew/changelog.html): Предупреждения, перехваченные модулем logging, теперь регистрируются без строки формата, чтобы предотвратить группировку перехваченных предупреждений системами, которые группируют журналы по аргументу msg.
- [bpo-41370](https://python-all.ru/3/whatsnew/changelog.html): [`typing.get_type_hints()`](https://python-all.ru/3/library/typing.html#typing.get_type_hints) теперь поддерживает вычисление строк как прямых ссылок в [PEP 585 generic aliases](https://python-all.ru/3/library/stdtypes.html#types-genericalias).
- [bpo-46607](https://python-all.ru/3/whatsnew/changelog.html): Добавлен [`DeprecationWarning`](https://python-all.ru/3/library/exceptions.html#DeprecationWarning) в `LegacyInterpolation`, устаревший в строке документации начиная с Python 3.2. Будет удалён в Python 3.13. Вместо этого используйте `BasicInterpolation` или `ExtendedInterpolation`.
- [bpo-26120](https://python-all.ru/3/whatsnew/changelog.html): [`pydoc`](https://python-all.ru/3/library/pydoc.html#module-pydoc) теперь исключает импорты \_\_future\_\_ из элементов данных модуля.
- [bpo-46480](https://python-all.ru/3/whatsnew/changelog.html): Добавлен [`typing.assert_type()`](https://python-all.ru/3/library/typing.html#typing.assert_type). Патч от Jelle Zijlstra.
- [bpo-46421](https://python-all.ru/3/whatsnew/changelog.html): Исправление проблемы в unittest, когда, если команда была вызвана как `python -m unittest` и имена файлов начинались с точки (.), возвращалось `ValueError`.
- [bpo-46245](https://python-all.ru/3/whatsnew/changelog.html): Добавлен необязательный параметр *dir\_fd* в [`shutil.rmtree()`](https://python-all.ru/3/library/shutil.html#shutil.rmtree).
- [bpo-22859](https://python-all.ru/3/whatsnew/changelog.html): `unittest.TestProgram.usageExit()` помечен как устаревший, будет удалён в Python 3.13.
- [bpo-46170](https://python-all.ru/3/whatsnew/changelog.html): Улучшено сообщение об ошибке при попытке создать подкласс экземпляра [`typing.NewType`](https://python-all.ru/3/library/typing.html#typing.NewType).
- [bpo-40296](https://python-all.ru/3/whatsnew/changelog.html): Исправлена поддержка обобщённых псевдонимов в [`pydoc`](https://python-all.ru/3/library/pydoc.html#module-pydoc).
- [bpo-20392](https://python-all.ru/3/whatsnew/changelog.html): Исправлена несогласованность в обработке расширений файлов в верхнем регистре в `MimeTypes.guess_type()`. Патч от Kumar Aditya.
- [bpo-46030](https://python-all.ru/3/whatsnew/changelog.html): Добавлены константы FreeBSD `LOCAL_CREDS`, `LOCAL_CREDS_PERSISTENT` и `SCM_CREDS2` в модуль socket.
- [bpo-44439](https://python-all.ru/3/whatsnew/changelog.html): Исправлен метод `.write()` файла-участника в `ZipFile`: если входные данные – объект, поддерживающий буферный протокол, длина файла может быть неверной.
- [bpo-45171](https://python-all.ru/3/whatsnew/changelog.html): Исправлена обработка аргумента `stacklevel` у функций логирования в модуле [`logging`](https://python-all.ru/3/library/logging.html#module-logging), чтобы она была одинаковой во всех функциях логирования и, как заявлено, похожей на аргумент `stacklevel`, используемый в [`warn()`](https://python-all.ru/3/library/warnings.html#warnings.warn).
- [bpo-24959](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка, при которой [`unittest`](https://python-all.ru/3/library/unittest.html#module-unittest) иногда теряет кадры из трассировки исключений, возникших в тестах.
- [bpo-44859](https://python-all.ru/3/whatsnew/changelog.html): Вызывать более точные и совместимые с [**PEP 249**](https://python-all.ru/3/whatsnew/changelog.html) исключения в [`sqlite3`](https://python-all.ru/3/library/sqlite3.html#module-sqlite3).

  - Вызывать [`InterfaceError`](https://python-all.ru/3/library/sqlite3.html#sqlite3.InterfaceError) вместо [`ProgrammingError`](https://python-all.ru/3/library/sqlite3.html#sqlite3.ProgrammingError) для ошибок `SQLITE_MISUSE`.
  - Не перезаписывать [`BufferError`](https://python-all.ru/3/library/exceptions.html#BufferError) значением [`ValueError`](https://python-all.ru/3/library/exceptions.html#ValueError) при ошибке преобразования в BLOB.
  - Вызывать [`ProgrammingError`](https://python-all.ru/3/library/sqlite3.html#sqlite3.ProgrammingError) вместо [`Warning`](https://python-all.ru/3/library/sqlite3.html#sqlite3.Warning), если пользователь пытается выполнить [`execute()`](https://python-all.ru/3/library/sqlite3.html#sqlite3.Cursor.execute) более одного SQL-выражения.
  - Вызывать [`ProgrammingError`](https://python-all.ru/3/library/sqlite3.html#sqlite3.ProgrammingError) вместо [`ValueError`](https://python-all.ru/3/library/exceptions.html#ValueError), если SQL-запрос содержит нулевые символы.
- [bpo-44493](https://python-all.ru/3/whatsnew/changelog.html): Добавлен отсутствующий завершающий NUL в длину sockaddr\_un

  Потенциально это было заметно при использовании неабстрактных датаграммных сокетов AF\_UNIX для взаимодействия с процессами, написанными на другом языке программирования.
- [bpo-41930](https://python-all.ru/3/whatsnew/changelog.html): Добавлена поддержка [`serialize()`](https://python-all.ru/3/library/sqlite3.html#sqlite3.Connection.serialize) и [`deserialize()`](https://python-all.ru/3/library/sqlite3.html#sqlite3.Connection.deserialize) в [`sqlite3`](https://python-all.ru/3/library/sqlite3.html#module-sqlite3). Патч от Erlend E. Aasland.
- [bpo-33178](https://python-all.ru/3/whatsnew/changelog.html): Добавлены классы [`ctypes.BigEndianUnion`](https://python-all.ru/3/library/ctypes.html#ctypes.BigEndianUnion) и [`ctypes.LittleEndianUnion`](https://python-all.ru/3/library/ctypes.html#ctypes.LittleEndianUnion), как изначально было задокументировано в документации библиотеки, но не было реализовано.
- [bpo-43352](https://python-all.ru/3/whatsnew/changelog.html): Добавлен объект Barrier в примитивы синхронизации библиотеки *asyncio* для согласованности с Barrier из библиотек *threading* и *multiprocessing*\*
- [bpo-35859](https://python-all.ru/3/whatsnew/changelog.html): Модуль [`re`](https://python-all.ru/3/library/re.html#module-re), исправлено несколько ошибок, связанных с захватывающей группой. В редких случаях захватывающая группа получала неверную строку. Патч от Ma Lin.

### Документация

- [bpo-45099](https://python-all.ru/3/whatsnew/changelog.html): Документирован внутренний API [`asyncio`](https://python-all.ru/3/library/asyncio.html#module-asyncio).
- [bpo-47126](https://python-all.ru/3/whatsnew/changelog.html): Обновить URL-адреса PEP до новой канонической формы [**PEP 676**](https://python-all.ru/3/whatsnew/changelog.html).
- [bpo-47040](https://python-all.ru/3/whatsnew/changelog.html): Уточнено примечание о совместимости со старыми версиями Python для функций [`binascii.crc32()`](https://python-all.ru/3/library/binascii.html#binascii.crc32) / [`zlib.adler32()`](https://python-all.ru/3/library/zlib.html#zlib.adler32) / [`zlib.crc32()`](https://python-all.ru/3/library/zlib.html#zlib.crc32).
- [bpo-46033](https://python-all.ru/3/whatsnew/changelog.html): Уточнено выполнение оператора `for` в его документации.
- [bpo-45790](https://python-all.ru/3/whatsnew/changelog.html): Исправлена неточная формулировка в [Определение типов расширения: учебное пособие](https://python-all.ru/3/extending/newtypes_tutorial.html) о поле `ob_base` и макросах, используемых для доступа к его содержимому.
- [bpo-42340](https://python-all.ru/3/whatsnew/changelog.html): Документировано, что в некоторых обстоятельствах [`KeyboardInterrupt`](https://python-all.ru/3/library/exceptions.html#KeyboardInterrupt) может привести код в несогласованное состояние. Приведён пример обходного пути, чтобы избежать этого при необходимости.
- [bpo-41233](https://python-all.ru/3/whatsnew/changelog.html): Установлены ссылки на коды ошибок (errno), упоминаемые в `Doc/library/exceptions.rst`, на соответствующие разделы в `Doc/library/errno.rst` и обратно. Ранее это было сделано только для EINTR и InterruptedError. Патч от Yan “yyyyyyyan” Orestes.

### Тесты

- [bpo-47205](https://python-all.ru/3/whatsnew/changelog.html): Пропущен тест для [`sched_getaffinity()`](https://python-all.ru/3/library/os.html#os.sched_getaffinity) и [`sched_setaffinity()`](https://python-all.ru/3/library/os.html#os.sched_setaffinity) сценария ошибки на FreeBSD.
- [bpo-46126](https://python-all.ru/3/whatsnew/changelog.html): Восстановлены ‘descriptions’ при внутреннем запуске тестов.
- [bpo-47104](https://python-all.ru/3/whatsnew/changelog.html): Переписаны тесты [`asyncio.to_thread()`](https://python-all.ru/3/library/asyncio-task.html#asyncio.to_thread) на использование [`unittest.IsolatedAsyncioTestCase`](https://python-all.ru/3/library/unittest.html#unittest.IsolatedAsyncioTestCase).
- [bpo-40280](https://python-all.ru/3/whatsnew/changelog.html): Набор тестов теперь проходит на платформе Emscripten. Все тесты, основанные на fork, socket и подпроцессе, пропущены.
- [bpo-47037](https://python-all.ru/3/whatsnew/changelog.html): Пропущен тест возможности `strftime("%4Y")` на Windows. Он может вызывать ошибку утверждения в отладочных сборках.
- [bpo-46587](https://python-all.ru/3/whatsnew/changelog.html): Пропускать тесты, если `strftime` платформы не поддерживает непереносимые расширения glibc.
- [bpo-47015](https://python-all.ru/3/whatsnew/changelog.html): Тестовый пример для [`os.sendfile()`](https://python-all.ru/3/library/os.html#os.sendfile) преобразован из устаревшего `asyncore` (см. [**PEP 594**](https://python-all.ru/3/whatsnew/changelog.html)) в [`asyncio`](https://python-all.ru/3/library/asyncio.html#module-asyncio). Исправление от Oleg Iarygin.

### Сборка

- [bpo-40280](https://python-all.ru/3/whatsnew/changelog.html): Добавить опцию конфигурации [`--enable-wasm-dynamic-linking`](https://python-all.ru/3/using/configure.html#cmdoption-enable-wasm-dynamic-linking) для включения `dlopen` и MAIN\_MODULE / SIDE\_MODULE на `wasm32-emscripten`.
- [bpo-46023](https://python-all.ru/3/whatsnew/changelog.html): `makesetup` теперь обнаруживает и пропускает все дублированные определения модулей. Первая запись имеет приоритет.
- [bpo-40280](https://python-all.ru/3/whatsnew/changelog.html): Добавить SOABI `wasm32-emscripten` для Emscripten и `wasm32-wasi` для WASI на 32-битном WASM, а также `wasm64` для аналогов.
- [bpo-47032](https://python-all.ru/3/whatsnew/changelog.html): Обеспечить, чтобы установочные сборки Windows правильно завершались с ненулевым кодом выхода при сбое части сборки.
- [bpo-47024](https://python-all.ru/3/whatsnew/changelog.html): Обновить OpenSSL до 1.1.1n для установщиков macOS и всех сборок Windows.
- [bpo-46996](https://python-all.ru/3/whatsnew/changelog.html): Пакет [`tkinter`](https://python-all.ru/3/library/tkinter.html#module-tkinter) теперь требует Tcl/Tk версии 8.5.12 или новее.
- [bpo-46973](https://python-all.ru/3/whatsnew/changelog.html): Добавить цель make `regen-configure` для повторной генерации сценария configure с использованием контейнерного образа Christian `quay.io/tiran/cpython_autoconf:269`.
- [bpo-46917](https://python-all.ru/3/whatsnew/changelog.html): Сборка Python теперь требует поддержки чисел с плавающей запятой стандарта IEEE 754. Исправление от Victor Stinner.
- [bpo-45774](https://python-all.ru/3/whatsnew/changelog.html): `configure` теперь проверяет, что все необходимые C API SQLite для модуля расширения [`sqlite3`](https://python-all.ru/3/library/sqlite3.html#module-sqlite3) найдены.

### Windows

- [bpo-47194](https://python-all.ru/3/whatsnew/changelog.html): Обновить `zlib` до версии 1.2.12 для устранения [**CVE 2018-25032**](https://python-all.ru/3/whatsnew/changelog.html).
- [bpo-47171](https://python-all.ru/3/whatsnew/changelog.html): Включает установку программы запуска `py.exe` на Windows ARM64.
- [bpo-46566](https://python-all.ru/3/whatsnew/changelog.html): Обновлён [менеджер установки Python](https://python-all.ru/3/using/windows.html#launcher) для поддержки нового аргумента `-V:company/tag` для полной поддержки [**PEP 514**](https://python-all.ru/3/whatsnew/changelog.html) и обнаружения установок ARM64. Суффикс `-64` в аргументах устарел, но по-прежнему выбирает любую не-32-битную установку. Установка `PYLAUNCHER_ALLOW_INSTALL` и указание версии, которая не установлена, приведёт к попытке установить запрошенную версию из Microsoft Store.
- [bpo-47086](https://python-all.ru/3/whatsnew/changelog.html): Установщик для Windows теперь включает документацию как отдельные HTML-файлы, а не один скомпилированный файл `.chm`.
- [bpo-46907](https://python-all.ru/3/whatsnew/changelog.html): Обновить установщик Windows для использования SQLite 3.38.1.
- [bpo-44549](https://python-all.ru/3/whatsnew/changelog.html): Обновить bzip2 до 1.0.8 в сборках Windows для смягчения [**CVE 2016-3189**](https://python-all.ru/3/whatsnew/changelog.html) и [**CVE 2019-12900**](https://python-all.ru/3/whatsnew/changelog.html).
- [bpo-46948](https://python-all.ru/3/whatsnew/changelog.html): Предотвратить [**CVE 2022-26488**](https://python-all.ru/3/whatsnew/changelog.html), обеспечив, чтобы опция «Добавить в PATH» в установщике Windows использовала правильный путь при восстановлении.

### macOS

- [bpo-46890](https://python-all.ru/3/whatsnew/changelog.html): Исправить регрессию в установке `sys._base_executable` в сборках framework, и тем самым исправить регрессию в [`venv`](https://python-all.ru/3/library/venv.html#module-venv) виртуальных окружениях с такими сборками.
- [bpo-46907](https://python-all.ru/3/whatsnew/changelog.html): Обновить установщик macOS до SQLite 3.38.1.

### Tools/Demos

- [bpo-40280](https://python-all.ru/3/whatsnew/changelog.html): Заменить ограниченную оболочку Emscripten на REPL с браузерным интерфейсом от Katie Bell из проекта python-wasm.

### C API

- [bpo-40421](https://python-all.ru/3/whatsnew/changelog.html): Добавить функции C-API `PyFrame_GetBuiltins`, `PyFrame_GetGenerator` и `PyFrame_GetGlobals` для безопасного доступа к атрибутам объекта frame из кода на C.
- [bpo-46850](https://python-all.ru/3/whatsnew/changelog.html): Перенести приватный тип `_PyFrameEvalFunction` и приватные функции `_PyInterpreterState_GetEvalFrameFunc()` и `_PyInterpreterState_SetEvalFrameFunc()` во внутренний C API. Тип функции обратного вызова `_PyFrameEvalFunction` теперь использует тип `_PyInterpreterFrame`, который является частью внутреннего C API. Исправление от Victor Stinner.
- [bpo-46850](https://python-all.ru/3/whatsnew/changelog.html): Перенести приватную недокументированную функцию `_PyEval_EvalFrameDefault()` во внутренний C API. Функция теперь использует тип `_PyInterpreterFrame`, который является частью внутреннего C API. Исправление от Victor Stinner.
- [bpo-46850](https://python-all.ru/3/whatsnew/changelog.html): Удалить приватную недокументированную функцию `_PyEval_CallTracing()` из C API. Вместо неё вызывать публичную функцию [`sys.call_tracing()`](https://python-all.ru/3/library/sys.html#sys.call_tracing). Исправление от Victor Stinner.
- [bpo-46850](https://python-all.ru/3/whatsnew/changelog.html): Удалить приватную недокументированную функцию `_PyEval_GetCoroutineOriginTrackingDepth()` из C API. Вместо неё вызывать публичную функцию [`sys.get_coroutine_origin_tracking_depth()`](https://python-all.ru/3/library/sys.html#sys.get_coroutine_origin_tracking_depth). Исправление от Victor Stinner.
- [bpo-46850](https://python-all.ru/3/whatsnew/changelog.html): Удалить следующие приватные недокументированные функции из C API:

  - `_PyEval_GetAsyncGenFirstiter()`
  - `_PyEval_GetAsyncGenFinalizer()`
  - `_PyEval_SetAsyncGenFirstiter()`
  - `_PyEval_SetAsyncGenFinalizer()`

  Вместо этого вызывайте публичные функции [`sys.get_asyncgen_hooks()`](https://python-all.ru/3/library/sys.html#sys.get_asyncgen_hooks) и [`sys.set_asyncgen_hooks()`](https://python-all.ru/3/library/sys.html#sys.set_asyncgen_hooks). Патч от Виктора Стиннера.
- [bpo-46987](https://python-all.ru/3/whatsnew/changelog.html): Удалены приватные функции `_PySys_GetObjectId()` и `_PySys_SetObjectId()`. Патч от Donghee Na.
- [bpo-46906](https://python-all.ru/3/whatsnew/changelog.html): Добавлены новые функции для упаковки и распаковки C double (сериализации и десериализации): [`PyFloat_Pack2()`](https://python-all.ru/3/c-api/float.html#c.PyFloat_Pack2), [`PyFloat_Pack4()`](https://python-all.ru/3/c-api/float.html#c.PyFloat_Pack4), [`PyFloat_Pack8()`](https://python-all.ru/3/c-api/float.html#c.PyFloat_Pack8), [`PyFloat_Unpack2()`](https://python-all.ru/3/c-api/float.html#c.PyFloat_Unpack2), [`PyFloat_Unpack4()`](https://python-all.ru/3/c-api/float.html#c.PyFloat_Unpack4) и [`PyFloat_Unpack8()`](https://python-all.ru/3/c-api/float.html#c.PyFloat_Unpack8). Патч от Виктора Стиннера.

## Python 3.11.0 alpha 6

*Дата выпуска: 2022-03-07*

### Ядро и встроенные модули

- [bpo-46940](https://python-all.ru/3/whatsnew/changelog.html): Избегайте переопределения метаданных [`AttributeError`](https://python-all.ru/3/library/exceptions.html#AttributeError) для вложенных вызовов доступа к атрибутам. Патч от Pablo Galindo.
- [bpo-46927](https://python-all.ru/3/whatsnew/changelog.html): Включено имя типа в сообщение об ошибке при индексации необобщённых типов.
- [bpo-46921](https://python-all.ru/3/whatsnew/changelog.html): Поддержка vectorcall для `super()`. Патч от Ken Jin.
- [bpo-46841](https://python-all.ru/3/whatsnew/changelog.html): Исправлена некорректная обработка записей inline-кэша при специализации [`BINARY_OP`](https://python-all.ru/3/library/dis.html#opcode-BINARY_OP).
- [bpo-46841](https://python-all.ru/3/whatsnew/changelog.html): Используется oparg для упрощения построения полезных сообщений об ошибках в [`GET_AWAITABLE`](https://python-all.ru/3/library/dis.html#opcode-GET_AWAITABLE).
- [bpo-46903](https://python-all.ru/3/whatsnew/changelog.html): Обеспечено, что подклассы str могут использоваться в качестве имён атрибутов для экземпляров с виртуальными словарями. Исправляет регрессию в 3.11alpha
- [bpo-46841](https://python-all.ru/3/whatsnew/changelog.html): Добавлена более детальная статистика сбоев специализации для [`COMPARE_OP`](https://python-all.ru/3/library/dis.html#opcode-COMPARE_OP), за которой следует [`EXTENDED_ARG`](https://python-all.ru/3/library/dis.html#opcode-EXTENDED_ARG).
- [bpo-46891](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка, внесённая в 3.11alpha, из-за которой подклассы `types.ModuleType` с `__slots__` неправильно инициализировались, что приводило к краху интерпретатора.
- [bpo-46841](https://python-all.ru/3/whatsnew/changelog.html): Используется inline-кэширование для [`LOAD_ATTR`](https://python-all.ru/3/library/dis.html#opcode-LOAD_ATTR), `LOAD_METHOD` и [`STORE_ATTR`](https://python-all.ru/3/library/dis.html#opcode-STORE_ATTR).
- [bpo-46841](https://python-all.ru/3/whatsnew/changelog.html): Используется inline-кэш для `BINARY_SUBSCR`.
- [bpo-46841](https://python-all.ru/3/whatsnew/changelog.html): Используется inline-кэширование для [`COMPARE_OP`](https://python-all.ru/3/library/dis.html#opcode-COMPARE_OP).
- [bpo-46864](https://python-all.ru/3/whatsnew/changelog.html): Устарело `PyBytesObject.ob_shash`. Он будет удалён в Python 3.13.
- [bpo-46841](https://python-all.ru/3/whatsnew/changelog.html): Используется inline-кэширование для [`UNPACK_SEQUENCE`](https://python-all.ru/3/library/dis.html#opcode-UNPACK_SEQUENCE).
- [bpo-46845](https://python-all.ru/3/whatsnew/changelog.html): Уменьшает размер словаря за счёт удаления хеш-значения из хеш-таблицы, когда все вставленные ключи являются Unicode. Например, `sys.getsizeof(dict.fromkeys("abcdefg"))` занимает 272 байта вместо 352 байт на 64-битной платформе.
- [bpo-46841](https://python-all.ru/3/whatsnew/changelog.html): Используется inline-кэш для [`LOAD_GLOBAL`](https://python-all.ru/3/library/dis.html#opcode-LOAD_GLOBAL).
- [bpo-46852](https://python-all.ru/3/whatsnew/changelog.html): Переименован приватный недокументированный метод `float.__set_format__()` в `float.__setformat__()` для исправления опечатки, внесённой в Python 3.7. Данный метод используется только test\_float. Патч от Виктора Стиннера.
- [bpo-46852](https://python-all.ru/3/whatsnew/changelog.html): Удалён недокументированный приватный метод `float.__set_format__()`, ранее известный как `float.__setformat__()` в Python 3.7. Его docstring гласил: «Вам, вероятно, не нужно использовать эту функцию. Она существует в основном для использования в тестовом наборе Python». Патч от Виктора Стиннера.
- [bpo-40116](https://python-all.ru/3/whatsnew/changelog.html): Исправлена регрессия, из-за которой dict.update(other) мог не соблюдать порядок итерации other, когда other является словарём с разделением ключей.
- [bpo-46712](https://python-all.ru/3/whatsnew/changelog.html): Разделение глобальных строковых идентификаторов в глубоко-замороженных модулях.
- [bpo-46430](https://python-all.ru/3/whatsnew/changelog.html): Исправлена утечка памяти в интернированных строках глубоко-замороженных модулей.
- [bpo-46841](https://python-all.ru/3/whatsnew/changelog.html): Хранить кэши [`BINARY_OP`](https://python-all.ru/3/library/dis.html#opcode-BINARY_OP) встроенно с помощью новой инструкции [`CACHE`](https://python-all.ru/3/library/dis.html#opcode-CACHE).
- [bpo-45107](https://python-all.ru/3/whatsnew/changelog.html): Специализировать `LOAD_METHOD` для экземпляров с dict.
- [bpo-44337](https://python-all.ru/3/whatsnew/changelog.html): Уменьшено использование памяти специализированных инструкций [`LOAD_ATTR`](https://python-all.ru/3/library/dis.html#opcode-LOAD_ATTR) и [`STORE_ATTR`](https://python-all.ru/3/library/dis.html#opcode-STORE_ATTR).
- [bpo-46729](https://python-all.ru/3/whatsnew/changelog.html): Добавлено количество под-исключений в `BaseException.__str__()`.
- [bpo-45885](https://python-all.ru/3/whatsnew/changelog.html): Не отменять адаптацию [`COMPARE_OP`](https://python-all.ru/3/library/dis.html#opcode-COMPARE_OP) при сборе статистики специализации.
- [bpo-46329](https://python-all.ru/3/whatsnew/changelog.html): Исправлен сбор статистики специализации для инструкций `PRECALL`.

### Библиотека

- [bpo-46794](https://python-all.ru/3/whatsnew/changelog.html): Версия libexpat обновлена до 2.4.6.

### Ядро и встроенные объекты

- [bpo-46823](https://python-all.ru/3/whatsnew/changelog.html): Реализована специализированная комбинированная инструкция `LOAD_FAST__LOAD_ATTR_INSTANCE_VALUE`. Патч от Dennis Sweeney.
- [bpo-46820](https://python-all.ru/3/whatsnew/changelog.html): Исправлен разбор числового литерала, за которым сразу (без пробелов) следуют ключевые слова «not in», как в `1not in x`. Теперь парсер только выдаёт предупреждение, а не синтаксическую ошибку.
- [bpo-46329](https://python-all.ru/3/whatsnew/changelog.html): Переместить `KW_NAMES` перед инструкцией `PRECALL` в последовательности вызова. Изменить `operand` из `CALL` для соответствия `PRECALL` для упрощения специализации.
- [bpo-46808](https://python-all.ru/3/whatsnew/changelog.html): Удалён макрос `NEXT_BLOCK` из compile.c, и компилятор теперь автоматически генерирует неявные блоки при необходимости.
- [bpo-46329](https://python-all.ru/3/whatsnew/changelog.html): Add `PUSH_NULL` instruction. This is used as a prefix when evaluating a callable, so that the stack has the same shape for methods and other calls. `PRECALL_FUNCTION` and `PRECALL_METHOD` are merged into a single `PRECALL` instruction.

  Изменений в семантике нет.
- [bpo-46762](https://python-all.ru/3/whatsnew/changelog.html): Исправлен сбой assert в отладочных сборках, когда символ «\<», «\>» или «=» является последним символом в f-строке, в которой отсутствует закрывающая фигурная скобка.
- [bpo-46730](https://python-all.ru/3/whatsnew/changelog.html): Сообщение AttributeError, вызванного получением, установкой или удалением свойства без соответствующей функции, теперь упоминает, что атрибут на самом деле является свойством, а также указывает тип класса, к которому он принадлежит.
- [bpo-46724](https://python-all.ru/3/whatsnew/changelog.html): Make sure that all backwards jumps use the `JUMP_ABSOLUTE` instruction, rather than `JUMP_FORWARD` with an argument of `(2**32)+offset`.
- [bpo-46732](https://python-all.ru/3/whatsnew/changelog.html): Correct the docstring for the [`__bool__()`](https://python-all.ru/3/reference/datamodel.html#object.__bool__) method. Patch by Jelle Zijlstra.
- [bpo-46072](https://python-all.ru/3/whatsnew/changelog.html): Add more detailed specialization failure statistics for [`BINARY_OP`](https://python-all.ru/3/library/dis.html#opcode-BINARY_OP).
- [bpo-46707](https://python-all.ru/3/whatsnew/changelog.html): Предотвращён потенциальный экспоненциальный перебор при создании некоторых синтаксических ошибок, включающих много скобок. Патч от Pablo Galindo.

### Библиотека

- [bpo-46323](https://python-all.ru/3/whatsnew/changelog.html): [`ctypes`](https://python-all.ru/3/library/ctypes.html#module-ctypes) now allocates memory on the stack instead of on the heap to pass arguments while calling a Python callback function. Patch by Donghee Na.

### Ядро и встроенные объекты

- [bpo-45923](https://python-all.ru/3/whatsnew/changelog.html): Add a quickened form of [`RESUME`](https://python-all.ru/3/library/dis.html#opcode-RESUME) that skips quickening checks.
- [bpo-46702](https://python-all.ru/3/whatsnew/changelog.html): Specialize [`UNPACK_SEQUENCE`](https://python-all.ru/3/library/dis.html#opcode-UNPACK_SEQUENCE) for [`tuple`](https://python-all.ru/3/library/stdtypes.html#tuple) and [`list`](https://python-all.ru/3/library/stdtypes.html#list) unpackings.
- [bpo-46072](https://python-all.ru/3/whatsnew/changelog.html): Opcode pair stats are now gathered with `--enable-pystats`. Defining `DYNAMIC_EXECUTION_PROFILE` or `DXPAIRS` no longer has any effect.
- [bpo-46675](https://python-all.ru/3/whatsnew/changelog.html): Разрешено более 16 элементов в разделённом словаре до его объединения. Теперь лимит составляет 254.

### Библиотека

- [bpo-40479](https://python-all.ru/3/whatsnew/changelog.html): Add a missing call to `va_end()` in `Modules/_hashopenssl.c`.
- [bpo-46323](https://python-all.ru/3/whatsnew/changelog.html): Use [`PyObject_Vectorcall()`](https://python-all.ru/3/c-api/call.html#c.PyObject_Vectorcall) while calling ctypes callback function. Patch by Donghee Na.

### Ядро и встроенные объекты

- [bpo-46615](https://python-all.ru/3/whatsnew/changelog.html): When iterating over sets internally in `setobject.c`, acquire strong references to the resulting items from the set. This prevents crashes in corner-cases of various set operations where the set gets mutated.
- [bpo-45828](https://python-all.ru/3/whatsnew/changelog.html): Компилятор байткода теперь пытается применять манипуляции с runtime-стеком на этапе компиляции (всякий раз, когда это возможно).
- [bpo-30496](https://python-all.ru/3/whatsnew/changelog.html): Fixed a minor portability issue in the implementation of [`PyLong_FromLong()`](https://python-all.ru/3/c-api/long.html#c.PyLong_FromLong), and added a fast path for single-digit integers to [`PyLong_FromLongLong()`](https://python-all.ru/3/c-api/long.html#c.PyLong_FromLongLong).

### Библиотека

- [bpo-25707](https://python-all.ru/3/whatsnew/changelog.html): Fixed a file leak in [`xml.etree.ElementTree.iterparse()`](https://python-all.ru/3/library/xml.etree.elementtree.html#xml.etree.ElementTree.iterparse) when the iterator is not exhausted. Patch by Jacob Walls.
- [bpo-46877](https://python-all.ru/3/whatsnew/changelog.html): Export [`unittest.doModuleCleanups()`](https://python-all.ru/3/library/unittest.html#unittest.doModuleCleanups) in [`unittest`](https://python-all.ru/3/library/unittest.html#module-unittest). Patch by Kumar Aditya.
- [bpo-46848](https://python-all.ru/3/whatsnew/changelog.html): Для повышения производительности используются оптимизированные реализации поиска строк из [`find()`](https://python-all.ru/3/library/stdtypes.html#bytes.find) и [`rfind()`](https://python-all.ru/3/library/stdtypes.html#bytes.rfind) для `find()` и `rfind()`.
- [bpo-46736](https://python-all.ru/3/whatsnew/changelog.html): [`SimpleHTTPRequestHandler`](https://python-all.ru/3/library/http.server.html#http.server.SimpleHTTPRequestHandler) теперь использует грамматику HTML5. Патч от Donghee Na.
- [bpo-44886](https://python-all.ru/3/whatsnew/changelog.html): Наследовать asyncio proactor дейтаграммный транспорт от [`asyncio.DatagramTransport`](https://python-all.ru/3/library/asyncio-protocol.html#asyncio.DatagramTransport).
- [bpo-46827](https://python-all.ru/3/whatsnew/changelog.html): Поддержка UDP-сокетов в [`asyncio.loop.sock_connect()`](https://python-all.ru/3/library/asyncio-eventloop.html#asyncio.loop.sock_connect) для циклов событий на основе selector. Патч от Thomas Grainger.
- [bpo-46811](https://python-all.ru/3/whatsnew/changelog.html): Обеспечить поддержку Expat \>=2.4.5 в тестовом наборе.
- [bpo-46252](https://python-all.ru/3/whatsnew/changelog.html): Возбуждать [`TypeError`](https://python-all.ru/3/library/exceptions.html#TypeError), если [`ssl.SSLSocket`](https://python-all.ru/3/library/ssl.html#ssl.SSLSocket) передаётся в API, основанные на транспорте.
- [bpo-46784](https://python-all.ru/3/whatsnew/changelog.html): Исправление коллизий символов libexpat с динамически загружаемой или статически слинкованной пользователем libexpat во встроенном Python.
- [bpo-46786](https://python-all.ru/3/whatsnew/changelog.html): HTML-сериализация в xml.etree.ElementTree теперь записывает `embed`, `source`, `track` и `wbr` как пустые теги, как определено в HTML 5.
- [bpo-39327](https://python-all.ru/3/whatsnew/changelog.html): [`shutil.rmtree()`](https://python-all.ru/3/library/shutil.html#shutil.rmtree) теперь может работать с общими папками VirtualBox при запуске из гостевой операционной системы.
- [bpo-45390](https://python-all.ru/3/whatsnew/changelog.html): Распространение сообщения [`asyncio.CancelledError`](https://python-all.ru/3/library/asyncio-exceptions.html#asyncio.CancelledError) от внутренней задачи к внешнему ожидающему объекту (awaiter).
- [bpo-46756](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка в [`urllib.request.HTTPPasswordMgr.find_user_password()`](https://python-all.ru/3/library/urllib.request.html#urllib.request.HTTPPasswordMgr.find_user_password) и [`urllib.request.HTTPPasswordMgrWithPriorAuth.is_authenticated()`](https://python-all.ru/3/library/urllib.request.html#urllib.request.HTTPPasswordMgrWithPriorAuth.is_authenticated), которая позволяла обходить авторизацию. Например, доступ к URI `example.org/foobar` был разрешён, если пользователь был авторизован для URI `example.org/foo`.
- [bpo-46737](https://python-all.ru/3/whatsnew/changelog.html): [`random.gauss()`](https://python-all.ru/3/library/random.html#random.gauss) и [`random.normalvariate()`](https://python-all.ru/3/library/random.html#random.normalvariate) теперь имеют аргументы по умолчанию.
- [bpo-46752](https://python-all.ru/3/whatsnew/changelog.html): Добавлены группы задач в asyncio (структурированная конкурентность, вдохновлённая nurseries из Trio). Это также вносит изменение в отмену задач: отменённая задача не может быть отменена снова, пока не вызовет .uncancel().
- [bpo-46724](https://python-all.ru/3/whatsnew/changelog.html): Исправлено поведение [`dis`](https://python-all.ru/3/library/dis.html#module-dis) при отрицательных смещениях перехода.
- [bpo-46333](https://python-all.ru/3/whatsnew/changelog.html): Метод `__repr__()` класса [`typing.ForwardRef`](https://python-all.ru/3/library/typing.html#typing.ForwardRef) теперь включает параметр `module` из `typing.ForwardRef`, когда он установлен.
- [bpo-46643](https://python-all.ru/3/whatsnew/changelog.html): В [`typing.get_type_hints()`](https://python-all.ru/3/library/typing.html#typing.get_type_hints) добавлена поддержка вычисления строковых аннотаций `ParamSpecArgs` и `ParamSpecKwargs`. Патч от Gregory Beauregard.
- [bpo-45863](https://python-all.ru/3/whatsnew/changelog.html): Когда модуль [`tarfile`](https://python-all.ru/3/library/tarfile.html#module-tarfile) создаёт архив в формате pax, он помещает целочисленное представление временных меток в заголовок ustar (если возможно) для пользы старых архиваторов, в дополнение к существующим временным меткам полной точности в расширенном заголовке pax.
- [bpo-46066](https://python-all.ru/3/whatsnew/changelog.html): Устаревание синтаксиса на основе kwargs для определений [`typing.TypedDict`](https://python-all.ru/3/library/typing.html#typing.TypedDict). Он имел запутанную семантику при указании тотальности и был в основном неиспользуем. Патч от Jingchen Ye.
- [bpo-46676](https://python-all.ru/3/whatsnew/changelog.html): Сделать args и kwargs [`typing.ParamSpec`](https://python-all.ru/3/library/typing.html#typing.ParamSpec) равными самим себе. Патч от Gregory Beauregard.
- [bpo-46323](https://python-all.ru/3/whatsnew/changelog.html): `ctypes.CFUNCTYPE()` и `ctypes.WINFUNCTYPE()` теперь не могут создать тип, если его элемент `_argtypes_` содержит слишком много аргументов. Ранее ошибка возникала только при вызове функции. Патч от Victor Stinner.
- [bpo-46672](https://python-all.ru/3/whatsnew/changelog.html): Исправление `NameError` в [`asyncio.gather()`](https://python-all.ru/3/library/asyncio-task.html#asyncio.gather), когда начальная проверка типа не удаётся.
- [bpo-46659](https://python-all.ru/3/whatsnew/changelog.html): Классы [`calendar.LocaleTextCalendar`](https://python-all.ru/3/library/calendar.html#calendar.LocaleTextCalendar) и [`calendar.LocaleHTMLCalendar`](https://python-all.ru/3/library/calendar.html#calendar.LocaleHTMLCalendar) теперь используют [`locale.getlocale()`](https://python-all.ru/3/library/locale.html#locale.getlocale) вместо [`locale.getdefaultlocale()`](https://python-all.ru/3/library/locale.html#locale.getdefaultlocale), если локаль не указана. Патч от Victor Stinner.
- [bpo-46659](https://python-all.ru/3/whatsnew/changelog.html): Функция [`locale.getdefaultlocale()`](https://python-all.ru/3/library/locale.html#locale.getdefaultlocale) устарела и будет удалена в Python 3.13. Вместо неё используйте функции [`locale.setlocale()`](https://python-all.ru/3/library/locale.html#locale.setlocale), [`locale.getpreferredencoding(False)`](https://python-all.ru/3/library/locale.html#locale.getpreferredencoding) и [`locale.getlocale()`](https://python-all.ru/3/library/locale.html#locale.getlocale). Патч от Victor Stinner.
- [bpo-46655](https://python-all.ru/3/whatsnew/changelog.html): В [`typing.get_type_hints()`](https://python-all.ru/3/library/typing.html#typing.get_type_hints) добавлена поддержка вычисления строковых аннотаций `TypeAlias` без дополнительного оформления. Патч от Gregory Beauregard.
- [bpo-45948](https://python-all.ru/3/whatsnew/changelog.html): Исправлено несоответствие в C-реализации модуля [`xml.etree.ElementTree`](https://python-all.ru/3/library/xml.etree.elementtree.html#module-xml.etree.ElementTree). Теперь создание [`xml.etree.ElementTree.XMLParser`](https://python-all.ru/3/library/xml.etree.elementtree.html#xml.etree.ElementTree.XMLParser) с ключевым словом `target=None` предоставляет целевой объект [`xml.etree.ElementTree.TreeBuilder`](https://python-all.ru/3/library/xml.etree.elementtree.html#xml.etree.ElementTree.TreeBuilder) по умолчанию, как это делает реализация на Python.
- [bpo-46626](https://python-all.ru/3/whatsnew/changelog.html): Открыть опцию Linux `IP_BIND_ADDRESS_NO_PORT` в [`socket`](https://python-all.ru/3/library/socket.html#module-socket).
- [bpo-46521](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка в модуле [`codeop`](https://python-all.ru/3/library/codeop.html#module-codeop), которая неверно определяла недопустимый код с кавычками в строках как допустимый.
- [bpo-46571](https://python-all.ru/3/whatsnew/changelog.html): Улучшение [`typing.no_type_check()`](https://python-all.ru/3/library/typing.html#typing.no_type_check).

  Теперь он не изменяет внешние классы и функции. Также теперь мы правильно помечаем classmethods как не подлежащие проверке типов.
- [bpo-46400](https://python-all.ru/3/whatsnew/changelog.html): expat: обновление libexpat с 2.4.1 до 2.4.4
- [bpo-46556](https://python-all.ru/3/whatsnew/changelog.html): Устаревание недокументированной поддержки использования объекта [`pathlib.Path`](https://python-all.ru/3/library/pathlib.html#pathlib.Path) в качестве менеджера контекста.
- [bpo-46534](https://python-all.ru/3/whatsnew/changelog.html): Реализация [**PEP 673**](https://python-all.ru/3/whatsnew/changelog.html) [`typing.Self`](https://python-all.ru/3/library/typing.html#typing.Self). Патч от James Hilton-Balfe.
- [bpo-46522](https://python-all.ru/3/whatsnew/changelog.html): Различные `__getattr__` AttributeErrors теперь более точно соответствуют типичному AttributeError
- [bpo-46475](https://python-all.ru/3/whatsnew/changelog.html): Добавлены [`typing.Never`](https://python-all.ru/3/library/typing.html#typing.Never) и [`typing.assert_never()`](https://python-all.ru/3/library/typing.html#typing.assert_never). Исправление от Jelle Zijlstra.
- [bpo-46333](https://python-all.ru/3/whatsnew/changelog.html): Методы `__eq__()` и `__hash__()` класса [`typing.ForwardRef`](https://python-all.ru/3/library/typing.html#typing.ForwardRef) теперь учитывают параметр `module` `typing.ForwardRef`. Обратные ссылки из разных модулей теперь различаются.
- [bpo-46246](https://python-all.ru/3/whatsnew/changelog.html): Добавлен отсутствующий `__slots__` в `importlib.metadata.DeprecatedList`. Исправление от Arie Bovenberg.
- [bpo-46232](https://python-all.ru/3/whatsnew/changelog.html): Модуль [`ssl`](https://python-all.ru/3/library/ssl.html#module-ssl) теперь корректно обрабатывает сертификаты с битовыми строками в DN.
- [bpo-46195](https://python-all.ru/3/whatsnew/changelog.html): [`typing.get_type_hints()`](https://python-all.ru/3/library/typing.html#typing.get_type_hints) больше не добавляет `Optional` к параметрам со значением `None` по умолчанию. Это соответствует изменениям в PEP 484, внесённым в [https://github.com/python/peps/pull/689](https://python-all.ru/3/whatsnew/changelog.html)
- [bpo-31369](https://python-all.ru/3/whatsnew/changelog.html): Добавлен [`RegexFlag`](https://python-all.ru/3/library/re.html#re.RegexFlag) в `re.__all__` и задокументирован. Добавлен `NOFLAG` для обозначения отсутствия установленных флагов.
- [bpo-45898](https://python-all.ru/3/whatsnew/changelog.html): [`ctypes`](https://python-all.ru/3/library/ctypes.html#module-ctypes) больше не определяет символы `ffi_type_*` в `cfield.c`. Эти символы предоставляются libffi уже более десяти лет.
- [bpo-44953](https://python-all.ru/3/whatsnew/changelog.html): Вызов объектов `operator.itemgetter` и `operator.attrgetter` теперь выполняется быстрее благодаря использованию соглашения о вызовах vectorcall.
- [bpo-44289](https://python-all.ru/3/whatsnew/changelog.html): Исправлена проблема с методом [`is_tarfile()`](https://python-all.ru/3/library/tarfile.html#tarfile.is_tarfile) при использовании аргумента *fileobj*: позиция в *fileobj* смещалась вперёд, из-за чего объект становился нечитаемым через [`tarfile.TarFile.open()`](https://python-all.ru/3/library/tarfile.html#tarfile.TarFile.open).
- [bpo-44011](https://python-all.ru/3/whatsnew/changelog.html): Перереализована поддержка SSL/TLS в asyncio с использованием реализации из библиотеки uvloop.
- [bpo-41086](https://python-all.ru/3/whatsnew/changelog.html): Конструктор [`configparser.ConfigParser`](https://python-all.ru/3/library/configparser.html#configparser.ConfigParser) теперь возбуждает [`TypeError`](https://python-all.ru/3/library/exceptions.html#TypeError), если параметр `interpolation` не имеет тип `configparser.Interpolation`
- [bpo-29418](https://python-all.ru/3/whatsnew/changelog.html): Реализован [`inspect.ismethodwrapper()`](https://python-all.ru/3/library/inspect.html#inspect.ismethodwrapper) и исправлен [`inspect.isroutine()`](https://python-all.ru/3/library/inspect.html#inspect.isroutine) для случаев, когда передан methodwrapper. Исправление от Hakan Çelik.
- [bpo-14156](https://python-all.ru/3/whatsnew/changelog.html): argparse.FileType теперь поддерживает аргумент '-' в двоичном режиме, возвращая атрибут .buffer объектов sys.stdin/sys.stdout в зависимости от случая. Режимы, включая 'x' и 'a', обрабатываются так же, как 'w', когда аргумент равен '-'. Исправление предоставлено Josh Rosenberg.

### Документация

- [bpo-42238](https://python-all.ru/3/whatsnew/changelog.html): `Doc/tools/rstlint.py` перенесён в собственный репозиторий и теперь распространяется на PyPI как `sphinx-lint`.

### Тесты

- [bpo-46913](https://python-all.ru/3/whatsnew/changelog.html): Исправлен test\_faulthandler.test\_sigfpe() при сборке Python с undefined behavior sanitizer (UBSAN): отключён UBSAN для функции faulthandler\_sigfpe(). Исправление от Victor Stinner.
- [bpo-46760](https://python-all.ru/3/whatsnew/changelog.html): Удалены смещения байткода из ожидаемых значений в модуле test.test\_dis. Это уменьшает препятствия для модификации VM или компилятора.
- [bpo-46708](https://python-all.ru/3/whatsnew/changelog.html): Предотвращено предупреждение об изменении политики цикла событий asyncio после выполнения `test_asyncio`.
- [bpo-46678](https://python-all.ru/3/whatsnew/changelog.html): Функция `make_legacy_pyc` в `Lib/test/support/import_helper.py` больше не завершается ошибкой, когда `PYTHONPYCACHEPREFIX` указывает на каталог на другом устройстве, отличном от того, где хранятся временные файлы.
- [bpo-46623](https://python-all.ru/3/whatsnew/changelog.html): Пропуск test\_pair() и test\_speech128() из test\_zlib на s390x, поскольку они завершаются ошибкой, если zlib использует аппаратный ускоритель s390x. Исправление от Victor Stinner.

### Сборка

- [bpo-46860](https://python-all.ru/3/whatsnew/changelog.html): Учитывать `--with-suffix` при сборке на файловых системах, нечувствительных к регистру.
- [bpo-46656](https://python-all.ru/3/whatsnew/changelog.html): Сборка Python теперь требует компилятор C11. Опциональные возможности C11 не требуются. Исправление от Victor Stinner.
- [bpo-46656](https://python-all.ru/3/whatsnew/changelog.html): Сборка Python теперь требует поддержки чисел с плавающей точкой Not-a-Number (NaN): удалён макрос `Py_NO_NAN`. Исправление от Victor Stinner.
- [bpo-46640](https://python-all.ru/3/whatsnew/changelog.html): Сборка Python теперь требует заголовочный файл `<math.h>` стандарта C99, предоставляющий константу `NAN`, или встроенную функцию `__builtin_nan()`. Исправление от Victor Stinner.
- [bpo-46608](https://python-all.ru/3/whatsnew/changelog.html): Исключены marshalled-frozen данные при глубокой заморозке для экономии 300 КБ дискового пространства. Это включает добавление нового поля `is_package` в [`_frozen`](https://python-all.ru/3/c-api/import.html#c._frozen). Исправление от Kumar Aditya.
- [bpo-40280](https://python-all.ru/3/whatsnew/changelog.html): Исправлены ошибки тестов и проблемы платформы wasm32-emscripten. - Отключены системные вызовы, которые не поддерживаются или не работают, например: wait, getrusage, prlimit, mkfifo, mknod, setres\[gu\]id, setgroups. - Использовать fd\_count для подсчёта открытых файловых дескрипторов. - Добавлены дополнительные проверки для подпроцесса и вызова fork. - Добавлены обходные решения для отсутствующего \_multiprocessing и неудачного socket.accept(). - Включён bzip2. - Отключена поддержка больших файлов. - Отключён signal.alarm.
- [bpo-46430](https://python-all.ru/3/whatsnew/changelog.html): Интернирование строк в глубоко замороженных модулях. Исправление от Kumar Aditya.

### Windows

- [bpo-46744](https://python-all.ru/3/whatsnew/changelog.html): Каталог установки по умолчанию для всех пользователей для ARM64 теперь находится в нативной папке `Program Files`, а не в `Program Files (Arm)`, которая предназначена для файлов ARM (32-битных).
- [bpo-46567](https://python-all.ru/3/whatsnew/changelog.html): Добавляет поддержку Tcl и Tk для Windows ARM64. Также добавляет IDLE в установку.
- [bpo-46638](https://python-all.ru/3/whatsnew/changelog.html): Обеспечивает последовательное отключение виртуализации реестра. Для 3.10 и ранее она остается включенной (некоторые записи в реестр защищены), а для 3.11 и позднее отключена (изменения реестра влияют на все приложения).

### IDLE

- [bpo-46630](https://python-all.ru/3/whatsnew/changelog.html): Диалоги запросов в Windows теперь начинаются с курсором в поле ввода.
- [bpo-45447](https://python-all.ru/3/whatsnew/changelog.html): Применять подсветку синтаксиса IDLE к файлам `.pyi`. Патч от Alex Waygood и Terry Jan Reedy.

### C API

- [bpo-46748](https://python-all.ru/3/whatsnew/changelog.html): Публичные заголовки Python больше не импортируют `<stdbool.h>`, позволяя коду, встраивающему или расширяющему Python, свободно определять `bool`, `true` и `false`.
- [bpo-46836](https://python-all.ru/3/whatsnew/changelog.html): Переместить определение типа [`PyFrameObject`](https://python-all.ru/3/c-api/frame.html#c.PyFrameObject) (`struct _frame`) во внутренний заголовочный файл `pycore_frame.h` C API. Патч от Victor Stinner.
- [bpo-45459](https://python-all.ru/3/whatsnew/changelog.html): Переименовать заголовочный файл `Include/buffer.h` в `Include/pybuffer.h`, чтобы избежать конфликтов с проектами, имеющими существующий заголовочный файл `buffer.h`. Патч от Victor Stinner.
- [bpo-45412](https://python-all.ru/3/whatsnew/changelog.html): Удалить макрос `HAVE_PY_SET_53BIT_PRECISION` (перенесён во внутренний C API). Патч от Victor Stinner.
- [bpo-46613](https://python-all.ru/3/whatsnew/changelog.html): Добавлена функция [`PyType_GetModuleByDef()`](https://python-all.ru/3/c-api/type.html#c.PyType_GetModuleByDef), которая предоставляет доступ к состоянию модуля, когда определяющий класс метода недоступен.

## Python 3.11.0 alpha 5

*Дата выпуска: 2022-02-03*

### Core and Builtins

- [bpo-45773](https://python-all.ru/3/whatsnew/changelog.html): Удалить две недействительные оптимизации «peephole» из компилятора байт-кода.
- [bpo-46564](https://python-all.ru/3/whatsnew/changelog.html): Не создавать объекты фреймов при создании объекта [`super`](https://python-all.ru/3/library/functions.html#super). Патч от Kumar Aditya.
- [bpo-45885](https://python-all.ru/3/whatsnew/changelog.html): Добавлена более детальная статистика неудач специализации для байт-кода `COMPARE_OP`.
- [bpo-44977](https://python-all.ru/3/whatsnew/changelog.html): Делегирование [`int()`](https://python-all.ru/3/library/functions.html#int) в `__trunc__()` теперь устарело. Вызов `int(a)`, когда `type(a)` реализует `__trunc__()`, но не `__int__()` или `__index__()`, теперь вызывает [`DeprecationWarning`](https://python-all.ru/3/library/exceptions.html#DeprecationWarning).
- [bpo-46458](https://python-all.ru/3/whatsnew/changelog.html): Переупорядочить код, генерируемый компилятором для блока [`try`](https://python-all.ru/3/reference/compound_stmts.html#try)-[`except`](https://python-all.ru/3/reference/compound_stmts.html#except), так чтобы код блока [`else`](https://python-all.ru/3/reference/compound_stmts.html#else) следовал сразу за телом `try` (без перехода). Это более оптимально для «счастливого пути».
- [bpo-46527](https://python-all.ru/3/whatsnew/changelog.html): Снова разрешить передачу `iterable` в качестве именованного аргумента в [`enumerate()`](https://python-all.ru/3/library/functions.html#enumerate). Патч от Jelle Zijlstra.
- [bpo-46528](https://python-all.ru/3/whatsnew/changelog.html): Заменить несколько инструкций для работы со стеком (`DUP_TOP`, `DUP_TOP_TWO`, `ROT_TWO`, `ROT_THREE`, `ROT_FOUR` и `ROT_N`) новыми инструкциями [`COPY`](https://python-all.ru/3/library/dis.html#opcode-COPY) и [`SWAP`](https://python-all.ru/3/library/dis.html#opcode-SWAP).
- [bpo-46329](https://python-all.ru/3/whatsnew/changelog.html): Использовать два или три байт-кода для реализации большинства вызовов.

  Вызовы без именованных аргументов реализуются как последовательность двух инструкций: `PRECALL; CALL`. Вызовы с именованными аргументами реализуются как последовательность трех инструкций: `PRECALL; KW_NAMES; CALL`. Существует две различные инструкции `PRECALL`: `PRECALL_FUNTION` и `PRECALL_METHOD`. Последняя образует пару с `LOAD_METHOD`.

  Такое разделение на предварительный вызов и вызов позволяет лучше специализировать и, в конечном итоге, повышает производительность.

  Семантика не изменилась.
- [bpo-46503](https://python-all.ru/3/whatsnew/changelog.html): Исправлено утверждение (assert) при разборе некоторых недопустимых N-escape-последовательностей в f-строках.
- [bpo-46431](https://python-all.ru/3/whatsnew/changelog.html): Улучшено сообщение об ошибке при недопустимых вызовах `BaseExceptionGroup.__new__()`.
- [bpo-46476](https://python-all.ru/3/whatsnew/changelog.html): Исправлена утечка памяти в объектах кода, созданных deepfreeze. Патч от Kumar Aditya.
- [bpo-46481](https://python-all.ru/3/whatsnew/changelog.html): Ускорить вызовы `weakref.ref.__call__()`, используя соглашение о вызове [**PEP 590**](https://python-all.ru/3/whatsnew/changelog.html) `vectorcall`. Патч от Donghee Na.
- [bpo-46417](https://python-all.ru/3/whatsnew/changelog.html): Исправить состояние гонки при установке атрибута типа `__bases__`: внутренняя функция `add_subclass()` теперь получает член `PyTypeObject.tp_subclasses` после вызова [`PyWeakref_NewRef()`](https://python-all.ru/3/c-api/weakref.html#c.PyWeakref_NewRef), который может запустить сборку мусора, что может косвенно изменить `PyTypeObject.tp_subclasses`. Патч от Victor Stinner.
- [bpo-46417](https://python-all.ru/3/whatsnew/changelog.html): `python -X showrefcount` теперь показывает общее количество ссылок после очистки и уничтожения основного интерпретатора Python. Ранее оно показывалось до. Патч от Victor Stinner.
- [bpo-43683](https://python-all.ru/3/whatsnew/changelog.html): Добавить опкод ASYNC\_GEN\_WRAP для оборачивания значения, которое будет возвращено в асинхронных генераторах. Устраняет необходимость специальной обработки асинхронных генераторов в инструкции `YIELD_VALUE`.
- [bpo-46407](https://python-all.ru/3/whatsnew/changelog.html): Оптимизированы некоторые операции взятия остатка в `Objects/longobject.c`. Патч от Jeremiah Vivian.
- [bpo-46409](https://python-all.ru/3/whatsnew/changelog.html): Добавлен новый байткод `RETURN_GENERATOR` для создания генераторов. Упрощает вызов функций Python в виртуальной машине, так как больше не нужно обрабатывать генераторные функции особым образом.

  Также добавлен байткод `JUMP_NO_INTERRUPT`, который действует как `JUMP_ABSOLUTE`, но не проверяет прерывания.
- [bpo-46406](https://python-all.ru/3/whatsnew/changelog.html): Реализация целочисленного деления `//` оптимизирована, чтобы компилятор лучше понимал её ограничения. На платформе amd64 она может быть на 20% быстрее при делении целого числа на значение меньше `2**30`.

### Библиотека

- [bpo-46383](https://python-all.ru/3/whatsnew/changelog.html): Исправлена некорректная сигнатура `_zoneinfo` для функции `module_free` для устранения аварийного завершения на платформе wasm32-emscripten.

### Ядро и встроенные модули

- [bpo-46361](https://python-all.ru/3/whatsnew/changelog.html): Обеспечено корректное кеширование «малых» целых чисел, создаваемых [`int.from_bytes()`](https://python-all.ru/3/library/stdtypes.html#int.from_bytes) и [`decimal.Decimal`](https://python-all.ru/3/library/decimal.html#decimal.Decimal).
- [bpo-46161](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка построения класса, когда аргументы являются константами и используется CALL\_FUNCTION\_EX.
- [bpo-46028](https://python-all.ru/3/whatsnew/changelog.html): Исправлено вычисление `sys._base_executable` при нахождении в виртуальном окружении, использующем символические ссылки с именами бинарных файлов, отличными от тех, что предоставляет базовое окружение.
- [bpo-46091](https://python-all.ru/3/whatsnew/changelog.html): Корректно вычисляются уровни отступа для строк с пробельными символами, которые заканчиваются символами продолжения строки. Патч от Pablo Galindo

### Библиотека

- [bpo-30512](https://python-all.ru/3/whatsnew/changelog.html): Добавлена поддержка CAN-сокетов для NetBSD.

### Сборка

- [bpo-46045](https://python-all.ru/3/whatsnew/changelog.html): Не использовать семафоры POSIX на NetBSD

### Ядро и встроенные модули

- [bpo-44024](https://python-all.ru/3/whatsnew/changelog.html): Улучшено сообщение [`TypeError`](https://python-all.ru/3/library/exceptions.html#TypeError) для нестроковых вторых аргументов, передаваемых встроенным функциям [`getattr()`](https://python-all.ru/3/library/functions.html#getattr) и [`hasattr()`](https://python-all.ru/3/library/functions.html#hasattr). Патч от Géry Ogam.

### Библиотека

- [bpo-46624](https://python-all.ru/3/whatsnew/changelog.html): Восстановлена поддержка нецелочисленных аргументов для [`random.randrange()`](https://python-all.ru/3/library/random.html#random.randrange) и [`random.randint()`](https://python-all.ru/3/library/random.html#random.randint).
- [bpo-46591](https://python-all.ru/3/whatsnew/changelog.html): Ссылка на документацию IDLE в диалоге «О программе IDLE» стала кликабельной.
- [bpo-46565](https://python-all.ru/3/whatsnew/changelog.html): Удалены переменные цикла, просачивающиеся в пространства имён модулей.
- [bpo-46553](https://python-all.ru/3/whatsnew/changelog.html): В [`typing.get_type_hints()`](https://python-all.ru/3/library/typing.html#typing.get_type_hints) добавлена поддержка вычисления «голых» строковых аннотаций `ClassVar`. Патч от Gregory Beauregard.
- [bpo-46544](https://python-all.ru/3/whatsnew/changelog.html): Не допускать утечки промежуточных переменных `x` и `uspace` в [`textwrap.TextWrapper`](https://python-all.ru/3/library/textwrap.html#textwrap.TextWrapper).
- [bpo-46487](https://python-all.ru/3/whatsnew/changelog.html): Добавлен метод `get_write_buffer_limits` в `asyncio.transports.WriteTransport` и в SSL-транспорт.
- [bpo-45173](https://python-all.ru/3/whatsnew/changelog.html): Отмечено, что устаревшие возможности configparser будут удалены в Python 3.12.
- [bpo-45162](https://python-all.ru/3/whatsnew/changelog.html): Устаревшие API [`unittest`](https://python-all.ru/3/library/unittest.html#module-unittest), удалённые в 3.11a1, были временно восстановлены и будут удалены в 3.12, пока проводятся чистки во внешних проектах.
- [bpo-46539](https://python-all.ru/3/whatsnew/changelog.html): В [`typing.get_type_hints()`](https://python-all.ru/3/library/typing.html#typing.get_type_hints) добавлена поддержка вычисления строковых аннотаций `ClassVar` и `Final` внутри `Annotated`. Патч от Gregory Beauregard.
- [bpo-46510](https://python-all.ru/3/whatsnew/changelog.html): Добавлен недостающий тест для [`types.TracebackType`](https://python-all.ru/3/library/types.html#types.TracebackType) и [`types.FrameType`](https://python-all.ru/3/library/types.html#types.FrameType). Теперь они вычисляются непосредственно из перехваченного исключения без вызова [`sys.exc_info()`](https://python-all.ru/3/library/sys.html#sys.exc_info).
- [bpo-46491](https://python-all.ru/3/whatsnew/changelog.html): Разрешено [`typing.Annotated`](https://python-all.ru/3/library/typing.html#typing.Annotated) оборачивать [`typing.Final`](https://python-all.ru/3/library/typing.html#typing.Final) и [`typing.ClassVar`](https://python-all.ru/3/library/typing.html#typing.ClassVar). Патч от Gregory Beauregard.
- [bpo-46483](https://python-all.ru/3/whatsnew/changelog.html): Удалён [`__class_getitem__()`](https://python-all.ru/3/reference/datamodel.html#object.__class_getitem__) из [`pathlib.PurePath`](https://python-all.ru/3/library/pathlib.html#pathlib.PurePath), так как этот класс не предполагался обобщённым.
- [bpo-46436](https://python-all.ru/3/whatsnew/changelog.html): Исправлена опция командной строки `-d`/`--directory` в модуле [`http.server`](https://python-all.ru/3/library/http.server.html#module-http.server), которая игнорировалась при совместном использовании с опцией `--cgi`. Патч от Géry Ogam.
- [bpo-41403](https://python-all.ru/3/whatsnew/changelog.html): Изменено поведение `mock.patch()`: при неверном аргументе возникает [`TypeError`](https://python-all.ru/3/library/exceptions.html#TypeError) с соответствующим сообщением об ошибке. Ранее допускалось непонятное [`AttributeError`](https://python-all.ru/3/library/exceptions.html#AttributeError).
- [bpo-46474](https://python-all.ru/3/whatsnew/changelog.html): В `importlib.metadata.EntryPoint.pattern` избежать потенциального REDoS, ограничивая неоднозначность в последовательных пробелах.
- [bpo-46474](https://python-all.ru/3/whatsnew/changelog.html): Удален приватный метод из `importlib.metadata.Path`. Синхронизация с importlib\_metadata 4.10.0.
- [bpo-46470](https://python-all.ru/3/whatsnew/changelog.html): Удалена неиспользуемая ветвь из `typing._remove_dups_flatten`
- [bpo-46469](https://python-all.ru/3/whatsnew/changelog.html): Обобщенные классы [`asyncio`](https://python-all.ru/3/library/asyncio.html#module-asyncio) теперь возвращают [`types.GenericAlias`](https://python-all.ru/3/library/types.html#types.GenericAlias) в `__class_getitem__` вместо того же класса.
- [bpo-41906](https://python-all.ru/3/whatsnew/changelog.html): Поддержка передачи экземпляров фильтров в значениях `filters` для `handlers` и `loggers` в словаре, передаваемом в [`logging.config.dictConfig()`](https://python-all.ru/3/library/logging.config.html#logging.config.dictConfig).
- [bpo-46422](https://python-all.ru/3/whatsnew/changelog.html): Использовать `dis.Positions` в `dis.Instruction` вместо обычного `tuple`.
- [bpo-46434](https://python-all.ru/3/whatsnew/changelog.html): [`pdb`](https://python-all.ru/3/library/pdb.html#module-pdb) теперь корректно обрабатывает `help`, когда [`__doc__`](https://python-all.ru/3/reference/datamodel.html#module.__doc__) отсутствует, например, при запуске с предварительно сгенерированными оптимизированными файлами `.pyc`.
- [bpo-43869](https://python-all.ru/3/whatsnew/changelog.html): Python использует одинаковую временную эпоху (Epoch) на всех платформах. Добавлен явный модульный тест для проверки этого. Исправление от Victor Stinner.
- [bpo-46414](https://python-all.ru/3/whatsnew/changelog.html): Добавлен [`typing.reveal_type()`](https://python-all.ru/3/library/typing.html#typing.reveal_type). Исправление от Jelle Zijlstra.
- [bpo-40280](https://python-all.ru/3/whatsnew/changelog.html): [`subprocess`](https://python-all.ru/3/library/subprocess.html#module-subprocess) теперь импортирует специфичные для Windows импорты, когда доступен модуль `msvcrt`, и специфичные для POSIX импорты на всех остальных платформах. Это дает чистое исключение, когда `_posixsubprocess` недоступен (например, в браузере Emscripten).
- [bpo-40066](https://python-all.ru/3/whatsnew/changelog.html): `IntEnum`, `IntFlag` и `StrEnum` используют смешанный тип для своего вывода `str()` и `format()`.
- [bpo-46316](https://python-all.ru/3/whatsnew/changelog.html): Оптимизировать [`pathlib.Path.iterdir()`](https://python-all.ru/3/library/pathlib.html#pathlib.Path.iterdir), удалив ненужную проверку специальных записей.
- [bpo-29688](https://python-all.ru/3/whatsnew/changelog.html): Документировать [`pathlib.Path.absolute()`](https://python-all.ru/3/library/pathlib.html#pathlib.Path.absolute) (который существовал всегда).
- [bpo-43012](https://python-all.ru/3/whatsnew/changelog.html): Устаревший и внутренний класс `_Accessor` модуля pathlib удален, чтобы подготовить почву для предстоящих улучшений модуля.
- [bpo-46258](https://python-all.ru/3/whatsnew/changelog.html): Ускорение [`math.isqrt()`](https://python-all.ru/3/library/math.html#math.isqrt) для малых положительных целых чисел путем замены двух операций деления на таблицу поиска.
- [bpo-46242](https://python-all.ru/3/whatsnew/changelog.html): Улучшение сообщения об ошибке при создании нового типа [`enum.Enum`](https://python-all.ru/3/library/enum.html#enum.Enum), наследующего существующий `Enum` с `_member_names_` с помощью `enum.Enum.__call__()`.
- [bpo-43118](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка в [`inspect.signature()`](https://python-all.ru/3/library/inspect.html#inspect.signature), из-за которой он не работал с некоторыми подклассами классов, имеющих `__text_signature__`, ссылающийся на глобальные переменные модуля. Исправление от Weipeng Hong.
- [bpo-26552](https://python-all.ru/3/whatsnew/changelog.html): Исправлен случай, когда неудачный [`asyncio.ensure_future()`](https://python-all.ru/3/library/asyncio-future.html#asyncio.ensure_future) не закрывал корутину. Исправление от Kumar Aditya.
- [bpo-21987](https://python-all.ru/3/whatsnew/changelog.html): Исправлена проблема с [`tarfile.TarFile.getmember()`](https://python-all.ru/3/library/tarfile.html#tarfile.TarFile.getmember), получающим имя каталога с завершающим слэшем.
- [bpo-46124](https://python-all.ru/3/whatsnew/changelog.html): Обновление [`zoneinfo`](https://python-all.ru/3/library/zoneinfo.html#module-zoneinfo) для использования importlib.resources traversable API.
- [bpo-46103](https://python-all.ru/3/whatsnew/changelog.html): Теперь [`inspect.getmembers()`](https://python-all.ru/3/library/inspect.html#inspect.getmembers) получает атрибут `__bases__` только из типа класса. Исправление от Weipeng Hong.
- [bpo-46080](https://python-all.ru/3/whatsnew/changelog.html): Исправлено исключение при генерации текста справки argparse, если значение по умолчанию аргумента [`argparse.BooleanOptionalAction`](https://python-all.ru/3/library/argparse.html#argparse.BooleanOptionalAction) равно `argparse.SUPPRESS` и указан `help`. Исправление от Felix Fontein.
- [bpo-44791](https://python-all.ru/3/whatsnew/changelog.html): Исправлена подстановка [`ParamSpec`](https://python-all.ru/3/library/typing.html#typing.ParamSpec) в [`Concatenate`](https://python-all.ru/3/library/typing.html#typing.Concatenate) с различными выражениями параметров. Подстановка со списком типов теперь возвращает кортеж типов. Подстановка с `Concatenate` теперь возвращает `Concatenate` с конкатенированными списками аргументов.

### Документация

- [bpo-46463](https://python-all.ru/3/whatsnew/changelog.html): Исправления скрипта `escape4chm.py`, используемого при сборке файла документации CHM.

### Тесты

- [bpo-43478](https://python-all.ru/3/whatsnew/changelog.html): Объекты Mock больше не могут использоваться в качестве спецификаций для других Mock'ов. В результате уже замокированный объект нельзя передавать в `mock.Mock()`. Это может выявить ошибки в тестах, поскольку такие Mock'ы, производные от Mock, всегда будут проходить определенные проверки (например, isinstance), а встроенные функции assert (например, assert\_called\_once\_with) будут безусловно проходить.
- [bpo-46616](https://python-all.ru/3/whatsnew/changelog.html): Обеспечивает очистку ключей реестра `test_importlib.test_windows` после завершения.
- [bpo-44359](https://python-all.ru/3/whatsnew/changelog.html): test\_ftplib теперь молча игнорирует ошибки сокетов, чтобы предотвратить запись необработанных исключений потоков. Исправление от Victor Stinner.
- [bpo-46600](https://python-all.ru/3/whatsnew/changelog.html): Исправлен test\_gdb.test\_pycfunction() для Python, собранного с `clang -Og`. Добавлена терпимость к встроенным функциям в трассировке gdb. Исправление от Victor Stinner.
- [bpo-46542](https://python-all.ru/3/whatsnew/changelog.html): Исправлен сбой Python в test\_lib2to3 при использовании Python, собранного в режиме отладки: ограничение предела рекурсии. Исправление от Victor Stinner.
- [bpo-46576](https://python-all.ru/3/whatsnew/changelog.html): test\_peg\_generator теперь отключает оптимизацию компилятора при тестировании компиляции собственных C-расширений, чтобы значительно ускорить тестирование на неотладочных сборках CPython.
- [bpo-46542](https://python-all.ru/3/whatsnew/changelog.html): Исправлены тесты `test_json`, проверяющие наличие [`RecursionError`](https://python-all.ru/3/library/exceptions.html#RecursionError): эти тесты изменены для использования `support.infinite_recursion()`. Патч от Виктора Стиннера.
- [bpo-13886](https://python-all.ru/3/whatsnew/changelog.html): Пропуск тестов test\_builtin PTY для не-ASCII символов, если загружен модуль readline. Модуль readline меняет поведение input(), но test\_builtin не предназначен для тестирования модуля readline. Патч от Виктора Стиннера.
- [bpo-40280](https://python-all.ru/3/whatsnew/changelog.html): Добавлены декораторы `test.support.requires_fork()` для пометки тестов, требующих рабочего [`os.fork()`](https://python-all.ru/3/library/os.html#os.fork).
- [bpo-40280](https://python-all.ru/3/whatsnew/changelog.html): Добавлен декоратор `test.support.requires_subprocess()` для пометки тестов, требующих рабочего модуля [`subprocess`](https://python-all.ru/3/library/subprocess.html#module-subprocess) или `os.spawn*`. Платформа wasm32-emscripten не поддерживает процессы.
- [bpo-46126](https://python-all.ru/3/whatsnew/changelog.html): Отключены «описания» при внутреннем запуске тестов.

### Сборка

- [bpo-46602](https://python-all.ru/3/whatsnew/changelog.html): Приведён в порядок configure.ac: теперь conftest.c усекается, а не дополняется. Это помогает в случае, когда удаление conftest.c не происходит между тестами. В результате могут возникать побочные проблемы, такие как испорченный SOABI.
- [bpo-46600](https://python-all.ru/3/whatsnew/changelog.html): Исправлена проверка в скрипте `./configure`, определяющая, поддерживает ли компилятор C опцию `-Og`: теперь дополнительно используется `-Og` для clang, который её поддерживает. Патч от Виктора Стиннера.
- [bpo-38472](https://python-all.ru/3/whatsnew/changelog.html): Исправлено определение GCC в setup.py при кросс-компиляции. Компилятор C теперь запускается с LC\_ALL=C. Ранее определение не удавалось при немецкой локали.
- [bpo-46513](https://python-all.ru/3/whatsnew/changelog.html): **configure** больше не использует макрос `AC_C_CHAR_UNSIGNED`, а `pyconfig.h` больше не определяет зарезервированный символ `__CHAR_UNSIGNED__`.
- [bpo-46471](https://python-all.ru/3/whatsnew/changelog.html): Использование глобальных синглтонов для однобайтовых объектов bytes в deepfreeze.
- [bpo-46443](https://python-all.ru/3/whatsnew/changelog.html): Deepfreeze теперь использует кэшированные малые целые числа, так как это экономит место для часто используемых малых целых.
- [bpo-46429](https://python-all.ru/3/whatsnew/changelog.html): Объединение всех deep-frozen файлов в один для экономии места. Патч от Kumar Aditya.
- [bpo-45569](https://python-all.ru/3/whatsnew/changelog.html): Сборка теперь по умолчанию использует 30-битные разряды для целых чисел Python. Ранее в зависимости от платформы выбирались 15- или 30-битные разряды. 15-битные разряды по-прежнему можно выбрать с помощью опции `--enable-big-digits=15` скрипта `configure` или определив `PYLONG_BITS_IN_DIGIT` в `pyconfig.h`.
- [bpo-45925](https://python-all.ru/3/whatsnew/changelog.html): Обновление установщика Windows для использования SQLite 3.37.2.
- [bpo-43112](https://python-all.ru/3/whatsnew/changelog.html): Обнаружение musl libc как отдельного SOABI (помечен как `linux-musl`).

### Windows

- [bpo-33125](https://python-all.ru/3/whatsnew/changelog.html): Традиционный установщик Windows на основе EXE/MSI теперь доступен для ARM64.
- [bpo-46362](https://python-all.ru/3/whatsnew/changelog.html): os.path.abspath("C:CON") теперь исправлен и возвращает "\\\\.CON", а не тот же путь. Регрессия затрагивала все устаревшие устройства DOS, такие как COM1, LPT1 или NUL.
- [bpo-44934](https://python-all.ru/3/whatsnew/changelog.html): Установщик теперь предлагает опцию только командной строки для добавления каталога установки в конец `PATH` вместо начала.

### macOS

- [bpo-45925](https://python-all.ru/3/whatsnew/changelog.html): Обновление установщика macOS до SQLite 3.37.2.

### IDLE

- [bpo-45296](https://python-all.ru/3/whatsnew/changelog.html): Уточнены действия «Close», «Quit» и «Exit» в IDLE. В меню File пункты «Close» и «Exit» теперь называются «Close Window» (закрыть текущее окно) и «Exit IDLE» (выйти из IDLE, закрыв все окна). В Shell команды 'quit()' и 'exit()' означают «закрыть Shell». Если других окон нет, это также завершает IDLE.

### C API

- [bpo-40170](https://python-all.ru/3/whatsnew/changelog.html): Удалён макрос `PyHeapType_GET_MEMBERS()`. Он был ошибочно доступен в публичном C API, должен использоваться только внутри Python. Вместо него используйте элемент `PyTypeObject.tp_members`. Патч от Виктора Стиннера.
- [bpo-40170](https://python-all.ru/3/whatsnew/changelog.html): Перенесены приватные функции \_Py\_GetAllocatedBlocks() и \_PyObject\_DebugMallocStats() во внутренний C API. Патч от Виктора Стиннера.
- [bpo-46433](https://python-all.ru/3/whatsnew/changelog.html): Внутренняя функция \_PyType\_GetModuleByDef теперь корректно обрабатывает шаблоны наследования, включающие статические типы.
- [bpo-45459](https://python-all.ru/3/whatsnew/changelog.html): [`Py_buffer`](https://python-all.ru/3/c-api/buffer.html#c.Py_buffer) и различные функции, связанные с `Py_buffer`, теперь являются частью ограниченного API и стабильного ABI.
- [bpo-14916](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка в токенизаторе, которая мешала `PyRun_InteractiveOne` выполнять разбор из предоставленного файлового дескриптора.

## Python 3.11.0 alpha 4

*Дата выпуска: 2022-01-13*

### Ядро и встроенные модули

- [bpo-46070](https://python-all.ru/3/whatsnew/changelog.html): [`Py_EndInterpreter()`](https://python-all.ru/3/c-api/subinterpreters.html#c.Py_EndInterpreter) теперь явно открепляет все объекты, отслеживаемые сборщиком мусора.\\nРанее, если объект использовался позже другим интерпретатором, вызов [`PyObject_GC_UnTrack()`](https://python-all.ru/3/c-api/gcsupport.html#c.PyObject_GC_UnTrack) для этого объекта приводил к аварийному завершению, если предыдущий или следующий объект структуры `PyGC_Head` становился висячим указателем. Исправление от Victor Stinner.
- [bpo-46347](https://python-all.ru/3/whatsnew/changelog.html): Исправлена утечка памяти в PyEval\_EvalCodeEx.
- [bpo-46339](https://python-all.ru/3/whatsnew/changelog.html): Исправлен сбой в парсере при получении текста ошибки для\\nмногострочных f-строковых выражений, которые не начинаются с первой строки строки. Исправление от Pablo Galindo.
- [bpo-46331](https://python-all.ru/3/whatsnew/changelog.html): Не устанавливать номер строки для инструкции, сохраняющей doc-string. Исправляет регрессию, внесённую в 3.11 alpha.
- [bpo-46314](https://python-all.ru/3/whatsnew/changelog.html): Удалён ложный вызов события “call” при создании лямбда-функции, который был случайно добавлен в 3.11a4.
- [bpo-46289](https://python-all.ru/3/whatsnew/changelog.html): Объявление ASDL для `FormattedValue` изменено, чтобы отразить, что поле `conversion` не является необязательным.
- [bpo-46297](https://python-all.ru/3/whatsnew/changelog.html): Исправлен сбой интерпретатора при загрузке с несколькими путями PythonPath, заданными в реестре Windows. Исправление от Derzsi Dániel.
- [bpo-46237](https://python-all.ru/3/whatsnew/changelog.html): Исправлен номер строки ошибок токенизатора внутри f-строк. Исправление от Pablo Galindo.
- [bpo-46263](https://python-all.ru/3/whatsnew/changelog.html): Теперь всегда ожидается, что конфигурация “use\_frozen\_modules” установлена, так как getpath.c был переписан на чистом Python и логика улучшена.
- [bpo-46006](https://python-all.ru/3/whatsnew/changelog.html): Исправлена регрессия, когда метод типа, такой как `__init__()`, изменяется в\\nподынтерпретаторе. Исправлена регрессия в\\n`_PyUnicode_EqualToASCIIId()` и типе `update_slot()`. Откат изменения, которое сделало словарь Unicode интернированных строк совместимым с подынтерпретаторами: внутренний словарь интернированных строк снова разделяется всеми интерпретаторами. Исправление от Victor Stinner.
- [bpo-45923](https://python-all.ru/3/whatsnew/changelog.html): Добавлен опкод RESUME. Это логический no-op. Он генерируется компилятором\\nвезде, куда можно войти в функцию Python. Используется интерпретатором для выполнения трассировки и проверок оптимизатора.

### Библиотека

- [bpo-46208](https://python-all.ru/3/whatsnew/changelog.html): Исправлена регрессия os.path.normpath("A/../../B"), которая возвращала не ожидаемое "../B", а "B".

### Ядро и встроенные модули

- [bpo-46240](https://python-all.ru/3/whatsnew/changelog.html): Исправлено сообщение об ошибке для незакрытых скобок, когда токенизатор не доходит до конца исходного кода при сообщении об ошибке. Исправление от Pablo Galindo.
- [bpo-46009](https://python-all.ru/3/whatsnew/changelog.html): Удалён опкод `GEN_START`.
- [bpo-46235](https://python-all.ru/3/whatsnew/changelog.html): Некоторые операции умножения последовательностей, такие как `[0] * 1_000`, теперь выполняются быстрее благодаря оптимизациям подсчёта ссылок. Исправление от Dennis Sweeney.
- [bpo-46221](https://python-all.ru/3/whatsnew/changelog.html): `PREP_RERAISE_STAR` больше не помещает `lasti` в стек.
- [bpo-46202](https://python-all.ru/3/whatsnew/changelog.html): Удалён `POP_EXCEPT_AND_RERAISE` и заменён эквивалентной последовательностью других опкодов.

### Библиотека

- [bpo-46085](https://python-all.ru/3/whatsnew/changelog.html): Исправлен механизм кэширования итератора для `OrderedDict`.

### Ядро и встроенные модули

- [bpo-46055](https://python-all.ru/3/whatsnew/changelog.html): Ускорена операция сдвига для целых чисел, меньших [`PyLong_BASE`](https://python-all.ru/3/c-api/long.html#c.PyLong_BASE). Исправление от Xinhang Xu.
- [bpo-46110](https://python-all.ru/3/whatsnew/changelog.html): Добавлена проверка максимальной глубины рекурсии в PEG-парсер для предотвращения переполнения стека. Исправление от Pablo Galindo.
- [bpo-46107](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка, при которой `ExceptionGroup.split()` и\\n`ExceptionGroup.subgroup()` не копировали поле `__note__` группы исключений в части.
- [bpo-45711](https://python-all.ru/3/whatsnew/changelog.html): Представление обработанных исключений в состоянии интерпретатора (также известное как exc\_info или \_PyErr\_StackItem) теперь содержит только поле `exc_value`;\\n`exc_type` и `exc_traceback` удалены, так как их значения могут быть получены из `exc_value`.
- [bpo-44525](https://python-all.ru/3/whatsnew/changelog.html): Заменил четыре байткод-инструкции вызова одной инструкцией предвызова и двумя инструкциями вызова.

  Удалены `CALL_FUNCTION`, `CALL_FUNCTION_KW`, `CALL_METHOD` и `CALL_METHOD_KW`.

  Добавлены инструкции вызова `CALL_NO_KW` и `CALL_KW`, а также префикс `PRECALL_METHOD` для объединения с `LOAD_METHOD`.
- [bpo-46039](https://python-all.ru/3/whatsnew/changelog.html): Удалена инструкция `YIELD_FROM` и заменена инструкцией `SEND`, которая выполняет ту же операцию, но без цикла.
- [bpo-45635](https://python-all.ru/3/whatsnew/changelog.html): Код, вызываемый из `_PyErr_Display()`, был рефакторизован\\nдля улучшения обработки ошибок. Теперь он немедленно завершает работу при неустранимой ошибке.
- [bpo-46054](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка парсера при разборе символов не в кодировке UTF-8 в исходных файлах. Автор исправления: Pablo Galindo.
- [bpo-46042](https://python-all.ru/3/whatsnew/changelog.html): Улучшено позиционирование каретки в исключениях [`SyntaxError`](https://python-all.ru/3/library/exceptions.html#SyntaxError), выдаваемых таблицей символов. Автор исправления: Pablo Galindo.
- [bpo-46049](https://python-all.ru/3/whatsnew/changelog.html): Обеспечена корректная работа файлов `._pth` на платформах, отличных от Windows.
- [bpo-46048](https://python-all.ru/3/whatsnew/changelog.html): Исправлен разбор файлов `._pth` при запуске, чтобы пути из одного символа корректно считывались.
- [bpo-37971](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка, из-за которой номера строк в трассировке при вызове декоратора, возбудившего исключение, были неверными.
- [bpo-46031](https://python-all.ru/3/whatsnew/changelog.html): Добавлены опкоды [`POP_JUMP_IF_NOT_NONE`](https://python-all.ru/3/library/dis.html#opcode-POP_JUMP_IF_NOT_NONE) и [`POP_JUMP_IF_NONE`](https://python-all.ru/3/library/dis.html#opcode-POP_JUMP_IF_NONE) для ускорения условных переходов.
- [bpo-45654](https://python-all.ru/3/whatsnew/changelog.html): Deepfreeze [`runpy`](https://python-all.ru/3/library/runpy.html#module-runpy), автор исправления: Kumar Aditya.
- [bpo-46025](https://python-all.ru/3/whatsnew/changelog.html): Исправлен сбой в модуле [`atexit`](https://python-all.ru/3/library/atexit.html#module-atexit), связанный с функциями, которые отменяют свою регистрацию перед возбуждением исключений. Автор исправления: Pablo Galindo.

### Библиотека

- [bpo-46000](https://python-all.ru/3/whatsnew/changelog.html): Улучшена совместимость модуля [`curses`](https://python-all.ru/3/library/curses.html#module-curses) с библиотекой curses в NetBSD.

### Ядро и встроенные модули

- [bpo-44525](https://python-all.ru/3/whatsnew/changelog.html): Специализация инструкции CALL\_FUNCTION для вызовов встроенных типов с одним аргументом. Ускоряет операции `range(x)`, `list(x)` и особенно `type(obj)`.
- [bpo-42918](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка, из-за которой встроенная функция [`compile()`](https://python-all.ru/3/library/functions.html#compile) не всегда возбуждала исключение [`SyntaxError`](https://python-all.ru/3/library/exceptions.html#SyntaxError) при передаче нескольких инструкций в режиме 'single'. Автор исправления: Weipeng Hong.
- [bpo-45953](https://python-all.ru/3/whatsnew/changelog.html): Главный интерпретатор в \_PyRuntimeState.interpreters теперь выделяется статически (как часть \_PyRuntime). Аналогично для начального состояния потока каждого интерпретатора. Это означает меньше выделений памяти при инициализации рантайма, а также лучшую локальность памяти для этих ключевых объектов состояния.
- [bpo-45292](https://python-all.ru/3/whatsnew/changelog.html): Завершена реализация [**PEP 654**](https://python-all.ru/3/whatsnew/changelog.html): добавлен `except*`.
- [bpo-43413](https://python-all.ru/3/whatsnew/changelog.html): Откат изменений в `set.__init__`. Подкласс [`set`](https://python-all.ru/3/library/stdtypes.html#set) должен определять метод `__init__()`, если он определяет метод `__new__()` с дополнительными именованными параметрами.
- [bpo-43931](https://python-all.ru/3/whatsnew/changelog.html): Добавлена константа [`Py_Version`](https://python-all.ru/3/c-api/apiabiversion.html#c.Py_Version), имеющая то же значение, что и [`PY_VERSION_HEX`](https://python-all.ru/3/c-api/apiabiversion.html#c.PY_VERSION_HEX). Автор исправления: Gabriele N. Tornetta.

### Библиотека

- [bpo-46342](https://python-all.ru/3/whatsnew/changelog.html): Декоратор `@typing.final` теперь устанавливает атрибут `__final__` на декорируемом объекте, чтобы обеспечить интроспекцию во время выполнения. Автор исправления: Jelle Zijlstra.
- [bpo-46328](https://python-all.ru/3/whatsnew/changelog.html): Добавлен метод [`sys.exception()`](https://python-all.ru/3/library/sys.html#sys.exception), возвращающий активный экземпляр исключения.
- [bpo-46307](https://python-all.ru/3/whatsnew/changelog.html): Добавлены методы [`string.Template.is_valid()`](https://python-all.ru/3/library/string.html#string.Template.is_valid) и [`string.Template.get_identifiers()`](https://python-all.ru/3/library/string.html#string.Template.get_identifiers).
- [bpo-46306](https://python-all.ru/3/whatsnew/changelog.html): Предполагается, что [`types.CodeType`](https://python-all.ru/3/library/types.html#types.CodeType) всегда содержит `types.CodeType.co_firstlineno` в [`doctest`](https://python-all.ru/3/library/doctest.html#module-doctest).
- [bpo-40479](https://python-all.ru/3/whatsnew/changelog.html): Исправлена опция [`hashlib`](https://python-all.ru/3/library/hashlib.html#module-hashlib) *usedforsecurity* для корректной работы с OpenSSL 3.0.0 в режиме FIPS.
- [bpo-46070](https://python-all.ru/3/whatsnew/changelog.html): Исправлена возможная ошибка сегментации при импорте модуля [`asyncio`](https://python-all.ru/3/library/asyncio.html#module-asyncio) из разных под-интерпретаторов параллельно. Автор исправления: Erlend E. Aasland.
- [bpo-46244](https://python-all.ru/3/whatsnew/changelog.html): Удален `__slots__` из [`typing.ParamSpec`](https://python-all.ru/3/library/typing.html#typing.ParamSpec) и [`typing.TypeVar`](https://python-all.ru/3/library/typing.html#typing.TypeVar). Они не имели никакой цели. Автор исправления: Arie Bovenberg.
- [bpo-46278](https://python-all.ru/3/whatsnew/changelog.html): Отражение аргумента `context` в методах `AbstractEventLoop.call_*()`. Реализации циклов уже поддерживают его.
- [bpo-46269](https://python-all.ru/3/whatsnew/changelog.html): Удаление специальной обработки `__new__` в [`enum.Enum.__dir__()`](https://python-all.ru/3/library/enum.html#enum.Enum.__dir__).
- [bpo-46266](https://python-all.ru/3/whatsnew/changelog.html): Улучшение констант дней в [`calendar`](https://python-all.ru/3/library/calendar.html#module-calendar).

  Теперь все константы (`MONDAY` … `SUNDAY`) задокументированы, протестированы и добавлены в `__all__`.
- [bpo-46257](https://python-all.ru/3/whatsnew/changelog.html): Оптимизированы функции mean, variance и stdev в модуле statistics. Если входные данные являются итератором, они обрабатываются за один проход, не расходуя память на преобразование в список. Алгоритм с одним проходом примерно вдвое быстрее предыдущего кода с двумя проходами.
- [bpo-41011](https://python-all.ru/3/whatsnew/changelog.html): Добавлены две новые переменные в *pyvenv.cfg*, который генерируется модулем [`venv`](https://python-all.ru/3/library/venv.html#module-venv): *executable* для исполняемого файла и *command* для командной строки, использованной для создания окружения.
- [bpo-46239](https://python-all.ru/3/whatsnew/changelog.html): Улучшено сообщение об ошибке при импорте `asyncio.windows_events` на системах, отличных от Windows.
- [bpo-46238](https://python-all.ru/3/whatsnew/changelog.html): Переиспользованы константы `_winapi` в `asyncio.windows_events`.
- [bpo-46222](https://python-all.ru/3/whatsnew/changelog.html): Добавлена константа sendfile `SF_NOCACHE` для FreeBSD в модуль posixmodule.
- [bpo-37295](https://python-all.ru/3/whatsnew/changelog.html): Добавлен быстрый путь для `0 <= k <= n <= 67` для [`math.comb()`](https://python-all.ru/3/library/math.html#math.comb).
- [bpo-46176](https://python-all.ru/3/whatsnew/changelog.html): Добавлена константа `MAP_STACK` для модуля mmap.
- [bpo-43424](https://python-all.ru/3/whatsnew/changelog.html): `webbrowser.MacOSXOSAScript._name` устарело; используйте `name`.
- [bpo-45321](https://python-all.ru/3/whatsnew/changelog.html): Добавлены недостающие коды ошибок в модуль `xml.parsers.expat.errors`.
- [bpo-46125](https://python-all.ru/3/whatsnew/changelog.html): Рефакторинг тестов для непосредственного тестирования API traversable. Включает изменения из importlib 5.4.0.
- [bpo-46118](https://python-all.ru/3/whatsnew/changelog.html): importlib.resources и связанная с ним функциональность перемещены в пакет.
- [bpo-37578](https://python-all.ru/3/whatsnew/changelog.html): Добавлен параметр *include\_hidden* в [`glob()`](https://python-all.ru/3/library/glob.html#glob.glob) и [`iglob()`](https://python-all.ru/3/library/glob.html#glob.iglob) для поиска скрытых файлов и каталогов при использовании специальных символов, таких как `*`, `**`, `?` и `[]`.
- [bpo-20369](https://python-all.ru/3/whatsnew/changelog.html): [`concurrent.futures.wait()`](https://python-all.ru/3/library/concurrent.futures.html#concurrent.futures.wait) больше не блокируется навсегда при передаче дублирующихся futures. Исправление от Kumar Aditya.
- [bpo-46105](https://python-all.ru/3/whatsnew/changelog.html): Учитывается spec при создании спецификаций требований с url и extras (importlib\_metadata 4.8.3).
- [bpo-44893](https://python-all.ru/3/whatsnew/changelog.html): Объекты EntryPoint больше не являются кортежами. Рекомендуемый способ доступа – по атрибутам ('.name', '.group') или через аксессор ('.load()'). Доступ по индексу устарел и будет выдавать предупреждение об устаревании.
- [bpo-22815](https://python-all.ru/3/whatsnew/changelog.html): Выводятся неожиданные успехи вместе с неудачами и ошибками в сводке в [`unittest.TextTestResult`](https://python-all.ru/3/library/unittest.html#unittest.TextTestResult).
- [bpo-22047](https://python-all.ru/3/whatsnew/changelog.html): Вызов `add_argument_group()` для группы аргументов устарел. Вызов `add_argument_group()` или `add_mutually_exclusive_group()` для взаимоисключающей группы устарел.

  Эти функции никогда не поддерживались и не всегда работают корректно. Они присутствуют в API случайно, из-за наследования, и будут удалены в будущем.
- [bpo-26952](https://python-all.ru/3/whatsnew/changelog.html): [`argparse`](https://python-all.ru/3/library/argparse.html#module-argparse) вызывает [`ValueError`](https://python-all.ru/3/library/exceptions.html#ValueError) с понятным сообщением при попытке отобразить справку для пустой взаимоисключающей группы. Ранее вызывалось непонятное [`IndexError`](https://python-all.ru/3/library/exceptions.html#IndexError).
- [bpo-45615](https://python-all.ru/3/whatsnew/changelog.html): Функции в модуле [`traceback`](https://python-all.ru/3/library/traceback.html#module-traceback) вызывают [`TypeError`](https://python-all.ru/3/library/exceptions.html#TypeError) вместо [`AttributeError`](https://python-all.ru/3/library/exceptions.html#AttributeError), если аргумент исключения не является типом [`BaseException`](https://python-all.ru/3/library/exceptions.html#BaseException).
- [bpo-16594](https://python-all.ru/3/whatsnew/changelog.html): Добавлен флаг allow\_reuse\_port в socketserver.
- [bpo-27718](https://python-all.ru/3/whatsnew/changelog.html): Исправлена справка для модуля [`signal`](https://python-all.ru/3/library/signal.html#module-signal). Некоторые функции (например, `signal()` и `getsignal()`) были пропущены.
- [bpo-46032](https://python-all.ru/3/whatsnew/changelog.html): Метод `registry()` функций [`functools.singledispatch()`](https://python-all.ru/3/library/functools.html#functools.singledispatch) теперь проверяет первый аргумент или аннотацию первого параметра и вызывает TypeError, если он не поддерживается. Ранее неподдерживаемые «типы» игнорировались (например, `typing.List[int]`) или вызывали ошибку при вызове (например, `list[int]`).
- [bpo-46014](https://python-all.ru/3/whatsnew/changelog.html): Добавлена возможность использовать `typing.Union` и `types.UnionType` в качестве аргумента диспетчеризации для `functools.singledispatch`. Исправление предоставлено Yurii Karabas.
- [bpo-27062](https://python-all.ru/3/whatsnew/changelog.html): Добавлен `__all__` в [`inspect`](https://python-all.ru/3/library/inspect.html#module-inspect), исправление от Kumar Aditya.
- [bpo-46018](https://python-all.ru/3/whatsnew/changelog.html): Обеспечить, чтобы [`math.expm1()`](https://python-all.ru/3/library/math.html#math.expm1) не вызывал исключение при исчерпании.
- [bpo-46016](https://python-all.ru/3/whatsnew/changelog.html): Добавлены константы `F_DUP2FD` и `F_DUP2FD_CLOEXEC` из FreeBSD в модуль [`fcntl`](https://python-all.ru/3/library/fcntl.html#module-fcntl).
- [bpo-45755](https://python-all.ru/3/whatsnew/changelog.html): Обобщённые псевдонимы [`typing`](https://python-all.ru/3/library/typing.html#module-typing) теперь раскрывают атрибуты класса исходного обобщённого класса при передаче в `dir()`. Такое поведение было до Python 3.6, но было изменено в 3.7-3.9.
- [bpo-45874](https://python-all.ru/3/whatsnew/changelog.html): Пустая строка запроса, не содержащая аргументов запроса, теперь корректно обрабатывается в `urllib.parse.parse_qsl`. Ранее это вызывало проблемы, когда был включён строгий разбор.
- [bpo-44674](https://python-all.ru/3/whatsnew/changelog.html): Изменён способ, которым dataclasses запрещают изменяемые значения по умолчанию. Ранее использовался список известных типов (list, dict, set). Теперь запрещается использовать в качестве значений по умолчанию нехешируемые объекты. Нехешируемость используется как показатель изменяемости. Исправление от Eric V. Smith, идея от Raymond Hettinger.
- [bpo-23882](https://python-all.ru/3/whatsnew/changelog.html): Удалена поддержка пространств имён пакетов (PEP 420) из unittest discovery. Она была введена в Python 3.4, но была неработоспособна, начиная с Python 3.7.
- [bpo-25066](https://python-all.ru/3/whatsnew/changelog.html): Добавлен метод `__repr__()` к объектам [`multiprocessing.Event`](https://python-all.ru/3/library/multiprocessing.html#multiprocessing.Event), исправление от Kumar Aditya.
- [bpo-45643](https://python-all.ru/3/whatsnew/changelog.html): Добавлен [`signal.SIGSTKFLT`](https://python-all.ru/3/library/signal.html#signal.SIGSTKFLT) на платформах, где определён этот сигнал.
- [bpo-44092](https://python-all.ru/3/whatsnew/changelog.html): Выборка при откате больше не вызывает [`InterfaceError`](https://python-all.ru/3/library/sqlite3.html#sqlite3.InterfaceError). Вместо этого мы оставляем обработку этих случаев библиотеке SQLite. Исправление от Erlend E. Aasland.
- [bpo-42413](https://python-all.ru/3/whatsnew/changelog.html): Заменить `concurrent.futures.TimeoutError` и `asyncio.TimeoutError` на встроенный [`TimeoutError`](https://python-all.ru/3/library/exceptions.html#TimeoutError), оставив эти имена как устаревшие псевдонимы.

### Документация

- [bpo-46196](https://python-all.ru/3/whatsnew/changelog.html): Документирован метод [`cmd.Cmd.columnize()`](https://python-all.ru/3/library/cmd.html#cmd.Cmd.columnize).
- [bpo-46120](https://python-all.ru/3/whatsnew/changelog.html): Указано, что `|` предпочтительнее `Union` с точки зрения читаемости в документации [`typing`](https://python-all.ru/3/library/typing.html#module-typing).
- [bpo-46109](https://python-all.ru/3/whatsnew/changelog.html): Документация `importlib.resources` и `importlib.resources.abc` вынесена в отдельные файлы.
- [bpo-19737](https://python-all.ru/3/whatsnew/changelog.html): Обновлена документация функции [`globals()`](https://python-all.ru/3/library/functions.html#globals).

### Тесты

- [bpo-46296](https://python-all.ru/3/whatsnew/changelog.html): Добавлен тест для [`enum`](https://python-all.ru/3/library/enum.html#module-enum) с `_use_args_ == True` и `_member_type_ == object`.
- [bpo-46205](https://python-all.ru/3/whatsnew/changelog.html): Исправлено зависание в runtest\_mp из-за состояния гонки.
- [bpo-46263](https://python-all.ru/3/whatsnew/changelog.html): Исправлен test\_capi на FreeBSD 14-dev: указание jemalloc не заполнять освобождённую память мусорными байтами.
- [bpo-46262](https://python-all.ru/3/whatsnew/changelog.html): Добавлено покрытие пути `ValueError` в тестах для `enum.Flag._missing_()`.
- [bpo-46150](https://python-all.ru/3/whatsnew/changelog.html): Теперь `fakename` в `test_pathlib.PosixPathTest.test_expanduser` проверяется на отсутствие.
- [bpo-46129](https://python-all.ru/3/whatsnew/changelog.html): Переписаны тесты `asyncio.locks` с использованием [`unittest.IsolatedAsyncioTestCase`](https://python-all.ru/3/library/unittest.html#unittest.IsolatedAsyncioTestCase).
- [bpo-23819](https://python-all.ru/3/whatsnew/changelog.html): Исправлены тесты [`asyncio`](https://python-all.ru/3/library/asyncio.html#module-asyncio) в оптимизированном режиме python. Патч от Kumar Aditya.
- [bpo-46114](https://python-all.ru/3/whatsnew/changelog.html): Исправлен тестовый случай для версии OpenSSL 3.0.1. OpenSSL 3.0 использует `0xMNN00PP0L`.

### Сборка

- [bpo-44133](https://python-all.ru/3/whatsnew/changelog.html): При настройке Python с [`--without-static-libpython`](https://python-all.ru/3/using/configure.html#cmdoption-without-static-libpython) статическая библиотека Python (libpython.a) больше не собирается. Патч от Victor Stinner.
- [bpo-44133](https://python-all.ru/3/whatsnew/changelog.html): Когда Python собирается без [`--enable-shared`](https://python-all.ru/3/using/configure.html#cmdoption-enable-shared), программа `python` теперь линкуется с объектными файлами, а не со статической библиотекой Python (libpython.a), чтобы гарантировать экспорт всех символов. Ранее линковщик пропускал некоторые символы, например функцию `Py_FrozenMain()`. Патч от Victor Stinner.
- [bpo-40280](https://python-all.ru/3/whatsnew/changelog.html): Скрипт `configure` имеет новую опцию `--with-emscripten-target` для выбора браузера или node в качестве цели сборки Emscripten.
- [bpo-46315](https://python-all.ru/3/whatsnew/changelog.html): Добавлены и исправлены проверки `#ifdef HAVE_FEATURE` для функциональности, недоступной на платформе WASI.
- [bpo-45723](https://python-all.ru/3/whatsnew/changelog.html): Исправлен регресс в проверке `configure` для [`select.epoll()`](https://python-all.ru/3/library/select.html#select.epoll).
- [bpo-46263](https://python-all.ru/3/whatsnew/changelog.html): `configure` больше не устанавливает `MULTIARCH` на платформах FreeBSD.
- [bpo-46106](https://python-all.ru/3/whatsnew/changelog.html): Обновлён OpenSSL до 1.1.1m в сборках Windows, установщиках macOS и CI. Патч от Kumar Aditya.
- [bpo-46088](https://python-all.ru/3/whatsnew/changelog.html): Автоматическое обнаружение или установка загрузочного Python-рантайма при сборке из Visual Studio.
- [bpo-46072](https://python-all.ru/3/whatsnew/changelog.html): Добавлена опция configure –with-pystats для включения сбора внутренней статистики.
- [bpo-40280](https://python-all.ru/3/whatsnew/changelog.html): Новый каталог `Tools/wasm` содержит вспомогательные инструменты, связанные с WebAssembly, например `config.site` переопределение для wasm32-emscripten, генератор ресурсов wasm для упаковки stdlib и README.
- [bpo-46023](https://python-all.ru/3/whatsnew/changelog.html): **makesetup** больше не собирает расширения, помеченные как *disabled*. Это позволяет пользователям отключать модули в `Modules/Setup.local`.
- [bpo-45949](https://python-all.ru/3/whatsnew/changelog.html): Для всех файлов, кроме загрузочных importlib, используется чистый Python `freeze_module`. Опция `--with-freeze-module` **configure** больше не нужна для кросс-сборок.

### Windows

- [bpo-46217](https://python-all.ru/3/whatsnew/changelog.html): Удалён параметр, который не поддерживается в Windows 8.1 и ранних версиях Windows 10 и мог вызывать сбои сборки или выполнения.

### macOS

- [bpo-40477](https://python-all.ru/3/whatsnew/changelog.html): Приложение Python Launcher для macOS теперь корректно запускает скрипты и, при необходимости, приложение Терминал при работе на последних версиях macOS.

### C API

- [bpo-46236](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка в [`PyFunction_GetAnnotations()`](https://python-all.ru/3/c-api/function.html#c.PyFunction_GetAnnotations), из-за которой он возвращал `tuple` вместо `dict`.
- [bpo-46140](https://python-all.ru/3/whatsnew/changelog.html): [`PyBuffer_GetPointer()`](https://python-all.ru/3/c-api/buffer.html#c.PyBuffer_GetPointer), [`PyBuffer_FromContiguous()`](https://python-all.ru/3/c-api/buffer.html#c.PyBuffer_FromContiguous), [`PyBuffer_ToContiguous()`](https://python-all.ru/3/c-api/buffer.html#c.PyBuffer_ToContiguous) и [`PyMemoryView_FromBuffer()`](https://python-all.ru/3/c-api/memoryview.html#c.PyMemoryView_FromBuffer) теперь принимают информацию о буфере через `const Py_buffer *` вместо `Py_buffer *`, поскольку изменяемость им не нужна. `PyBuffer_FromContiguous()` также теперь принимает исходный буфер как `const void *`, и аналогично `PyBuffer_GetPointer()` принимает шаги как `const Py_ssize_t *`.
- [bpo-45855](https://python-all.ru/3/whatsnew/changelog.html): Документировано, что аргумент *no\_block* функции [`PyCapsule_Import()`](https://python-all.ru/3/c-api/capsule.html#c.PyCapsule_Import) теперь ничего не делает (no-op).
- [bpo-45855](https://python-all.ru/3/whatsnew/changelog.html): Заменено устаревшее использование [`PyImport_ImportModuleNoBlock()`](https://python-all.ru/3/c-api/import.html#c.PyImport_ImportModuleNoBlock) на [`PyImport_ImportModule()`](https://python-all.ru/3/c-api/import.html#c.PyImport_ImportModule) в модулях стандартной библиотеки. Исправление от Kumar Aditya.
- [bpo-46007](https://python-all.ru/3/whatsnew/changelog.html): Макрос `PyUnicode_CHECK_INTERNED()` исключён из ограниченного C API. Он никогда не был там пригоден к использованию, поскольку использовал внутренние структуры, недоступные в ограниченном C API. Исправление от Victor Stinner.

## Python 3.11.0 alpha 3

*Дата выпуска: 2021-12-08*

### Ядро и встроенные модули

- [bpo-46009](https://python-all.ru/3/whatsnew/changelog.html): Восстановлено поведение из версии 3.9 и более ранних при передаче значения, отличного от None, в только что запущенный генератор. В 3.9 это не влияло на состояние генератора. В 3.10.0 и 3.10.1 `gen_func().send(0)` эквивалентно `gen_func().throw(TypeError(...)`, что исчерпывает генератор. Начиная с 3.10.2 поведение возвращено к версии 3.9.
- [bpo-46004](https://python-all.ru/3/whatsnew/changelog.html): Исправлено расположение [`SyntaxError`](https://python-all.ru/3/library/exceptions.html#SyntaxError) для ошибок, связанных с циклами for с недопустимыми целями. Исправление от Pablo Galindo
- [bpo-45711](https://python-all.ru/3/whatsnew/changelog.html): `_PyErr_ChainStackItem()` больше не нормализует `exc_info` (включая установку traceback на экземпляре исключения), поскольку `exc_info` всегда нормализован.
- [bpo-45607](https://python-all.ru/3/whatsnew/changelog.html): Поле `__note__` добавлено в [`BaseException`](https://python-all.ru/3/library/exceptions.html#BaseException). По умолчанию оно `None`, но может быть установлено в строку, которая добавляется к traceback исключения.
- [bpo-45947](https://python-all.ru/3/whatsnew/changelog.html): Размещение указателей на dict и values непосредственно перед заголовком GC. Это уменьшает количество зависимых загрузок из памяти для доступа к dict или values с 3 до 1.
- [bpo-45915](https://python-all.ru/3/whatsnew/changelog.html): `is_valid_fd` теперь использует более быстрый `fcntl(fd, F_GETFD)` на Linux, macOS и Windows.
- [bpo-44530](https://python-all.ru/3/whatsnew/changelog.html): Отменяет изменение `code.__new__` [события аудита](https://python-all.ru/3/library/audit_events.html#audit-events) из более ранней предварительной версии.
- [bpo-42268](https://python-all.ru/3/whatsnew/changelog.html): Ошибка на этапе configure, если выбранный компилятор не поддерживает memory sanitizer. Исправление от Pablo Galindo
- [bpo-45711](https://python-all.ru/3/whatsnew/changelog.html): Три значения `exc_info` теперь всегда согласованы друг с другом. В частности, поля `type` и `traceback` теперь берутся из экземпляра исключения. Это влияет на возвращаемые значения [`sys.exc_info()`](https://python-all.ru/3/library/sys.html#sys.exc_info) и [`PyErr_GetExcInfo()`](https://python-all.ru/3/c-api/exceptions.html#c.PyErr_GetExcInfo), если экземпляр исключения изменяется во время обработки исключения, а также на [`PyErr_SetExcInfo()`](https://python-all.ru/3/c-api/exceptions.html#c.PyErr_SetExcInfo), который теперь игнорирует переданные ему аргументы `type` и `traceback`.
- [bpo-45727](https://python-all.ru/3/whatsnew/changelog.html): Уточнено пользовательское сообщение об ошибке синтаксиса, которое предлагает возможную пропущенную запятую; теперь оно срабатывает только когда выражения обнаружены между круглыми или квадратными скобками. Исправление от Pablo Galindo
- [bpo-45885](https://python-all.ru/3/whatsnew/changelog.html): Специализирован код операции `COMPARE_OP` с использованием механизма PEP 659.
- [bpo-45786](https://python-all.ru/3/whatsnew/changelog.html): Выделение места для кадра интерпретатора внутри объекта фрейма, чтобы избежать дополнительного выделения памяти, когда объект фрейма переживает активацию фрейма.

### Библиотека

- [bpo-45614](https://python-all.ru/3/whatsnew/changelog.html): Исправлено отображение [`traceback`](https://python-all.ru/3/library/traceback.html#module-traceback) для исключений с недопустимым именем модуля.

### Ядро и встроенные модули

- [bpo-45813](https://python-all.ru/3/whatsnew/changelog.html): Исправлен сбой при вызове coro.cr\_frame.clear() после освобождения корутины.
- [bpo-45811](https://python-all.ru/3/whatsnew/changelog.html): Улучшены ошибки токенизатора при обнаружении невидимых управляющих символов в парсере. Исправление от Pablo Galindo
- [bpo-45848](https://python-all.ru/3/whatsnew/changelog.html): Разрешить парсеру получать строки ошибок непосредственно из закодированных файлов. Исправление от Pablo Galindo
- [bpo-45709](https://python-all.ru/3/whatsnew/changelog.html): Восстановлено поведение из версии 3.10 при трассировке исключения, возникшего внутри оператора with.
- [bpo-44525](https://python-all.ru/3/whatsnew/changelog.html): Добавлен новый код операции [`COPY_FREE_VARS`](https://python-all.ru/3/library/dis.html#opcode-COPY_FREE_VARS) для явного копирования свободных переменных из функции в фрейм. Помогает оптимизации вызовов функций Python.
- [bpo-45829](https://python-all.ru/3/whatsnew/changelog.html): Специализировать `BINARY_SUBSCR` для классов с методом `__getitem__`, реализованным на Python.
- [bpo-45826](https://python-all.ru/3/whatsnew/changelog.html): Исправлен сбой при вызове `.with_traceback(None)` для `NameError`. Это происходит внутри `unittest.TestCase.assertRaises()`.
- [bpo-45822](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка в парсере, из-за которой он не учитывал [**PEP 263**](https://python-all.ru/3/whatsnew/changelog.html) coding cookies, если не были указаны флаги. Исправление от Pablo Galindo
- [bpo-45820](https://python-all.ru/3/whatsnew/changelog.html): Исправлено segfault (ошибка сегментации) при сбое парсера без чтения каких-либо входных данных. Исправление от Pablo Galindo
- [bpo-45636](https://python-all.ru/3/whatsnew/changelog.html): Упрощена реализация [`BINARY_OP`](https://python-all.ru/3/library/dis.html#opcode-BINARY_OP) за счёт индексации массива указателей на функции (вместо выбора по oparg).
- [bpo-42540](https://python-all.ru/3/whatsnew/changelog.html): Исправлен краш при вызове [`os.fork()`](https://python-all.ru/3/library/os.html#os.fork) с активным нестандартным распределителем памяти.
- [bpo-45738](https://python-all.ru/3/whatsnew/changelog.html): Исправлено вычисление позиции ошибки для недопустимых символов продолжения в парсере. Патч от Pablo Galindo.
- [bpo-45636](https://python-all.ru/3/whatsnew/changelog.html): Удалён существующий «быстрый путь» для форматирования строк в старом стиле, поскольку он больше не оказывает измеримого влияния.
- [bpo-45753](https://python-all.ru/3/whatsnew/changelog.html): Повышена эффективность проверок рекурсии за счёт отслеживания количества вызовов, оставшихся до переполнения.
- [bpo-45773](https://python-all.ru/3/whatsnew/changelog.html): Исправлено зависание компилятора при попытке оптимизировать некоторые шаблоны переходов.
- [bpo-45764](https://python-all.ru/3/whatsnew/changelog.html): Теперь парсер выдаёт более понятное сообщение об ошибке при пропуске открывающей скобки `(` после оператора `def`:

  ```python
  >>> def f:
    File "<stdin>", line 1
      def f:
           ^
  SyntaxError: expected '('
  ```
- [bpo-45609](https://python-all.ru/3/whatsnew/changelog.html): Специализирован опкод `STORE_SUBSCR` с использованием механизма PEP 659.
- [bpo-45636](https://python-all.ru/3/whatsnew/changelog.html): Заменены все числовые инструкции `BINARY_*` и `INPLACE_*` одной реализацией [`BINARY_OP`](https://python-all.ru/3/library/dis.html#opcode-BINARY_OP).
- [bpo-45582](https://python-all.ru/3/whatsnew/changelog.html): Вычисление путей (известное как `getpath`) переписано в виде замороженного модуля Python. Это не должно иметь видимого влияния, но может повлиять на вычисление всех путей, используемых в [`sys`](https://python-all.ru/3/library/sys.html#module-sys) и [`sysconfig`](https://python-all.ru/3/library/sysconfig.html#module-sysconfig).
- [bpo-45450](https://python-all.ru/3/whatsnew/changelog.html): Улучшено сообщение об ошибке синтаксиса для аргументов в скобках. Патч от Pablo Galindo.

### Библиотека

- [bpo-27946](https://python-all.ru/3/whatsnew/changelog.html): Исправлен возможный краш при получении атрибута [`xml.etree.ElementTree.Element`](https://python-all.ru/3/library/xml.etree.elementtree.html#xml.etree.ElementTree.Element) одновременно с заменой словаря `attrib`.
- [bpo-45711](https://python-all.ru/3/whatsnew/changelog.html): Сделано так, что [`asyncio`](https://python-all.ru/3/library/asyncio.html#module-asyncio) нормализует исключения сразу после их перехвата с помощью [`PyErr_Fetch()`](https://python-all.ru/3/c-api/exceptions.html#c.PyErr_Fetch) и до сохранения в виде триплета exc\_info. Это приводит `asyncio` в соответствие с остальной кодовой базой, где триплет exc\_info всегда нормализован.
- [bpo-23819](https://python-all.ru/3/whatsnew/changelog.html): Заменены операторы assert на исключения в asyncio, патч от Kumar Aditya.
- [bpo-13236](https://python-all.ru/3/whatsnew/changelog.html): [`unittest.TextTestResult`](https://python-all.ru/3/library/unittest.html#unittest.TextTestResult) и [`unittest.TextTestRunner`](https://python-all.ru/3/library/unittest.html#unittest.TextTestRunner) теперь чаще сбрасывают выходной поток.
- [bpo-45917](https://python-all.ru/3/whatsnew/changelog.html): Добавлена [`math.exp2()`](https://python-all.ru/3/library/math.html#math.exp2):, которая возвращает 2 в степени x.
- [bpo-37658](https://python-all.ru/3/whatsnew/changelog.html): Исправлена проблема, когда при определённых условиях `asyncio.wait_for()` может позволить корутине успешно завершиться, но не вернуть результат, что потенциально может привести к утечкам памяти или другим проблемам.
- [bpo-45876](https://python-all.ru/3/whatsnew/changelog.html): Повышена точность stdev() и pstdev() в модуле statistics. Если входные данные – числа с плавающей запятой или дроби, результат представляет собой правильно округлённое число с плавающей запятой.
- [bpo-44649](https://python-all.ru/3/whatsnew/changelog.html): Обработка dataclass(slots=True) с полем, имеющим значение по умолчанию, но для которого init=False.
- [bpo-45803](https://python-all.ru/3/whatsnew/changelog.html): Добавлен отсутствовавший параметр kw\_only в dataclasses.make\_dataclass().
- [bpo-45837](https://python-all.ru/3/whatsnew/changelog.html): `turtle.RawTurtle.settiltangle()` устарело начиная с Python 3.1, теперь выдаётся предупреждение об устаревании, и оно будет удалено в Python 3.13.

  Вместо этого используйте `turtle.RawTurtle.tiltangle()`.

  Ранее `turtle.RawTurtle.tiltangle()` был ошибочно помечен как устаревший, его docstring исправлен.

  Патч от Hugo van Kemenade.
- [bpo-45831](https://python-all.ru/3/whatsnew/changelog.html): [`faulthandler`](https://python-all.ru/3/library/faulthandler.html#module-faulthandler) теперь может записывать строки, содержащие только ASCII (например, имена файлов и функций), одним системным вызовом write() при дампе traceback. Это снижает риск получения нечитаемого дампа, когда два потока или два процесса одновременно сбрасывают traceback в один и тот же файл (например, stderr). Патч от Victor Stinner.
- [bpo-45828](https://python-all.ru/3/whatsnew/changelog.html): `sqlite` C-колбэки теперь используют неподнимаемые исключения, если включена трассировка колбэков. Патч от Erlend E. Aasland.
- [bpo-41735](https://python-all.ru/3/whatsnew/changelog.html): Исправлена блокировка потока в методе `zlib.Decompress.flush()` перед `PyObject_GetBuffer`.
- [bpo-45235](https://python-all.ru/3/whatsnew/changelog.html): Отменено исправление ошибки в argparse, вызвавшее регрессию в обработке аргументов по умолчанию для подпарсеров. Это не позволяло аргументам нижнего уровня иметь приоритет над аргументами корневого уровня.
- [bpo-45754](https://python-all.ru/3/whatsnew/changelog.html): Исправлена регрессия в Python 3.11a1 и 3.11a2, когда [`sqlite3`](https://python-all.ru/3/library/sqlite3.html#module-sqlite3) ошибочно использовал `SQLITE_LIMIT_LENGTH` при проверке длины SQL-запросов. Теперь используется `SQLITE_LIMIT_SQL_LENGTH`. Патч от Erlend E. Aasland.
- [bpo-45766](https://python-all.ru/3/whatsnew/changelog.html): Добавлена опция *пропорциональный* в [`statistics.linear_regression()`](https://python-all.ru/3/library/statistics.html#statistics.linear_regression).
- [bpo-45765](https://python-all.ru/3/whatsnew/changelog.html): В importlib.metadata исправлено обнаружение дистрибутивов для пустого пути.
- [bpo-45757](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка, из-за которой [`dis`](https://python-all.ru/3/library/dis.html#module-dis) генерировал неверный oparg, если за [`EXTENDED_ARG`](https://python-all.ru/3/library/dis.html#opcode-EXTENDED_ARG) следовал опкод, не использующий свой аргумент.
- [bpo-45644](https://python-all.ru/3/whatsnew/changelog.html): Форматирование JSON-файла «на месте» с помощью `python3 -m json.tool infile infile` теперь работает корректно; ранее файл оставался пустым. Патч от Криса Весселинга.
- [bpo-45703](https://python-all.ru/3/whatsnew/changelog.html): Если пакет пространства имён импортируется до того, как другой модуль из того же пространства имён будет создан/установлен в другом расположении [`sys.path`](https://python-all.ru/3/library/sys.html#sys.path) во время работы программы, вызов функции [`importlib.invalidate_caches()`](https://python-all.ru/3/library/importlib.html#importlib.invalidate_caches) теперь гарантированно обнаружит новый модуль.
- [bpo-45535](https://python-all.ru/3/whatsnew/changelog.html): Улучшен вывод `dir()` для перечислений.
- [bpo-45664](https://python-all.ru/3/whatsnew/changelog.html): Исправлены [`types.resolve_bases()`](https://python-all.ru/3/library/types.html#types.resolve_bases) и [`types.new_class()`](https://python-all.ru/3/library/types.html#types.new_class) для экземпляра [`types.GenericAlias`](https://python-all.ru/3/library/types.html#types.GenericAlias) в качестве базового класса.
- [bpo-45663](https://python-all.ru/3/whatsnew/changelog.html): Исправлен [`dataclasses.is_dataclass()`](https://python-all.ru/3/library/dataclasses.html#dataclasses.is_dataclass) для классов данных (dataclasses), являющихся подклассами [`types.GenericAlias`](https://python-all.ru/3/library/types.html#types.GenericAlias).
- [bpo-45662](https://python-all.ru/3/whatsnew/changelog.html): Исправлено представление [`dataclasses.InitVar`](https://python-all.ru/3/library/dataclasses.html#dataclasses.InitVar) с псевдонимом типа для встроенного класса, например `InitVar[list[int]]`.
- [bpo-43137](https://python-all.ru/3/whatsnew/changelog.html): Запуск веб-браузеров GNOME через утилиту gio вместо устаревшей gvfs-open.
- [bpo-45429](https://python-all.ru/3/whatsnew/changelog.html): В Windows [`time.sleep()`](https://python-all.ru/3/library/time.html#time.sleep) теперь использует ожидающий таймер (waitable timer), поддерживающий высокое разрешение. Патч от Донхи На и Эрика Сана.
- [bpo-37295](https://python-all.ru/3/whatsnew/changelog.html): Оптимизированы [`math.comb()`](https://python-all.ru/3/library/math.html#math.comb) и [`math.perm()`](https://python-all.ru/3/library/math.html#math.perm).
- [bpo-45514](https://python-all.ru/3/whatsnew/changelog.html): Объявлены устаревшими устаревшие функции в [`importlib.resources`](https://python-all.ru/3/library/importlib.resources.html#module-importlib.resources).
- [bpo-45507](https://python-all.ru/3/whatsnew/changelog.html): Добавлены тесты для усечённых/отсутствующих трейлеров в реализации gzip.decompress.
- [bpo-45359](https://python-all.ru/3/whatsnew/changelog.html): Реализована [**PEP 585**](https://python-all.ru/3/whatsnew/changelog.html) для [`graphlib.TopologicalSorter`](https://python-all.ru/3/library/graphlib.html#graphlib.TopologicalSorter).
- [bpo-44733](https://python-all.ru/3/whatsnew/changelog.html): Добавлен `max_tasks_per_child` в [`concurrent.futures.ProcessPoolExecutor`](https://python-all.ru/3/library/concurrent.futures.html#concurrent.futures.ProcessPoolExecutor). Это позволяет пользователям указывать максимальное количество задач, которое должен выполнить один процесс до того, как потребуется его перезапуск.
- [bpo-28806](https://python-all.ru/3/whatsnew/changelog.html): Улучшена библиотека netrc. Файл netrc больше не обязан содержать все токены. Также, если имя входа анонимное, проверка безопасности больше не требуется.
- [bpo-43498](https://python-all.ru/3/whatsnew/changelog.html): Предотвращена возможная ошибка *«RuntimeError: dictionary changed size during iteration»* при настройке числа процессов в `ProcessPoolExecutor`.
- [bpo-42158](https://python-all.ru/3/whatsnew/changelog.html): Добавлены MIME-типы для N-quads, N-triples, Notation3 и TriG в `mimetypes`.
- [bpo-30533](https://python-all.ru/3/whatsnew/changelog.html): Добавлен [`inspect.getmembers_static()`](https://python-all.ru/3/library/inspect.html#inspect.getmembers_static) – он возвращает все члены, не вызывая динамический поиск через протокол дескрипторов. Патч от Вейпенга Хонга.

### Документация

- [bpo-42238](https://python-all.ru/3/whatsnew/changelog.html): `make -C Doc suspicious` будет вскоре удалён в пользу `make -C Doc check`; помечен как устаревший.
- [bpo-45840](https://python-all.ru/3/whatsnew/changelog.html): Улучшены перекрёстные ссылки в документации по модели данных.
- [bpo-45640](https://python-all.ru/3/whatsnew/changelog.html): Правильно оформленные токены грамматики в документации теперь можно нажимать; они ведут к определению соответствующего элемента грамматики. Патч от Артура Мильхора.
- [bpo-45788](https://python-all.ru/3/whatsnew/changelog.html): Добавлена ссылка в документации sys.prefix на документацию sysconfig по путям установки.
- [bpo-45772](https://python-all.ru/3/whatsnew/changelog.html): Документация `socket.socket` исправлена: теперь это класс, а не функция.
- [bpo-45392](https://python-all.ru/3/whatsnew/changelog.html): Обновлена строка документации встроенной функции [`type`](https://python-all.ru/3/library/functions.html#type): удалена избыточная строка и упомянуты аргументы-ключевые слова для конструктора.
- [bpo-45250](https://python-all.ru/3/whatsnew/changelog.html): Документация обновлена: указано, что CPython не всегда требует от итераторов определения `__iter__`.
- [bpo-25381](https://python-all.ru/3/whatsnew/changelog.html): В главе «Расширение» документации по расширению обновлён абзац о глобальных переменных, содержащих информацию об исключениях.
- [bpo-43905](https://python-all.ru/3/whatsnew/changelog.html): Расширена документация [`astuple()`](https://python-all.ru/3/library/dataclasses.html#dataclasses.astuple) и [`asdict()`](https://python-all.ru/3/library/dataclasses.html#dataclasses.asdict): добавлено предупреждение о применении deepcopy и приведён способ обхода.

### Тесты

- [bpo-45695](https://python-all.ru/3/whatsnew/changelog.html): Сборки вне дерева исходников с каталогом исходного кода, доступным только для чтения, теперь тестируются CI.
- [bpo-19460](https://python-all.ru/3/whatsnew/changelog.html): Добавлен новый тест для `Lib/email/mime/nonmultipart.py::MIMENonMultipart`.
- [bpo-45835](https://python-all.ru/3/whatsnew/changelog.html): Исправлено состояние гонки в тестах test\_queue с несколькими потоками-«кормильцами» (feeder).
- [bpo-45783](https://python-all.ru/3/whatsnew/changelog.html): Тест для инструмента freeze теперь обрабатывает перемещение и удаление файлов.
- [bpo-45745](https://python-all.ru/3/whatsnew/changelog.html): Удалена опция командной строки `--findleaks` утилиты regrtest: используйте вместо неё опцию `--fail-env-changed`. Начиная с Python 3.7 она была устаревшим псевдонимом опции `--fail-env-changed`.
- [bpo-45701](https://python-all.ru/3/whatsnew/changelog.html): Добавлены тесты с типом `tuple` с [`functools.lru_cache()`](https://python-all.ru/3/library/functools.html#functools.lru_cache) для `test_functools`.

### Сборка

- [bpo-44035](https://python-all.ru/3/whatsnew/changelog.html): CI теперь проверяет, что файлы autoconf были перегенерированы с текущим и непатченным пакетом autoconf.
- [bpo-45950](https://python-all.ru/3/whatsnew/changelog.html): Система сборки снова использует интерпретатор **\_bootstrap\_python** для заморозки и глубокой заморозки. Для ускорения процесса сборки инструменты сборки **\_bootstrap\_python** и **\_freeze\_module** больше не собираются с LTO.
- [bpo-45881](https://python-all.ru/3/whatsnew/changelog.html): Скрипт **configure** теперь принимает опции `--with-build-python` и `--with-freeze-module` для упрощения кросскомпиляции.
- [bpo-40280](https://python-all.ru/3/whatsnew/changelog.html): Платформа Emscripten теперь по умолчанию использует суффикс `.wasm`.
- [bpo-40280](https://python-all.ru/3/whatsnew/changelog.html): Отключены непригодные для использования основные модули расширения на целях WASM/Emscripten.
- [bpo-40280](https://python-all.ru/3/whatsnew/changelog.html): `configure` теперь проверяет наличие функции сокета `shutdown`. Эта проверка позволяет отключить `SYS_shutdown` с `ac_cv_func_shutdown=no` в CONFIG\_SITE.
- [bpo-40280](https://python-all.ru/3/whatsnew/changelog.html): `configure` теперь проверяет наличие функций `fork1, getegid, geteuid, getgid, getppid, getuid, opendir, pipe, system, wait, ttyname`.
- [bpo-33393](https://python-all.ru/3/whatsnew/changelog.html): Обновление `config.guess` до 2021-06-03 и `config.sub` до 2021-08-14. `Makefile` теперь содержит цель `update-config` для более удобного обновления.
- [bpo-45866](https://python-all.ru/3/whatsnew/changelog.html): `make regen-all` теперь выдаёт одинаковый результат при запуске из каталога, отличного от дерева исходников: при сборке Python вне дерева исходников. pegen теперь удаляет каталог из заголовка «generated by pygen from \<FILENAME\>». Патч от Виктора Стиннера.
- [bpo-40280](https://python-all.ru/3/whatsnew/changelog.html): `configure` теперь принимает машину `wasm32` или `wasm64` и ОС `wasi` или `emscripten` для кросскомпиляции, например, `wasm32-unknown-emscripten`, `wasm32-wasi` или `wasm32-unknown-wasi`.
- [bpo-41498](https://python-all.ru/3/whatsnew/changelog.html): Python теперь компилируется на платформах без `sigset_t`. Некоторые функции в [`signal`](https://python-all.ru/3/library/signal.html#module-signal) недоступны при отсутствии `sigset_t`.

  На основе патча от Roman Yurchak для pyodide.
- [bpo-45881](https://python-all.ru/3/whatsnew/changelog.html): `setup.py` теперь сначала использует `CC` из окружения для поиска путей multiarch и кросскомпиляции.
- [bpo-45886](https://python-all.ru/3/whatsnew/changelog.html): Путь к программе `_freeze_module` теперь можно переопределить в командной строке, например, `make FREEZE_MODULE=../x86_64/Program/_freeze_module`.
- [bpo-45873](https://python-all.ru/3/whatsnew/changelog.html): Избавились от этапа сборки `_bootstrap_python`. Скрипт deepfreeze.py теперь запускается с помощью `$(PYTHON_FOR_REGEN)`, который может быть Python 3.7 или новее (на Windows – 3.8 или новее).
- [bpo-45847](https://python-all.ru/3/whatsnew/changelog.html): Перенос встроенных расширений hashlib на макрос `PY_STDLIB_MOD` и `addext()`.
- [bpo-45723](https://python-all.ru/3/whatsnew/changelog.html): Добавлены вспомогательные функции `autoconf` для сохранения и восстановления переменных окружения:

  - `SAVE_ENV`: Сохраняет `$CFLAGS`, `$LDFLAGS`, `$LIBS` и `$CPPFLAGS`.
  - `RESTORE_ENV`: Восстанавливает `$CFLAGS`, `$LDFLAGS`, `$LIBS` и `$CPPFLAGS`.
  - `WITH_SAVE_ENV([SCRIPT])`: Запускает `SCRIPT`, обёрнутый с помощью `SAVE_ENV` и `RESTORE_ENV`.

  Патч от Erlend E. Aasland.
- [bpo-45573](https://python-all.ru/3/whatsnew/changelog.html): Обязательные основные модули, необходимые для начальной загрузки Python, теперь находятся в `Modules/Setup.bootstrap`.
- [bpo-45573](https://python-all.ru/3/whatsnew/changelog.html): `configure` теперь создаёт `Modules/Setup.stdlib` со строками модулей расширения, условно включёнными/отключёнными. Файл пока не используется.
- [bpo-45573](https://python-all.ru/3/whatsnew/changelog.html): `configure` теперь использует единый формат для установки состояния, флагов компилятора и флагов компоновщика в Makefile. Новый макрос `PY_STDLIB_MOD` устанавливает три переменные, которые используются `Modules/Setup` и `setup.py`.
- [bpo-45816](https://python-all.ru/3/whatsnew/changelog.html): Python теперь поддерживает сборку с Visual Studio 2022 (MSVC v143, версия VS 17.0). Патч от Jeremiah Vivian.
- [bpo-45800](https://python-all.ru/3/whatsnew/changelog.html): Настройки для расширения C `pyexpat` теперь определяются `configure`. Встроенная библиотека `expat` собирается в `Makefile`.
- [bpo-45798](https://python-all.ru/3/whatsnew/changelog.html): Настройки для внутреннего расширения C [`decimal`](https://python-all.ru/3/library/decimal.html#module-decimal) теперь определяются `configure`. Встроенная библиотека `libmpdec` собирается в `Makefile`.
- [bpo-45723](https://python-all.ru/3/whatsnew/changelog.html): **configure** имеет новую опцию `--with-pkg-config` для отключения или требования pkg-config.
- [bpo-45774](https://python-all.ru/3/whatsnew/changelog.html): Зависимости сборки для [`sqlite3`](https://python-all.ru/3/library/sqlite3.html#module-sqlite3) теперь определяются с помощью `configure` и `pkg-config`. Патч от Erlend E. Aasland.
- [bpo-45763](https://python-all.ru/3/whatsnew/changelog.html): Зависимости сборки для [`zlib`](https://python-all.ru/3/library/zlib.html#module-zlib), [`bz2`](https://python-all.ru/3/library/bz2.html#module-bz2) и [`lzma`](https://python-all.ru/3/library/lzma.html#module-lzma) теперь определяются с помощью `configure`.
- [bpo-45747](https://python-all.ru/3/whatsnew/changelog.html): Зависимости сборки gdbm и dbm теперь определяются с помощью `configure`.
- [bpo-45743](https://python-all.ru/3/whatsnew/changelog.html): В macOS система сборки больше не передаёт `search_paths_first` компоновщику. Этот флаг используется по умолчанию, начиная с Xcode 4 / macOS 10.6.
- [bpo-45723](https://python-all.ru/3/whatsnew/changelog.html): `configure.ac` теперь совместим с autoconf 2.71. Устаревшие проверки `STDC_HEADERS` и `AC_HEADER_TIME` были удалены.
- [bpo-45723](https://python-all.ru/3/whatsnew/changelog.html): `configure` теперь выводит предупреждение, если pkg-config отсутствует.
- [bpo-45731](https://python-all.ru/3/whatsnew/changelog.html): `configure --enable-loadable-sqlite-extensions` теперь обрабатывается новым макросом `PY_SQLITE_ENABLE_LOAD_EXTENSION` вместо логики в setup.py.
- [bpo-45723](https://python-all.ru/3/whatsnew/changelog.html): configure.ac теперь использует пользовательские вспомогательные макросы и `AC_CACHE_CHECK` для упрощения и ускорения выполнения configure.
- [bpo-45696](https://python-all.ru/3/whatsnew/changelog.html): Пропустить этап маршалинга для замороженных модулей, генерируя код C, который создаёт набор готовых к использованию объектов кода. Это ускоряет время запуска ещё на 10% и более.
- [bpo-45561](https://python-all.ru/3/whatsnew/changelog.html): Запускать утилиту smelly.py из $(srcdir).

### Windows

- [bpo-46105](https://python-all.ru/3/whatsnew/changelog.html): Исправлено вычисление [`sys.path`](https://python-all.ru/3/library/sys.html#sys.path) в виртуальном окружении на Windows.
- [bpo-45901](https://python-all.ru/3/whatsnew/changelog.html): При установке через Microsoft Store и назначении приложением по умолчанию для файлов `*.py`, аргументы командной строки теперь будут передаваться Python при вызове сценария без явного запуска Python (то есть `script.py args`, а не `python script.py args`).
- [bpo-45616](https://python-all.ru/3/whatsnew/changelog.html): Исправлена способность Python Launcher различать версии 3.1 и 3.10, когда явно запрашивается одна из них. Ранее 3.1 использовалась, если была запрошена 3.10, но не установлена, а 3.10 использовалась, если была запрошена 3.1, но установлена 3.10.
- [bpo-45850](https://python-all.ru/3/whatsnew/changelog.html): Реализованы изменения для сборки с глубоко замороженными модулями в Windows. Обратите внимание, что теперь требуется Python 3.10 в качестве «загрузочного» или «хост» Python.
- [bpo-45732](https://python-all.ru/3/whatsnew/changelog.html): Обновление встроенного Tcl/Tk до 8.6.12.
- [bpo-45720](https://python-all.ru/3/whatsnew/changelog.html): Внутренняя ссылка на `shlwapi.dll` была удалена, чтобы улучшить время запуска. Эта DLL больше не будет загружаться при запуске каждого процесса Python.

### macOS

- [bpo-45732](https://python-all.ru/3/whatsnew/changelog.html): Обновление установщика macOS с python.org для использования Tcl/Tk 8.6.12.

### C API

- [bpo-39026](https://python-all.ru/3/whatsnew/changelog.html): Исправление Python.h для сборки расширений C с Xcode: удалён относительный include из `Include/cpython/pystate.h`.

## Python 3.11.0 alpha 2

*Дата выпуска: 2021-11-05*

### Ядро и встроенные модули

- [bpo-45716](https://python-all.ru/3/whatsnew/changelog.html): Улучшено сообщение [`SyntaxError`](https://python-all.ru/3/library/exceptions.html#SyntaxError) при использовании `True`, `None` или `False` в качестве ключевых слов в вызове функции. Патч от Pablo Galindo.
- [bpo-45688](https://python-all.ru/3/whatsnew/changelog.html): [`sys.stdlib_module_names`](https://python-all.ru/3/library/sys.html#sys.stdlib_module_names) теперь содержит специфичный для macOS модуль `_scproxy`.
- [bpo-45379](https://python-all.ru/3/whatsnew/changelog.html): Уточнено сообщение [`ImportError`](https://python-all.ru/3/library/exceptions.html#ImportError) при попытке явно импортировать замороженный модуль, но замороженные модули отключены.
- [bpo-44525](https://python-all.ru/3/whatsnew/changelog.html): Специализация простых вызовов функций Python (без starargs, keyword dict или замыкания)
- [bpo-45530](https://python-all.ru/3/whatsnew/changelog.html): Случаи сортировки с использованием кортежей в качестве ключей теперь могут быть значительно быстрее в некоторых ситуациях. Патч от Tim Peters.

  Порядок результата может отличаться от предыдущих версий, если элементы кортежа не определяют полный порядок (см. [Сравнение значений](https://python-all.ru/3/reference/expressions.html#expressions-value-comparisons) для информации о полном порядке). В общем случае результат сортировки просто не является корректно определённым при отсутствии полного порядка на элементах списка.
- [bpo-45526](https://python-all.ru/3/whatsnew/changelog.html): В obmalloc установлено ADDRESS\_BITS так, чтобы не игнорировать ни одного бита (ранее игнорировалось 16). Это безопаснее в случае, если ядро предоставляет пользовательскому пространству виртуальные адреса, охватывающие диапазон более 48 бит.
- [bpo-30570](https://python-all.ru/3/whatsnew/changelog.html): Исправлено падение в `issubclass()` из-за бесконечной рекурсии при поиске патологических кортежей `__bases__`.
- [bpo-45521](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка в коде дерева с радиксной адресацией obmalloc. На 64-битных машинах ошибка приводила к тому, что дерево хранило 46 бит виртуальных адресов вместо запланированных 48.
- [bpo-45494](https://python-all.ru/3/whatsnew/changelog.html): Исправлено падение парсера при выводе сообщений об ошибках, связанных с недопустимыми символами продолжения строк. Патч от Pablo Galindo.
- [bpo-45445](https://python-all.ru/3/whatsnew/changelog.html): Python теперь не запускается, если в командной строке обнаружен недопустимый параметр [`-X`](https://python-all.ru/3/using/cmdline.html#cmdoption-X). Патч от Pablo Galindo.
- [bpo-45340](https://python-all.ru/3/whatsnew/changelog.html): Атрибуты объектов теперь хранятся в массиве, а не в словаре. Словарь объекта создаётся лениво, только когда он нужен. Это снижает потребление памяти типичного объекта Python примерно на 30%. Патч от Mark Shannon.
- [bpo-45408](https://python-all.ru/3/whatsnew/changelog.html): Исправлено падение парсера при сообщении об ошибках токенизации, когда одновременно обнаружены незакрытые скобки. Патч от Pablo Galindo.
- [bpo-29410](https://python-all.ru/3/whatsnew/changelog.html): Добавлен хеш-алгоритм SipHash13 для строк, который используется по умолчанию.
- [bpo-45385](https://python-all.ru/3/whatsnew/changelog.html): Исправлена утечка ссылок из descr\_check. Патч от Donghee Na.
- [bpo-45367](https://python-all.ru/3/whatsnew/changelog.html): Specialized the `BINARY_MULTIPLY` opcode to `BINARY_MULTIPLY_INT` and `BINARY_MULTIPLY_FLOAT` using the PEP 659 machinery.
- [bpo-21736](https://python-all.ru/3/whatsnew/changelog.html): Замороженные модули стандартной библиотеки теперь имеют `__file__` к файлу .py, из которого они в противном случае были бы загружены, если это возможно. Для пакетов `__path__` теперь содержит правильную запись вместо пустого списка, что позволяет импортировать незамороженные подмодули. Эти атрибуты устанавливаются только в том случае, если каталог стандартной библиотеки известен на момент инициализации рантайма. Обратите внимание, что файл по `__file__` может не существовать. Никак не влияет на незамёрзшие модули вне стандартной библиотеки и, пока, на замороженные модули, импортируемые через `PyImport_ImportFrozenModule()`. Также на данный момент `co_filename` не обновляется для модуля.
- [bpo-45020](https://python-all.ru/3/whatsnew/changelog.html): Для замороженных модулей стандартной библиотеки теперь записывается исходное имя модуля как `module.__spec__.loader_state.origname`. Если значение отличается от `module.__spec__.name`, значит модуль был определён как псевдоним в Tools/scripts/freeze\_modules.py. Если это `None`, модуль получен из исходного файла вне стандартной библиотеки.
- [bpo-45324](https://python-all.ru/3/whatsnew/changelog.html): Теперь в FrozenImporter.find\_spec() сохраняется информация, необходимая exec\_module() для загрузки модуля. Это изменение в основном затрагивает внутренние детали, а не меняет поведение импортёра.
- [bpo-45292](https://python-all.ru/3/whatsnew/changelog.html): Реализован [**PEP 654**](https://python-all.ru/3/whatsnew/changelog.html). Добавлены [`ExceptionGroup`](https://python-all.ru/3/library/exceptions.html#ExceptionGroup) и [`BaseExceptionGroup`](https://python-all.ru/3/library/exceptions.html#BaseExceptionGroup). Обновлён код отображения трассировки.
- [bpo-40116](https://python-all.ru/3/whatsnew/changelog.html): Изменена реализация разделяемых словарей (split dictionaries). Классы, экземпляры которых отличаются либо точным набором атрибутов, либо порядком установки этих атрибутов, всё ещё могут разделять ключи. Это не должно заметно повлиять на пользователей Python или C-API. Патч от Mark Shannon.
- [bpo-44050](https://python-all.ru/3/whatsnew/changelog.html): Расширения, которые указывают, что используют глобальное состояние (устанавливая `m_size` в -1), снова могут использоваться в нескольких интерпретаторах. Это возвращает поведение Python 3.8.
- [bpo-44525](https://python-all.ru/3/whatsnew/changelog.html): Создана начальная инфраструктура специализации для опкода `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](https://python-all.ru/3/whatsnew/changelog.html): Улучшен генерируемый байт-код для шаблонов классов и отображений (mapping patterns).
- [bpo-43706](https://python-all.ru/3/whatsnew/changelog.html): Ускорены вызовы `enumerate()` за счёт использования соглашения о вызовах [**PEP 590**](https://python-all.ru/3/whatsnew/changelog.html) `vectorcall`. Патч от Donghee Na.

### Библиотека

- [bpo-45679](https://python-all.ru/3/whatsnew/changelog.html): Исправлено кэширование многозначных [`typing.Literal`](https://python-all.ru/3/library/typing.html#typing.Literal). `Literal[True, 2]` больше не равно `Literal[1, 2]`.
- [bpo-42064](https://python-all.ru/3/whatsnew/changelog.html): Convert [`sqlite3`](https://python-all.ru/3/library/sqlite3.html#module-sqlite3) to multi-phase initialisation (PEP 489). Patches by Erlend E. Aasland.
- [bpo-45438](https://python-all.ru/3/whatsnew/changelog.html): Исправлено строковое представление typing.Signature для встроенных обобщённых типов.
- [bpo-45613](https://python-all.ru/3/whatsnew/changelog.html): [`sqlite3`](https://python-all.ru/3/library/sqlite3.html#module-sqlite3) теперь устанавливает [`sqlite3.threadsafety`](https://python-all.ru/3/library/sqlite3.html#sqlite3.threadsafety) в зависимости от режима работы с потоками, с которым скомпилирована библиотека SQLite по умолчанию. Патч от Erlend E. Aasland.
- [bpo-45574](https://python-all.ru/3/whatsnew/changelog.html): Исправлено предупреждение о неиспользуемом `print_escape`.
- [bpo-45581](https://python-all.ru/3/whatsnew/changelog.html): [`sqlite3.connect()`](https://python-all.ru/3/library/sqlite3.html#sqlite3.connect) теперь корректно возбуждает [`MemoryError`](https://python-all.ru/3/library/exceptions.html#MemoryError), если базовый SQLite API сигнализирует об ошибке памяти. Патч от Erlend E. Aasland.
- [bpo-45557](https://python-all.ru/3/whatsnew/changelog.html): [`pprint.pprint()`](https://python-all.ru/3/library/pprint.html#pprint.pprint) теперь правильно обрабатывает *underscore\_numbers*. Раньше он всегда устанавливал его в `False`.
- [bpo-44019](https://python-all.ru/3/whatsnew/changelog.html): Добавлен [`operator.call()`](https://python-all.ru/3/library/operator.html#operator.call) в `operator.__all__`. Патч от Kreusada.
- [bpo-42174](https://python-all.ru/3/whatsnew/changelog.html): [`shutil.get_terminal_size()`](https://python-all.ru/3/library/shutil.html#shutil.get_terminal_size) теперь возвращается к разумным значениям, если количество столбцов или строк равно 0.
- [bpo-35673](https://python-all.ru/3/whatsnew/changelog.html): Улучшена интроспекция атрибута `__loader__` для пакетов пространства имён (namespace packages). [`importlib.machinery.NamespaceLoader`](https://python-all.ru/3/library/importlib.html#importlib.machinery.NamespaceLoader) теперь публичен и реализует интерфейс [`importlib.abc.InspectLoader`](https://python-all.ru/3/library/importlib.html#importlib.abc.InspectLoader). `_NamespaceLoader` оставлен для обратной совместимости.
- [bpo-45515](https://python-all.ru/3/whatsnew/changelog.html): Добавлены ссылки на [`zoneinfo`](https://python-all.ru/3/library/zoneinfo.html#module-zoneinfo) в документации [`datetime`](https://python-all.ru/3/library/datetime.html#module-datetime), в основном заменяющие устаревшие ссылки на `dateutil.tz`. Изменение от Paul Ganssle.
- [bpo-45475](https://python-all.ru/3/whatsnew/changelog.html): Отменена оптимизация итерации по [`gzip.GzipFile`](https://python-all.ru/3/library/gzip.html#gzip.GzipFile), [`bz2.BZ2File`](https://python-all.ru/3/library/bz2.html#bz2.BZ2File) и [`lzma.LZMAFile`](https://python-all.ru/3/library/lzma.html#lzma.LZMAFile) (см. [bpo-43787](https://python-all.ru/3/whatsnew/changelog.html)), так как это вызывало регрессию, когда пользователи итерировали по ним без сохранения ссылки. Патч от Inada Naoki.
- [bpo-45489](https://python-all.ru/3/whatsnew/changelog.html): Обновление [`ForwardRef`](https://python-all.ru/3/library/typing.html#typing.ForwardRef) для поддержки оператора `|`. Патч от Donghee Na.
- [bpo-42222](https://python-all.ru/3/whatsnew/changelog.html): Удалена устаревшая поддержка аргументов float в *randrange()*.
- [bpo-45428](https://python-all.ru/3/whatsnew/changelog.html): Исправление регрессии в py\_compile при чтении имен файлов из стандартного ввода.
- [bpo-45467](https://python-all.ru/3/whatsnew/changelog.html): Исправление инкрементального декодера и потокового считывателя в кодировке “raw-unicode-escape”. Ранее они давали сбой, если escape-последовательность была разбита.
- [bpo-45461](https://python-all.ru/3/whatsnew/changelog.html): Исправление инкрементального декодера и потокового считывателя в кодировке “unicode-escape”. Ранее они давали сбой, если escape-последовательность была разбита.
- [bpo-45239](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка [`email.utils.parsedate_tz()`](https://python-all.ru/3/library/email.utils.html#email.utils.parsedate_tz), приводившая к краху с [`UnboundLocalError`](https://python-all.ru/3/library/exceptions.html#UnboundLocalError) при определенном некорректном вводе вместо возврата `None`. Патч от Ben Hoyt.
- [bpo-45417](https://python-all.ru/3/whatsnew/changelog.html): Исправление квадратичного поведения в модуле enum: создание классов перечислений с большим количеством записей было квадратичным.
- [bpo-45249](https://python-all.ru/3/whatsnew/changelog.html): Исправление поведения [`traceback.print_exc()`](https://python-all.ru/3/library/traceback.html#traceback.print_exc) при отображении каретки, когда `end_offset` в исключении установлен в 0. Патч от Pablo Galindo
- [bpo-45416](https://python-all.ru/3/whatsnew/changelog.html): Исправление использования [`asyncio.Condition`](https://python-all.ru/3/library/asyncio-sync.html#asyncio.Condition) с явными объектами [`asyncio.Lock`](https://python-all.ru/3/library/asyncio-sync.html#asyncio.Lock), что было регрессией из-за удаления явных аргументов цикла событий. Патч от Joongi Kim.
- [bpo-20028](https://python-all.ru/3/whatsnew/changelog.html): Пустые escapechar/quotechar не допускаются при инициализации [`csv.Dialect`](https://python-all.ru/3/library/csv.html#csv.Dialect). Патч от Vajrasky Kok и Donghee Na.
- [bpo-44904](https://python-all.ru/3/whatsnew/changelog.html): Исправление ошибки в модуле [`doctest`](https://python-all.ru/3/library/doctest.html#module-doctest), из-за которой он выдавал ошибку, если docstring содержал пример с `classmethod` `property`. Патч от Alex Waygood.
- [bpo-45406](https://python-all.ru/3/whatsnew/changelog.html): Сделать так, чтобы [`inspect.getmodule()`](https://python-all.ru/3/library/inspect.html#inspect.getmodule) перехватывал `FileNotFoundError`, возбуждаемое `inspect.getabsfile()`, и возвращал `None`, чтобы указать, что модуль не удалось определить.
- [bpo-45411](https://python-all.ru/3/whatsnew/changelog.html): Добавление расширений для файлов, содержащих субтитры - .srt и .vtt - в модуль mimetypes.py.
- [bpo-10716](https://python-all.ru/3/whatsnew/changelog.html): Миграция pydoc на HTML5 (без изменения внешнего вида). Побочный эффект – обновление `ServerHTMLDoc` xmlrpc, который теперь тоже использует CSS. cgitb теперь меньше зависит от pydoc (так как не может использовать CSS-файл).
- [bpo-27580](https://python-all.ru/3/whatsnew/changelog.html): Добавление поддержки нулевых символов в [`csv`](https://python-all.ru/3/library/csv.html#module-csv).
- [bpo-45262](https://python-all.ru/3/whatsnew/changelog.html): Предотвращение use-after-free в asyncio. Убедиться, что кэшированный владелец текущего цикла событий очищается при освобождении, чтобы предотвратить use-after-free в get\_running\_loop
- [bpo-45386](https://python-all.ru/3/whatsnew/changelog.html): Сделать [`xmlrpc.client`](https://python-all.ru/3/library/xmlrpc.client.html#module-xmlrpc.client) более устойчивым к средам выполнения C, где лежащая в основе функция C `strftime` приводит к `ValueError` при тестировании опций форматирования года.
- [bpo-20028](https://python-all.ru/3/whatsnew/changelog.html): Улучшение сообщения об ошибке [`csv.Dialect`](https://python-all.ru/3/library/csv.html#csv.Dialect) при инициализации. Патч от Vajrasky Kok и Donghee Na.
- [bpo-45343](https://python-all.ru/3/whatsnew/changelog.html): Обновление встроенных pip до версии 21.2.4 и setuptools до 58.1.0
- [bpo-45328](https://python-all.ru/3/whatsnew/changelog.html): Исправлена [`http.client.HTTPConnection`](https://python-all.ru/3/library/http.client.html#http.client.HTTPConnection) для корректной работы в ОС, которые не поддерживают опцию сокета `TCP_NODELAY`.
- [bpo-45243](https://python-all.ru/3/whatsnew/changelog.html): Добавление [`setlimit()`](https://python-all.ru/3/library/sqlite3.html#sqlite3.Connection.setlimit) и [`getlimit()`](https://python-all.ru/3/library/sqlite3.html#sqlite3.Connection.getlimit) в [`sqlite3.Connection`](https://python-all.ru/3/library/sqlite3.html#sqlite3.Connection) для установки и получения лимитов SQLite для каждого соединения. Патч от Erlend E. Aasland.
- [bpo-45320](https://python-all.ru/3/whatsnew/changelog.html): Удалено из модуля [`inspect`](https://python-all.ru/3/library/inspect.html#module-inspect):

  - **функция `getargspec`, устаревшая с Python 3.0;**

    используйте [`inspect.signature()`](https://python-all.ru/3/library/inspect.html#inspect.signature) или [`inspect.getfullargspec()`](https://python-all.ru/3/library/inspect.html#inspect.getfullargspec).
  - функция `formatargspec`, устаревшая с Python 3.5; используйте напрямую функцию [`inspect.signature()`](https://python-all.ru/3/library/inspect.html#inspect.signature) и объект `Signature`.
  - недокументированные функции `Signature.from_builtin` и `Signature.from_function`, устаревшие с Python 3.5; вместо них используйте метод [`Signature.from_callable()`](https://python-all.ru/3/library/inspect.html#inspect.Signature.from_callable).

  Патч от Hugo van Kemenade.
- [bpo-45192](https://python-all.ru/3/whatsnew/changelog.html): Исправление функции `tempfile._infer_return_type` так, чтобы аргумент `dir` функций [`tempfile`](https://python-all.ru/3/library/tempfile.html#module-tempfile) принимал объект, реализующий протокол `os.PathLike`.

  Патч от Kyungmin Lee.
- [bpo-45160](https://python-all.ru/3/whatsnew/changelog.html): При отслеживании переменной tkinter, используемой ttk OptionMenu, колбэки больше не вызываются дважды.
- [bpo-25625](https://python-all.ru/3/whatsnew/changelog.html): Добавлен небезопасный для параллелизма контекстный менеджер [`chdir()`](https://python-all.ru/3/library/contextlib.html#contextlib.chdir) для смены текущего рабочего каталога и его восстановления при выходе. Простая обёртка вокруг [`chdir()`](https://python-all.ru/3/library/os.html#os.chdir).
- [bpo-24139](https://python-all.ru/3/whatsnew/changelog.html): Добавление поддержки расширенных кодов результата SQLite в [`sqlite3.Error`](https://python-all.ru/3/library/sqlite3.html#sqlite3.Error). Патч от Erlend E. Aasland.
- [bpo-24444](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка, возникавшая при отображении справки [`argparse`](https://python-all.ru/3/library/argparse.html#module-argparse), когда для параметра help установлено значение из 1 и более пробелов, или когда аргумент *choices* является пустым контейнером.
- [bpo-44547](https://python-all.ru/3/whatsnew/changelog.html): Реализована `Fraction.__int__`, так что экземпляр [`fractions.Fraction`](https://python-all.ru/3/library/fractions.html#fractions.Fraction) `f` проходит проверку `isinstance(f, typing.SupportsInt)`.
- [bpo-40321](https://python-all.ru/3/whatsnew/changelog.html): Добавлена поддержка HTTP-перенаправлений 308 в [`urllib`](https://python-all.ru/3/library/urllib.html#module-urllib). Подробнее см. [**RFC 7538**](https://python-all.ru/3/whatsnew/changelog.html). Исправление от Jochem Schulenklopper.
- [bpo-41374](https://python-all.ru/3/whatsnew/changelog.html): Обеспечено, что константы `socket.TCP_*` доступны в Cygwin 3.1.6 и новее.
- [bpo-35970](https://python-all.ru/3/whatsnew/changelog.html): Добавлен флаг help в интерфейс командной строки модуля base64. Исправление предоставлено Robert Kuska.

### Документация

- [bpo-45726](https://python-all.ru/3/whatsnew/changelog.html): Улучшена документация для [`functools.singledispatch()`](https://python-all.ru/3/library/functools.html#functools.singledispatch) и [`functools.singledispatchmethod`](https://python-all.ru/3/library/functools.html#functools.singledispatchmethod).
- [bpo-45680](https://python-all.ru/3/whatsnew/changelog.html): Внесены изменения в документацию по объектам `GenericAlias`, чтобы уточнить, что неконтейнерные классы также могут реализовать `__class_getitem__`. Исправление предоставлено Alex Waygood.
- [bpo-45618](https://python-all.ru/3/whatsnew/changelog.html): Обновлена версия Sphinx, используемая для сборки документации, до 4.2.0. Исправление от Maciej Olko.
- [bpo-45655](https://python-all.ru/3/whatsnew/changelog.html): Добавлен новый раздел «Соответствующие PEP» в начало документации модуля `typing`. Исправление от Alex Waygood.
- [bpo-45604](https://python-all.ru/3/whatsnew/changelog.html): Добавлен аргумент `level` в документацию функции `multiprocessing.log_to_stderr`.
- [bpo-45516](https://python-all.ru/3/whatsnew/changelog.html): Добавлено описание протокола в документацию `importlib.abc.TraversableResources`.
- [bpo-45464](https://python-all.ru/3/whatsnew/changelog.html): В документации [Встроенные исключения](https://python-all.ru/3/library/exceptions.html#bltin-exceptions) упомянуто, что наследование от нескольких типов исключений в одном подклассе не рекомендуется из-за возможной несовместимости расположения в памяти.
- [bpo-45449](https://python-all.ru/3/whatsnew/changelog.html): Добавлено примечание о [**PEP 585**](https://python-all.ru/3/whatsnew/changelog.html) в [`collections.abc`](https://python-all.ru/3/library/collections.abc.html#module-collections.abc).
- [bpo-45516](https://python-all.ru/3/whatsnew/changelog.html): Добавлено описание протокола в документацию `importlib.abc.Traversable`.
- [bpo-20692](https://python-all.ru/3/whatsnew/changelog.html): Добавлен раздел в FAQ по программированию, объясняющий, что для доступа к атрибуту целочисленного литерала требуется либо пробел после литерала, либо скобки вокруг него.

### Тесты

- [bpo-45678](https://python-all.ru/3/whatsnew/changelog.html): Добавлены тесты для сценариев, в которых [`functools.singledispatchmethod`](https://python-all.ru/3/library/functools.html#functools.singledispatchmethod) размещается поверх метода, уже обёрнутого двумя другими декораторами. Исправление от Alex Waygood.
- [bpo-45578](https://python-all.ru/3/whatsnew/changelog.html): Добавлены тесты для [`dis.distb()`](https://python-all.ru/3/library/dis.html#dis.distb)
- [bpo-45678](https://python-all.ru/3/whatsnew/changelog.html): Добавлены тесты, чтобы убедиться, что `functools.singledispatchmethod` корректно обёртывает атрибуты целевой функции.
- [bpo-45668](https://python-all.ru/3/whatsnew/changelog.html): Тесты PGO теперь проходят успешно, когда Python собран без тестовых модулей расширения.
- [bpo-45577](https://python-all.ru/3/whatsnew/changelog.html): Добавлены подтесты для всех протоколов `pickle` в `test_zoneinfo`.
- [bpo-45566](https://python-all.ru/3/whatsnew/changelog.html): Исправлено `test_frozen_pickle` в `test_dataclasses` для проверки всех версий `pickle`.
- [bpo-43592](https://python-all.ru/3/whatsnew/changelog.html): `test.libregrtest` теперь увеличивает мягкий лимит ресурсов на максимальное количество файловых дескрипторов, если значение по умолчанию слишком мало для нашего набора тестов, как это часто бывает на macOS.
- [bpo-39679](https://python-all.ru/3/whatsnew/changelog.html): Добавлено больше тестовых примеров для `@functools.singledispatchmethod` при комбинировании с `@classmethod` или `@staticmethod`.
- [bpo-45410](https://python-all.ru/3/whatsnew/changelog.html): При запуске рабочего процесса libregrtest теперь записывает stderr в stdout для сохранения порядка сообщений. Используется один канал для stdout и stderr вместо двух. Ранее сообщения выводились не по порядку, что затрудняло анализ журналов buildbot. Исправление от Victor Stinner.
- [bpo-45402](https://python-all.ru/3/whatsnew/changelog.html): Исправлена test\_tools.test\_sundry() при сборке Python вне дерева исходников: исправлен способ, которым инструмент freeze\_modules.py находит программу \_freeze\_module. Исправление от Victor Stinner.
- [bpo-45403](https://python-all.ru/3/whatsnew/changelog.html): Исправлена test\_sys.test\_stdlib\_dir() при сборке Python вне дерева исходников: сравниваются нормализованные пути. Исправление от Victor Stinner.
- [bpo-45400](https://python-all.ru/3/whatsnew/changelog.html): Исправлена test\_name\_error\_suggestions\_do\_not\_trigger\_for\_too\_many\_locals() из test\_exceptions, если имя каталога содержит "a1" (например, "Python-3.11.0a1"): используется более строгое регулярное выражение. Исправление от Victor Stinner.
- [bpo-10572](https://python-all.ru/3/whatsnew/changelog.html): Переименованы тесты [`sqlite3`](https://python-all.ru/3/library/sqlite3.html#module-sqlite3) из `test_sqlite` в `test_sqlite3` и перемещены в `Lib/test/test_sqlite3`. Исправление от Erlend E. Aasland.

### Сборка

- [bpo-43158](https://python-all.ru/3/whatsnew/changelog.html): `setup.py` теперь использует значения из сценария configure для сборки модуля расширения `_uuid`. Configure теперь также обнаруживает `libuuid` от util-linux.
- [bpo-45666](https://python-all.ru/3/whatsnew/changelog.html): Исправлено предупреждение об использовании `swprintf` и `%s` в `_testembed.c`
- [bpo-45548](https://python-all.ru/3/whatsnew/changelog.html): Улучшены `Modules/Setup` и `Modules/makesetup`. Файл `Setup` теперь содержит рабочие правила для всех расширений. Устаревшие комментарии удалены. Правила, определённые в `makesetup`, корректно отслеживают зависимости.
- [bpo-45548](https://python-all.ru/3/whatsnew/changelog.html): Реализация [`math`](https://python-all.ru/3/library/math.html#module-math) и [`cmath`](https://python-all.ru/3/library/cmath.html#module-cmath) теперь требует совместимый с C99 `libm` и больше не поставляется с обходными решениями для отсутствующих функций acosh, asinh, atanh, expm1 и log1p.
- [bpo-45595](https://python-all.ru/3/whatsnew/changelog.html): `setup.py` и `makesetup` теперь отслеживают зависимости сборки от всех заголовочных файлов Python и заголовочных файлов, специфичных для модулей.
- [bpo-45571](https://python-all.ru/3/whatsnew/changelog.html): `Modules/Setup` теперь используют `PY_CFLAGS_NODIST` вместо `PY_CFLAGS` для компиляции разделяемых модулей.
- [bpo-45570](https://python-all.ru/3/whatsnew/changelog.html): `pyexpat` и `_elementtree` больше не определяют устаревшие макросы `HAVE_EXPAT_CONFIG_H` и `USE_PYEXPAT_CAPI`. `XML_POOR_ENTROPY` теперь определён в `expat_config.h`.
- [bpo-43974](https://python-all.ru/3/whatsnew/changelog.html): `setup.py` больше не определяет `Py_BUILD_CORE_MODULE`. Вместо этого каждый модуль, использующий внутренний API, определяет этот макрос.
- [bpo-45548](https://python-all.ru/3/whatsnew/changelog.html): Заполнены недостающие записи в Modules/Setup.
- [bpo-45532](https://python-all.ru/3/whatsnew/changelog.html): Обновлён [`sys.version`](https://python-all.ru/3/library/sys.html#sys.version) для использования `main` в качестве резервной информации. Патч от Jeong YunWon.
- [bpo-45536](https://python-all.ru/3/whatsnew/changelog.html): Скрипт `configure` теперь проверяет, предоставляют ли заголовки и библиотеки OpenSSL необходимые API. Проверяются наиболее распространённые API. Проверка обнаруживает устаревшую или отсутствующую OpenSSL. Ошибки не останавливают configure.
- [bpo-45221](https://python-all.ru/3/whatsnew/changelog.html): Исправлена регрессия в обработке опций `LDFLAGS` и `CPPFLAGS`, когда `argparse.parse_known_args()` мог интерпретировать опцию как один из встроенных аргументов командной строки, например `-h` для справки.
- [bpo-45440](https://python-all.ru/3/whatsnew/changelog.html): Сборка Python теперь требует заголовочный файл C99 `<math.h>`, предоставляющий следующие функции: `copysign()`, `hypot()`, `isfinite()`, `isinf()`, `isnan()`, `round()`. Патч от Victor Stinner.
- [bpo-45405](https://python-all.ru/3/whatsnew/changelog.html): Предотвращение `internal configure error` при запуске `configure` с недавними версиями не-Apple clang. Патч от David Bohman.
- [bpo-45433](https://python-all.ru/3/whatsnew/changelog.html): Избегайте линковки libpython с libcrypt.

### Windows

- [bpo-43652](https://python-all.ru/3/whatsnew/changelog.html): Обновление Tcl/Tk до 8.6.11, на этот раз по-настоящему. Предыдущее обновление ошибочно включало 8.6.10.
- [bpo-45337](https://python-all.ru/3/whatsnew/changelog.html): venv теперь предупреждает, когда созданное окружение может потребовать доступа по другому пути из-за перенаправлений, ссылок или точек соединения. Он также теперь корректно устанавливает или обновляет компоненты, когда требуется альтернативный путь.
- [bpo-43851](https://python-all.ru/3/whatsnew/changelog.html): Сборка SQLite `SQLITE_OMIT_AUTOINIT` в Windows. Патч от Erlend E. Aasland.

### macOS

- [bpo-44828](https://python-all.ru/3/whatsnew/changelog.html): Предотвращение сбоя диалога выбора файла tkinter в macOS 12 Monterey при использовании Tk 8.6.11, предоставляемого установщиками python.org для macOS. Патч от Marc Culler из проекта Tk.

### IDLE

- [bpo-45495](https://python-all.ru/3/whatsnew/changelog.html): Добавить контекстные ключевые слова ‘case’ и ‘match’ в список автодополнения.

### C API

- [bpo-29103](https://python-all.ru/3/whatsnew/changelog.html): [`PyType_FromSpec*`](https://python-all.ru/3/c-api/type.html#c.PyType_FromModuleAndSpec) теперь копирует имя класса из спецификации в буфер, принадлежащий классу, чтобы исходный можно было безопасно освободить. Патч от Petr Viktorin.
- [bpo-45522](https://python-all.ru/3/whatsnew/changelog.html): Внутренние списки свободной памяти для объектов frame, float, list, dict, async generators и context теперь можно отключать.
- [bpo-35134](https://python-all.ru/3/whatsnew/changelog.html): Исключить [`PyWeakref_GET_OBJECT()`](https://python-all.ru/3/c-api/weakref.html#c.PyWeakref_GET_OBJECT) из ограниченного C API. Он никогда не работал, так как структура `PyWeakReference` является непрозрачной в ограниченном C API.
- [bpo-35081](https://python-all.ru/3/whatsnew/changelog.html): Переместить заголовочный файл `interpreteridobject.h` из `Include/` в `Include/internal/`. Он предоставляет только частные функции. Патч от Victor Stinner.
- [bpo-35134](https://python-all.ru/3/whatsnew/changelog.html): Файлы неограниченного API `cellobject.h`, `classobject.h`, `context.h`, `funcobject.h`, `genobject.h` и `longintrepr.h` были перемещены в каталог `Include/cpython`. Кроме того, заголовочный файл `eval.h` был удалён. Эти файлы не должны включаться напрямую, так как они уже включены в `Python.h`: [Include Files](https://python-all.ru/3/c-api/intro.html#api-includes). Если они включались напрямую, рассмотрите включение `Python.h` вместо этого. Патч от Victor Stinner.
- [bpo-45474](https://python-all.ru/3/whatsnew/changelog.html): Следующие элементы больше не доступны, когда определён `Py_LIMITED_API`:

  - [`PyMarshal_WriteLongToFile()`](https://python-all.ru/3/c-api/marshal.html#c.PyMarshal_WriteLongToFile)
  - [`PyMarshal_WriteObjectToFile()`](https://python-all.ru/3/c-api/marshal.html#c.PyMarshal_WriteObjectToFile)
  - [`PyMarshal_ReadObjectFromString()`](https://python-all.ru/3/c-api/marshal.html#c.PyMarshal_ReadObjectFromString)
  - [`PyMarshal_WriteObjectToString()`](https://python-all.ru/3/c-api/marshal.html#c.PyMarshal_WriteObjectToString)
  - макрос `Py_MARSHAL_VERSION`

  Они не являются частью [ограниченного API](https://python-all.ru/3/c-api/stable.html#limited-api-list).

  Патч от Victor Stinner.
- [bpo-45434](https://python-all.ru/3/whatsnew/changelog.html): Удалён заголовочный файл `pystrhex.h`. Он содержит только частные функции. Расширения C должны включать только основной заголовочный файл `<Python.h>`. Патч от Victor Stinner.
- [bpo-45440](https://python-all.ru/3/whatsnew/changelog.html): Удалён макрос `Py_FORCE_DOUBLE()`. Он использовался макросом `Py_IS_INFINITY()`. Патч от Victor Stinner.
- [bpo-45434](https://python-all.ru/3/whatsnew/changelog.html): `<Python.h>` больше не включает заголовочные файлы `<stdlib.h>`, `<stdio.h>`, `<errno.h>` и `<string.h>`, когда макрос `Py_LIMITED_API` установлен в значение `0x030b0000` (Python 3.11) или выше. Расширения на C должны явно включать заголовочные файлы после `#include <Python.h>`. Исправление от Victor Stinner.
- [bpo-41123](https://python-all.ru/3/whatsnew/changelog.html): Удалены макросы `Py_UNICODE_COPY()` и `Py_UNICODE_FILL()`, устаревшие с Python 3.3. Вместо них используйте `PyUnicode_CopyCharacters()` или `memcpy()` (строка `wchar_t*`) и функции `PyUnicode_Fill()`. Исправление от Victor Stinner.
- [bpo-45412](https://python-all.ru/3/whatsnew/changelog.html): Удалены следующие математические макросы, использующие переменную `errno`:

  - `Py_ADJUST_ERANGE1()`
  - `Py_ADJUST_ERANGE2()`
  - `Py_OVERFLOWED()`
  - `Py_SET_ERANGE_IF_OVERFLOW()`
  - `Py_SET_ERRNO_ON_MATH_ERROR()`

  Исправление от Victor Stinner.
- [bpo-45395](https://python-all.ru/3/whatsnew/changelog.html): Пользовательские замороженные модули (массив, установленный в `PyImport_FrozenModules`) теперь рассматриваются как дополнения, а не как замена всех стандартных замороженных модулей. Замороженные модули стандартной библиотеки по-прежнему можно отключить, установив поле “code” записи пользовательского массива в NULL.
- [bpo-43760](https://python-all.ru/3/whatsnew/changelog.html): Добавлены новые функции [`PyThreadState_EnterTracing()`](https://python-all.ru/3/c-api/threads.html#c.PyThreadState_EnterTracing) и [`PyThreadState_LeaveTracing()`](https://python-all.ru/3/c-api/threads.html#c.PyThreadState_LeaveTracing) в ограниченный C API для приостановки и возобновления трассировки и профилирования. Исправление от Victor Stinner.
- [bpo-44220](https://python-all.ru/3/whatsnew/changelog.html): [`PyStructSequence_UnnamedField`](https://python-all.ru/3/c-api/tuple.html#c.PyStructSequence_UnnamedField) добавлен в стабильный ABI.

## Python 3.11.0 alpha 1

*Дата выпуска: 2021-10-05*

### Безопасность

- [bpo-42278](https://python-all.ru/3/whatsnew/changelog.html): Замена использования [`tempfile.mktemp()`](https://python-all.ru/3/library/tempfile.html#tempfile.mktemp) на [`TemporaryDirectory`](https://python-all.ru/3/library/tempfile.html#tempfile.TemporaryDirectory) для предотвращения потенциального состояния гонки.
- [bpo-44600](https://python-all.ru/3/whatsnew/changelog.html): Исправлены неверные номера строк при трассировке некоторых неудачных шаблонов в операторах [match](https://python-all.ru/3/reference/compound_stmts.html#match). Исправление от Charles Burkland.
- [bpo-41180](https://python-all.ru/3/whatsnew/changelog.html): Добавлены события аудита в модуль [`marshal`](https://python-all.ru/3/library/marshal.html#module-marshal) и прекращено возбуждение событий `code.__init__` для каждого разархивированного объекта кода. Непосредственно созданные объекты кода продолжат возбуждать событие, и обработчики событий аудита должны проверять или собирать исходные данные marshal. Это существенно снижает нагрузку при загрузке из файлов `.pyc`.
- [bpo-44394](https://python-all.ru/3/whatsnew/changelog.html): Обновлена встроенная копия libexpat до версии 2.4.1 (с 2.2.8) для получения исправления уязвимости [**CVE 2013-0340**](https://python-all.ru/3/whatsnew/changelog.html) «Billion Laughs». Эта копия в основном используется в Windows и macOS.
- [bpo-43124](https://python-all.ru/3/whatsnew/changelog.html): Внутренняя функция `putcmd` в [`smtplib`](https://python-all.ru/3/library/smtplib.html#module-smtplib) теперь проверяет входные данные на наличие символов `\r` и `\n` для предотвращения (маловероятной) инъекции команд.
- [bpo-44022](https://python-all.ru/3/whatsnew/changelog.html): [`http.client`](https://python-all.ru/3/library/http.client.html#module-http.client) теперь избегает бесконечного чтения потенциальных HTTP-заголовков после ответа сервера со статусом `100 Continue`.

### Ядро и встроенные модули

- [bpo-43760](https://python-all.ru/3/whatsnew/changelog.html): Количество аппаратных ветвлений на одну диспетчеризацию инструкции сокращено с двух до одного за счёт добавления специальной инструкции для трассировки. Исправление от Mark Shannon.
- [bpo-45061](https://python-all.ru/3/whatsnew/changelog.html): Добавлен деаллокатор для типа bool для обнаружения ошибок подсчёта ссылок в расширениях на C, которые по ошибке вызывают Py\_DECREF(Py\_True) или Py\_DECREF(Py\_False). Также обнаруживаются ошибки подсчёта ссылок, когда синглтон пустого кортежа или синглтон пустой строки Юникода уничтожаются по ошибке. Исправление от Victor Stinner.
- [bpo-24076](https://python-all.ru/3/whatsnew/changelog.html): sum() была дополнительно оптимизирована для суммирования однозначных целых чисел.
- [bpo-45190](https://python-all.ru/3/whatsnew/changelog.html): Обновлены базы данных Unicode до версии 14.0.0.
- [bpo-45167](https://python-all.ru/3/whatsnew/changelog.html): Исправлено глубокое копирование объектов [`types.GenericAlias`](https://python-all.ru/3/library/types.html#types.GenericAlias).
- [bpo-45155](https://python-all.ru/3/whatsnew/changelog.html): [`int.to_bytes()`](https://python-all.ru/3/library/stdtypes.html#int.to_bytes) и [`int.from_bytes()`](https://python-all.ru/3/library/stdtypes.html#int.from_bytes) теперь принимают значение по умолчанию `"big"` для аргумента `byteorder`. `int.to_bytes()` также принимает значение по умолчанию `1` для аргумента `length`.

### Библиотека

- [bpo-44219](https://python-all.ru/3/whatsnew/changelog.html): Освобождение GIL при выполнении системных вызовов `isatty` на произвольных файловых дескрипторах. В частности, это затрагивает [`os.isatty()`](https://python-all.ru/3/library/os.html#os.isatty), [`os.device_encoding()`](https://python-all.ru/3/library/os.html#os.device_encoding) и [`io.TextIOWrapper`](https://python-all.ru/3/library/io.html#io.TextIOWrapper). Как следствие, [`io.open()`](https://python-all.ru/3/library/io.html#io.open) в текстовом режиме также затронут. Это изменение устраняет взаимоблокировку в `os.isatty()`. Исправление от Vincent Michel в [bpo-44219](https://python-all.ru/3/whatsnew/changelog.html).

### Ядро и встроенные модули

- [bpo-44959](https://python-all.ru/3/whatsnew/changelog.html): Добавлена поддержка модулей расширения с суффиксом ‘.sl’ на HP-UX в качестве запасного варианта

### Библиотека

- [bpo-45121](https://python-all.ru/3/whatsnew/changelog.html): Исправлена проблема, когда `Protocol.__init__` возбуждает `RecursionError` при прямом вызове или через `super()`. Исправление предоставлено Yurii Karabas.

### Ядро и встроенные модули

- [bpo-44348](https://python-all.ru/3/whatsnew/changelog.html): Функция деаллокации типа [`BaseException`](https://python-all.ru/3/library/exceptions.html#BaseException) теперь использует механизм мусорной корзины (trashcan) для предотвращения переполнения стека. Например, когда возбуждается экземпляр [`RecursionError`](https://python-all.ru/3/library/exceptions.html#RecursionError), он может быть связан с другим RecursionError через атрибут `__context__` или атрибут `__traceback__`, и в результате создаётся цепочка исключений. Когда цепочка уничтожается, вложенные вызовы функции деаллокации могут привести к аварийному завершению из-за переполнения стека, если цепочка слишком длинна по сравнению с доступной памятью стека. Исправление от Victor Stinner.
- [bpo-45123](https://python-all.ru/3/whatsnew/changelog.html): Исправлен PyAiter\_Check – теперь он проверяет только наличие \_\_anext\_\_ (а не \_\_aiter\_\_). Переименованы: PyAiter\_Check в PyAIter\_Check, PyObject\_GetAiter в PyObject\_GetAIter.
- [bpo-1514420](https://python-all.ru/3/whatsnew/changelog.html): Интерпретатор больше не пытается открывать файлы с именами в угловых скобках (например, “\<string\>” или “\<stdin\>”) при форматировании исключения.
- [bpo-41031](https://python-all.ru/3/whatsnew/changelog.html): Согласование форматирования непечатаемых исключений и исключений в модуле [`__main__`](https://python-all.ru/3/library/__main__.html#module-__main__) между кодом на C и Python.
- [bpo-37330](https://python-all.ru/3/whatsnew/changelog.html): [`open()`](https://python-all.ru/3/library/functions.html#open), [`io.open()`](https://python-all.ru/3/library/io.html#io.open), [`codecs.open()`](https://python-all.ru/3/library/codecs.html#codecs.open) и [`fileinput.FileInput`](https://python-all.ru/3/library/fileinput.html#fileinput.FileInput) больше не принимают `'U'` («универсальный перевод строки») в режиме файла. Этот флаг был объявлен устаревшим начиная с Python 3.3. Патч от Victor Stinner.
- [bpo-45083](https://python-all.ru/3/whatsnew/changelog.html): При отображении исключения интерпретатор теперь показывает его полное квалифицированное имя (qualname). Ранее к имени модуля добавлялось только имя класса, что иногда приводило к отображению неверного полного имени.

  (Эта проблема затрагивала только отображение исключений в коде на C, модуль [`traceback`](https://python-all.ru/3/library/traceback.html#module-traceback) уже использовал qualname).
- [bpo-34561](https://python-all.ru/3/whatsnew/changelog.html): Сортировка списков теперь использует стратегию слияния из `powersort()` Манро и Уайлда. В отличие от предыдущей стратегии, эта гарантированно близка к оптимальной по энтропии распределения длин серий. Большинство случаев использования `list.sort()`, вероятно, не заметят значительной разницы во времени, но могут увидеть существенные улучшения в сценариях, где предыдущая стратегия работала исключительно плохо. Однако, поскольку все это быстрые линейные приближения к задаче, которая в принципе решается оптимально лишь за квадратичное время, можно придумать случаи, где предыдущая стратегия справлялась лучше.
- [bpo-45056](https://python-all.ru/3/whatsnew/changelog.html): Компилятор теперь удаляет неиспользуемые константы в конце co\_consts.
- [bpo-45020](https://python-all.ru/3/whatsnew/changelog.html): Добавлен новый параметр командной строки “-X frozen\_modules=\[on|off\]”, позволяющий отказаться от использования (или включить) опциональных замороженных модулей. По умолчанию включено «on» (или «off», если интерпретатор запущен из дерева исходного кода).

### Библиотека

- [bpo-45012](https://python-all.ru/3/whatsnew/changelog.html): В [`posix`](https://python-all.ru/3/library/posix.html#module-posix) освобождается GIL во время системных вызовов `stat()`, `lstat()` и `fstatat()`, выполняемых [`os.DirEntry.stat()`](https://python-all.ru/3/library/os.html#os.DirEntry.stat). Патч от Stanisław Skonieczny.

### Ядро и встроенные модули

- [bpo-45018](https://python-all.ru/3/whatsnew/changelog.html): Исправлена сериализация (pickling) итераторов range, которые выполняли итерацию более `2**32` раз.
- [bpo-45000](https://python-all.ru/3/whatsnew/changelog.html): Теперь при попытке удалить [`__debug__`](https://python-all.ru/3/library/constants.html#debug__) возникает [`SyntaxError`](https://python-all.ru/3/library/exceptions.html#SyntaxError). Патч от Donghee Na.
- [bpo-44963](https://python-all.ru/3/whatsnew/changelog.html): Реализованы методы `send()` и `throw()` для объектов `anext_awaitable`. Патч от Pablo Galindo.

### Библиотека

- [bpo-44962](https://python-all.ru/3/whatsnew/changelog.html): Исправлено состояние гонки в WeakKeyDictionary, WeakValueDictionary и WeakSet, когда два потока пытаются зафиксировать последнее ожидающее удаление. Это исправляет asyncio.create\_task и устраняет потерю данных в asyncio.run, где shutdown\_asyncgens не выполняется.

### Ядро и встроенные модули

- [bpo-24234](https://python-all.ru/3/whatsnew/changelog.html): Реализован специальный метод `__bytes__()` для типа [`bytes`](https://python-all.ru/3/library/stdtypes.html#bytes), так что объект bytes `b` проходит проверку `isinstance(b, typing.SupportsBytes)`.
- [bpo-24234](https://python-all.ru/3/whatsnew/changelog.html): Реализован специальный метод `__complex__()` для типа [`complex`](https://python-all.ru/3/library/functions.html#complex), так что комплексное число `z` проходит проверку `isinstance(z, typing.SupportsComplex)`.
- [bpo-44954](https://python-all.ru/3/whatsnew/changelog.html): Исправлена редкая ошибка, при которой результат `float.fromhex('0x.8p-1074')` округлялся неверно.
- [bpo-44947](https://python-all.ru/3/whatsnew/changelog.html): Уточнено сообщение о синтаксической ошибке для висячих запятых в операторах import. Патч от Pablo Galindo.
- [bpo-44945](https://python-all.ru/3/whatsnew/changelog.html): Специализирована инструкция BINARY\_ADD с использованием механизма PEP 659. Добавлены пять новых инструкций:

  - BINARY\_ADD\_ADAPTIVE
  - BINARY\_ADD\_FLOAT
  - BINARY\_ADD\_INT
  - BINARY\_ADD\_UNICODE
  - BINARY\_ADD\_UNICODE\_INPLACE\_FAST

### Библиотека

- [bpo-44929](https://python-all.ru/3/whatsnew/changelog.html): Исправлены некоторые пограничные случаи строкового представления `enum.Flag` в REPL. Патч от Pablo Galindo.

### Ядро и встроенные модули

- [bpo-44914](https://python-all.ru/3/whatsnew/changelog.html): Теги версий классов больше не переиспользуются.

  Это означает, что тег версии служит уникальным идентификатором состояния класса. Это используется для эффективной специализации инструкций LOAD\_ATTR и других.
- [bpo-44698](https://python-all.ru/3/whatsnew/changelog.html): Восстановлено поведение возведения комплексных чисел в степень с целочисленным показателем типа [`float`](https://python-all.ru/3/library/functions.html#float) или [`complex`](https://python-all.ru/3/library/functions.html#complex).
- [bpo-44895](https://python-all.ru/3/whatsnew/changelog.html): Добавлена отладочная переменная [`PYTHONDUMPREFSFILE`](https://python-all.ru/3/using/cmdline.html#envvar-PYTHONDUMPREFSFILE) для создания файла дампа, который генерируется [`--with-trace-refs`](https://python-all.ru/3/using/configure.html#cmdoption-with-trace-refs). Исправление от Donghee Na.
- [bpo-44900](https://python-all.ru/3/whatsnew/changelog.html): Добавлено пять суперинструкций для ускорения PEP 659:

  - LOAD\_FAST LOAD\_FAST
  - STORE\_FAST LOAD\_FAST
  - LOAD\_FAST LOAD\_CONST
  - LOAD\_CONST LOAD\_FAST
  - STORE\_FAST STORE\_FAST
- [bpo-44889](https://python-all.ru/3/whatsnew/changelog.html): Начальная реализация адаптивной специализации `LOAD_METHOD`. Добавлены следующие специализированные формы:

  - `LOAD_METHOD_CACHED`
  - `LOAD_METHOD_MODULE`
  - `LOAD_METHOD_CLASS`
- [bpo-44890](https://python-all.ru/3/whatsnew/changelog.html): Статистика специализации всегда собирается в отладочных сборках.
- [bpo-44885](https://python-all.ru/3/whatsnew/changelog.html): Исправлены позиции в AST для f-строк со спецификациями формата и повторяющимися выражениями. Исправление от Pablo Galindo
- [bpo-44878](https://python-all.ru/3/whatsnew/changelog.html): Удалён цикл из интерпретатора байт-кода. Все инструкции теперь заканчиваются макросом DISPATCH, поэтому цикл стал избыточным.
- [bpo-44878](https://python-all.ru/3/whatsnew/changelog.html): Удалён оператор переключателя для цикла интерпретатора при использовании вычисляемых переходов.
- [bpo-44874](https://python-all.ru/3/whatsnew/changelog.html): Устарели старые макросы trashcan (`Py_TRASHCAN_SAFE_BEGIN`/`Py_TRASHCAN_SAFE_END`). Их следует заменить на новые макросы `Py_TRASHCAN_BEGIN` и `Py_TRASHCAN_END`.
- [bpo-44872](https://python-all.ru/3/whatsnew/changelog.html): В frameobject.c используются новые макросы trashcan (Py\_TRASHCAN\_BEGIN/END) вместо старых (Py\_TRASHCAN\_SAFE\_BEGIN/END).
- [bpo-33930](https://python-all.ru/3/whatsnew/changelog.html): Исправлено падение с segmentation fault при глубокой рекурсии во время очистки объектов методов. Исправление от Augusto Goulart и Pablo Galindo.
- [bpo-25782](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка, из-за которой `PyErr_SetObject` зависал, когда текущее исключение содержит цикл в цепочке контекстов.
- [bpo-44856](https://python-all.ru/3/whatsnew/changelog.html): Исправлены утечки ссылок в ошибочных путях `update_bases()` и `__build_class__`. Исправление от Pablo Galindo.
- [bpo-44826](https://python-all.ru/3/whatsnew/changelog.html): Начальная реализация адаптивной специализации STORE\_ATTR

  Добавлены три специализированные формы STORE\_ATTR:

  - STORE\_ATTR\_SLOT
  - STORE\_ATTR\_SPLIT\_KEYS
  - STORE\_ATTR\_WITH\_HINT
- [bpo-44838](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка, из-за которой синтаксический анализатор выдавал неверное пользовательское [`SyntaxError`](https://python-all.ru/3/library/exceptions.html#SyntaxError) для неправильных выражений «if». Исправление от Pablo Galindo.
- [bpo-44821](https://python-all.ru/3/whatsnew/changelog.html): Словари экземпляров (\_\_dict\_\_) теперь создаются заранее для улучшения регулярности структуры объектов и помощи специализации.
- [bpo-44792](https://python-all.ru/3/whatsnew/changelog.html): Улучшены сообщения об ошибках синтаксиса для выражений if. Исправление от Miguel Brito
- [bpo-34013](https://python-all.ru/3/whatsnew/changelog.html): Обобщено пользовательское сообщение об ошибке для недопустимых устаревших конструкций (например, при вызове «print» без скобок) для включения более широкого круга выражений. Исправление от Pablo Galindo
- [bpo-44732](https://python-all.ru/3/whatsnew/changelog.html): `types.Union` переименован в `types.UnionType`.
- [bpo-44725](https://python-all.ru/3/whatsnew/changelog.html): Статистика специализации теперь доступна в Python через `_opcode.get_specialization_stats()`.
- [bpo-44717](https://python-all.ru/3/whatsnew/changelog.html): Улучшено AttributeError при циклических импортах подмодулей.
- [bpo-44698](https://python-all.ru/3/whatsnew/changelog.html): Исправлено неопределённое поведение при возведении в степень комплексного объекта.
- [bpo-44653](https://python-all.ru/3/whatsnew/changelog.html): В объединённом типе добавлена поддержка типов [`typing`](https://python-all.ru/3/library/typing.html#module-typing) при подстановке параметров.
- [bpo-44676](https://python-all.ru/3/whatsnew/changelog.html): Добавлена возможность сериализации объектов `types.Union`. Исправление предоставлено Yurii Karabas.
- [bpo-44633](https://python-all.ru/3/whatsnew/changelog.html): Подстановка параметров типа объединения с неправильными типами теперь вызывает `TypeError` вместо возврата [`NotImplemented`](https://python-all.ru/3/library/constants.html#NotImplemented).
- [bpo-44661](https://python-all.ru/3/whatsnew/changelog.html): Обновлено `property_descr_set` для использования vectorcall, если это возможно. Исправление от Donghee Na.
- [bpo-44662](https://python-all.ru/3/whatsnew/changelog.html): Добавлено `__module__` в `types.Union`. Это также исправляет проблемы `types.Union` с `typing.Annotated`. Исправление предоставлено Yurii Karabas.
- [bpo-44655](https://python-all.ru/3/whatsnew/changelog.html): Включено имя типа в сообщения об ошибках неопределённого атрибута \_\_slots\_\_. Исправление от Pablo Galindo.
- [bpo-44655](https://python-all.ru/3/whatsnew/changelog.html): Не включать отсутствующий атрибут с тем же именем, что и ошибочный, при предложении вариантов для отсутствующих атрибутов. Исправление от Pablo Galindo.
- [bpo-44646](https://python-all.ru/3/whatsnew/changelog.html): Исправлен хеш типа объединения: он больше не зависит от порядка аргументов.
- [bpo-44636](https://python-all.ru/3/whatsnew/changelog.html): Свёрнуто объединение одинаковых типов. Например, результат `int | int` теперь равен `int`. Исправлено сравнение типа объединения с нехешируемыми объектами. Например, `int | str == {}` больше не вызывает TypeError.

### Библиотеки

- [bpo-44611](https://python-all.ru/3/whatsnew/changelog.html): В Windows [`os.urandom()`](https://python-all.ru/3/library/os.html#os.urandom) использует API BCryptGenRandom вместо API CryptGenRandom, который помечен как устаревший в Microsoft Windows API. Исправление от Donghee Na.

### Ядро и встроенные модули

- [bpo-44635](https://python-all.ru/3/whatsnew/changelog.html): Преобразовано `None` в `type(None)` в конструкторе типа объединения.
- [bpo-26280](https://python-all.ru/3/whatsnew/changelog.html): Реализована адаптивная специализация для BINARY\_SUBSCR

  Добавлены три специализированные формы BINARY\_SUBSCR:

  - BINARY\_SUBSCR\_LIST\_INT
  - BINARY\_SUBSCR\_TUPLE\_INT
  - BINARY\_SUBSCR\_DICT
- [bpo-44589](https://python-all.ru/3/whatsnew/changelog.html): Отображения (mapping patterns) в операторах `match` с двумя или более одинаковыми литеральными ключами теперь вызывают [`SyntaxError`](https://python-all.ru/3/library/exceptions.html#SyntaxError) на этапе компиляции.
- [bpo-44606](https://python-all.ru/3/whatsnew/changelog.html): Исправлены `__instancecheck__` и `__subclasscheck__` для типа объединения.
- [bpo-42073](https://python-all.ru/3/whatsnew/changelog.html): Декоратор `@classmethod` теперь может оборачивать другие дескрипторы, подобные classmethod.
- [bpo-41972](https://python-all.ru/3/whatsnew/changelog.html): Настроен алгоритм поиска строк в fastsearch.h для уменьшения внутреннего цикла в большинстве случаев.
- [bpo-44590](https://python-all.ru/3/whatsnew/changelog.html): Все необходимые данные для выполнения функции Python (локальные переменные, стек и т.д.) теперь хранятся в стеке для каждого потока. Объекты фреймов создаются лениво по запросу. Это повышает производительность примерно на 7% в стандартном наборе тестов. Интроспекция и отладка не затронуты, поскольку объекты фреймов всегда доступны при необходимости. Исправление от Mark Shannon.
- [bpo-44584](https://python-all.ru/3/whatsnew/changelog.html): Отладка потоков (переменная окружения `PYTHONTHREADDEBUG`) помечена как устаревшая в Python 3.10 и будет удалена в Python 3.12. Для этой функции требуется отладочная сборка Python. Исправление от Victor Stinner.
- [bpo-43895](https://python-all.ru/3/whatsnew/changelog.html): Устаревший внутренний кеш дескрипторов файлов разделяемых объектов, добавленный в 1995 году, который пытался (но не гарантировал) предотвратить двойную загрузку .so через dlopen для обхода недостатков POSIX-подобных операционных систем середины 1990-х, удалён из dynload\_shlib.c.

### Библиотеки

- [bpo-44490](https://python-all.ru/3/whatsnew/changelog.html): [`typing`](https://python-all.ru/3/library/typing.html#module-typing) теперь ищет параметры типов в объектах `types.Union`. `get_type_hints` также будет корректно разрешать аннотации с вложенными объектами `types.Union`. Исправление предоставлено Yurii Karabas.

### Ядро и встроенные модули

- [bpo-43950](https://python-all.ru/3/whatsnew/changelog.html): Объекты кода теперь могут предоставлять информацию о столбцах для инструкций, если она доступна. Это используется при печати трассировки для отображения выражений, вызвавших ошибки.

  Предоставлено Pablo Galindo, Batuhan Taskaya и Ammar Askar в рамках [**PEP 657**](https://python-all.ru/3/whatsnew/changelog.html).
- [bpo-44562](https://python-all.ru/3/whatsnew/changelog.html): Удалено использование [`PyObject_GC_Del()`](https://python-all.ru/3/c-api/gcsupport.html#c.PyObject_GC_Del) в пути ошибки при инициализации [`types.GenericAlias`](https://python-all.ru/3/library/types.html#types.GenericAlias).

### Библиотеки

- [bpo-41486](https://python-all.ru/3/whatsnew/changelog.html): Исправлена регрессия потребления памяти и производительности копирования в ранних бета-версиях 3.10, которая возникала при использовании выходного буфера более 4 ГБ с zlib.decompress для входных данных, расширяющихся до такого размера.

### Ядро и встроенные модули

- [bpo-43908](https://python-all.ru/3/whatsnew/changelog.html): Кучевые типы с флагом [`Py_TPFLAGS_IMMUTABLETYPE`](https://python-all.ru/3/c-api/typeobj.html#c.Py_TPFLAGS_IMMUTABLETYPE) теперь могут наследовать протокол vectorcall [**PEP 590**](https://python-all.ru/3/whatsnew/changelog.html). Ранее это было возможно только для [статических типов](https://python-all.ru/3/c-api/typeobj.html#static-types). Патч от Erlend E. Aasland.
- [bpo-44553](https://python-all.ru/3/whatsnew/changelog.html): Реализованы методы сборщика мусора для `types.Union` для разрыва циклических ссылок и предотвращения утечек памяти.
- [bpo-44490](https://python-all.ru/3/whatsnew/changelog.html): Добавлены атрибут `__parameters__` и оператор `__getitem__` к `types.Union`. Патч предоставлен Yurii Karabas.
- [bpo-44523](https://python-all.ru/3/whatsnew/changelog.html): Удалена сквозная передача [`hash()`](https://python-all.ru/3/library/functions.html#hash) для объектов [`weakref.proxy`](https://python-all.ru/3/library/weakref.html#weakref.proxy), чтобы предотвратить непредвиденные последствия, когда исходный объект умирает, а прокси является частью хешируемого объекта. Патч от Pablo Galindo.
- [bpo-44483](https://python-all.ru/3/whatsnew/changelog.html): Исправлен сбой в объектах `types.Union` при создании объединения объекта с некорректным полем `__module__`.
- [bpo-44486](https://python-all.ru/3/whatsnew/changelog.html): Модули всегда будут иметь словарь, даже если созданы с помощью `types.ModuleType.__new__()`
- [bpo-44472](https://python-all.ru/3/whatsnew/changelog.html): Исправлена функциональность ltrace при возбуждении исключений. Патч от Pablo Galindo
- [bpo-12022](https://python-all.ru/3/whatsnew/changelog.html): Теперь возбуждается [`TypeError`](https://python-all.ru/3/library/exceptions.html#TypeError) вместо [`AttributeError`](https://python-all.ru/3/library/exceptions.html#AttributeError) в операторах [`with`](https://python-all.ru/3/reference/compound_stmts.html#with) и [`async with`](https://python-all.ru/3/reference/compound_stmts.html#async-with) для объектов, которые не поддерживают протокол [менеджера контекста](https://python-all.ru/3/glossary.html#term-context-manager) или [асинхронного менеджера контекста](https://python-all.ru/3/glossary.html#term-asynchronous-context-manager) соответственно.
- [bpo-44297](https://python-all.ru/3/whatsnew/changelog.html): Гарантируется, что номер строки устанавливается при входе в область включения. Это обеспечивает отображение правильного номера строки в трассировках стека, содержащих генераторные выражения.
- [bpo-44456](https://python-all.ru/3/whatsnew/changelog.html): Улучшена синтаксическая ошибка при смешивании позиционных и ключевых шаблонов. Патч от Pablo Galindo.
- [bpo-44409](https://python-all.ru/3/whatsnew/changelog.html): Исправлена информация о местоположении ошибки для ошибок токенизатора, возбуждаемых при инициализации токенизатора. Патч от Pablo Galindo.
- [bpo-44396](https://python-all.ru/3/whatsnew/changelog.html): Исправлен возможный сбой в токенизаторе при возбуждении синтаксических ошибок для незакрытых строк. Патч от Pablo Galindo.
- [bpo-44376](https://python-all.ru/3/whatsnew/changelog.html): Точное целочисленное возведение в степень (например, `i**2` или `pow(i, 2)`) с малым показателем стало значительно быстрее за счёт снижения накладных расходов в таких случаях.
- [bpo-44313](https://python-all.ru/3/whatsnew/changelog.html): Непосредственно импортированные объекты и модули (через инструкции import и from import) не генерируют `LOAD_METHOD`/`CALL_METHOD` для напрямую доступных объектов в своём пространстве имён. Теперь они используют обычные `LOAD_ATTR`/`CALL_FUNCTION`.
- [bpo-44338](https://python-all.ru/3/whatsnew/changelog.html): Реализована адаптивная специализация для LOAD\_GLOBAL

  Добавлены две специализированные формы LOAD\_GLOBAL:

  - LOAD\_GLOBAL\_MODULE
  - LOAD\_GLOBAL\_BUILTIN
- [bpo-44368](https://python-all.ru/3/whatsnew/changelog.html): Улучшены синтаксические ошибки для недопустимых целей «as». Патч от Pablo Galindo
- [bpo-44349](https://python-all.ru/3/whatsnew/changelog.html): Исправлен крайний случай при отображении текста из файлов с кодировкой в синтаксических ошибках. Патч от Pablo Galindo.
- [bpo-44337](https://python-all.ru/3/whatsnew/changelog.html): Первоначальная реализация адаптивной специализации LOAD\_ATTR

  Добавлены четыре специализированные формы LOAD\_ATTR:

  - LOAD\_ATTR\_SLOT
  - LOAD\_ATTR\_SPLIT\_KEYS
  - LOAD\_ATTR\_WITH\_HINT
  - LOAD\_ATTR\_MODULE
- [bpo-44335](https://python-all.ru/3/whatsnew/changelog.html): Исправлена регрессия при определении некорректных символов в синтаксических ошибках. Патч от Pablo Galindo
- [bpo-43693](https://python-all.ru/3/whatsnew/changelog.html): Вычисление смещений клеточных переменных выполняется в компиляторе, а не во время выполнения. Это снижает накладные расходы на обработку клеточных и свободных переменных, особенно в случае, когда переменная является одновременно аргументом и клеточной переменной.
- [bpo-44317](https://python-all.ru/3/whatsnew/changelog.html): Улучшена ошибка токенизатора с улучшенными местоположениями. Патч от Pablo Galindo.

### Библиотека

- [bpo-44304](https://python-all.ru/3/whatsnew/changelog.html): Исправлен сбой в модуле [`sqlite3`](https://python-all.ru/3/library/sqlite3.html#module-sqlite3), который происходил, когда сборщик мусора очищает объекты `sqlite.Statement`. Патч от Pablo Galindo

### Ядро и встроенные объекты

- [bpo-44305](https://python-all.ru/3/whatsnew/changelog.html): Улучшено сообщение об ошибке для блоков `try` без `except` или `finally`. Исправление от Pablo Galindo.
- [bpo-43413](https://python-all.ru/3/whatsnew/changelog.html): Конструкторы подклассов некоторых встроенных классов (например, [`tuple`](https://python-all.ru/3/library/stdtypes.html#tuple), [`list`](https://python-all.ru/3/library/stdtypes.html#list), [`frozenset`](https://python-all.ru/3/library/stdtypes.html#frozenset)) больше не принимают произвольные именованные аргументы. \[отменено в 3.11a4\] Подклассы [`set`](https://python-all.ru/3/library/stdtypes.html#set) теперь могут определять метод `__new__()` с дополнительными именованными параметрами, не переопределяя при этом `__init__()`.
- [bpo-43667](https://python-all.ru/3/whatsnew/changelog.html): Улучшена поддержка Unicode в не-UTF-локалях на Oracle Solaris. Эта проблема не затрагивает другие системы Solaris.
- [bpo-43693](https://python-all.ru/3/whatsnew/changelog.html): Добавлен новый опкод MAKE\_CELL, который эффективно переносит часть работы, выполняемой при входе в функцию, в компилятор и в цикл исполнения. Помимо создания необходимых объектов-ячеек, новый опкод преобразует соответствующие аргументы (и другие локальные переменные) в переменные-ячейки при входе в функцию.
- [bpo-44232](https://python-all.ru/3/whatsnew/changelog.html): Исправлен регресс в [`type()`](https://python-all.ru/3/library/functions.html#type), когда метакласс вызывает исключение. C-функция `type_new()` должна корректно сообщать об исключении, когда конструктор метакласса вызывает исключение и класс-победитель не является метаклассом. Исправление от Victor Stinner.
- [bpo-44201](https://python-all.ru/3/whatsnew/changelog.html): Устранены побочные эффекты проверки специализированных синтаксических ошибок в REPL, из-за которых после обнаружения синтаксической ошибки запрашивались лишние токены. Исправление от Pablo Galindo.
- [bpo-43693](https://python-all.ru/3/whatsnew/changelog.html): `PyCodeObject` получил `co_fastlocalnames` и `co_fastlocalkinds` в качестве авторитетного источника информации о быстрых локальных переменных. Маршализованные объекты кода соответственно изменены.
- [bpo-44184](https://python-all.ru/3/whatsnew/changelog.html): Исправлен крах при завершении Python, когда функция деаллокации удаляет последнюю сильную ссылку на тип-кучу. Исправление от Victor Stinner.
- [bpo-44187](https://python-all.ru/3/whatsnew/changelog.html): Реализовано ускорение (quickening) в интерпретаторе. Пока это не даёт преимуществ, но является основой для будущих оптимизаций. Полное объяснение см. в PEP 659.
- [bpo-44180](https://python-all.ru/3/whatsnew/changelog.html): Парсер больше не сообщает об общих синтаксических ошибках, которые находятся дальше той позиции, до которой он дошёл на первом проходе. Исправление от Pablo Galindo.
- [bpo-44168](https://python-all.ru/3/whatsnew/changelog.html): Исправлено сообщение об ошибке в парсере для именованных аргументов с некорректными выражениями. Исправление от Pablo Galindo.
- [bpo-44156](https://python-all.ru/3/whatsnew/changelog.html): Кэши строк в `compile.c` теперь совместимы с под-интерпретаторами.
- [bpo-44143](https://python-all.ru/3/whatsnew/changelog.html): Исправлен крах в парсере, возникающий при возбуждении ошибок токенизатора, когда уже было активно исключение. Исправление от Pablo Galindo.
- [bpo-44032](https://python-all.ru/3/whatsnew/changelog.html): «Быстрые» локальные переменные и другие переменные перенесены из объекта фрейма в поточный стек данных.
- [bpo-44114](https://python-all.ru/3/whatsnew/changelog.html): Исправлены некорректные сигнатуры функций dictkeys\_reversed и dictitems\_reversed в C-коде, что нарушало сборку для WebAssembly.
- [bpo-44110](https://python-all.ru/3/whatsnew/changelog.html): Улучшено сообщение об ошибке `str.__getitem__()`
- [bpo-26110](https://python-all.ru/3/whatsnew/changelog.html): Добавлен опкод `CALL_METHOD_KW` для ускорения вызовов методов с именованными аргументами. Идея взята из PyPy. Побочный эффект – выполнение `CALL_METHOD` теперь происходит без ветвлений в цикле вычислений.
- [bpo-28307](https://python-all.ru/3/whatsnew/changelog.html): Компилятор теперь оптимизирует простое C-стилевое форматирование с литеральным форматом, содержащим только коды формата %s, %r и %a, преобразуя их в f-строковые выражения.
- [bpo-43149](https://python-all.ru/3/whatsnew/changelog.html): Исправлено сообщение о синтаксической ошибке, касающееся нескольких типов исключений, – теперь оно не ссылается на «группы исключений». Исправление от Pablo Galindo.
- [bpo-43822](https://python-all.ru/3/whatsnew/changelog.html): Парсер теперь отдаёт приоритет ошибкам токенизатора перед пользовательскими синтаксическими ошибками при возбуждении исключений. Исправление от Pablo Galindo.
- [bpo-40222](https://python-all.ru/3/whatsnew/changelog.html): Обработка исключений с «нулевой стоимостью».

  - Использует таблицу поиска для определения способа обработки исключений.
  - Удаляет инструкции блоков SETUP\_FINALLY и POP\_TOP, устраняя накладные расходы на выполнение try-блоков во время исполнения.
  - Уменьшает размер объекта фрейма примерно на 60%.

  Исправление от Mark Shannon.
- [bpo-43918](https://python-all.ru/3/whatsnew/changelog.html): В документирующей строке новой встроенной функции `anext` описаны сигнатура и аргумент `default`.
- [bpo-43833](https://python-all.ru/3/whatsnew/changelog.html): Выводится предупреждение об устаревании, если за числовым литералом непосредственно следует одно из ключевых слов: and, else, for, if, in, is, or. Если за ним непосредственно следует другое ключевое слово или идентификатор, возбуждается синтаксическая ошибка с более информативным сообщением.
- [bpo-43879](https://python-all.ru/3/whatsnew/changelog.html): Добавлено поле native\_thread\_id в PyThreadState. Исправление от Gabriele N. Tornetta.
- [bpo-43693](https://python-all.ru/3/whatsnew/changelog.html): Смещения ячеек вычисляются относительно локальных переменных в компиляторе. Это позволяет интерпретатору рассматривать локальные переменные и ячейки как единый массив, что немного эффективнее. Также опкод LOAD\_CLOSURE стал псевдонимом для LOAD\_FAST. Сохранение LOAD\_CLOSURE помогает сохранить байткод более читаемым.
- [bpo-17792](https://python-all.ru/3/whatsnew/changelog.html): Более точные сообщения об ошибках при доступе к несвязанным локальным или свободным переменным.
- [bpo-28146](https://python-all.ru/3/whatsnew/changelog.html): Исправлено запутанное сообщение об ошибке в [`str.format()`](https://python-all.ru/3/library/stdtypes.html#str.format).
- [bpo-11105](https://python-all.ru/3/whatsnew/changelog.html): При компиляции объектов [`ast.AST`](https://python-all.ru/3/library/ast.html#ast.AST) с рекурсивными ссылками через [`compile()`](https://python-all.ru/3/library/functions.html#compile) интерпретатор больше не падает, а вместо этого выбрасывает исключение [`RecursionError`](https://python-all.ru/3/library/exceptions.html#RecursionError).
- [bpo-39091](https://python-all.ru/3/whatsnew/changelog.html): Исправлено падение при передаче не-исключения в метод `throw()` генератора. Патч от Noah Oxer.
- [bpo-33346](https://python-all.ru/3/whatsnew/changelog.html): Асинхронные генераторы списков теперь разрешены внутри генераторов списков в асинхронных функциях. Внешние генераторы неявно становятся асинхронными.

### Библиотека

- [bpo-45371](https://python-all.ru/3/whatsnew/changelog.html): Исправлена проблема clang rpath в `distutils`. Теперь UnixCCompiler использует корректную опцию clang для добавления каталога библиотек времени выполнения (rpath) к разделяемой библиотеке.
- [bpo-45329](https://python-all.ru/3/whatsnew/changelog.html): Исправлен доступ к освобождённой памяти в `pyexpat.xmlparser` при сборке с установленной библиотекой expat версии \<= 2.2.0.
- [bpo-41710](https://python-all.ru/3/whatsnew/changelog.html): В Unix, если функция `sem_clockwait()` доступна в библиотеке C (glibc 2.30 и новее), метод [`threading.Lock.acquire()`](https://python-all.ru/3/library/threading.html#threading.Lock.acquire) теперь использует монотонные часы ([`time.CLOCK_MONOTONIC`](https://python-all.ru/3/library/time.html#time.CLOCK_MONOTONIC)) для тайм-аута, а не системные часы ([`time.CLOCK_REALTIME`](https://python-all.ru/3/library/time.html#time.CLOCK_REALTIME)), чтобы не зависеть от изменений системного времени. Патч от Victor Stinner.
- [bpo-1596321](https://python-all.ru/3/whatsnew/changelog.html): Исправлена функция `threading._shutdown()`, когда модуль [`threading`](https://python-all.ru/3/library/threading.html#module-threading) был импортирован впервые из потока, отличного от главного: больше не логируется ошибка при завершении Python.
- [bpo-45274](https://python-all.ru/3/whatsnew/changelog.html): Исправлено состояние гонки в методе [`Thread.join()`](https://python-all.ru/3/library/threading.html#threading.Thread.join) модуля [`threading`](https://python-all.ru/3/library/threading.html#module-threading). Если функция прерывается сигналом, и обработчик сигнала выбрасывает исключение, теперь гарантируется, что поток остаётся в согласованном состоянии для предотвращения взаимоблокировки. Патч от Victor Stinner.
- [bpo-21302](https://python-all.ru/3/whatsnew/changelog.html): В Unix-системах [`time.sleep()`](https://python-all.ru/3/library/time.html#time.sleep) теперь использует функцию `nanosleep()`, если `clock_nanosleep()` недоступна, но `nanosleep()` доступна. `nanosleep()` позволяет приостановить выполнение с точностью до наносекунд.
- [bpo-21302](https://python-all.ru/3/whatsnew/changelog.html): В Windows [`time.sleep()`](https://python-all.ru/3/library/time.html#time.sleep) теперь использует ожидающий таймер с разрешением 100 наносекунд (10-7 секунд). Ранее разрешение составляло 1 миллисекунду (10-3 секунд). Патч от Benjamin Szőke и Victor Stinner.
- [bpo-45238](https://python-all.ru/3/whatsnew/changelog.html): Исправлен `unittest.IsolatedAsyncioTestCase.debug()`: теперь он выполняет асинхронные методы и колбэки.
- [bpo-36674](https://python-all.ru/3/whatsnew/changelog.html): [`unittest.TestCase.debug()`](https://python-all.ru/3/library/unittest.html#unittest.TestCase.debug) теперь выбрасывает [`unittest.SkipTest`](https://python-all.ru/3/library/unittest.html#unittest.SkipTest), если класс или тестовый метод декорированы декоратором пропуска.
- [bpo-45235](https://python-all.ru/3/whatsnew/changelog.html): Исправлена проблема, когда argparse не сохранял значения в переданном пространстве имён при использовании подпарсера со значениями по умолчанию.
- [bpo-45183](https://python-all.ru/3/whatsnew/changelog.html): Исправлено, что zipimport.zipimporter.find\_spec() не выбрасывает исключение, когда соответствующий zip-файл был удалён, а внутренний кэш сброшен через invalidate\_cache().
- [bpo-45234](https://python-all.ru/3/whatsnew/changelog.html): Исправлена регрессия в [`copyfile()`](https://python-all.ru/3/library/shutil.html#shutil.copyfile), [`copy()`](https://python-all.ru/3/library/shutil.html#shutil.copy), [`copy2()`](https://python-all.ru/3/library/shutil.html#shutil.copy2), которые выбрасывали [`FileNotFoundError`](https://python-all.ru/3/library/exceptions.html#FileNotFoundError), когда источник является каталогом, тогда как следовало выбрасывать [`IsADirectoryError`](https://python-all.ru/3/library/exceptions.html#IsADirectoryError).
- [bpo-45228](https://python-all.ru/3/whatsnew/changelog.html): Исправлено переполнение буфера стека при разборе сетевого адреса J1939.
- [bpo-45225](https://python-all.ru/3/whatsnew/changelog.html): Используется функция map вместо генераторного выражения в capwords.
- [bpo-42135](https://python-all.ru/3/whatsnew/changelog.html): Исправлена опечатка: `importlib.find_loader` на самом деле запланирован к удалению в Python 3.12, а не 3.10, как остальные в PR 25169.

  Патч от Hugo van Kemenade.
- [bpo-20524](https://python-all.ru/3/whatsnew/changelog.html): Улучшены сообщения об ошибках при операции `.format()` для `str`, `float`, `int` и `complex`. Новый формат теперь показывает проблемный шаблон и тип объекта.
- [bpo-45168](https://python-all.ru/3/whatsnew/changelog.html): Изменён вывод [`dis.dis()`](https://python-all.ru/3/library/dis.html#dis.dis), чтобы опускать значения аргументов операции, которые не могут быть разрешены из-за отсутствия `co_consts`, `co_names` и т.д. Ранее в поле значения повторялся сам oparg, что было бесполезно и могло вводить в заблуждение.
- [bpo-21302](https://python-all.ru/3/whatsnew/changelog.html): В Unix-системах [`time.sleep()`](https://python-all.ru/3/library/time.html#time.sleep) теперь использует функцию `clock_nanosleep()`, если она доступна, что позволяет приостановить выполнение на интервал с точностью до наносекунд.
- [bpo-45173](https://python-all.ru/3/whatsnew/changelog.html): Из модуля [`configparser`](https://python-all.ru/3/library/configparser.html#module-configparser) удалены: класс `SafeConfigParser`, свойство `filename` класса [`ParsingError`](https://python-all.ru/3/library/configparser.html#configparser.ParsingError), метод `readfp()` класса [`ConfigParser`](https://python-all.ru/3/library/configparser.html#configparser.ConfigParser), устаревшие с Python 3.2.

  Патч от Hugo van Kemenade.
- [bpo-44987](https://python-all.ru/3/whatsnew/changelog.html): Чистые ASCII-строки теперь нормализуются за константное время в [`unicodedata.normalize()`](https://python-all.ru/3/library/unicodedata.html#unicodedata.normalize). Патч от Donghee Na.
- [bpo-35474](https://python-all.ru/3/whatsnew/changelog.html): Вызов [`mimetypes.guess_all_extensions()`](https://python-all.ru/3/library/mimetypes.html#mimetypes.guess_all_extensions) с `strict=False` больше не влияет на результат последующего вызова с `strict=True`. Кроме того, изменение возвращённого списка больше не влияет на глобальное состояние.
- [bpo-45166](https://python-all.ru/3/whatsnew/changelog.html): [`typing.get_type_hints()`](https://python-all.ru/3/library/typing.html#typing.get_type_hints) теперь работает с [`Final`](https://python-all.ru/3/library/typing.html#typing.Final), обёрнутым в [`ForwardRef`](https://python-all.ru/3/library/typing.html#typing.ForwardRef).
- [bpo-45162](https://python-all.ru/3/whatsnew/changelog.html): Удалены многие старые устаревшие возможности [`unittest`](https://python-all.ru/3/library/unittest.html#module-unittest):

  - Псевдонимы `fail*` и `assert*` методов [`TestCase`](https://python-all.ru/3/library/unittest.html#unittest.TestCase).
  - Сломанный с самого начала [`TestCase`](https://python-all.ru/3/library/unittest.html#unittest.TestCase) метод `assertDictContainsSubset()`.
  - Игнорируемый параметр `<unittest.TestLoader.loadTestsFromModule> TestLoader.loadTestsFromModule()` *use\_load\_tests*.
  - Старый псевдоним `_TextTestResult` для [`TextTestResult`](https://python-all.ru/3/library/unittest.html#unittest.TextTestResult).
- [bpo-38371](https://python-all.ru/3/whatsnew/changelog.html): Удалён устаревший метод `split()` из `_tkinter.TkappType`. Исправление от Erlend E. Aasland.
- [bpo-20499](https://python-all.ru/3/whatsnew/changelog.html): Улучшены скорость и точность statistics.pvariance().
- [bpo-45132](https://python-all.ru/3/whatsnew/changelog.html): Удалены методы [`__getitem__()`](https://python-all.ru/3/reference/datamodel.html#object.__getitem__) из [`xml.dom.pulldom.DOMEventStream`](https://python-all.ru/3/library/xml.dom.pulldom.html#xml.dom.pulldom.DOMEventStream), [`wsgiref.util.FileWrapper`](https://python-all.ru/3/library/wsgiref.html#wsgiref.util.FileWrapper) и [`fileinput.FileInput`](https://python-all.ru/3/library/fileinput.html#fileinput.FileInput), устаревшие с Python 3.9.

  Исправление от Hugo van Kemenade.
- [bpo-45129](https://python-all.ru/3/whatsnew/changelog.html): Из-за серьёзных проблем безопасности параметр *reuse\_address* метода [`asyncio.loop.create_datagram_endpoint()`](https://python-all.ru/3/library/asyncio-eventloop.html#asyncio.loop.create_datagram_endpoint), отключённый в Python 3.9, теперь полностью удалён. Это связано с поведением опции сокета `SO_REUSEADDR` в UDP.

  Исправление от Hugo van Kemenade.
- [bpo-45124](https://python-all.ru/3/whatsnew/changelog.html): Команда `bdist_msi`, устаревшая с Python 3.9, теперь удалена.

  Вместо этого используйте `bdist_wheel` (пакеты wheel).

  Исправление от Hugo van Kemenade.
- [bpo-30856](https://python-all.ru/3/whatsnew/changelog.html): Методы [`unittest.TestResult`](https://python-all.ru/3/library/unittest.html#unittest.TestResult) [`addFailure()`](https://python-all.ru/3/library/unittest.html#unittest.TestResult.addFailure), [`addError()`](https://python-all.ru/3/library/unittest.html#unittest.TestResult.addError), [`addSkip()`](https://python-all.ru/3/library/unittest.html#unittest.TestResult.addSkip) и [`addSubTest()`](https://python-all.ru/3/library/unittest.html#unittest.TestResult.addSubTest) теперь вызываются сразу после возникновения исключения в тесте или завершения подтеста. Ранее они вызывались только после завершения очистки теста.
- [bpo-45034](https://python-all.ru/3/whatsnew/changelog.html): Изменено форматирование ошибки для `struct.pack` с режимами `'H'` и `'h'` при слишком больших/маленьких числах. Теперь отображаются фактические числовые пределы, а ранее выводились арифметические выражения.
- [bpo-25894](https://python-all.ru/3/whatsnew/changelog.html): [`unittest`](https://python-all.ru/3/library/unittest.html#module-unittest) теперь всегда сообщает о пропущенных и упавших подтестах раздельно: отдельные символы в обычном режиме и отдельные строки в подробном режиме. Также теперь выводится описание теста для ошибок в очистке метода теста, класса и модуля.
- [bpo-45081](https://python-all.ru/3/whatsnew/changelog.html): Исправлена проблема, когда dataclasses, наследуемые от подклассов `typing.Protocol`, имели неверный `__init__`. Исправление предоставлено Yurii Karabas.
- [bpo-45085](https://python-all.ru/3/whatsnew/changelog.html): Модуль `binhex`, устаревший с Python 3.9, теперь удалён. Следующие функции [`binascii`](https://python-all.ru/3/library/binascii.html#module-binascii), устаревшие с Python 3.9, также удалены:

  - `a2b_hqx()`, `b2a_hqx()`;
  - `rlecode_hqx()`, `rledecode_hqx()`.

  Функция [`binascii.crc_hqx()`](https://python-all.ru/3/library/binascii.html#binascii.crc_hqx) остаётся доступной.

  Исправление от Victor Stinner.
- [bpo-40360](https://python-all.ru/3/whatsnew/changelog.html): Пакет `lib2to3` теперь считается устаревшим и может не смочь разобрать Python 3.10 или новее. См. [**PEP 617**](https://python-all.ru/3/whatsnew/changelog.html) (новый PEG-парсер для CPython). Исправление от Victor Stinner.
- [bpo-45075](https://python-all.ru/3/whatsnew/changelog.html): Переименован `traceback.StackSummary.format_frame()` в [`traceback.StackSummary.format_frame_summary()`](https://python-all.ru/3/library/traceback.html#traceback.StackSummary.format_frame_summary). Этот метод был добавлен для 3.11, поэтому ещё не был выпущен.

  Обновлены код и документация для лучшего различения frame и FrameSummary.
- [bpo-31299](https://python-all.ru/3/whatsnew/changelog.html): Добавлена возможность полностью исключать фреймы из traceback, возвращая `None` из переопределённого метода `format_frame()`.
- [bpo-41620](https://python-all.ru/3/whatsnew/changelog.html): [`run()`](https://python-all.ru/3/library/unittest.html#unittest.TestCase.run) теперь всегда возвращает экземпляр [`TestResult`](https://python-all.ru/3/library/unittest.html#unittest.TestResult). Ранее возвращалось `None`, если класс или метод теста были декорированы декоратором пропуска.
- [bpo-45021](https://python-all.ru/3/whatsnew/changelog.html): Fix a potential deadlock at shutdown of forked children when using [`concurrent.futures`](https://python-all.ru/3/library/concurrent.futures.html#module-concurrent.futures) module
- [bpo-43913](https://python-all.ru/3/whatsnew/changelog.html): Исправлены ошибки при очистке классов и модулей в [`unittest`](https://python-all.ru/3/library/unittest.html#module-unittest):

  - Функции, зарегистрированные с помощью [`addModuleCleanup()`](https://python-all.ru/3/library/unittest.html#unittest.addModuleCleanup), не вызывались, если пользователь не определял `tearDownModule()` в своём тестовом модуле.
  - Функции, зарегистрированные с помощью [`addClassCleanup()`](https://python-all.ru/3/library/unittest.html#unittest.TestCase.addClassCleanup), не вызывались, если `tearDownClass` установлено в `None`.
  - Буферизация в [`TestResult`](https://python-all.ru/3/library/unittest.html#unittest.TestResult) не работала с функциями, зарегистрированными с помощью `addClassCleanup()` и `addModuleCleanup()`.
  - Ошибки в функциях, зарегистрированных с помощью `addClassCleanup()` и `addModuleCleanup()`, некорректно обрабатывались в буферизованном и отладочном режимах.
  - Ошибки в `setUpModule()` и функциях, зарегистрированных с помощью `addModuleCleanup()`, сообщались в неверном порядке.
  - И несколько менее значительных ошибок.
- [bpo-45030](https://python-all.ru/3/whatsnew/changelog.html): Исправлено целочисленное переполнение при сериализации и копировании итератора range.
- [bpo-45001](https://python-all.ru/3/whatsnew/changelog.html): Разбор даты в email сделан более устойчивым к некорректным входным данным, а именно к заголовку `Date:`, состоящему только из пробелов. Исправление от Wouter Bolsterlee.
- [bpo-45010](https://python-all.ru/3/whatsnew/changelog.html): Удалена поддержка специального метода `__div__` в [`unittest.mock`](https://python-all.ru/3/library/unittest.mock.html#module-unittest.mock). Он не используется в Python 3.
- [bpo-39218](https://python-all.ru/3/whatsnew/changelog.html): Повышена точность вычислений дисперсии за счёт использования `x*x` вместо `x**2`.
- [bpo-43613](https://python-all.ru/3/whatsnew/changelog.html): Повышена скорость работы [`gzip.compress()`](https://python-all.ru/3/library/gzip.html#gzip.compress) и [`gzip.decompress()`](https://python-all.ru/3/library/gzip.html#gzip.decompress) за счёт сжатия и распаковки сразу в памяти, а не в потоковом режиме.
- [bpo-37596](https://python-all.ru/3/whatsnew/changelog.html): Обеспечена воспроизводимость [`marshalled`](https://python-all.ru/3/library/marshal.html#module-marshal) для объектов [`set`](https://python-all.ru/3/library/stdtypes.html#set) и [`frozenset`](https://python-all.ru/3/library/stdtypes.html#frozenset).
- [bpo-44019](https://python-all.ru/3/whatsnew/changelog.html): Добавлена новая функция `operator.call`, позволяющая `operator.call(obj, *args, **kwargs) == obj(*args, **kwargs)`.
- [bpo-42255](https://python-all.ru/3/whatsnew/changelog.html): `webbrowser.MacOSX` объявлено устаревшим и будет удалено в Python 3.13. Оно не тестировалось, не документировано и не используется самим [`webbrowser`](https://python-all.ru/3/library/webbrowser.html#module-webbrowser). Исправление от Donghee Na.
- [bpo-44955](https://python-all.ru/3/whatsnew/changelog.html): Метод [`stopTestRun()`](https://python-all.ru/3/library/unittest.html#unittest.TestResult.stopTestRun) теперь всегда вызывается в паре с методом [`startTestRun()`](https://python-all.ru/3/library/unittest.html#unittest.TestResult.startTestRun) для объектов [`TestResult`](https://python-all.ru/3/library/unittest.html#unittest.TestResult), неявно создаваемых в [`run()`](https://python-all.ru/3/library/unittest.html#unittest.TestCase.run). Ранее он не вызывался для тестовых методов и классов, декорированных пропускающим декоратором.
- [bpo-39039](https://python-all.ru/3/whatsnew/changelog.html): tarfile.open теперь выбрасывает [`ReadError`](https://python-all.ru/3/library/tarfile.html#tarfile.ReadError) при ошибке zlib во время извлечения файлов.
- [bpo-44935](https://python-all.ru/3/whatsnew/changelog.html): [`subprocess`](https://python-all.ru/3/library/subprocess.html#module-subprocess) на Solaris теперь также использует [`os.posix_spawn()`](https://python-all.ru/3/library/os.html#os.posix_spawn) для повышения производительности.
- [bpo-44911](https://python-all.ru/3/whatsnew/changelog.html): [`IsolatedAsyncioTestCase`](https://python-all.ru/3/library/unittest.html#unittest.IsolatedAsyncioTestCase) больше не будет выбрасывать исключение при отмене утекших задач. Исправление от Bar Harel.
- [bpo-41322](https://python-all.ru/3/whatsnew/changelog.html): Добавлен `DeprecationWarning` для тестов и асинхронных тестов, возвращающих значение != None (так как это может указывать на некорректно написанный тест, например, тест в виде функции-генератора).
- [bpo-44524](https://python-all.ru/3/whatsnew/changelog.html): Сообщение об исключении стало более информативным при наследовании от специального псевдонима формы typing. Исправление предоставлено Yurii Karabas.
- [bpo-38956](https://python-all.ru/3/whatsnew/changelog.html): Значение по умолчанию [`argparse.BooleanOptionalAction`](https://python-all.ru/3/library/argparse.html#argparse.BooleanOptionalAction) больше не выводится дважды при использовании с [`argparse.ArgumentDefaultsHelpFormatter`](https://python-all.ru/3/library/argparse.html#argparse.ArgumentDefaultsHelpFormatter).
- [bpo-44860](https://python-all.ru/3/whatsnew/changelog.html): Исправлена схема `posix_user` в [`sysconfig`](https://python-all.ru/3/library/sysconfig.html#module-sysconfig), чтобы она не зависела от [`sys.platlibdir`](https://python-all.ru/3/library/sys.html#sys.platlibdir).
- [bpo-44859](https://python-all.ru/3/whatsnew/changelog.html): Улучшена обработка ошибок в [`sqlite3`](https://python-all.ru/3/library/sqlite3.html#module-sqlite3) и повышение точности исключений.

  - Теперь выбрасывается [`MemoryError`](https://python-all.ru/3/library/exceptions.html#MemoryError) вместо [`sqlite3.Warning`](https://python-all.ru/3/library/sqlite3.html#sqlite3.Warning), когда не хватает памяти для кодирования выражения в UTF-8 в `Connection.__call__()` и `Cursor.execute()`.
  - Теперь выбрасывается `UnicodEncodeError` вместо [`sqlite3.Warning`](https://python-all.ru/3/library/sqlite3.html#sqlite3.Warning), когда выражение содержит суррогатные символы в `Connection.__call__()` и `Cursor.execute()`.
  - Теперь выбрасывается [`TypeError`](https://python-all.ru/3/library/exceptions.html#TypeError) вместо [`ValueError`](https://python-all.ru/3/library/exceptions.html#ValueError) для аргумента скрипта, не являющегося строкой, в `Cursor.executescript()`.
  - Теперь выбрасывается [`ValueError`](https://python-all.ru/3/library/exceptions.html#ValueError) для скрипта, содержащего нулевой символ, вместо его обрезания в `Cursor.executescript()`.
  - Корректная обработка исключений, возникающих при получении булева значения результата обработчика прогресса.
  - Добавлено много тестов, покрывающих различные граничные случаи.
- [bpo-44581](https://python-all.ru/3/whatsnew/changelog.html): Обновлены встроенные pip до версии 21.2.3 и setuptools до 57.4.0
- [bpo-44849](https://python-all.ru/3/whatsnew/changelog.html): Исправлена функция [`os.set_inheritable()`](https://python-all.ru/3/library/os.html#os.set_inheritable) на FreeBSD 14 для файлового дескриптора, открытого с флагом [`O_PATH`](https://python-all.ru/3/library/os.html#os.O_PATH): игнорируется ошибка [`EBADF`](https://python-all.ru/3/library/errno.html#errno.EBADF) на `ioctl()`, используется запасная реализация `fcntl()`. Исправление от Victor Stinner.
- [bpo-44605](https://python-all.ru/3/whatsnew/changelog.html): Декоратор @functools.total\_ordering() теперь работает с метаклассами.
- [bpo-44524](https://python-all.ru/3/whatsnew/changelog.html): Исправлена проблема, при которой атрибуты `__name__` и `__qualname__` подписанных специальных форм могли быть `None`.
- [bpo-44839](https://python-all.ru/3/whatsnew/changelog.html): [`MemoryError`](https://python-all.ru/3/library/exceptions.html#MemoryError), возникшее в пользовательских функциях, теперь будет порождать `MemoryError` в [`sqlite3`](https://python-all.ru/3/library/sqlite3.html#module-sqlite3). [`OverflowError`](https://python-all.ru/3/library/exceptions.html#OverflowError) теперь будет преобразовываться в [`DataError`](https://python-all.ru/3/library/sqlite3.html#sqlite3.DataError). Ранее в этих случаях порождался [`OperationalError`](https://python-all.ru/3/library/sqlite3.html#sqlite3.OperationalError).
- [bpo-44822](https://python-all.ru/3/whatsnew/changelog.html): Пользовательские функции [`sqlite3`](https://python-all.ru/3/library/sqlite3.html#module-sqlite3) и агрегаторы, возвращающие [`strings`](https://python-all.ru/3/library/stdtypes.html#str) со встроенными NUL-символами, больше не обрезаются. Исправление от Erlend E. Aasland.
- [bpo-44801](https://python-all.ru/3/whatsnew/changelog.html): Обеспечено, что переменная [`ParamSpec`](https://python-all.ru/3/library/typing.html#typing.ParamSpec) в Callable может быть заменена только выражением параметров (списком типов, многоточием, ParamSpec или Concatenate).
- [bpo-44806](https://python-all.ru/3/whatsnew/changelog.html): Непротокольные подклассы [`typing.Protocol`](https://python-all.ru/3/library/typing.html#typing.Protocol) теперь игнорируют метод `__init__`, унаследованный от базовых классов-протоколов.
- [bpo-27275](https://python-all.ru/3/whatsnew/changelog.html): [`collections.OrderedDict.popitem()`](https://python-all.ru/3/library/collections.html#collections.OrderedDict.popitem) и `collections.OrderedDict.pop()` больше не вызывают методы `__getitem__` и `__delitem__` подклассов OrderedDict.
- [bpo-44793](https://python-all.ru/3/whatsnew/changelog.html): Исправлена проверка количества аргументов при подписке обобщённого типа с параметром `ParamSpec`.
- [bpo-44784](https://python-all.ru/3/whatsnew/changelog.html): В тестах importlib.metadata переопределено поведение предупреждений для ожидаемых DeprecationWarnings (importlib\_metadata 4.6.3).
- [bpo-44667](https://python-all.ru/3/whatsnew/changelog.html): [`tokenize.tokenize()`](https://python-all.ru/3/library/tokenize.html#tokenize.tokenize) больше некорректно не генерирует токен `NEWLINE`, если исходник не заканчивается символом новой строки, но последняя строка является комментарием, так как функция уже генерирует токен `NL`. Исправление от Pablo Galindo.
- [bpo-44771](https://python-all.ru/3/whatsnew/changelog.html): Добавлен модуль `importlib.simple`, реализующий адаптеры от интерфейса чтения низкоуровневых ресурсов к интерфейсу `TraversableResources`. Устаревший API (`path`, `contents`, …) теперь полностью поддерживается API `.files()` с использованием прослойки совместимости для загрузчиков ресурсов, не имеющих этой функциональности. Полная совместимость по возможностям с `importlib_resources` 5.2.
- [bpo-44752](https://python-all.ru/3/whatsnew/changelog.html): `rcompleter` не вызывает [`getattr()`](https://python-all.ru/3/library/functions.html#getattr) для объектов [`property`](https://python-all.ru/3/library/functions.html#property), чтобы избежать побочного эффекта вычисления соответствующего метода.
- [bpo-44747](https://python-all.ru/3/whatsnew/changelog.html): Рефакторинг использования `sys._getframe` в модуле `typing`. Исправление предоставлено Yurii Karabas.
- [bpo-42378](https://python-all.ru/3/whatsnew/changelog.html): Исправляет проблему перезаписи файла журнала при использовании [`logging.FileHandler`](https://python-all.ru/3/library/logging.handlers.html#logging.FileHandler) в [`atexit`](https://python-all.ru/3/library/atexit.html#module-atexit) с *filemode*, установленным в `'w'`. Обратите внимание: это приведёт к тому, что сообщение в *atexit* не будет записано, если поток журнала уже закрыт из-за завершения работы системы журналирования.
- [bpo-44720](https://python-all.ru/3/whatsnew/changelog.html): Объекты `weakref.proxy`, ссылающиеся на не-итераторы, теперь вызывают `TypeError` вместо разыменования нулевого слота `tp_iternext` и аварийного завершения.
- [bpo-44704](https://python-all.ru/3/whatsnew/changelog.html): Реализация `collections.abc.Set._hash()` теперь соответствует реализации `frozenset.__hash__()`.
- [bpo-44666](https://python-all.ru/3/whatsnew/changelog.html): Исправлена проблема в [`compileall.compile_file()`](https://python-all.ru/3/library/compileall.html#compileall.compile_file) при перенаправлении `sys.stdout`. Исправление предоставлено Stefan Hölzl.
- [bpo-44688](https://python-all.ru/3/whatsnew/changelog.html): [`sqlite3.Connection.create_collation()`](https://python-all.ru/3/library/sqlite3.html#sqlite3.Connection.create_collation) теперь принимает не-ASCII названия сортировки. Исправление предоставлено Erlend E. Aasland.
- [bpo-44690](https://python-all.ru/3/whatsnew/changelog.html): Применение строгого режима *binacii.a2b\_base64* в *base64.b64decode*.
- [bpo-42854](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка в модуле `_ssl`, которая вызывала [`OverflowError`](https://python-all.ru/3/library/exceptions.html#OverflowError) при использовании `_ssl._SSLSocket.write()` и `_ssl._SSLSocket.read()` для большого значения параметра `len`. Исправление предоставлено Pablo Galindo.
- [bpo-44686](https://python-all.ru/3/whatsnew/changelog.html): Замена `unittest.mock._importer` на `pkgutil.resolve_name`.
- [bpo-44353](https://python-all.ru/3/whatsnew/changelog.html): Ускорение `NewType.__call__` за счёт реализации на C. Исправление предоставлено Yurii Karabas.
- [bpo-44682](https://python-all.ru/3/whatsnew/changelog.html): Изменение директивы [`pdb`](https://python-all.ru/3/library/pdb.html#module-pdb) *commands*: теперь запрещено устанавливать команды для недопустимой точки останова и выводится соответствующая ошибка.
- [bpo-44353](https://python-all.ru/3/whatsnew/changelog.html): Рефакторинг `typing.NewType`: функция преобразована в вызываемый класс. Исправление предоставлено Yurii Karabas.
- [bpo-44678](https://python-all.ru/3/whatsnew/changelog.html): Добавлено отдельное сообщение об ошибке для прерывистого дополнения в строгом режиме *binascii.a2b\_base64*.
- [bpo-44524](https://python-all.ru/3/whatsnew/changelog.html): Добавлены отсутствующие атрибуты `__name__` и `__qualname__` в классы модуля `typing`. Исправление предоставлено Yurii Karabas.
- [bpo-40897](https://python-all.ru/3/whatsnew/changelog.html): Приоритет отдан использованию текущего конструктора класса в [`inspect.signature()`](https://python-all.ru/3/library/inspect.html#inspect.signature). Исправление предоставлено Weipeng Hong.
- [bpo-44638](https://python-all.ru/3/whatsnew/changelog.html): Добавлена ссылка на проект zipp и подсказка по его использованию.
- [bpo-44648](https://python-all.ru/3/whatsnew/changelog.html): Исправлена неверная ошибка, выбрасываемая [`inspect.getsource()`](https://python-all.ru/3/library/inspect.html#inspect.getsource) при исследовании класса в интерактивном сеансе. Вместо [`TypeError`](https://python-all.ru/3/library/exceptions.html#TypeError) должно быть [`OSError`](https://python-all.ru/3/library/exceptions.html#OSError) с соответствующим сообщением об ошибке.
- [bpo-44608](https://python-all.ru/3/whatsnew/changelog.html): Исправлена утечка памяти в `_tkinter._flatten()` при вызове с последовательностью или множеством, но не со списком или кортежем.
- [bpo-44594](https://python-all.ru/3/whatsnew/changelog.html): Исправлен пограничный случай цепочки исключений `ExitStack` и `AsyncExitStack`. Теперь они будут соответствовать поведению блока `with`, когда `__context__` явно установлен в `None`, пока исключение находится в процессе обработки.
- [bpo-42799](https://python-all.ru/3/whatsnew/changelog.html): В [`fnmatch`](https://python-all.ru/3/library/fnmatch.html#module-fnmatch) размер кэша скомпилированных regex-шаблонов ([`functools.lru_cache()`](https://python-all.ru/3/library/functools.html#functools.lru_cache)) увеличен с 256 до 32768, что затронуло функции: [`fnmatch.fnmatch()`](https://python-all.ru/3/library/fnmatch.html#fnmatch.fnmatch), [`fnmatch.fnmatchcase()`](https://python-all.ru/3/library/fnmatch.html#fnmatch.fnmatchcase), [`fnmatch.filter()`](https://python-all.ru/3/library/fnmatch.html#fnmatch.filter).
- [bpo-41928](https://python-all.ru/3/whatsnew/changelog.html): Обновление [`shutil.copyfile()`](https://python-all.ru/3/library/shutil.html#shutil.copyfile): теперь вызывает [`FileNotFoundError`](https://python-all.ru/3/library/exceptions.html#FileNotFoundError) вместо запутывающего [`IsADirectoryError`](https://python-all.ru/3/library/exceptions.html#IsADirectoryError), когда путь, оканчивающийся на `os.path.sep`, не существует; [`shutil.copy()`](https://python-all.ru/3/library/shutil.html#shutil.copy) и [`shutil.copy2()`](https://python-all.ru/3/library/shutil.html#shutil.copy2) также затронуты.
- [bpo-44569](https://python-all.ru/3/whatsnew/changelog.html): Добавлена функция `StackSummary.format_frame()` в [`traceback`](https://python-all.ru/3/library/traceback.html#module-traceback). Это позволяет пользователям настраивать форматирование отдельных строк в трассировках без повторной реализации логики обработки рекурсивных трассировок.
- [bpo-44566](https://python-all.ru/3/whatsnew/changelog.html): Обработка подкласса StopIteration, возбуждаемого из генератора @contextlib.contextmanager.
- [bpo-44558](https://python-all.ru/3/whatsnew/changelog.html): Приведение реализации [`indexOf()`](https://python-all.ru/3/library/operator.html#operator.indexOf) к согласованности между версиями на C и Python. Исправление предоставлено Donghee Na.
- [bpo-41249](https://python-all.ru/3/whatsnew/changelog.html): Исправляет `TypedDict` для работы с `typing.get_type_hints()` и отложенной оценкой аннотаций между модулями.
- [bpo-44554](https://python-all.ru/3/whatsnew/changelog.html): Рефакторинг обработки аргументов в `pdb.main()` для упрощения обнаружения ошибок при загрузке входных данных и уточнения поведения при вызове модуля или скрипта.
- [bpo-34798](https://python-all.ru/3/whatsnew/changelog.html): Разбивка абзаца о параметрах конструктора [`pprint.PrettyPrinter`](https://python-all.ru/3/library/pprint.html#pprint.PrettyPrinter) для упрощения чтения.
- [bpo-44539](https://python-all.ru/3/whatsnew/changelog.html): Добавлена поддержка распознавания JPEG-файлов без маркеров JFIF или Exif.
- [bpo-44461](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка в обработке [`pdb`](https://python-all.ru/3/library/pdb.html#module-pdb) ошибки импорта из-за пакета, не имеющего модуля `__main__`.
- [bpo-43625](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка в обнаружении заголовков CSV-файлов с помощью [`csv.Sniffer.has_header()`](https://python-all.ru/3/library/csv.html#csv.Sniffer.has_header) и улучшена соответствующая документация.
- [bpo-44516](https://python-all.ru/3/whatsnew/changelog.html): Обновлена встроенная копия pip до версии 21.1.3
- [bpo-42892](https://python-all.ru/3/whatsnew/changelog.html): Исправлено исключение, возникавшее при разборе повреждённого multipart-письма [`email.message.EmailMessage`](https://python-all.ru/3/library/email.message.html#email.message.EmailMessage).
- [bpo-44468](https://python-all.ru/3/whatsnew/changelog.html): [`typing.get_type_hints()`](https://python-all.ru/3/library/typing.html#typing.get_type_hints) теперь находит аннотации в классах и базовых классах с неожиданными `__module__`. Ранее эти элементы MRO пропускались.
- [bpo-44491](https://python-all.ru/3/whatsnew/changelog.html): Разрешена очистка колбэка авторизации [`sqlite3`](https://python-all.ru/3/library/sqlite3.html#module-sqlite3) путём передачи [`None`](https://python-all.ru/3/library/constants.html#None) в [`set_authorizer()`](https://python-all.ru/3/library/sqlite3.html#sqlite3.Connection.set_authorizer). Исправление от Erlend E. Aasland.
- [bpo-43977](https://python-all.ru/3/whatsnew/changelog.html): Установлены правильные флаги [`Py_TPFLAGS_MAPPING`](https://python-all.ru/3/c-api/typeobj.html#c.Py_TPFLAGS_MAPPING) и [`Py_TPFLAGS_SEQUENCE`](https://python-all.ru/3/c-api/typeobj.html#c.Py_TPFLAGS_SEQUENCE) для подклассов, созданных до регистрации родительского класса как [`collections.abc.Mapping`](https://python-all.ru/3/library/collections.abc.html#collections.abc.Mapping) или [`collections.abc.Sequence`](https://python-all.ru/3/library/collections.abc.html#collections.abc.Sequence).
- [bpo-44482](https://python-all.ru/3/whatsnew/changelog.html): Исправлена крайне маловероятная утечка ресурсов в [`glob`](https://python-all.ru/3/library/glob.html#module-glob) в альтернативных реализациях Python.
- [bpo-44466](https://python-all.ru/3/whatsnew/changelog.html): Модуль [`faulthandler`](https://python-all.ru/3/library/faulthandler.html#module-faulthandler) теперь распознаёт, произошла ли фатальная ошибка во время сборки мусора. Исправление от Victor Stinner.
- [bpo-44471](https://python-all.ru/3/whatsnew/changelog.html): Теперь возбуждается [`TypeError`](https://python-all.ru/3/library/exceptions.html#TypeError) вместо [`AttributeError`](https://python-all.ru/3/library/exceptions.html#AttributeError) в [`contextlib.ExitStack.enter_context()`](https://python-all.ru/3/library/contextlib.html#contextlib.ExitStack.enter_context) и [`contextlib.AsyncExitStack.enter_async_context()`](https://python-all.ru/3/library/contextlib.html#contextlib.AsyncExitStack.enter_async_context) для объектов, не поддерживающих протоколы [менеджера контекста](https://python-all.ru/3/glossary.html#term-context-manager) или [асинхронного менеджера контекста](https://python-all.ru/3/glossary.html#term-asynchronous-context-manager) соответственно.
- [bpo-44404](https://python-all.ru/3/whatsnew/changelog.html): Метод `after()` объекта [`tkinter`](https://python-all.ru/3/library/tkinter.html#module-tkinter) теперь поддерживает вызываемые объекты без атрибута `__name__`.
- [bpo-41546](https://python-all.ru/3/whatsnew/changelog.html): [`pprint`](https://python-all.ru/3/library/pprint.html#module-pprint) (как и встроенная `print`) теперь не пытается записывать в `stdout`, когда он равен `None`.
- [bpo-44458](https://python-all.ru/3/whatsnew/changelog.html): `BUFFER_BLOCK_SIZE` теперь объявлен статическим, чтобы избежать коллизий при компоновке, когда bz2, lmza или zlib статически слинкованы.
- [bpo-44464](https://python-all.ru/3/whatsnew/changelog.html): Удалено исключение для flake8 в устаревших интерфейсах importlib.metadata. Синхронизировано с importlib\_metadata 4.6.
- [bpo-44446](https://python-all.ru/3/whatsnew/changelog.html): Учтено, что `lineno` может быть `None` в [`traceback.FrameSummary`](https://python-all.ru/3/library/traceback.html#traceback.FrameSummary).
- [bpo-44439](https://python-all.ru/3/whatsnew/changelog.html): Исправление в методах `bz2.BZ2File.write()` / `lzma.LZMAFile.write()`: когда входные данные – объект, поддерживающий буферный протокол, длина файла могла быть неверной.
- [bpo-44434](https://python-all.ru/3/whatsnew/changelog.html): \_thread.start\_new\_thread() больше не вызывает явно PyThread\_exit\_thread() при завершении потока – этот вызов был избыточным. В Linux с glibc pthread\_exit() аварийно завершает весь процесс, если dlopen() не может открыть файл libgcc\_s.so (например, ошибка EMFILE). Исправление от Victor Stinner.
- [bpo-42972](https://python-all.ru/3/whatsnew/changelog.html): Тип \_thread.RLock теперь полностью реализует протокол GC: добавлена функция traverse и флаг [`Py_TPFLAGS_HAVE_GC`](https://python-all.ru/3/c-api/typeobj.html#c.Py_TPFLAGS_HAVE_GC). Исправление от Victor Stinner.
- [bpo-44422](https://python-all.ru/3/whatsnew/changelog.html): Функция [`threading.enumerate()`](https://python-all.ru/3/library/threading.html#threading.enumerate) теперь использует реентерабельную блокировку для предотвращения зависания при реентерабельном вызове. Исправление от Victor Stinner.
- [bpo-38291](https://python-all.ru/3/whatsnew/changelog.html): Импорт typing.io или typing.re теперь выводит `DeprecationWarning`.
- [bpo-37880](https://python-all.ru/3/whatsnew/changelog.html): Действия argparse store\_const и append\_const теперь получают значение по умолчанию `None`, если не передан аргумент `const`. Ранее это вызывало [`TypeError`](https://python-all.ru/3/library/exceptions.html#TypeError).
- [bpo-44389](https://python-all.ru/3/whatsnew/changelog.html): Исправлено устаревание [`ssl.OP_NO_TLSv1_3`](https://python-all.ru/3/library/ssl.html#ssl.OP_NO_TLSv1_3).
- [bpo-27827](https://python-all.ru/3/whatsnew/changelog.html): `pathlib.PureWindowsPath.is_reserved()` теперь распознаёт более широкий диапазон зарезервированных имён файлов, включая имена с завершающими пробелами или двоеточиями.
- [bpo-44395](https://python-all.ru/3/whatsnew/changelog.html): Исправлен `as_string()` для корректной передачи unixfrom. Исправление от Donghee Na.
- [bpo-34266](https://python-all.ru/3/whatsnew/changelog.html): Обработка исключений при разборе аргумента команды run/restart [`pdb`](https://python-all.ru/3/library/pdb.html#module-pdb).
- [bpo-44362](https://python-all.ru/3/whatsnew/changelog.html): Улучшены сообщения об устаревании модуля [`ssl`](https://python-all.ru/3/library/ssl.html#module-ssl), отчёты об ошибках и документация по устареваниям.
- [bpo-44342](https://python-all.ru/3/whatsnew/changelog.html): \[Enum\] Изменена сериализация с по значению на по имени.
- [bpo-44356](https://python-all.ru/3/whatsnew/changelog.html): \[Enum\] Разрешены множественные примеси типов данных, если они все одинаковы.
- [bpo-44351](https://python-all.ru/3/whatsnew/changelog.html): Восстановлен `parse_makefile()` в `distutils.sysconfig`, так как его поведение отличается от аналогичной реализации в [`sysconfig`](https://python-all.ru/3/library/sysconfig.html#module-sysconfig).
- [bpo-35800](https://python-all.ru/3/whatsnew/changelog.html): `smtpd.MailmanProxy` теперь удалён, так как он непригоден для использования без внешнего модуля `mailman`. Исправление от Donghee Na.
- [bpo-44357](https://python-all.ru/3/whatsnew/changelog.html): Добавлена функция, возвращающая кубический корень заданного числа [`math.cbrt()`](https://python-all.ru/3/library/math.html#math.cbrt).
- [bpo-44339](https://python-all.ru/3/whatsnew/changelog.html): Изменено `math.pow(±0.0, -math.inf)`: теперь возвращается `inf` вместо возбуждения `ValueError`. Это приводит обработку особого случая `math.pow` в соответствие со стандартом IEEE 754.
- [bpo-44242](https://python-all.ru/3/whatsnew/changelog.html): Удалена проверка отсутствующего флага из создания Enum и перенесена в декоратор `verify`.
- [bpo-44246](https://python-all.ru/3/whatsnew/changelog.html): В `importlib.metadata` восстановлена совместимость результата `Distribution.entry_points` (`EntryPoints`) для соответствия ожиданиям старых реализаций, и выдаются предупреждения об устаревании для следующих случаев: A. Объекты `EntryPoints` снова стали изменяемыми, что допускает `sort()` и другие операции изменения на основе списков. Чтобы избежать предупреждений об устаревании, преобразуйте в изменяемую последовательность (например, `list(dist.entry_points).sort()`). B. Результаты `EntryPoints` снова допускают доступ по индексу. Чтобы избежать предупреждений об устаревании, сначала преобразуйте результат в Sequence (например, `tuple(dist.entry_points)[0]`).
- [bpo-44246](https://python-all.ru/3/whatsnew/changelog.html): В importlib.metadata.entry\_points дедупликация дистрибутивов больше не требует загрузки полных метаданных для объектов PathDistribution, что повышает производительность загрузки точек входа примерно в 10 раз.
- [bpo-43858](https://python-all.ru/3/whatsnew/changelog.html): Добавлена функция, возвращающая копию словаря уровней логирования: [`logging.getLevelNamesMapping()`](https://python-all.ru/3/library/logging.html#logging.getLevelNamesMapping)
- [bpo-44260](https://python-all.ru/3/whatsnew/changelog.html): Конструктор [`random.Random`](https://python-all.ru/3/library/random.html#random.Random) больше не читает системную энтропию без необходимости.
- [bpo-44254](https://python-all.ru/3/whatsnew/changelog.html): На Mac текст кнопок turtledemo теперь окрашивается в цвет, который работает как на светлом, так и на тёмном фоне. Программисты не могут контролировать последнее.
- [bpo-44258](https://python-all.ru/3/whatsnew/changelog.html): Поддержка PEP 515 для инициализации Fraction из строки.
- [bpo-44235](https://python-all.ru/3/whatsnew/changelog.html): Удалены устаревшие функции в [`gettext`](https://python-all.ru/3/library/gettext.html#module-gettext). Патч от Donghee Na.
- [bpo-38693](https://python-all.ru/3/whatsnew/changelog.html): В importlib.resources теперь предпочитаются f-строки вместо `.format`.
- [bpo-33693](https://python-all.ru/3/whatsnew/changelog.html): Importlib.metadata теперь предпочитает f-строки методу .format.
- [bpo-44241](https://python-all.ru/3/whatsnew/changelog.html): Внесены небольшие изменения из importlib\_metadata 4.1: протокол SimplePath, поддержка Metadata 2.2.
- [bpo-43216](https://python-all.ru/3/whatsnew/changelog.html): Удалён `@asyncio.coroutine` [декоратор](https://python-all.ru/3/glossary.html#term-decorator), обеспечивавший совместимость устаревших корутин на основе генераторов с кодом async/await; удалён `asyncio.coroutines.CoroWrapper`, использовавшийся для обёртывания устаревших объектов корутин в режиме отладки. Декоратор был объявлен устаревшим начиная с Python 3.8, и его удаление первоначально планировалось на Python 3.10. Патч от Illia Volochii.
- [bpo-44210](https://python-all.ru/3/whatsnew/changelog.html): Сделать importlib.metadata.\_meta.PackageMetadata открытым.
- [bpo-43643](https://python-all.ru/3/whatsnew/changelog.html): Объявить readers.MultiplexedPath.name свойством в соответствии со спецификацией.
- [bpo-27334](https://python-all.ru/3/whatsnew/changelog.html): Менеджер контекста [`sqlite3`](https://python-all.ru/3/library/sqlite3.html#module-sqlite3) теперь выполняет откат (тем самым освобождая блокировку БД), если коммит не удался. Патч от Luca Citi и Erlend E. Aasland.
- [bpo-4928](https://python-all.ru/3/whatsnew/changelog.html): Документировано существующее поведение на POSIX: NamedTemporaryFiles не удаляются, когда создающий процесс убит с помощью SIGKILL
- [bpo-44154](https://python-all.ru/3/whatsnew/changelog.html): Оптимизировать упаковку (pickling) [`fractions.Fraction`](https://python-all.ru/3/library/fractions.html#fractions.Fraction) для больших компонентов.
- [bpo-33433](https://python-all.ru/3/whatsnew/changelog.html): Для IPv4-отображённых IPv6-адресов ([**RFC 4291**](https://python-all.ru/3/whatsnew/changelog.html), раздел 2.5.5.2) проверка [`ipaddress.IPv6Address.is_private`](https://python-all.ru/3/library/ipaddress.html#ipaddress.IPv6Address.is_private) откладывается на отображённый IPv4-адрес. Это исправляет ошибку, при которой публичные отображённые IPv4-адреса считались частными по результатам IPv6-проверки.
- [bpo-44150](https://python-all.ru/3/whatsnew/changelog.html): Добавить необязательный аргумент *weights* в statistics.fmean().
- [bpo-44142](https://python-all.ru/3/whatsnew/changelog.html): [`ast.unparse()`](https://python-all.ru/3/library/ast.html#ast.unparse) теперь будет отбрасывать избыточные круглые скобки, когда кортежи используются как цели присваивания (например, в циклах for).
- [bpo-44145](https://python-all.ru/3/whatsnew/changelog.html): Вычисления [`hmac`](https://python-all.ru/3/library/hmac.html#module-hmac) не освобождали GIL при вызове C-API OpenSSL `HMAC_Update` (новая возможность в 3.9). Это непреднамеренно препятствовало параллельным вычислениям, в отличие от других поддерживаемых алгоритмов [`hashlib`](https://python-all.ru/3/library/hashlib.html#module-hashlib).
- [bpo-44095](https://python-all.ru/3/whatsnew/changelog.html): [`zipfile.Path`](https://python-all.ru/3/library/zipfile.html#zipfile.Path) теперь поддерживает атрибуты [`zipfile.Path.stem`](https://python-all.ru/3/library/zipfile.html#zipfile.Path.stem), [`zipfile.Path.suffixes`](https://python-all.ru/3/library/zipfile.html#zipfile.Path.suffixes) и [`zipfile.Path.suffix`](https://python-all.ru/3/library/zipfile.html#zipfile.Path.suffix).
- [bpo-44077](https://python-all.ru/3/whatsnew/changelog.html): Теперь стало возможным получать поля IP-заголовка: тип обслуживания (ToS), также известный как дифференцированные услуги (DS), кодовая точка дифференцированных услуг (DSCP) и явное уведомление о перегрузке (ECN) с помощью `socket.IP_RECVTOS`.
- [bpo-37788](https://python-all.ru/3/whatsnew/changelog.html): Исправлена утечка ссылки, когда объект потока (Thread) никогда не присоединяется.
- [bpo-38908](https://python-all.ru/3/whatsnew/changelog.html): Подклассы `typing.Protocol`, в которых объявлены только переменные данных, будут теперь вызывать `TypeError` при проверке с помощью `isinstance`, если они не декорированы `runtime_checkable()`. Ранее такие проверки проходили молча. Патч предоставлен Yurii Karabas.
- [bpo-44098](https://python-all.ru/3/whatsnew/changelog.html): `typing.ParamSpec` больше не будет находиться в `__parameters__` большинства дженериков [`typing`](https://python-all.ru/3/library/typing.html#module-typing), за исключением допустимых мест использования, указанных в [**PEP 612**](https://python-all.ru/3/whatsnew/changelog.html). Это предотвращает некорректное использование, например `typing.List[P][int]`. Это изменение означает, что некорректное использование, которое могло проходить молча в 3.10 beta 1 и ранее, теперь будет вызывать ошибку.
- [bpo-44089](https://python-all.ru/3/whatsnew/changelog.html): Разрешено наследование от `csv.Error` в 3.10 (это было разрешено в 3.9 и ранее, но было запрещено в ранних версиях 3.10).
- [bpo-44081](https://python-all.ru/3/whatsnew/changelog.html): [`ast.unparse()`](https://python-all.ru/3/library/ast.html#ast.unparse) теперь не использует лишние пробелы для разделения `lambda` и `:`, если нет параметров.
- [bpo-44061](https://python-all.ru/3/whatsnew/changelog.html): Исправлена регрессия в предыдущем выпуске при вызове [`pkgutil.iter_modules()`](https://python-all.ru/3/library/pkgutil.html#pkgutil.iter_modules) со списком объектов [`pathlib.Path`](https://python-all.ru/3/library/pathlib.html#pathlib.Path)
- [bpo-44059](https://python-all.ru/3/whatsnew/changelog.html): Зарегистрировать браузер SerenityOS в модуле [`webbrowser`](https://python-all.ru/3/library/webbrowser.html#module-webbrowser).
- [bpo-36515](https://python-all.ru/3/whatsnew/changelog.html): Модуль [`hashlib`](https://python-all.ru/3/library/hashlib.html#module-hashlib) больше не выполняет невыровненные обращения к памяти при компиляции для платформ ARM.
- [bpo-40465](https://python-all.ru/3/whatsnew/changelog.html): Удалены возможности модуля random, объявленные устаревшими в Python 3.9.
- [bpo-44018](https://python-all.ru/3/whatsnew/changelog.html): random.seed() больше не изменяет входные данные типа bytearray.
- [bpo-38352](https://python-all.ru/3/whatsnew/changelog.html): Добавить `IO`, `BinaryIO`, `TextIO`, `Match` и `Pattern` в `typing.__all__`. Патч от Jelle Zijlstra.
- [bpo-44002](https://python-all.ru/3/whatsnew/changelog.html): [`urllib.parse`](https://python-all.ru/3/library/urllib.parse.html#module-urllib.parse) теперь использует `functool.lru_cache()` для внутренних кешей разбиения URL и цитирования вместо того, чтобы изобретать их заново, как в 90-х.

  Незадокументированный внутренний API класса [`urllib.parse`](https://python-all.ru/3/library/urllib.parse.html#module-urllib.parse) `Quoted` теперь устарел; будет удалён в версии 3.14.
- [bpo-43972](https://python-all.ru/3/whatsnew/changelog.html): Когда [`http.server.SimpleHTTPRequestHandler`](https://python-all.ru/3/library/http.server.html#http.server.SimpleHTTPRequestHandler) отправляет `301 (Moved Permanently)` для пути к каталогу, не оканчивающегося на `/`, добавляется заголовок `Content-Length: 0`. Это улучшает поведение для некоторых клиентов.
- [bpo-28528](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка в [`pdb`](https://python-all.ru/3/library/pdb.html#module-pdb), когда `checkline()` вызывает [`AttributeError`](https://python-all.ru/3/library/exceptions.html#AttributeError), если он вызван после `reset()`.
- [bpo-43853](https://python-all.ru/3/whatsnew/changelog.html): Улучшена обработка строк для пользовательских функций и агрегатов [`sqlite3`](https://python-all.ru/3/library/sqlite3.html#module-sqlite3):

  - Теперь можно передавать строки с встроенными нулевыми символами в UDF
  - Сбои преобразования теперь правильно вызывают [`MemoryError`](https://python-all.ru/3/library/exceptions.html#MemoryError)

  Патч от Erlend E. Aasland.
- [bpo-43666](https://python-all.ru/3/whatsnew/changelog.html): AIX: `Lib/_aix_support.get_platform()` может завершаться ошибкой в AIX WPAR. Похоже, файловый набор bos.rte содержит дату сборки как в LPAR, так и в WPAR, поэтому запрашивается этот набор, а не bos.mp64. Чтобы предотвратить подобную ситуацию (отсутствие даты сборки в ODM), предоставляется значение (9988), достаточное для завершения сборки. Патч от M Felt.
- [bpo-43650](https://python-all.ru/3/whatsnew/changelog.html): Исправлено [`MemoryError`](https://python-all.ru/3/library/exceptions.html#MemoryError) в [`shutil.unpack_archive()`](https://python-all.ru/3/library/shutil.html#shutil.unpack_archive), которое не работает внутри `shutil._unpack_zipfile()` на больших файлах. Патч от Igor Bolshakov.
- [bpo-43612](https://python-all.ru/3/whatsnew/changelog.html): [`zlib.compress()`](https://python-all.ru/3/library/zlib.html#zlib.compress) теперь принимает параметр wbits, который позволяет пользователям сжимать данные как сырой блок deflate без заголовков и трейлеров zlib за один раз. Раньше для этого требовалось создавать экземпляр `zlib.compressobj`. Он также предлагает более быструю альтернативу `gzip.compress` при использовании wbits=31.
- [bpo-43392](https://python-all.ru/3/whatsnew/changelog.html): `importlib._bootstrap._find_and_load()` теперь реализует двухэтапную проверку, чтобы избежать блокировки, когда модули уже импортированы и готовы. Это улучшает производительность повторных вызовов [`importlib.import_module()`](https://python-all.ru/3/library/importlib.html#importlib.import_module) и [`importlib.__import__()`](https://python-all.ru/3/library/importlib.html#importlib.__import__).
- [bpo-43318](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка, из-за которой [`pdb`](https://python-all.ru/3/library/pdb.html#module-pdb) не всегда отображает очищенные точки останова.
- [bpo-43234](https://python-all.ru/3/whatsnew/changelog.html): Запрещена передача исполнителей, не являющихся [`concurrent.futures.ThreadPoolExecutor`](https://python-all.ru/3/library/concurrent.futures.html#concurrent.futures.ThreadPoolExecutor), в `loop.set_default_executor()` после объявления устаревшим в Python 3.8. Патч от Illia Volochii.
- [bpo-43232](https://python-all.ru/3/whatsnew/changelog.html): Запрещены ранее устаревшие потенциально деструктивные операции над `asyncio.trsock.TransportSocket`. Патч от Illia Volochii.
- [bpo-30077](https://python-all.ru/3/whatsnew/changelog.html): Добавлена поддержка псевдосжатия Apple aifc/sowt
- [bpo-42971](https://python-all.ru/3/whatsnew/changelog.html): Добавлено определение `errno.EQFULL` для платформ, которые определяют эту константу (например, macOS).
- [bpo-43086](https://python-all.ru/3/whatsnew/changelog.html): Добавлен новый необязательный параметр `strict_mode` в *binascii.a2b\_base64*. Когда `scrict_mode` установлен в `True`, функция *a2b\_base64* будет принимать только корректное содержимое base64. Более подробно о том, что такое «корректное содержимое base64», можно найти в документации этой функции.
- [bpo-43024](https://python-all.ru/3/whatsnew/changelog.html): Улучшена сигнатура справки для [`traceback.print_exception()`](https://python-all.ru/3/library/traceback.html#traceback.print_exception), [`traceback.format_exception()`](https://python-all.ru/3/library/traceback.html#traceback.format_exception) и [`traceback.format_exception_only()`](https://python-all.ru/3/library/traceback.html#traceback.format_exception_only).
- [bpo-33809](https://python-all.ru/3/whatsnew/changelog.html): Добавлен метод [`traceback.TracebackException.print()`](https://python-all.ru/3/library/traceback.html#traceback.TracebackException.print), который выводит отформатированную информацию об исключении.
- [bpo-42862](https://python-all.ru/3/whatsnew/changelog.html): [`sqlite3`](https://python-all.ru/3/library/sqlite3.html#module-sqlite3) теперь использует [`functools.lru_cache()`](https://python-all.ru/3/library/functools.html#functools.lru_cache) для реализации кеша операторов соединения. В качестве небольшой оптимизации размер кеша операторов по умолчанию увеличен со 100 до 128. Патч от Erlend E. Aasland.
- [bpo-41818](https://python-all.ru/3/whatsnew/changelog.html): Soumendra Ganguly: добавлены termios.tcgetwinsize(), termios.tcsetwinsize().
- [bpo-40497](https://python-all.ru/3/whatsnew/changelog.html): [`subprocess.check_output()`](https://python-all.ru/3/library/subprocess.html#subprocess.check_output) теперь вызывает [`ValueError`](https://python-all.ru/3/library/exceptions.html#ValueError), когда пользовательский код передаёт недопустимый именованный аргумент *check*. Раньше такое использование приводило к ошибке [`TypeError`](https://python-all.ru/3/library/exceptions.html#TypeError) позже. Патч от Rémi Lapeyre.
- [bpo-37449](https://python-all.ru/3/whatsnew/changelog.html): `ensurepip` теперь использует API `importlib.resources.files()` для обхода
- [bpo-40956](https://python-all.ru/3/whatsnew/changelog.html): Использование Argument Clinic в [`sqlite3`](https://python-all.ru/3/library/sqlite3.html#module-sqlite3). Патчи от Erlend E. Aasland.
- [bpo-41730](https://python-all.ru/3/whatsnew/changelog.html): `DeprecationWarning` теперь вызывается при импорте `tkinter.tix`, который объявлен устаревшим в документации начиная с Python 3.6.
- [bpo-20684](https://python-all.ru/3/whatsnew/changelog.html): Удалена неиспользуемая функция `_signature_get_bound_param` из [`inspect`](https://python-all.ru/3/library/inspect.html#module-inspect) – от Anthony Sottile.
- [bpo-41402](https://python-all.ru/3/whatsnew/changelog.html): Исправлено [`email.message.EmailMessage.set_content()`](https://python-all.ru/3/library/email.message.html#email.message.EmailMessage.set_content) при вызове с двоичными данными и кодировкой передачи содержимого `7bit`.
- [bpo-32695](https://python-all.ru/3/whatsnew/changelog.html): Именованные аргументы *compresslevel* и *preset* функции [`tarfile.open()`](https://python-all.ru/3/library/tarfile.html#tarfile.open) теперь задокументированы и протестированы.
- [bpo-41137](https://python-all.ru/3/whatsnew/changelog.html): Использование кодировки utf-8 при чтении файлов .pdbrc. Патч от Srinivas Reddy Thatiparthy.
- [bpo-24391](https://python-all.ru/3/whatsnew/changelog.html): Улучшены строковые представления объектов синхронизации [`threading`](https://python-all.ru/3/library/threading.html#module-threading): [`Semaphore`](https://python-all.ru/3/library/threading.html#threading.Semaphore), [`BoundedSemaphore`](https://python-all.ru/3/library/threading.html#threading.BoundedSemaphore), [`Event`](https://python-all.ru/3/library/threading.html#threading.Event) и [`Barrier`](https://python-all.ru/3/library/threading.html#threading.Barrier).
- [bpo-5846](https://python-all.ru/3/whatsnew/changelog.html): Объявлены устаревшими следующие функции [`unittest`](https://python-all.ru/3/library/unittest.html#module-unittest), запланированные к удалению в Python 3.13:

  - `findTestCases()`
  - `makeSuite()`
  - `getTestCaseNames()`

  Вместо них используйте методы [`TestLoader`](https://python-all.ru/3/library/unittest.html#unittest.TestLoader):

  - [`unittest.TestLoader.loadTestsFromModule()`](https://python-all.ru/3/library/unittest.html#unittest.TestLoader.loadTestsFromModule)
  - [`unittest.TestLoader.loadTestsFromTestCase()`](https://python-all.ru/3/library/unittest.html#unittest.TestLoader.loadTestsFromTestCase)
  - [`unittest.TestLoader.getTestCaseNames()`](https://python-all.ru/3/library/unittest.html#unittest.TestLoader.getTestCaseNames)

  Патч от Эрленда Э. Асланда.
- [bpo-40563](https://python-all.ru/3/whatsnew/changelog.html): Поддержка pathlike-объектов в dbm/shelve. Патч от Хакана Челика и Генри-Джозефа Одеуда.
- [bpo-34990](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка Y2k38 в модуле compileall, из-за которой он не мог скомпилировать файлы с временем модификации после 2038 года.
- [bpo-39549](https://python-all.ru/3/whatsnew/changelog.html): Раньше код reprlib.Repr использовал жёстко заданную строку '…', а теперь обновлён для использования атрибута «fillvalue», значение которого по умолчанию равно '…' и может быть переопределено как в отдельных экземплярах reprlib.Repr, так и в их подклассах.
- [bpo-37022](https://python-all.ru/3/whatsnew/changelog.html): [`pdb`](https://python-all.ru/3/library/pdb.html#module-pdb) теперь отображает исключения из `repr()` с помощью команд `p` и `pp`.
- [bpo-38840](https://python-all.ru/3/whatsnew/changelog.html): Исправление `test___all__` на платформах, где нет реализации разделяемой памяти.
- [bpo-39359](https://python-all.ru/3/whatsnew/changelog.html): Добавлена одна пропущенная проверка того, что пароль является объектом bytes для зашифрованного zip-файла.
- [bpo-38741](https://python-all.ru/3/whatsnew/changelog.html): [`configparser`](https://python-all.ru/3/library/configparser.html#module-configparser): использование '\]' внутри заголовка раздела больше не обрезает имя раздела на символе '\]'.
- [bpo-38415](https://python-all.ru/3/whatsnew/changelog.html): Добавлено недостающее поведение в [`contextlib.asynccontextmanager()`](https://python-all.ru/3/library/contextlib.html#contextlib.asynccontextmanager) для соответствия [`contextlib.contextmanager()`](https://python-all.ru/3/library/contextlib.html#contextlib.contextmanager), чтобы декорированные функции сами могли быть декораторами.
- [bpo-30256](https://python-all.ru/3/whatsnew/changelog.html): Передача аргумента `manager_owned` из multiprocessing BaseProxy через AutoProxy.
- [bpo-27513](https://python-all.ru/3/whatsnew/changelog.html): [`email.utils.getaddresses()`](https://python-all.ru/3/library/email.utils.html#email.utils.getaddresses) теперь принимает объекты [`email.header.Header`](https://python-all.ru/3/library/email.header.html#email.header.Header) наряду со строковыми значениями. Патч от Закери Спайтца.
- [bpo-16379](https://python-all.ru/3/whatsnew/changelog.html): Добавлены код ошибки SQLite и её название в исключения [`sqlite3`](https://python-all.ru/3/library/sqlite3.html#module-sqlite3). Патч от Авива Паливоды, Даниэля Шахафа и Эрленда Э. Асланда.
- [bpo-26228](https://python-all.ru/3/whatsnew/changelog.html): pty.spawn больше не зависает на FreeBSD, macOS и Solaris.
- [bpo-33349](https://python-all.ru/3/whatsnew/changelog.html): lib2to3 теперь распознаёт асинхронные генераторы везде.
- [bpo-29298](https://python-all.ru/3/whatsnew/changelog.html): Исправление `TypeError`, когда обязательные подпарсеры без `dest` не получают аргументов. Патч от Энтони Соттила.

### Документация

- [bpo-45216](https://python-all.ru/3/whatsnew/changelog.html): Удалено лишнее перечисление методов в документации `difflib`. Оно дважды отображалось в pydoc и местами устарело.
- [bpo-45024](https://python-all.ru/3/whatsnew/changelog.html): Документация [`collections.abc`](https://python-all.ru/3/library/collections.abc.html#module-collections.abc) расширена: теперь явно описано, как работают проверки экземпляров и подклассов, добавлены дополнительные примеры в doctest и исчерпывающий список ABC, которые проверяют принадлежность исключительно по наличию соответствующих [специальных методов](https://python-all.ru/3/glossary.html#term-special-method). Патч от Рэймонда Хеттингера.
- [bpo-44957](https://python-all.ru/3/whatsnew/changelog.html): Синтаксис объединения типов из PEP 604 теперь используется везде, где возможно. Также `X | Y` более заметно упоминается в разделе о `Union`, а `X | None` теперь вообще упоминается в разделе о `Optional`.
- [bpo-16580](https://python-all.ru/3/whatsnew/changelog.html): Добавлены эквиваленты кода для методов [`int.to_bytes()`](https://python-all.ru/3/library/stdtypes.html#int.to_bytes) и [`int.from_bytes()`](https://python-all.ru/3/library/stdtypes.html#int.from_bytes), а также тесты, проверяющие их корректность.
- [bpo-44903](https://python-all.ru/3/whatsnew/changelog.html): Удалены файл `othergui.rst`, все ссылки на него и список GUI-фреймворков в FAQ. Вместо этого добавлены ссылки на страницу Python Wiki [о GUI-фреймворках](https://python-all.ru/3/whatsnew/changelog.html).
- [bpo-33479](https://python-all.ru/3/whatsnew/changelog.html): Документация Tkinter значительно расширена: добавлены новые разделы «Архитектура» и «Модель потоков».
- [bpo-36700](https://python-all.ru/3/whatsnew/changelog.html): Обновлены ссылки на RFC в [`base64`](https://python-all.ru/3/library/base64.html#module-base64) – теперь они ведут на [**RFC 4648**](https://python-all.ru/3/whatsnew/changelog.html); добавлен раздел, указывающий пользователям на новый раздел «Вопросы безопасности» этого RFC.
- [bpo-44740](https://python-all.ru/3/whatsnew/changelog.html): Заменены вхождения «Web» и «Internet» с заглавной буквы на строчные в соответствии с пересмотренным в 2016 году Руководством по стилю Associated Press.
- [bpo-44693](https://python-all.ru/3/whatsnew/changelog.html): Обновлено определение \_\_future\_\_ в глоссарии: сбивающее с толку слово «псевдомодуль» заменено более точным описанием.
- [bpo-35183](https://python-all.ru/3/whatsnew/changelog.html): Добавлены типичные примеры в документацию os.path.splitext.
- [bpo-30511](https://python-all.ru/3/whatsnew/changelog.html): Уточнено, что [`shutil.make_archive()`](https://python-all.ru/3/library/shutil.html#shutil.make_archive) не является потокобезопасным из-за зависимости от смены текущего рабочего каталога.
- [bpo-44561](https://python-all.ru/3/whatsnew/changelog.html): Обновлены три устаревшие гиперссылки в Doc/distributing/index.rst: «Project structure», «Building and packaging the project» и «Uploading the project to the Python Packaging Index».
- [bpo-44651](https://python-all.ru/3/whatsnew/changelog.html): Удалена запись «coercion» из Doc/glossary.rst из-за устаревшего определения.
- [bpo-42958](https://python-all.ru/3/whatsnew/changelog.html): Обновлены докстринг и документация [`filecmp.cmp()`](https://python-all.ru/3/library/filecmp.html#filecmp.cmp) для большей точности и меньшей путаницы, особенно в отношении аргумента *shallow*.
- [bpo-44631](https://python-all.ru/3/whatsnew/changelog.html): Проведён рефакторинг кода `repr()` модуля `_Environ` (os module).
- [bpo-44613](https://python-all.ru/3/whatsnew/changelog.html): importlib.metadata больше не является временным.
- [bpo-44558](https://python-all.ru/3/whatsnew/changelog.html): Привести docstring и реализацию на Python [`countOf()`](https://python-all.ru/3/library/operator.html#operator.countOf) в соответствие с поведением его реализации на C.
- [bpo-44544](https://python-all.ru/3/whatsnew/changelog.html): Перечислены все именованные аргументы для [`textwrap.wrap()`](https://python-all.ru/3/library/textwrap.html#textwrap.wrap), [`textwrap.fill()`](https://python-all.ru/3/library/textwrap.html#textwrap.fill) и [`textwrap.shorten()`](https://python-all.ru/3/library/textwrap.html#textwrap.shorten). Теперь есть навигационные ссылки на атрибуты `TextWrap`, что упрощает навигацию и минимизирует дублирование в документации.
- [bpo-38062](https://python-all.ru/3/whatsnew/changelog.html): Уточнено, что atexit внутренне использует сравнение на равенство.
- [bpo-40620](https://python-all.ru/3/whatsnew/changelog.html): Преобразовать примеры в разделе 4.3 учебника controlflow.rst в стиль демонстрации интерпретатора.
- [bpo-43066](https://python-all.ru/3/whatsnew/changelog.html): Добавлено предупреждение в документацию [`zipfile`](https://python-all.ru/3/library/zipfile.html#module-zipfile): аргумент filename с ведущим слешем может сделать архив недоступным для открытия в Windows.
- [bpo-39452](https://python-all.ru/3/whatsnew/changelog.html): Переписано `Doc/library/__main__.rst`. Расширен охват документа, чтобы явно обсудить и разграничить `__main__.py` в пакетах и выражение `__name__ == '__main__'` (и связанные с ним идиомы).
- [bpo-13814](https://python-all.ru/3/whatsnew/changelog.html): В FAQ по дизайну дан ответ на вопрос «Почему генераторы не поддерживают оператор with?»
- [bpo-27752](https://python-all.ru/3/whatsnew/changelog.html): Документация csv.Dialect стала более подробной.
- [bpo-44453](https://python-all.ru/3/whatsnew/changelog.html): Исправлена документация для возвращаемого типа [`sysconfig.get_path()`](https://python-all.ru/3/library/sysconfig.html#sysconfig.get_path).
- [bpo-44392](https://python-all.ru/3/whatsnew/changelog.html): Добавлен новый раздел в документацию C API для типов, используемых в аннотациях типов. Документированы `Py_GenericAlias` и `Py_GenericAliasType`.
- [bpo-38291](https://python-all.ru/3/whatsnew/changelog.html): Помечены `typing.io` и `typing.re` как устаревшие с Python 3.8 в документации. Они никогда должным образом не поддерживались проверяльщиками типов.
- [bpo-44322](https://python-all.ru/3/whatsnew/changelog.html): Документировано, что аргументы SyntaxError содержат кортеж details и что details корректируются для ошибок в выражениях подстановки полей f-строк.
- [bpo-42392](https://python-all.ru/3/whatsnew/changelog.html): Документировано устаревание и удаление параметра `loop` для многих функций и классов в [`asyncio`](https://python-all.ru/3/library/asyncio.html#module-asyncio).
- [bpo-44195](https://python-all.ru/3/whatsnew/changelog.html): Исправлены ссылки на `TraversableResources` в документации. `TraversableReader` не существует.
- [bpo-41963](https://python-all.ru/3/whatsnew/changelog.html): Документировано, что `ConfigParser` удаляет комментарии при чтении конфигурационных файлов.
- [bpo-44072](https://python-all.ru/3/whatsnew/changelog.html): Исправлено указание, где в иерархии числовых ABC добавляется поддержка `**`: в numbers.Complex, а не numbers.Integral.
- [bpo-43558](https://python-all.ru/3/whatsnew/changelog.html): Добавлено замечание в документацию [`dataclasses`](https://python-all.ru/3/library/dataclasses.html#module-dataclasses) о том, что `__init__()` любого базового класса должен быть вызван в `__post_init__()`, вместе с примером кода.
- [bpo-44025](https://python-all.ru/3/whatsnew/changelog.html): Уточнено, когда '\_' в операторах match является ключевым словом, а когда нет.
- [bpo-41706](https://python-all.ru/3/whatsnew/changelog.html): Исправлена документация о том, как вызываются методы типа `__add__` при вычислении операторных выражений.
- [bpo-41621](https://python-all.ru/3/whatsnew/changelog.html): Документировано, что параметр [`collections.defaultdict`](https://python-all.ru/3/library/collections.html#collections.defaultdict) `default_factory` по умолчанию равен `None` и является только позиционным.
- [bpo-41576](https://python-all.ru/3/whatsnew/changelog.html): документировано использование BaseException вместо голого except
- [bpo-21760](https://python-all.ru/3/whatsnew/changelog.html): Исправлено описание для \_\_file\_\_. Патч от Furkan Onder.
- [bpo-39498](https://python-all.ru/3/whatsnew/changelog.html): Добавлен указатель «Вопросы безопасности», который ссылается на модули стандартной библиотеки, имеющие явно задокументированные соображения безопасности.
- [bpo-33479](https://python-all.ru/3/whatsnew/changelog.html): Удалено безоговорочное утверждение, что tkinter является потокобезопасным. Оно не было истинным в течение нескольких лет и, вероятно, никогда им не было. Объяснение реального положения дел может быть добавлено позже, после дальнейшего обсуждения и, возможно, после патча \_tkinter.c.

### Тесты

- [bpo-40173](https://python-all.ru/3/whatsnew/changelog.html): Исправлено [`test.support.import_helper.import_fresh_module()`](https://python-all.ru/3/library/test.html#test.support.import_helper.import_fresh_module).
- [bpo-45280](https://python-all.ru/3/whatsnew/changelog.html): Добавлен тестовый случай для пустого [`typing.NamedTuple`](https://python-all.ru/3/library/typing.html#typing.NamedTuple).
- [bpo-45269](https://python-all.ru/3/whatsnew/changelog.html): Добавлен сценарий, когда в `c_make_encoder` передан неверный тип `markers`.
- [bpo-45128](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка `test_multiprocessing_fork`, вызванная манипуляциями с `test_logging` и `sys.modules`.
- [bpo-45209](https://python-all.ru/3/whatsnew/changelog.html): Исправлено предупреждение `UserWarning: resource_tracker` в `_test_multiprocessing._TestSharedMemory.test_shared_memory_cleaned_after_process_termination`
- [bpo-45185](https://python-all.ru/3/whatsnew/changelog.html): Включает тестовые случаи `TestEnumerations` в наборе `test_ssl`.
- [bpo-45195](https://python-all.ru/3/whatsnew/changelog.html): Исправлен test\_readline.test\_nonascii(): иногда символ новой строки не записывается в конце, поэтому не нужно ожидать его в выводе. Патч от Victor Stinner.
- [bpo-45156](https://python-all.ru/3/whatsnew/changelog.html): Исправляет бесконечный цикл при [`unittest.mock.seal()`](https://python-all.ru/3/library/unittest.mock.html#unittest.mock.seal) моков, созданных `create_autospec()`.
- [bpo-45125](https://python-all.ru/3/whatsnew/changelog.html): Улучшает тесты сериализации и документацию объектов `SharedMemory` и `SharableList`.
- [bpo-44860](https://python-all.ru/3/whatsnew/changelog.html): Обновляет `test_sysconfig.test_user_similar()` для схемы posix\_user: `platlib` не использует [`sys.platlibdir`](https://python-all.ru/3/library/sys.html#sys.platlibdir). Патч Виктора Стиннера.
- [bpo-45052](https://python-all.ru/3/whatsnew/changelog.html): `WithProcessesTestSharedMemory.test_shared_memory_basics` тест был проигнорирован, потому что строка `self.assertEqual(sms.size, sms2.size)` завершалась ошибкой. Теперь она удалена, и тест больше не пропускается.

  Основная причина удаления этой строки из теста в том, что `size` `SharedMemory` никогда не гарантирует одинаковое значение. Это определяется платформой.
- [bpo-44895](https://python-all.ru/3/whatsnew/changelog.html): libregrtest теперь очищает кеш типов позже, чтобы снизить риск ложных срабатываний при проверке утечек ссылок. Раньше кеш типов очищался слишком рано, и libregrtest выдавал ложное срабатывание об утечках ссылок в очень специфических условиях. Патч Ирит Катриэль и Виктора Стиннера.
- [bpo-45042](https://python-all.ru/3/whatsnew/changelog.html): Исправляет проблему, из-за которой тестовые классы, декорированные `@hashlib_helper.requires_hashdigest`, пропускались постоянно.
- [bpo-25130](https://python-all.ru/3/whatsnew/changelog.html): Добавлены вызовы [`gc.collect()`](https://python-all.ru/3/library/gc.html#gc.collect) в тестах для поддержки PyPy.
- [bpo-45011](https://python-all.ru/3/whatsnew/changelog.html): Тесты, зависящие от C-расширения `_asyncio`, сделаны необязательными, чтобы можно было запускать их в альтернативных реализациях Python. Патч Сергея Сторчаки.
- [bpo-44949](https://python-all.ru/3/whatsnew/changelog.html): Исправлены тесты автодополнения истории в test\_readline: иногда символ новой строки не записывается в конце, поэтому не нужно его ожидать в выводе.
- [bpo-44891](https://python-all.ru/3/whatsnew/changelog.html): Добавлены тесты для уточнения, что [`id()`](https://python-all.ru/3/library/functions.html#id) сохраняется, когда `obj * 1` используется на объектах [`str`](https://python-all.ru/3/library/stdtypes.html#str) и [`bytes`](https://python-all.ru/3/library/stdtypes.html#bytes). Патч Никиты Соболева.
- [bpo-44852](https://python-all.ru/3/whatsnew/changelog.html): Добавлена возможность массового подавления DeprecationWarnings при выполнении регрессионного набора тестов.
- [bpo-40928](https://python-all.ru/3/whatsnew/changelog.html): Уведомлять пользователей, запускающих регрессионные тесты test\_decimal на macOS, о потенциально безвредных сообщениях «malloc can’t allocate region», выдаваемых test\_decimal.
- [bpo-44734](https://python-all.ru/3/whatsnew/changelog.html): Исправлена проблема точности чисел с плавающей запятой в тестах turtle.
- [bpo-44708](https://python-all.ru/3/whatsnew/changelog.html): Регрессионные тесты при запуске с -w теперь перезапускают только затронутые методы тестов, а не весь файл тестов.
- [bpo-42095](https://python-all.ru/3/whatsnew/changelog.html): Добавлены тесты интероперабельности для Apple plists: создание plist-файлов с помощью Python plistlib и разбор с помощью Apple plutil; и наоборот.
- [bpo-44647](https://python-all.ru/3/whatsnew/changelog.html): Добавлена постоянная переменная окружения с Unicode-значением в регрессионные тесты, чтобы гарантировать, что в будущем они будут обрабатывать этот случай использования. Если ваше тестовое окружение из-за этого нарушится, сообщите нам об ошибке и временно установите PYTHONREGRTEST\_UNICODE\_GUARD=0 в вашем тестовом окружении.
- [bpo-44515](https://python-all.ru/3/whatsnew/changelog.html): Исправлены недавно добавленные тесты contextlib, чтобы избежать предположения об использовании сборщика мусора с подсчётом ссылок
- [bpo-44287](https://python-all.ru/3/whatsnew/changelog.html): Исправлен asyncio test\_popen() из test\_windows\_utils с помощью более длительного таймаута. Используется военный, проверенный в боях таймаут [`test.support.SHORT_TIMEOUT`](https://python-all.ru/3/library/test.html#test.support.SHORT_TIMEOUT) вместо жёстко заданного таймаута в 10 секунд: по умолчанию он составляет 30 секунд, но увеличивается на медленных сборщиках. Патч Виктора Стиннера.
- [bpo-44451](https://python-all.ru/3/whatsnew/changelog.html): Сбросить фильтры `DeprecationWarning` в `test.test_importlib.test_metadata_api.APITests.test_entry_points_by_index`, чтобы избежать ошибки `StopIteration`, если `DeprecationWarnings` игнорируются.
- [bpo-44363](https://python-all.ru/3/whatsnew/changelog.html): Учтён address sanitizer в test\_capi. test\_capi теперь проходит при запуске с GCC address sanitizer.
- [bpo-44364](https://python-all.ru/3/whatsnew/changelog.html): Добавлены нецелочисленные тесты для функции [`math.sqrt()`](https://python-all.ru/3/library/math.html#math.sqrt).
- [bpo-43921](https://python-all.ru/3/whatsnew/changelog.html): Исправлен test\_ssl.test\_wrong\_cert\_tls13(): используется `suppress_ragged_eofs=False`, так как `read()` может вызывать [`ssl.SSLEOFError`](https://python-all.ru/3/library/ssl.html#ssl.SSLEOFError) в Windows. Патч Виктора Стиннера.
- [bpo-43921](https://python-all.ru/3/whatsnew/changelog.html): Исправлен test\_pha\_required\_nocert() из test\_ssl: перехватываются ещё два случая EOF (когда метод `recv()` возвращает пустую строку). Патч Виктора Стиннера.
- [bpo-44131](https://python-all.ru/3/whatsnew/changelog.html): Добавлен test\_frozenmain в test\_embed для тестирования C-функции `Py_FrozenMain()`. Патч Виктора Стиннера.
- [bpo-31904](https://python-all.ru/3/whatsnew/changelog.html): Регистр строки ошибки в test\_file\_not\_exists() игнорируется.
- [bpo-42083](https://python-all.ru/3/whatsnew/changelog.html): Добавлен тест для проверки, что `PyStructSequence_NewType` принимает `PyStructSequence_Desc` с полем `doc`, установленным в `NULL`.
- [bpo-35753](https://python-all.ru/3/whatsnew/changelog.html): Исправлен сбой в doctest при разборе модулей, содержащих необорачиваемые функции, путём пропуска этих функций.
- [bpo-30256](https://python-all.ru/3/whatsnew/changelog.html): Добавлен тест для вложенных очередей при использовании разделяемых объектов `multiprocessing` `AutoProxy[Queue]` внутри `ListProxy` и `DictProxy`

### Сборка

- [bpo-45220](https://python-all.ru/3/whatsnew/changelog.html): Избегать автоматической сборки с предварительными версиями Windows 11 SDK. Это можно переопределить, установив переменную окружения `DefaultWindowsSDKVersion` перед сборкой.
- [bpo-45020](https://python-all.ru/3/whatsnew/changelog.html): Замораживание модулей стандартной библиотеки, импортируемых при запуске. Это даёт значительное улучшение производительности запуска. При необходимости используйте ранее добавленную опцию командной строки «-X frozen\_modules=off» для принудительного импорта исходных модулей.
- [bpo-45188](https://python-all.ru/3/whatsnew/changelog.html): Сборки Windows теперь заново генерируют замороженные модули в начале сборки. Раньше регенерация происходила позже, и при изменении каких-либо модулей сборку приходилось перезапускать.
- [bpo-45163](https://python-all.ru/3/whatsnew/changelog.html): Исправляет сборку на платформе Haiku.
- [bpo-45067](https://python-all.ru/3/whatsnew/changelog.html): Функция ncurses extended\_color\_content была введена в 2017 году.

  ([https://invisible-island.net/ncurses/NEWS.html#index-t20170401](https://python-all.ru/3/whatsnew/changelog.html)).

  Пакет ncurses-devel в CentOS 7 содержал более старую версию ncurses, что приводило к ошибкам компиляции. Для сборки ncurses с поддержкой расширенных цветов проверяется версия библиотеки ncurses \>= 20170401.
- [bpo-45019](https://python-all.ru/3/whatsnew/changelog.html): Генерация строк в соответствующих файлах для замороженных модулей. Раньше каждый из файлов приходилось редактировать вручную. Это изменение упрощает добавление и изменение замороженных модулей.
- [bpo-44340](https://python-all.ru/3/whatsnew/changelog.html): Добавлена поддержка сборки с clang thin lto через –with-lto=thin/full. Патч от Donghee Na и Brett Holman.
- [bpo-44535](https://python-all.ru/3/whatsnew/changelog.html): Включена возможность сборки с использованием Visual Studio 2022 на Windows.
- [bpo-43298](https://python-all.ru/3/whatsnew/changelog.html): Улучшено сообщение об ошибке при сборке без установленного Windows SDK.
- [bpo-44381](https://python-all.ru/3/whatsnew/changelog.html): Сборка Windows теперь принимает `EnableControlFlowGuard`, установленные в `guard`, для включения CFG.
- [bpo-41282](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка в `make install`, из-за которой модули расширения стандартной библиотеки ненужно и некорректно пересобирались во время фазы установки CPython.

### Windows

- [bpo-45375](https://python-all.ru/3/whatsnew/changelog.html): Исправляет ошибку утверждения, возникавшую при поиске стандартной библиотеки в ненормализованных путях.
- [bpo-45022](https://python-all.ru/3/whatsnew/changelog.html): Обновление выпуска Windows для включения libffi 3.4.2
- [bpo-45007](https://python-all.ru/3/whatsnew/changelog.html): Обновление до OpenSSL 1.1.1l в сборке Windows
- [bpo-44848](https://python-all.ru/3/whatsnew/changelog.html): Обновление установщика Windows для использования SQLite 3.36.0.
- [bpo-44572](https://python-all.ru/3/whatsnew/changelog.html): Избегание потребления стандартного ввода в модуле [`platform`](https://python-all.ru/3/library/platform.html#module-platform)
- [bpo-44582](https://python-all.ru/3/whatsnew/changelog.html): Ускорение инициализации [`mimetypes`](https://python-all.ru/3/library/mimetypes.html#module-mimetypes) с помощью нативной реализации сканирования реестра.
- [bpo-41299](https://python-all.ru/3/whatsnew/changelog.html): Исправление дрожания в 16 миллисекунд при использовании тайм-аутов в [`threading`](https://python-all.ru/3/library/threading.html#module-threading), например, с [`threading.Lock.acquire()`](https://python-all.ru/3/library/threading.html#threading.Lock.acquire) или [`threading.Condition.wait()`](https://python-all.ru/3/library/threading.html#threading.Condition.wait).
- [bpo-42686](https://python-all.ru/3/whatsnew/changelog.html): Сборка [`sqlite3`](https://python-all.ru/3/library/sqlite3.html#module-sqlite3) с включенными математическими функциями. Патч от Erlend E. Aasland.
- [bpo-40263](https://python-all.ru/3/whatsnew/changelog.html): Это ошибка, связанная с [https://bugs.python.org/issue26903](https://python-all.ru/3/whatsnew/changelog.html). После её применения возникает проблема с утверждением off-by-one. Утверждение было неверным.

### macOS

- [bpo-45007](https://python-all.ru/3/whatsnew/changelog.html): Обновление сборок установщика macOS для использования OpenSSL 1.1.1l.
- [bpo-34602](https://python-all.ru/3/whatsnew/changelog.html): При сборке CPython на macOS с `./configure --with-undefined-behavior-sanitizer --with-pydebug` размер стека теперь увеличен в четыре раза, чтобы проходил весь набор тестов.
- [bpo-44848](https://python-all.ru/3/whatsnew/changelog.html): Обновление установщика macOS для использования SQLite 3.36.0.
- [bpo-44689](https://python-all.ru/3/whatsnew/changelog.html): [`ctypes.util.find_library()`](https://python-all.ru/3/library/ctypes.html#ctypes.util.find_library) теперь корректно работает на macOS 11 Big Sur, даже если Python собран на более старой версии macOS. Ранее при сборке на старых системах macOS `find_library` не мог найти системные библиотеки macOS при запуске на Big Sur из-за изменений в способе хранения системных библиотек.
- [bpo-41972](https://python-all.ru/3/whatsnew/changelog.html): Путь к пользовательским заголовочным файлам в sysconfig для сборки framework изменён: добавлен компонент ‘pythonX.Y’ для соответствия поведению distutils.
- [bpo-43109](https://python-all.ru/3/whatsnew/changelog.html): Разрешена работа опции конфигурации –with-lto с Xcode или Command Line Tools от Apple.
- [bpo-34932](https://python-all.ru/3/whatsnew/changelog.html): Добавлена поддержка socket.TCP\_KEEPALIVE для macOS. Патч от Shane Harvey.

### IDLE

- [bpo-45296](https://python-all.ru/3/whatsnew/changelog.html): На Windows изменено сообщение exit/quit: теперь предлагается Ctrl-D (работает) вместо \<Ctrl-Z Return\> (не работает в IDLE).
- [bpo-45193](https://python-all.ru/3/whatsnew/changelog.html): Возвращено отображение окон автозавершения на Ubuntu.
- [bpo-40128](https://python-all.ru/3/whatsnew/changelog.html): В основном исправлены автодополнения на macOS при использовании не tcl/tk 8.6.11 (как в 3.9). Добавленный вызов update\_idletask должен быть безвредным и, возможно, полезным в остальных случаях.
- [bpo-33962](https://python-all.ru/3/whatsnew/changelog.html): Настройка отступа пробелами перенесена с вкладки «Шрифт» на новую вкладку «Окна». Исправление от Марка Роземана и Терри Джан Риди.
- [bpo-40468](https://python-all.ru/3/whatsnew/changelog.html): Вкладка «Общие» диалога настроек разделена на вкладки «Окна» и «Shell/ED». Источники справки, расширяющие меню «Справка», перенесены на вкладку «Расширения». Освобождено место для новых опций, а диалоговое окно укорочено. Последнее позволяет лучше подогнать диалог под маленькие экраны.
- [bpo-41611](https://python-all.ru/3/whatsnew/changelog.html): Исключены необработанные исключения в `AutoCompleteWindow.winconfig_event()`.
- [bpo-41611](https://python-all.ru/3/whatsnew/changelog.html): Исправлена проблема зависания IDLE при автодополнении по табуляции на macOS.
- [bpo-44010](https://python-all.ru/3/whatsnew/changelog.html): Подсветка новых [match](https://python-all.ru/3/reference/compound_stmts.html#match) [мягких ключевых слов](https://python-all.ru/3/reference/lexical_analysis.html#soft-keywords) оператора: [`match`](https://python-all.ru/3/reference/compound_stmts.html#match), `case` и [`_`](https://python-all.ru/3/reference/compound_stmts.html#wildcard-patterns). Однако эта подсветка не идеальна и будет неверна в некоторых редких случаях, включая некоторые `_` в `case` шаблонах.
- [bpo-44026](https://python-all.ru/3/whatsnew/changelog.html): Включены предложения интерпретатора по исправлению опечаток в строке сообщения для NameErrors и AttributeErrors. Исправление от E. Paine.

### Tools/Demos

- [bpo-44786](https://python-all.ru/3/whatsnew/changelog.html): Исправлено предупреждение в регулярном выражении в скрипте c-analyzer.
- [bpo-44967](https://python-all.ru/3/whatsnew/changelog.html): pydoc теперь возвращает ненулевой код завершения, если модуль не найден.
- [bpo-44978](https://python-all.ru/3/whatsnew/changelog.html): Инструмент Argument Clinic теперь может обрабатывать `__complex__` специальные методы.
- [bpo-43425](https://python-all.ru/3/whatsnew/changelog.html): Удалён демонстрационный проект ‘test2to3’, который показывал использование lib2to3 для поддержки Python 2.x и Python 3.x из одного исходного кода в пакете distutils. Исправление от Donghee Na.
- [bpo-44074](https://python-all.ru/3/whatsnew/changelog.html): patchcheck теперь автоматически определяет правильное имя базовой ветки (ранее было жёстко закодировано как ‘master’).
- [bpo-20291](https://python-all.ru/3/whatsnew/changelog.html): Добавлена поддержка вариативных позиционных параметров в Argument Clinic.

### C API

- [bpo-41710](https://python-all.ru/3/whatsnew/changelog.html): Функция PyThread\_acquire\_lock\_timed() теперь ограничивает тайм-аут, если он слишком велик, вместо того чтобы аварийно завершать процесс. Исправление от Виктора Стиннера.
- [bpo-44687](https://python-all.ru/3/whatsnew/changelog.html): `BufferedReader.peek()` больше не вызывает [`ValueError`](https://python-all.ru/3/library/exceptions.html#ValueError), когда весь файл уже был буферизован.
- [bpo-45116](https://python-all.ru/3/whatsnew/changelog.html): Добавлен макрос [`Py_ALWAYS_INLINE`](https://python-all.ru/3/c-api/intro.html#c.Py_ALWAYS_INLINE), чтобы попросить компилятор всегда встраивать статическую встраиваемую функцию. Компилятор может проигнорировать его и решить не встраивать функцию. Исправление от Виктора Стиннера.
- [bpo-45094](https://python-all.ru/3/whatsnew/changelog.html): Добавлен макрос [`Py_NO_INLINE`](https://python-all.ru/3/c-api/intro.html#c.Py_NO_INLINE) для отключения встраивания для функции. Исправление от Виктора Стиннера.
- [bpo-45061](https://python-all.ru/3/whatsnew/changelog.html): Добавлен деаллокатор для типа [`bool`](https://python-all.ru/3/library/functions.html#bool) для обнаружения ошибок подсчёта ссылок в C-расширениях, которые по ошибке вызывают `Py_DECREF(Py_True);` или `Py_DECREF(Py_False);`. Исправление от Виктора Стиннера.
- [bpo-42035](https://python-all.ru/3/whatsnew/changelog.html): Добавлена новая функция [`PyType_GetQualName()`](https://python-all.ru/3/c-api/type.html#c.PyType_GetQualName) для получения квалифицированного имени типа.
- [bpo-41103](https://python-all.ru/3/whatsnew/changelog.html): Откат удаления старого буферного протокола, поскольку он является частью стабильного ABI.
- [bpo-44751](https://python-all.ru/3/whatsnew/changelog.html): Удалён include `crypt.h` из публичного заголовочного файла `Python.h`.
- [bpo-42747](https://python-all.ru/3/whatsnew/changelog.html): Флаг типа `Py_TPFLAGS_HAVE_VERSION_TAG` теперь ничего не делает. Флаг `Py_TPFLAGS_HAVE_AM_SEND` (добавленный в 3.10) удалён. Оба были не нужны, поскольку невозможно иметь объекты типа с отсутствующими соответствующими полями.
- [bpo-44530](https://python-all.ru/3/whatsnew/changelog.html): Добавлено поле `co_qualname` в структуру `PyCodeObject` для передачи квалифицированного имени из компилятора в объекты кода.

  Исправление от Gabriele N. Tornetta.
- [bpo-44441](https://python-all.ru/3/whatsnew/changelog.html): [`Py_RunMain()`](https://python-all.ru/3/c-api/interp-lifecycle.html#c.Py_RunMain) теперь сбрасывает [`PyImport_Inittab`](https://python-all.ru/3/c-api/import.html#c.PyImport_Inittab) в исходное значение при выходе. Должна быть возможность вызывать [`PyImport_AppendInittab()`](https://python-all.ru/3/c-api/import.html#c.PyImport_AppendInittab) или [`PyImport_ExtendInittab()`](https://python-all.ru/3/c-api/import.html#c.PyImport_ExtendInittab) при каждой инициализации Python. Исправление от Виктора Стиннера.
- [bpo-39947](https://python-all.ru/3/whatsnew/changelog.html): Удалены 4 приватные функции Trashcan C API, которые сохранялись только для обратной совместимости стабильного ABI с Python 3.8 и старше, поскольку Trashcan API не был доступен с ограниченным C API в Python 3.8 и старше. Trashcan API был исключён из ограниченного C API в Python 3.9.

  Удалённые функции:

  - \_PyTrash\_deposit\_object()
  - \_PyTrash\_destroy\_chain()
  - \_PyTrash\_thread\_deposit\_object()
  - \_PyTrash\_thread\_destroy\_chain()

  C API trashcan никогда не был совместим с ограниченным C API, поскольку старые макросы trashcan напрямую обращались к членам [`PyThreadState`](https://python-all.ru/3/c-api/threads.html#c.PyThreadState), таким как `_tstate->trash_delete_nesting`, в то время как структура `PyThreadState` является непрозрачной в ограниченном C API.

  Также исключить константу `PyTrash_UNWIND_LEVEL` из C API.

  Патч от Виктора Стиннера.
- [bpo-40939](https://python-all.ru/3/whatsnew/changelog.html): Удалена документация для удалённого `PyParser_*` C API.
- [bpo-43795](https://python-all.ru/3/whatsnew/changelog.html): Список в [Содержимом ограниченного API](https://python-all.ru/3/c-api/stable.html#limited-api-list) теперь показывает публичное имя [`PyFrameObject`](https://python-all.ru/3/c-api/frame.html#c.PyFrameObject) вместо `_frame`. Несуществующая запись `_node` больше не появляется в списке.
- [bpo-44378](https://python-all.ru/3/whatsnew/changelog.html): [`Py_IS_TYPE()`](https://python-all.ru/3/c-api/structures.html#c.Py_IS_TYPE) больше не использует [`Py_TYPE()`](https://python-all.ru/3/c-api/structures.html#c.Py_TYPE) для предотвращения предупреждения компилятора: больше не приводится `const PyObject*` к `PyObject*`. Патч от Виктора Стиннера.
- [bpo-39573](https://python-all.ru/3/whatsnew/changelog.html): Преобразование макросов [`Py_TYPE()`](https://python-all.ru/3/c-api/structures.html#c.Py_TYPE) и [`Py_SIZE()`](https://python-all.ru/3/c-api/structures.html#c.Py_SIZE) в статические встроенные функции. Теперь для установки типа и размера объекта необходимо использовать функции [`Py_SET_TYPE()`](https://python-all.ru/3/c-api/structures.html#c.Py_SET_TYPE) и [`Py_SET_SIZE()`](https://python-all.ru/3/c-api/structures.html#c.Py_SET_SIZE). Патч от Виктора Стиннера.
- [bpo-44263](https://python-all.ru/3/whatsnew/changelog.html): Функция [`PyType_Ready()`](https://python-all.ru/3/c-api/type.html#c.PyType_Ready) теперь вызывает ошибку, если тип определён с установленным флагом [`Py_TPFLAGS_HAVE_GC`](https://python-all.ru/3/c-api/typeobj.html#c.Py_TPFLAGS_HAVE_GC), но не имеет функции обхода ([`PyTypeObject.tp_traverse`](https://python-all.ru/3/c-api/typeobj.html#c.PyTypeObject.tp_traverse)). Патч от Виктора Стиннера.
- [bpo-43795](https://python-all.ru/3/whatsnew/changelog.html): Недокументированная функция `Py_FrozenMain()` удалена из ограниченного API.
- [bpo-44113](https://python-all.ru/3/whatsnew/changelog.html): Объявлены устаревшими следующие функции для настройки инициализации Python:

  - `PySys_AddWarnOptionUnicode()`
  - `PySys_AddWarnOption()`
  - `PySys_AddXOption()`
  - `PySys_HasWarnOptions()`
  - `Py_SetPath()`
  - `Py_SetProgramName()`
  - `Py_SetPythonHome()`
  - `Py_SetStandardStreamEncoding()`
  - `_Py_SetProgramFullPath()`

  Используйте новый API [`PyConfig`](https://python-all.ru/3/c-api/init_config.html#c.PyConfig) из [Конфигурации инициализации Python](https://python-all.ru/3/c-api/init_config.html#init-config) вместо этого ([**PEP 587**](https://python-all.ru/3/whatsnew/changelog.html)).
- [bpo-44094](https://python-all.ru/3/whatsnew/changelog.html): Удалены `PyErr_SetFromErrnoWithUnicodeFilename()`, `PyErr_SetFromWindowsErrWithUnicodeFilename()` и `PyErr_SetExcFromWindowsErrWithUnicodeFilename()`. Они не были документированы и устарели с Python 3.3.
- [bpo-43795](https://python-all.ru/3/whatsnew/changelog.html): [`PyCodec_Unregister()`](https://python-all.ru/3/c-api/codec.html#c.PyCodec_Unregister) теперь правильно экспортируется как функция в DLL стабильного ABI Windows.
- [bpo-44029](https://python-all.ru/3/whatsnew/changelog.html): Удалены устаревшие API `Py_UNICODE`: `PyUnicode_Encode`, `PyUnicode_EncodeUTF7`, `PyUnicode_EncodeUTF8`, `PyUnicode_EncodeUTF16`, `PyUnicode_EncodeUTF32`, `PyUnicode_EncodeLatin1`, `PyUnicode_EncodeMBCS`, `PyUnicode_EncodeDecimal`, `PyUnicode_EncodeRawUnicodeEscape`, `PyUnicode_EncodeCharmap`, `PyUnicode_EncodeUnicodeEscape`, `PyUnicode_TransformDecimalToASCII`, `PyUnicode_TranslateCharmap`, `PyUnicodeEncodeError_Create`, `PyUnicodeTranslateError_Create`. См. [**PEP 393**](https://python-all.ru/3/whatsnew/changelog.html) и [**PEP 624**](https://python-all.ru/3/whatsnew/changelog.html) для справки.
- [bpo-42035](https://python-all.ru/3/whatsnew/changelog.html): Добавлена новая функция [`PyType_GetName()`](https://python-all.ru/3/c-api/type.html#c.PyType_GetName) для получения короткого имени типа.

## Python 3.10.0 beta 1

*Дата выпуска: 2021-05-03*

### Безопасность

- [bpo-43434](https://python-all.ru/3/whatsnew/changelog.html): Создание объектов [`sqlite3.Connection`](https://python-all.ru/3/library/sqlite3.html#sqlite3.Connection) теперь также генерирует `sqlite3.connect` и `sqlite3.connect/handle` [события аудита](https://python-all.ru/3/library/sys.html#auditing). Ранее эти события генерировались только вызовами [`sqlite3.connect()`](https://python-all.ru/3/library/sqlite3.html#sqlite3.connect). Патч от Эрленда Э. Аасланда.
- [bpo-43998](https://python-all.ru/3/whatsnew/changelog.html): Модуль [`ssl`](https://python-all.ru/3/library/ssl.html#module-ssl) устанавливает более безопасные наборы шифров по умолчанию. Шифры без прямой секретности и с MAC на основе SHA-1 отключены по умолчанию. Уровень безопасности 2 запрещает слабые ключи RSA, DH и ECC с менее чем 112 битами безопасности. [`SSLContext`](https://python-all.ru/3/library/ssl.html#ssl.SSLContext) по умолчанию устанавливает минимальную версию протокола TLS 1.2. Настройки основаны на исследовании Хинека Шлавака.
- [bpo-43882](https://python-all.ru/3/whatsnew/changelog.html): Наличие символов новой строки или табуляции в частях URL может допускать некоторые формы атак.

  Следуя управляющей спецификации URL, определённой WHATWG, [`urllib.parse()`](https://python-all.ru/3/library/urllib.parse.html#module-urllib.parse) теперь удаляет ASCII-символы новой строки и табуляции из URL, предотвращая такие атаки.
- [bpo-43472](https://python-all.ru/3/whatsnew/changelog.html): Обеспечивает получение перехватчиками аудита на уровне интерпретатора события `cpython.PyInterpreterState_New` при вызове через модуль `_xxsubinterpreters`.
- [bpo-43362](https://python-all.ru/3/whatsnew/changelog.html): Исправлено некорректное освобождение памяти в модуле \_sha3. Проблема была внесена в 3.10.0a1. Python 3.9 и более ранние версии не затронуты.
- [bpo-43762](https://python-all.ru/3/whatsnew/changelog.html): Добавлены события аудита для `sqlite3.connect/handle()`, [`sqlite3.Connection.enable_load_extension()`](https://python-all.ru/3/library/sqlite3.html#sqlite3.Connection.enable_load_extension) и [`sqlite3.Connection.load_extension()`](https://python-all.ru/3/library/sqlite3.html#sqlite3.Connection.load_extension). Патч от Эрленда Э. Аасланда.
- [bpo-43756](https://python-all.ru/3/whatsnew/changelog.html): Добавлено новое событие аудита `glob.glob/2` для включения новых аргументов *root\_dir* и *dir\_fd*, добавленных в [`glob.glob()`](https://python-all.ru/3/library/glob.html#glob.glob) и [`glob.iglob()`](https://python-all.ru/3/library/glob.html#glob.iglob).
- [bpo-36384](https://python-all.ru/3/whatsnew/changelog.html): Модуль [`ipaddress`](https://python-all.ru/3/library/ipaddress.html#module-ipaddress) больше не принимает начальные нули в строках IPv4-адресов. Начальные нули неоднозначны и интерпретируются некоторыми библиотеками как восьмеричная запись. Например, устаревшая функция [`socket.inet_aton()`](https://python-all.ru/3/library/socket.html#socket.inet_aton) рассматривает начальные нули как восьмеричную запись. Реализация glibc современного [`inet_pton()`](https://python-all.ru/3/library/socket.html#socket.inet_pton) не принимает начальные нули. Некоторое время модуль `ipaddress` принимал неоднозначные начальные нули.
- [bpo-43075](https://python-all.ru/3/whatsnew/changelog.html): Исправлена уязвимость типа «Отказ в обслуживании через регулярные выражения» (ReDoS) в [`urllib.request.AbstractBasicAuthHandler`](https://python-all.ru/3/library/urllib.request.html#urllib.request.AbstractBasicAuthHandler). Уязвимое регулярное выражение имеет квадратичную сложность в худшем случае и позволяет вызвать отказ в обслуживании при распознавании специально созданных недействительных RFC. Эта проблема ReDoS находится на стороне клиента и требует от удалённых злоумышленников контроля над HTTP-сервером.
- [bpo-42800](https://python-all.ru/3/whatsnew/changelog.html): Перехватчики аудита теперь срабатывают для frame.f\_code, traceback.tb\_frame и доступа к атрибутам кода/фрейма генератора.
- [bpo-37363](https://python-all.ru/3/whatsnew/changelog.html): Добавлены события аудита в модуль [`http.client`](https://python-all.ru/3/library/http.client.html#module-http.client).

### Ядро и встроенные

- [bpo-43977](https://python-all.ru/3/whatsnew/changelog.html): Классы больше не могут быть одновременно последовательностью и отображением при сопоставлении с образцом.
- [bpo-43977](https://python-all.ru/3/whatsnew/changelog.html): Используйте [`tp_flags`](https://python-all.ru/3/c-api/typeobj.html#c.PyTypeObject.tp_flags) на объекте класса, чтобы определить, является ли объект последовательностью или отображением при сопоставлении с образцом. Это избавляет от необходимости импортировать [`collections.abc`](https://python-all.ru/3/library/collections.abc.html#module-collections.abc) при сопоставлении с образцом.
- [bpo-43892](https://python-all.ru/3/whatsnew/changelog.html): Восстановлена корректная проверка шаблонов комплексных литералов при разборе блоков `match`.
- [bpo-43933](https://python-all.ru/3/whatsnew/changelog.html): Установка frame.f\_lineno на номер строки ключевого слова 'with' при выполнении вызова `__exit__`.
- [bpo-43933](https://python-all.ru/3/whatsnew/changelog.html): Если текущая позиция во фрейме не имеет номера строки, атрибут f\_lineno теперь устанавливается в None вместо -1, в соответствии с PEP 626. Обычно такая ситуация невозможна, но может возникнуть в некоторых нестандартных обстоятельствах.
- [bpo-43963](https://python-all.ru/3/whatsnew/changelog.html): Импорт модуля `_signal` в подынтерпретаторе больше не имеет побочных эффектов.
- [bpo-42739](https://python-all.ru/3/whatsnew/changelog.html): Внутреннее представление таблиц номеров строк изменено – теперь не используются сторожевые значения, и к API-функции внешнего процесса `PyLineTable_InitAddressRange` добавлен явный параметр длины. Это делает обработку таблиц номеров строк более надёжной в некоторых ситуациях.

### Библиотека

- [bpo-43908](https://python-all.ru/3/whatsnew/changelog.html): Сделать типы [`re`](https://python-all.ru/3/library/re.html#module-re) неизменяемыми. Исправление от Erlend E. Aasland.
- [bpo-43908](https://python-all.ru/3/whatsnew/changelog.html): Сделать тип [`array.array`](https://python-all.ru/3/library/array.html#array.array) неизменяемым. Исправление от Erlend E. Aasland.

### Ядро и встроенные функции

- [bpo-43901](https://python-all.ru/3/whatsnew/changelog.html): Классы и модули теперь создают пустые словари аннотаций лениво, по требованию. Словари аннотаций хранятся в \_\_dict\_\_ объекта для обратной совместимости.
- [bpo-43892](https://python-all.ru/3/whatsnew/changelog.html): Образцы match теперь используют новые специализированные узлы AST (`MatchValue`, `MatchSingleton`, `MatchSequence`, `MatchStar`, `MatchMapping`, `MatchClass`) вместо повторного использования узлов выражений. `MatchAs` и `MatchOr` теперь определены как узлы-образцы, а не узлы-выражения. Исправление от Nick Coghlan.
- [bpo-42725](https://python-all.ru/3/whatsnew/changelog.html): Использование `await`/`yield`/`yield from` и именованных выражений в аннотации теперь запрещено, когда активирован PEP 563.
- [bpo-43754](https://python-all.ru/3/whatsnew/changelog.html): При выполнении структурного сопоставления с образцом ([**PEP 634**](https://python-all.ru/3/whatsnew/changelog.html)) захваченные имена теперь остаются несвязанными, пока *весь* образец не будет успешно сопоставлен.
- [bpo-42737](https://python-all.ru/3/whatsnew/changelog.html): Аннотации сложных целей (все, кроме простых имён) больше не вызывают никаких эффектов во время выполнения с `from __future__ import annotations`.
- [bpo-43914](https://python-all.ru/3/whatsnew/changelog.html): Исключения [`SyntaxError`](https://python-all.ru/3/library/exceptions.html#SyntaxError), возбуждаемые интерпретатором, теперь подсвечивают полный диапазон ошибки выражения, образующего синтаксическую ошибку, а не только место, где проблема обнаружена. Исправление от Pablo Galindo.
- [bpo-38605](https://python-all.ru/3/whatsnew/changelog.html): Отмена назначения `from __future__ import annotations` значением по умолчанию. Это следует решению Руководящего совета отложить изменения PEP 563 как минимум до Python 3.11. См. оригинальное письмо для получения дополнительной информации о решении: [https://mail.python.org/archives/list/python-dev@python.org/thread/CLVXXPQ2T2LQ5MP2Y53VVQFCXYWQJHKZ/](https://python-all.ru/3/whatsnew/changelog.html). Исправление от Pablo Galindo.
- [bpo-43475](https://python-all.ru/3/whatsnew/changelog.html): Хеши значений NaN теперь зависят от идентичности объекта. Ранее они всегда хешировались в 0, хотя значения NaN не равны друг другу. Одинаковый хеш для неравных значений приводил к накоплению в хеш-таблицах.
- [bpo-43859](https://python-all.ru/3/whatsnew/changelog.html): Улучшено сообщение об ошибке для исключений [`IndentationError`](https://python-all.ru/3/library/exceptions.html#IndentationError). Исправление от Pablo Galindo.
- [bpo-41323](https://python-all.ru/3/whatsnew/changelog.html): Свёртывание константных кортежей в оптимизаторе байткода теперь повторно использует кортеж из таблицы констант.
- [bpo-43846](https://python-all.ru/3/whatsnew/changelog.html): Использование стека данных значительно сокращено для больших литералов и выражений вызовов.
- [bpo-38530](https://python-all.ru/3/whatsnew/changelog.html): При выводе [`NameError`](https://python-all.ru/3/library/exceptions.html#NameError), возбуждённого интерпретатором, `PyErr_Display()` теперь предлагает похожие имена переменных в функции, из которой было возбуждено исключение. Исправление от Pablo Galindo.
- [bpo-43823](https://python-all.ru/3/whatsnew/changelog.html): Улучшены сообщения о синтаксических ошибках для неверных словарных литералов. Исправление от Pablo Galindo.
- [bpo-43822](https://python-all.ru/3/whatsnew/changelog.html): Улучшены сообщения о синтаксических ошибках в парсере для пропущенных запятых между выражениями. Исправление от Pablo Galindo.
- [bpo-43798](https://python-all.ru/3/whatsnew/changelog.html): Узлы [`ast.alias`](https://python-all.ru/3/library/ast.html#ast.alias) теперь содержат атрибуты метаданных о местоположении в исходном коде, например lineno, col\_offset.
- [bpo-43797](https://python-all.ru/3/whatsnew/changelog.html): Улучшены сообщения об ошибках `SyntaxError` для некорректных сравнений. Исправление от Pablo Galindo.
- [bpo-43760](https://python-all.ru/3/whatsnew/changelog.html): Флаг проверки включения трассировки перемещён из кучи в стек C. Это должно ускорить диспетчеризацию в интерпретаторе.
- [bpo-43682](https://python-all.ru/3/whatsnew/changelog.html): Статические методы ([`@staticmethod`](https://python-all.ru/3/library/functions.html#staticmethod)) и методы класса ([`@classmethod`](https://python-all.ru/3/library/functions.html#classmethod)) теперь наследуют атрибуты метода (`__module__`, `__name__`, `__qualname__`, `__doc__`, `__annotations__`) и имеют новый атрибут `__wrapped__`. Исправление от Victor Stinner.
- [bpo-43751](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка, при которой `anext(ait, default)` ошибочно возвращал None.
- [bpo-42128](https://python-all.ru/3/whatsnew/changelog.html): [`__match_args__`](https://python-all.ru/3/reference/datamodel.html#object.__match_args__) больше не может быть списком.
- [bpo-43683](https://python-all.ru/3/whatsnew/changelog.html): Добавлен опкод GEN\_START. Отмечает начало генератора (включая async) или корутины и обрабатывает отправку значений в недавно созданный генератор или корутину.

### Библиотека

- [bpo-43105](https://python-all.ru/3/whatsnew/changelog.html): Importlib теперь разрешает относительные пути при создании объектов спецификации модулей из файловых расположений.

### Ядро и встроенные функции

- [bpo-43682](https://python-all.ru/3/whatsnew/changelog.html): Статические методы ([`@staticmethod`](https://python-all.ru/3/library/functions.html#staticmethod)) теперь можно вызывать как обычные функции. Исправление от Victor Stinner.
- [bpo-42609](https://python-all.ru/3/whatsnew/changelog.html): Предотвращены сбои в валидаторе и оптимизаторе AST при компиляции чрезвычайно длинных выражений, например `"+0"*1000000`. Вместо этого теперь возникает [`RecursionError`](https://python-all.ru/3/library/exceptions.html#RecursionError).
- [bpo-38530](https://python-all.ru/3/whatsnew/changelog.html): При печати [`AttributeError`](https://python-all.ru/3/library/exceptions.html#AttributeError), `PyErr_Display()` будет предлагать похожие имена атрибутов в объекте, из которого было вызвано исключение. Исправление от Pablo Galindo.

### Библиотека

- [bpo-44015](https://python-all.ru/3/whatsnew/changelog.html): В @dataclass() вызывать TypeError, если KW\_ONLY указан более одного раза.
- [bpo-25478](https://python-all.ru/3/whatsnew/changelog.html): Добавлен метод *total()* к collections.Counter() для вычисления суммы значений счетчиков.
- [bpo-43733](https://python-all.ru/3/whatsnew/changelog.html): Изменено: [`netrc.netrc`](https://python-all.ru/3/library/netrc.html#netrc.netrc) теперь использует кодировку UTF-8 до применения кодировки локали.
- [bpo-43979](https://python-all.ru/3/whatsnew/changelog.html): Удалено ненужное списковое включение перед циклом из [`urllib.parse.parse_qsl()`](https://python-all.ru/3/library/urllib.parse.html#urllib.parse.parse_qsl). Исправление от Christoph Zwerschke и Donghee Na.
- [bpo-43993](https://python-all.ru/3/whatsnew/changelog.html): Обновление встроенного pip до 21.1.1.
- [bpo-43957](https://python-all.ru/3/whatsnew/changelog.html): \[Enum\] Устарел `TypeError`, когда не-член используется в проверке вхождения; в 3.12 будет возвращаться `True` или `False`, а проверка вхождения будет возвращать `True`, если значение является либо членом этого перечисления, либо значением одного из его членов.
- [bpo-42904](https://python-all.ru/3/whatsnew/changelog.html): Для обратной совместимости с предыдущими минорными версиями Python, если [`typing.get_type_hints()`](https://python-all.ru/3/library/typing.html#typing.get_type_hints) не получает аргументов словаря пространства имен, `typing.get_type_hints()` будет искать сначала в глобальном, затем в локальном пространстве имен при вычислении строковых аннотаций типов (строковых прямых ссылок) внутри класса.
- [bpo-43945](https://python-all.ru/3/whatsnew/changelog.html): \[Enum\] Устарело нестандартное поведение format() для примесей: в 3.12 для вызовов format() будет использоваться член перечисления, а не его значение.
- [bpo-41139](https://python-all.ru/3/whatsnew/changelog.html): Устарел недокументированный API `cgi.log()`.
- [bpo-43937](https://python-all.ru/3/whatsnew/changelog.html): Исправлена работа модуля [`turtle`](https://python-all.ru/3/library/turtle.html#module-turtle) с окном корня, отличным от стандартного.
- [bpo-43930](https://python-all.ru/3/whatsnew/changelog.html): Обновление встроенного pip до 21.1 и setuptools до 56.0.0
- [bpo-43907](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка в чисто-Python реализации pickle при использовании протокола 5, когда экземпляры bytearray, встречающиеся несколько раз в графе сериализованных объектов, некорректно десериализовывались в повторяющиеся копии объекта bytearray.
- [bpo-43926](https://python-all.ru/3/whatsnew/changelog.html): В `importlib.metadata` предоставлен единый интерфейс для `Description`, разрешено кодирование любого поля с многострочными значениями, удалены строки продолжения из многострочных значений, добавлено свойство `.json` для простого доступа к JSON-совместимой форме PEP 566. Синхронизировано с `importlib_metadata 4.0`.
- [bpo-43920](https://python-all.ru/3/whatsnew/changelog.html): OpenSSL 3.0.0: [`load_verify_locations()`](https://python-all.ru/3/library/ssl.html#ssl.SSLContext.load_verify_locations) теперь возвращает единообразное сообщение об ошибке, когда cadata не содержит действительного сертификата.
- [bpo-43607](https://python-all.ru/3/whatsnew/changelog.html): [`urllib`](https://python-all.ru/3/library/urllib.html#module-urllib) теперь может преобразовывать пути Windows с префиксами `\\?\` в URL-пути.
- [bpo-43817](https://python-all.ru/3/whatsnew/changelog.html): Добавлен [`inspect.get_annotations()`](https://python-all.ru/3/library/inspect.html#inspect.get_annotations), который безопасно вычисляет аннотации, определенные для объекта. Он обходит особенности доступа к аннотациям для различных типов объектов и делает очень мало предположений о переданном объекте. `inspect.get_annotations()` также может корректно восстанавливать строковые аннотации из строк.

  [`inspect.signature()`](https://python-all.ru/3/library/inspect.html#inspect.signature), `inspect.from_callable()` и `inspect.from_function()` теперь вызывают [`inspect.get_annotations()`](https://python-all.ru/3/library/inspect.html#inspect.get_annotations) для получения аннотаций. Это означает, что `inspect.signature()` и `inspect.from_callable()` теперь также могут восстанавливать строковые аннотации из строк.
- [bpo-43284](https://python-all.ru/3/whatsnew/changelog.html): platform.win32\_ver получает версию Windows из sys.getwindowsversion().platform\_version, который в свою очередь получает версию из kernel32.dll (которая может быть другой версии, чем сама Windows). Поэтому изменено: platform.win32\_ver теперь определяет версию с помощью частной функции \_syscmd\_ver модуля platform, чтобы возвращать точную версию.
- [bpo-42854](https://python-all.ru/3/whatsnew/changelog.html): Модуль [`ssl`](https://python-all.ru/3/library/ssl.html#module-ssl) теперь использует `SSL_read_ex` и `SSL_write_ex` внутри. Функции поддерживают чтение и запись данных размером более 2 ГБ. Запись данных нулевой длины больше не вызывает ошибки нарушения протокола.
- [bpo-42333](https://python-all.ru/3/whatsnew/changelog.html): Перенос модуля расширения `_ssl` на многофазную инициализацию.
- [bpo-43880](https://python-all.ru/3/whatsnew/changelog.html): [`ssl`](https://python-all.ru/3/library/ssl.html#module-ssl) теперь вызывает DeprecationWarning для опций OP\_NO\_SSL/TLS\*, старых версий TLS, старых протоколов и других возможностей, которые устарели начиная с Python 3.6, 3.7 или OpenSSL 1.1.0.
- [bpo-41559](https://python-all.ru/3/whatsnew/changelog.html): [**PEP 612**](https://python-all.ru/3/whatsnew/changelog.html) теперь реализован полностью на Python; встроенные объекты `types.GenericAlias` больше не включают `typing.ParamSpec` в `__parameters__` (за исключением `collections.abc.Callable`'s `GenericAlias`). Это означает, что ранее недопустимые использования `ParamSpec` (такие как `list[P]`), которые работали в ранних версиях альфа Python 3.10, теперь будут вызывать `TypeError` при подстановке.
- [bpo-43867](https://python-all.ru/3/whatsnew/changelog.html): Класс [`multiprocessing`](https://python-all.ru/3/library/multiprocessing.html#module-multiprocessing) `Server` теперь явно перехватывает [`SystemExit`](https://python-all.ru/3/library/exceptions.html#SystemExit) и закрывает клиентское соединение в этом случае. Это происходит, когда метод `Server.serve_client()` достигает конца файла (EOF).
- [bpo-40443](https://python-all.ru/3/whatsnew/changelog.html): Удалены неиспользуемые импорты: pyclbr больше не использует copy, typing больше не использует ast. Исправление от Victor Stinner.
- [bpo-43820](https://python-all.ru/3/whatsnew/changelog.html): Удалена ненужная копия пространства имен, передаваемого в dataclasses.make\_dataclass().
- [bpo-43787](https://python-all.ru/3/whatsnew/changelog.html): Добавлен метод `__iter__()` в [`bz2.BZ2File`](https://python-all.ru/3/library/bz2.html#bz2.BZ2File), [`gzip.GzipFile`](https://python-all.ru/3/library/gzip.html#gzip.GzipFile) и [`lzma.LZMAFile`](https://python-all.ru/3/library/lzma.html#lzma.LZMAFile). Это ускоряет итерацию по ним примерно в 2 раза. Патч от Inada Naoki.
- [bpo-43680](https://python-all.ru/3/whatsnew/changelog.html): Устарели 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](https://python-all.ru/3/whatsnew/changelog.html): Функция Python `_pyio.open()` становится статическим методом, чтобы вести себя как встроенная функция [`io.open()`](https://python-all.ru/3/library/io.html#io.open): не становиться связанным методом при хранении в качестве переменной класса. Это стало возможным, поскольку статические методы теперь вызываемы в Python 3.10. Кроме того, `_pyio.OpenWrapper()` становится простым псевдонимом для `_pyio.open()`. Патч от Victor Stinner.
- [bpo-41515](https://python-all.ru/3/whatsnew/changelog.html): Исправлено [`KeyError`](https://python-all.ru/3/library/exceptions.html#KeyError), возникающее в [`typing.get_type_hints()`](https://python-all.ru/3/library/typing.html#typing.get_type_hints) из-за синтетических модулей, которые не отображаются в `sys.modules`.
- [bpo-43776](https://python-all.ru/3/whatsnew/changelog.html): Когда аргументы [`subprocess.Popen`](https://python-all.ru/3/library/subprocess.html#subprocess.Popen) передаются в виде строки или [`pathlib.Path`](https://python-all.ru/3/library/pathlib.html#pathlib.Path), repr экземпляра Popen теперь показывает правильное значение.
- [bpo-42248](https://python-all.ru/3/whatsnew/changelog.html): \[Enum\] обеспечить освобождение исключений, возникших в `_missing__`
- [bpo-43744](https://python-all.ru/3/whatsnew/changelog.html): исправлена проблема с именем элемента перечисления, совпадающим с началом имени приватной переменной
- [bpo-43772](https://python-all.ru/3/whatsnew/changelog.html): Исправлено возвращаемое значение `TypeVar.__ror__`. Патч от Jelle Zijlstra.
- [bpo-43764](https://python-all.ru/3/whatsnew/changelog.html): Добавлен параметр match\_args в декоратор @dataclass для подавления генерации \_\_match\_args\_\_.
- [bpo-43799](https://python-all.ru/3/whatsnew/changelog.html): OpenSSL 3.0.0: определено `OPENSSL_API_COMPAT` 1.1.1 для подавления предупреждений об устаревании. Python требует API OpenSSL 1.1.1.
- [bpo-43478](https://python-all.ru/3/whatsnew/changelog.html): Объекты Mock больше нельзя использовать в качестве спецификаций для других Mock. В результате уже замоканный объект не может иметь атрибут, замоканный с помощью `autospec=True`, или быть предметом вызова `create_autospec(...)`. Это может выявить ошибки в тестах, поскольку эти производные от Mock объекты всегда будут проходить определённые тесты (например, [`isinstance()`](https://python-all.ru/3/library/functions.html#isinstance)), а встроенные функции assert (например, assert\_called\_once\_with) будут безусловно проходить.
- [bpo-43794](https://python-all.ru/3/whatsnew/changelog.html): Добавлены константы [`ssl.OP_IGNORE_UNEXPECTED_EOF`](https://python-all.ru/3/library/ssl.html#ssl.OP_IGNORE_UNEXPECTED_EOF) (OpenSSL 3.0.0)
- [bpo-43785](https://python-all.ru/3/whatsnew/changelog.html): Улучшена производительность `bz2.BZ2File` за счёт удаления RLock из BZ2File. Это делает BZ2File небезопасным для потоков при наличии нескольких одновременных читателей или писателей, как и его эквивалентные классы в [`gzip`](https://python-all.ru/3/library/gzip.html#module-gzip) и [`lzma`](https://python-all.ru/3/library/lzma.html#module-lzma) всегда были. Патч от Inada Naoki.
- [bpo-43789](https://python-all.ru/3/whatsnew/changelog.html): OpenSSL 3.0.0: Не вызывать функцию обратного вызова для пароля второй раз, когда первый вызов сигнализировал об ошибке.
- [bpo-43788](https://python-all.ru/3/whatsnew/changelog.html): Заголовочные файлы для кодов ошибок [`ssl`](https://python-all.ru/3/library/ssl.html#module-ssl) теперь специфичны для версии OpenSSL. Исключения теперь будут отображать правильные коды причины и библиотеки. Скрипт `make_ssl_data.py` был переписан для использования текстового файла OpenSSL с кодами ошибок.
- [bpo-43766](https://python-all.ru/3/whatsnew/changelog.html): Реализован [**PEP 647**](https://python-all.ru/3/whatsnew/changelog.html) в модуле [`typing`](https://python-all.ru/3/library/typing.html#module-typing) путём добавления `TypeGuard`.
- [bpo-25264](https://python-all.ru/3/whatsnew/changelog.html): [`os.path.realpath()`](https://python-all.ru/3/library/os.path.html#os.path.realpath) теперь принимает ключевой аргумент *strict*. При установке `True` возникает [`OSError`](https://python-all.ru/3/library/exceptions.html#OSError), если путь не существует или обнаружена циклическая символьная ссылка.
- [bpo-43780](https://python-all.ru/3/whatsnew/changelog.html): В `importlib.metadata` включены изменения из importlib\_metadata 3.10: добавлено кэширование на основе mtime при обнаружении дистрибутивов. Использование результата в виде dict из `entry_points()` помечено как устаревшее.
- [gh-47383](https://python-all.ru/3/whatsnew/changelog.html): Атрибуты `P.args` и `P.kwargs` [`typing.ParamSpec`](https://python-all.ru/3/library/typing.html#typing.ParamSpec) теперь являются экземплярами новых классов [`typing.ParamSpecArgs`](https://python-all.ru/3/library/typing.html#typing.ParamSpecArgs) и [`typing.ParamSpecKwargs`](https://python-all.ru/3/library/typing.html#typing.ParamSpecKwargs), что позволяет получить более полезный `repr()`. Патч от Jelle Zijlstra.
- [bpo-43731](https://python-all.ru/3/whatsnew/changelog.html): Добавлен параметр `encoding` `logging.fileConfig()`.
- [bpo-43712](https://python-all.ru/3/whatsnew/changelog.html): Добавлены параметры `encoding` и `errors` в [`fileinput.input()`](https://python-all.ru/3/library/fileinput.html#fileinput.input) и [`fileinput.FileInput`](https://python-all.ru/3/library/fileinput.html#fileinput.FileInput).
- [bpo-38659](https://python-all.ru/3/whatsnew/changelog.html): В модуль `enum` добавлен декоратор `simple_enum` для преобразования обычного класса в Enum. Добавлен `test_simple_enum` для тестирования простых перечислений с соответствующим обычным Enum. Модули стандартной библиотеки обновлены для использования `simple_enum`.
- [bpo-43764](https://python-all.ru/3/whatsnew/changelog.html): Исправлена проблема, при которой генерация [`__match_args__`](https://python-all.ru/3/reference/datamodel.html#object.__match_args__) могла завершаться ошибкой для некоторых [`dataclasses`](https://python-all.ru/3/library/dataclasses.html#module-dataclasses).
- [bpo-43752](https://python-all.ru/3/whatsnew/changelog.html): Исправлена регрессия [`sqlite3`](https://python-all.ru/3/library/sqlite3.html#module-sqlite3) для блобов нулевого размера с конвертерами, где вместо `None` возвращалось `b""`. Регрессия была внесена PR 24723. Патч от Erlend E. Aasland.
- [bpo-43655](https://python-all.ru/3/whatsnew/changelog.html): Диалоговые окна [`tkinter`](https://python-all.ru/3/library/tkinter.html#module-tkinter) теперь распознаются как диалоги оконными менеджерами на macOS и X Window.
- [bpo-43723](https://python-all.ru/3/whatsnew/changelog.html): Следующие методы `threading` теперь устарели и должны быть заменены:

  - `currentThread` =\> [`threading.current_thread()`](https://python-all.ru/3/library/threading.html#threading.current_thread)
  - `activeCount` =\> [`threading.active_count()`](https://python-all.ru/3/library/threading.html#threading.active_count)
  - `Condition.notifyAll` =\> [`threading.Condition.notify_all()`](https://python-all.ru/3/library/threading.html#threading.Condition.notify_all)
  - `Event.isSet` =\> [`threading.Event.is_set()`](https://python-all.ru/3/library/threading.html#threading.Event.is_set)
  - `Thread.setName` =\> [`threading.Thread.name`](https://python-all.ru/3/library/threading.html#threading.Thread.name)
  - `thread.getName` =\> [`threading.Thread.name`](https://python-all.ru/3/library/threading.html#threading.Thread.name)
  - `Thread.isDaemon` =\> [`threading.Thread.daemon`](https://python-all.ru/3/library/threading.html#threading.Thread.daemon)
  - `Thread.setDaemon` =\> [`threading.Thread.daemon`](https://python-all.ru/3/library/threading.html#threading.Thread.daemon)

  Патч от Jelle Zijlstra.
- [bpo-2135](https://python-all.ru/3/whatsnew/changelog.html): Устарели реализации find\_module() и find\_loader() в importlib и zipimport.
- [bpo-43534](https://python-all.ru/3/whatsnew/changelog.html): [`turtle.textinput()`](https://python-all.ru/3/library/turtle.html#turtle.textinput) и [`turtle.numinput()`](https://python-all.ru/3/library/turtle.html#turtle.numinput) теперь создают временное окно, работающее от имени окна холста.
- [bpo-43532](https://python-all.ru/3/whatsnew/changelog.html): Добавлена возможность указывать поля, доступные только по ключевому слову, в dataclasses. Эти поля станут аргументами только по ключевому слову в сгенерированном \_\_init\_\_.
- [bpo-43522](https://python-all.ru/3/whatsnew/changelog.html): Исправлена проблема с [`hostname_checks_common_name`](https://python-all.ru/3/library/ssl.html#ssl.SSLContext.hostname_checks_common_name). OpenSSL не копирует hostflags из *struct SSL\_CTX* в *struct SSL*.
- [bpo-8978](https://python-all.ru/3/whatsnew/changelog.html): Улучшено сообщение об ошибке для [`tarfile.open()`](https://python-all.ru/3/library/tarfile.html#tarfile.open), когда [`lzma`](https://python-all.ru/3/library/lzma.html#module-lzma) / [`bz2`](https://python-all.ru/3/library/bz2.html#module-bz2) недоступны. Патч от Anthony Sottile.
- [bpo-42967](https://python-all.ru/3/whatsnew/changelog.html): Добавлена поддержка аргумента [`bytes`](https://python-all.ru/3/library/stdtypes.html#bytes) `separator` в `urllib.parse.parse_qs` и `urllib.parse.parse_qsl` при разборе строк запроса [`str`](https://python-all.ru/3/library/stdtypes.html#str). Ранее это вызывало `TypeError`.
- [bpo-43296](https://python-all.ru/3/whatsnew/changelog.html): Улучшена обработка ошибок в [`sqlite3`](https://python-all.ru/3/library/sqlite3.html#module-sqlite3): `sqlite3_value_blob()` ошибки, устанавливающие `SQLITE_NOMEM`, теперь вызывают [`MemoryError`](https://python-all.ru/3/library/exceptions.html#MemoryError). Патч от Erlend E. Aasland.
- [bpo-43312](https://python-all.ru/3/whatsnew/changelog.html): Добавлены новые функции [`sysconfig.get_preferred_scheme()`](https://python-all.ru/3/library/sysconfig.html#sysconfig.get_preferred_scheme) и [`sysconfig.get_default_scheme()`](https://python-all.ru/3/library/sysconfig.html#sysconfig.get_default_scheme) для запроса предпочтительных имен схем «user», «home» и «prefix» (по умолчанию) для платформы.
- [bpo-43265](https://python-all.ru/3/whatsnew/changelog.html): Улучшена обработка ошибок в [`sqlite3.Connection.backup()`](https://python-all.ru/3/library/sqlite3.html#sqlite3.Connection.backup). Сообщение об ошибке для несуществующих имен целевых баз данных теперь `unknown database <database name>` вместо `SQL logic error`. Патч от Erlend E. Aasland.
- [bpo-41282](https://python-all.ru/3/whatsnew/changelog.html): Схемы установки в `distutils.command.install` теперь загружаются из [`sysconfig`](https://python-all.ru/3/library/sysconfig.html#module-sysconfig).
- [bpo-41282](https://python-all.ru/3/whatsnew/changelog.html): `distutils.sysconfig` объединён в [`sysconfig`](https://python-all.ru/3/library/sysconfig.html#module-sysconfig).
- [bpo-43176](https://python-all.ru/3/whatsnew/changelog.html): Исправлена обработка dataclass, наследующего от замороженного dataclass без полей. Теперь это корректно определяется как ошибка.
- [bpo-43080](https://python-all.ru/3/whatsnew/changelog.html): [`pprint`](https://python-all.ru/3/library/pprint.html#module-pprint) теперь поддерживает [`dataclasses.dataclass`](https://python-all.ru/3/library/dataclasses.html#dataclasses.dataclass). Патч от Lewis Gaul.
- [bpo-39950](https://python-all.ru/3/whatsnew/changelog.html): Добавлен метод `pathlib.Path.hardlink_to()`, заменяющий `link_to()`. У нового метода такой же порядок аргументов, как и у `symlink_to()`.
- [bpo-42904](https://python-all.ru/3/whatsnew/changelog.html): [`typing.get_type_hints()`](https://python-all.ru/3/library/typing.html#typing.get_type_hints) теперь проверяет локальное пространство имён класса при вычислении аннотаций [**PEP 563**](https://python-all.ru/3/whatsnew/changelog.html) внутри этого класса.
- [bpo-42269](https://python-all.ru/3/whatsnew/changelog.html): Добавлен параметр `slots` в декоратор `dataclasses.dataclass` для автоматической генерации `__slots__` для класса. Патч предоставлен Yurii Karabas.
- [bpo-39529](https://python-all.ru/3/whatsnew/changelog.html): Устарело использование [`asyncio.get_event_loop()`](https://python-all.ru/3/library/asyncio-eventloop.html#asyncio.get_event_loop) без запущенного цикла событий. Выводится предупреждение об устаревании для функций [`asyncio`](https://python-all.ru/3/library/asyncio.html#module-asyncio), которые неявно создают объекты [`Future`](https://python-all.ru/3/library/asyncio-future.html#asyncio.Future) или [`Task`](https://python-all.ru/3/library/asyncio-task.html#asyncio.Task), если нет запущенного цикла событий и не передан явный аргумент *loop*: [`ensure_future()`](https://python-all.ru/3/library/asyncio-future.html#asyncio.ensure_future), [`wrap_future()`](https://python-all.ru/3/library/asyncio-future.html#asyncio.wrap_future), [`gather()`](https://python-all.ru/3/library/asyncio-task.html#asyncio.gather), [`shield()`](https://python-all.ru/3/library/asyncio-task.html#asyncio.shield), [`as_completed()`](https://python-all.ru/3/library/asyncio-task.html#asyncio.as_completed) и конструкторы `Future`, `Task`, [`StreamReader`](https://python-all.ru/3/library/asyncio-stream.html#asyncio.StreamReader), `StreamReaderProtocol`.
- [bpo-18369](https://python-all.ru/3/whatsnew/changelog.html): В модуль ssl добавлены классы Certificate и PrivateKey. Сертификаты и ключи теперь можно загружать также из буфера в памяти.
- [bpo-41486](https://python-all.ru/3/whatsnew/changelog.html): Использован новый код управления буфером вывода для модулей [`bz2`](https://python-all.ru/3/library/bz2.html#module-bz2) / [`lzma`](https://python-all.ru/3/library/lzma.html#module-lzma) / [`zlib`](https://python-all.ru/3/library/zlib.html#module-zlib), а в класс `_compression.DecompressReader` добавлена функция `.readall()`. Это даёт некоторое повышение производительности. Патч от Ma Lin.
- [bpo-31870](https://python-all.ru/3/whatsnew/changelog.html): У функции [`ssl.get_server_certificate()`](https://python-all.ru/3/library/ssl.html#ssl.get_server_certificate) теперь есть параметр *timeout*.
- [bpo-41735](https://python-all.ru/3/whatsnew/changelog.html): Исправлена редкая ошибка с блокировками потоков в модуле zlib. Патч от Ma Lin.
- [bpo-36470](https://python-all.ru/3/whatsnew/changelog.html): Исправлены dataclasses с `InitVar` и [`replace()`](https://python-all.ru/3/library/dataclasses.html#dataclasses.replace). Патч от Claudiu Popa.
- [bpo-40849](https://python-all.ru/3/whatsnew/changelog.html): Открыт доступ к флагу ssl X509\_V\_FLAG\_PARTIAL\_CHAIN
- [bpo-35114](https://python-all.ru/3/whatsnew/changelog.html): [`ssl.RAND_status()`](https://python-all.ru/3/library/ssl.html#ssl.RAND_status) теперь возвращает логическое значение (как и задокументировано) вместо `1` или `0`.
- [bpo-39906](https://python-all.ru/3/whatsnew/changelog.html): [`pathlib.Path.stat()`](https://python-all.ru/3/library/pathlib.html#pathlib.Path.stat) и [`chmod()`](https://python-all.ru/3/library/pathlib.html#pathlib.Path.chmod) теперь принимают именованный аргумент *follow\_symlinks* для согласованности с соответствующими функциями в модуле [`os`](https://python-all.ru/3/library/os.html#module-os).
- [bpo-39899](https://python-all.ru/3/whatsnew/changelog.html): [`os.path.expanduser()`](https://python-all.ru/3/library/os.path.html#os.path.expanduser) теперь отказывается угадывать домашние каталоги Windows, если базовое имя домашнего каталога текущего пользователя не совпадает с его именем пользователя.

  [`pathlib.Path.expanduser()`](https://python-all.ru/3/library/pathlib.html#pathlib.Path.expanduser) и [`home()`](https://python-all.ru/3/library/pathlib.html#pathlib.Path.home) теперь последовательно вызывают исключение [`RuntimeError`](https://python-all.ru/3/library/exceptions.html#RuntimeError), когда не удаётся определить домашний каталог. Ранее на Windows могло возникать исключение [`KeyError`](https://python-all.ru/3/library/exceptions.html#KeyError), если переменная окружения `"USERNAME"` была не задана.
- [bpo-36076](https://python-all.ru/3/whatsnew/changelog.html): Добавлена поддержка SNI в [`ssl.get_server_certificate()`](https://python-all.ru/3/library/ssl.html#ssl.get_server_certificate).
- [bpo-38490](https://python-all.ru/3/whatsnew/changelog.html): В модуль statistics добавлена функциональность ковариации, корреляции Пирсона и простой линейной регрессии. Патч от Tymoteusz Wołodźko.
- [bpo-33731](https://python-all.ru/3/whatsnew/changelog.html): Добавлена функция locale.localize(), преобразующая нормализованную строку числа в формат локали.
- [bpo-32745](https://python-all.ru/3/whatsnew/changelog.html): Исправлен регресс в обработке типа ctypes [`ctypes.c_wchar_p`](https://python-all.ru/3/library/ctypes.html#ctypes.c_wchar_p): встроенные нулевые символы вызывали [`ValueError`](https://python-all.ru/3/library/exceptions.html#ValueError). Патч от Zackery Spytz.

### Документация

- [bpo-43987](https://python-all.ru/3/whatsnew/changelog.html): Добавлен документ «Рекомендации по аннотациям» в качестве нового HOWTO.
- [bpo-43977](https://python-all.ru/3/whatsnew/changelog.html): Описаны новые флаги типов [`Py_TPFLAGS_MAPPING`](https://python-all.ru/3/c-api/typeobj.html#c.Py_TPFLAGS_MAPPING) и [`Py_TPFLAGS_SEQUENCE`](https://python-all.ru/3/c-api/typeobj.html#c.Py_TPFLAGS_SEQUENCE).
- [bpo-43959](https://python-all.ru/3/whatsnew/changelog.html): Уточнена документация по C-API PyContextVar.
- [bpo-43938](https://python-all.ru/3/whatsnew/changelog.html): Обновлена документация dataclasses: указано, что FrozenInstanceError наследуется от AttributeError.
- [bpo-43778](https://python-all.ru/3/whatsnew/changelog.html): Исправлено расширение Sphinx glossary\_search: создаётся подкаталог \_static/, если его не существует.
- [bpo-43755](https://python-all.ru/3/whatsnew/changelog.html): Обновлена документация: начиная с Python 3.9, не заключённое в скобки лямбда-выражение больше не может быть выражением в части `if` генераторов списков и выражений-генераторов.
- [bpo-43739](https://python-all.ru/3/whatsnew/changelog.html): Исправлен пример кода в Doc/extending/extending.rst: объявление и инициализация переменной pmodule теперь имеют правильный тип.

### Тесты

- [bpo-43961](https://python-all.ru/3/whatsnew/changelog.html): Исправлен test\_logging.test\_namer\_rotator\_inheritance() на Windows: используется [`os.replace()`](https://python-all.ru/3/library/os.html#os.replace) вместо [`os.rename()`](https://python-all.ru/3/library/os.html#os.rename). Патч от Victor Stinner.
- [bpo-43842](https://python-all.ru/3/whatsnew/changelog.html): Исправлено состояние гонки в SMTP-тесте test\_logging. Нельзя закрывать файловый дескриптор (сокет) из другого потока, пока asyncore.loop() опрашивает этот дескриптор. Патч от Victor Stinner.
- [bpo-43843](https://python-all.ru/3/whatsnew/changelog.html): `test.libregrtest` теперь помечает тест как ENV\_CHANGED (изменил окружение выполнения), если поток генерирует необработанное исключение. Устанавливается хук на [`threading.excepthook()`](https://python-all.ru/3/library/threading.html#threading.excepthook). Используйте опцию `--fail-env-changed`, чтобы пометить тест как проваленный. Патч от Victor Stinner.
- [bpo-43811](https://python-all.ru/3/whatsnew/changelog.html): Тестирование нескольких версий OpenSSL на GitHub Actions. Используется ccache для ускорения тестирования.
- [bpo-43791](https://python-all.ru/3/whatsnew/changelog.html): OpenSSL 3.0.0: отключено тестирование устаревших протоколов TLS 1.0 и 1.1. Тесты завершаются ошибкой TLSV1\_ALERT\_INTERNAL\_ERROR.

### Сборка

- [bpo-43567](https://python-all.ru/3/whatsnew/changelog.html): Улучшено обновление сгенерированного кода (AST/токены/опкоды/ключевые слова) на Windows.
- [bpo-43669](https://python-all.ru/3/whatsnew/changelog.html): Реализован [**PEP 644**](https://python-all.ru/3/whatsnew/changelog.html). Теперь Python требует OpenSSL 1.1.1 или новее.

### Windows

- [bpo-35306](https://python-all.ru/3/whatsnew/changelog.html): Добавлены дополнительные аргументы в функцию [`os.startfile()`](https://python-all.ru/3/library/os.html#os.startfile).
- [bpo-43538](https://python-all.ru/3/whatsnew/changelog.html): Исключено возникновение ошибок из [`pathlib.Path.exists()`](https://python-all.ru/3/library/pathlib.html#pathlib.Path.exists) при передаче недопустимого имени файла.
- [bpo-38822](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка [`os.stat()`](https://python-all.ru/3/library/os.html#os.stat) на недоступных каталогах с косой чертой в конце: теперь не происходит возврат к метаданным родительского каталога. Это косвенно затрагивало [`os.path.exists()`](https://python-all.ru/3/library/os.path.html#os.path.exists) и [`os.path.isdir()`](https://python-all.ru/3/library/os.path.html#os.path.isdir).
- [bpo-26227](https://python-all.ru/3/whatsnew/changelog.html): Исправлено декодирование имён хостов в [`socket.gethostbyaddr()`](https://python-all.ru/3/library/socket.html#socket.gethostbyaddr) и [`socket.gethostbyname_ex()`](https://python-all.ru/3/library/socket.html#socket.gethostbyname_ex).
- [bpo-40432](https://python-all.ru/3/whatsnew/changelog.html): Обновлён скрипт регенерации pegen на Windows: теперь он находит и использует Python 3.8 или новее. Ранее регенерация pegen уже требовала Python 3.8 и выше, но скрипт мог использовать более старые версии.
- [bpo-43745](https://python-all.ru/3/whatsnew/changelog.html): Исправлено: сборка Windows теперь действительно использует OpenSSL 1.1.1k. Ранее выпуски были ошибочно помечены и на самом деле снова включали 1.1.1i.
- [bpo-43652](https://python-all.ru/3/whatsnew/changelog.html): Обновлены Tcl и Tk до версии 8.6.11 в установщике Windows.
- [bpo-43492](https://python-all.ru/3/whatsnew/changelog.html): Установщик Windows обновлён для использования SQLite 3.35.5.
- [bpo-30555](https://python-all.ru/3/whatsnew/changelog.html): Исправлены ошибки `WindowsConsoleIO` при перенаправлении файловых дескрипторов. Патч от Segev Finer.

### macOS

- [bpo-42119](https://python-all.ru/3/whatsnew/changelog.html): Исправлена проверка путей macOS SDK при сборке Python. Поиск сужен до содержимого SDK: теперь учитываются только файлы в `/System/Library`, `/System/IOSSupport` и `/usr`, кроме `/usr/local`. Ранее считалось, что всё внутри `/System` является частью SDK, что вызывало проблемы в macOS 10.15+ из-за новой структуры файловой системы: пользовательские файловые системы могут оказаться смонтированными в `/System`. Пути в `/Library` также ошибочно рассматривались как расположения SDK.
- [bpo-43568](https://python-all.ru/3/whatsnew/changelog.html): Прекращена поддержка MACOSX\_DEPLOYMENT\_TARGET \< 10.3
- [bpo-44009](https://python-all.ru/3/whatsnew/changelog.html): Добавлен исполняемый файл «python3.x-intel64», позволяющий надёжно запускать сборки универсального фреймворка (universal2) macOS под эмуляцией Intel-64 (Rosetta 2) на Mac с Apple Silicon. Это может быть полезно для тестирования или когда ещё нет колёс (wheels) для universal2.
- [bpo-43851](https://python-all.ru/3/whatsnew/changelog.html): SQLite на macOS собирается с `SQLITE_OMIT_AUTOINIT`. Патч от Erlend E. Aasland.
- [bpo-43492](https://python-all.ru/3/whatsnew/changelog.html): Установщик macOS обновлён для использования SQLite 3.35.4.
- [bpo-42235](https://python-all.ru/3/whatsnew/changelog.html): `Mac/BuildScript/build-installer.py` теперь будет использовать «–enable-optimizations» и `--with-lto` при сборке на macOS 10.15 или новее.

### IDLE

- [bpo-37903](https://python-all.ru/3/whatsnew/changelog.html): Добавлены действия мыши на боковой панели оболочки. Одиночный щелчок левой кнопкой и перетаскивание (опционально) позволяет выделить одну или несколько строк, как на боковой панели с номерами строк редактора. Щелчок правой кнопкой после выделения открывает контекстное меню с пунктом «копировать с приглашениями». Эта функция объединяет приглашения с боковой панели и строки из выделенного текста.
- [bpo-43981](https://python-all.ru/3/whatsnew/changelog.html): Исправлена утечка ссылок в test\_sidebar и test\_squeezer. Патчи от Terry Jan Reedy и Pablo Galindo.
- [bpo-37892](https://python-all.ru/3/whatsnew/changelog.html): Отступы ввода в оболочке IDLE теперь пробелами вместо табуляции.
- [bpo-43655](https://python-all.ru/3/whatsnew/changelog.html): Окна диалогов IDLE теперь распознаются оконными менеджерами как диалоги на macOS и X Window.
- [bpo-37903](https://python-all.ru/3/whatsnew/changelog.html): Оболочка IDLE теперь отображает приглашения на отдельной боковой панели.

### C API

- [bpo-43916](https://python-all.ru/3/whatsnew/changelog.html): Добавлен новый флаг типа [`Py_TPFLAGS_DISALLOW_INSTANTIATION`](https://python-all.ru/3/c-api/typeobj.html#c.Py_TPFLAGS_DISALLOW_INSTANTIATION) для запрета создания экземпляров типа. Исправление от Victor Stinner.
- [bpo-43774](https://python-all.ru/3/whatsnew/changelog.html): Удалён более не используемый макрос `PYMALLOC_DEBUG`. Отладочные перехватчики на распределителях памяти теперь устанавливаются по умолчанию, если Python собирается в режиме отладки (если определён макрос `Py_DEBUG`). Более того, их теперь можно использовать в сборке Python в режиме выпуска (например, с использованием переменной окружения `PYTHONMALLOC=debug`).
- [bpo-43962](https://python-all.ru/3/whatsnew/changelog.html): \_PyInterpreterState\_IDIncref() теперь вызывает \_PyInterpreterState\_IDInitref() и всегда увеличивает id\_refcount. Ранее вызов \_xxsubinterpreters.get\_current() мог создать несогласованность id\_refcount при освобождении объекта \_xxsubinterpreters.InterpreterID. Исправление от Victor Stinner.
- [bpo-28254](https://python-all.ru/3/whatsnew/changelog.html): Добавлены новые функции C-API для управления состоянием сборщика мусора: [`PyGC_Enable()`](https://python-all.ru/3/c-api/gcsupport.html#c.PyGC_Enable), [`PyGC_Disable()`](https://python-all.ru/3/c-api/gcsupport.html#c.PyGC_Disable), [`PyGC_IsEnabled()`](https://python-all.ru/3/c-api/gcsupport.html#c.PyGC_IsEnabled), соответствующие функциям в модуле [`gc`](https://python-all.ru/3/library/gc.html#module-gc).
- [bpo-43908](https://python-all.ru/3/whatsnew/changelog.html): Введён флаг [`Py_TPFLAGS_IMMUTABLETYPE`](https://python-all.ru/3/c-api/typeobj.html#c.Py_TPFLAGS_IMMUTABLETYPE) для неизменяемых объектов типа и изменён [`PyType_Ready()`](https://python-all.ru/3/c-api/type.html#c.PyType_Ready) для его установки для статических типов. Исправление от Erlend E. Aasland.
- [bpo-43795](https://python-all.ru/3/whatsnew/changelog.html): [`PyMem_Calloc()`](https://python-all.ru/3/c-api/memory.html#c.PyMem_Calloc) теперь доступен в ограниченном C API (`Py_LIMITED_API`).
- [bpo-43868](https://python-all.ru/3/whatsnew/changelog.html): [`PyOS_ReadlineFunctionPointer()`](https://python-all.ru/3/c-api/veryhigh.html#c.PyOS_ReadlineFunctionPointer) больше не экспортируется заголовками ограниченного C API и `python3.dll` в Windows. Как и любая функция, принимающая `FILE*`, она не является частью стабильного ABI.
- [bpo-43795](https://python-all.ru/3/whatsnew/changelog.html): Определения стабильного ABI и ограниченного API генерируются из центрального манифеста ([**PEP 652**](https://python-all.ru/3/whatsnew/changelog.html)).
- [bpo-43753](https://python-all.ru/3/whatsnew/changelog.html): Добавлена функция [`Py_Is(x, y)`](https://python-all.ru/3/c-api/structures.html#c.Py_Is) для проверки, является ли объект *x* объектом *y*, аналогично `x is y` в Python. Также добавлены функции [`Py_IsNone()`](https://python-all.ru/3/c-api/structures.html#c.Py_IsNone), [`Py_IsTrue()`](https://python-all.ru/3/c-api/structures.html#c.Py_IsTrue), [`Py_IsFalse()`](https://python-all.ru/3/c-api/structures.html#c.Py_IsFalse) для проверки, является ли объект, соответственно, синглтоном `None`, синглтоном `True` или синглтоном `False`. Исправление от Victor Stinner.

## Python 3.10.0 alpha 7

*Дата выпуска: 2021-04-05*

### Безопасность

- [bpo-42988](https://python-all.ru/3/whatsnew/changelog.html): [**CVE 2021-3426**](https://python-all.ru/3/whatsnew/changelog.html): Удалена возможность `getfile` модуля [`pydoc`](https://python-all.ru/3/library/pydoc.html#module-pydoc), которая могла использоваться для чтения произвольных файлов на диске (уязвимость обхода каталогов). Более того, даже исходный код модулей Python может содержать конфиденциальные данные, такие как пароли. Уязвимость сообщена David Schwörer.
- [bpo-43285](https://python-all.ru/3/whatsnew/changelog.html): [`ftplib`](https://python-all.ru/3/library/ftplib.html#module-ftplib) больше не доверяет значению IP-адреса, возвращаемому сервером в ответ на команду PASV по умолчанию. Это предотвращает использование ответа вредоносным FTP-сервером для проверки комбинаций IPv4-адресов и портов в сети клиента.

  Код, которому требуется прежнее уязвимое поведение, может установить атрибут `trust_server_pasv_ipv4_address` в своих экземплярах [`ftplib.FTP`](https://python-all.ru/3/library/ftplib.html#ftplib.FTP) в `True`, чтобы снова включить его.
- [bpo-43439](https://python-all.ru/3/whatsnew/changelog.html): Добавлены аудит-хуки для [`gc.get_objects()`](https://python-all.ru/3/library/gc.html#gc.get_objects), [`gc.get_referrers()`](https://python-all.ru/3/library/gc.html#gc.get_referrers) и [`gc.get_referents()`](https://python-all.ru/3/library/gc.html#gc.get_referents). Исправление от Pablo Galindo.

### Ядро и встроенные модули

- [bpo-27129](https://python-all.ru/3/whatsnew/changelog.html): Обновление магического числа байткода CPython.
- [bpo-43672](https://python-all.ru/3/whatsnew/changelog.html): Теперь при вызове find\_loader() возникает ImportWarning.
- [bpo-43660](https://python-all.ru/3/whatsnew/changelog.html): Исправлен сбой, возникающий при замене `sys.stderr` на вызываемый объект, который может удалить объект во время вывода исключения. Исправление от Pablo Galindo.
- [bpo-27129](https://python-all.ru/3/whatsnew/changelog.html): Интерпретатор байткода теперь внутри использует смещения по инструкциям, а не по байтам. Это уменьшает количество необходимых инструкций EXTENDED\_ARG и несколько упрощает диспетчеризацию инструкций.

### Библиотека

- [bpo-40645](https://python-all.ru/3/whatsnew/changelog.html): Исправлена утечка ссылки в расширении `_hashopenssl`. Исправление от Pablo Galindo.

### Ядро и встроенные модули

- [bpo-42134](https://python-all.ru/3/whatsnew/changelog.html): Вызовы find\_module() системой импорта теперь вызывают ImportWarning.
- [bpo-41064](https://python-all.ru/3/whatsnew/changelog.html): Улучшена синтаксическая ошибка при недопустимом использовании двойных звёздочек (‘\*\*’) в f-строках. Исправление от Pablo Galindo.
- [bpo-43575](https://python-all.ru/3/whatsnew/changelog.html): Ускорены вызовы `map()` за счёт использования соглашения о вызовах [**PEP 590**](https://python-all.ru/3/whatsnew/changelog.html) `vectorcall`. Исправление от Donghee Na.
- [bpo-42137](https://python-all.ru/3/whatsnew/changelog.html): Система импорта теперь предпочитает использовать `__spec__` для `ModuleType.__repr__` вместо `module_repr()`.
- [bpo-43452](https://python-all.ru/3/whatsnew/changelog.html): Добавлены микрооптимизации в `_PyType_Lookup()` для повышения производительности поиска в кеше в обычном случае попаданий в кеш.
- [bpo-43555](https://python-all.ru/3/whatsnew/changelog.html): Сообщать о смещении столбца для [`SyntaxError`](https://python-all.ru/3/library/exceptions.html#SyntaxError) при некорректных символах переноса строки. Исправление от Pablo Galindo.
- [bpo-43517](https://python-all.ru/3/whatsnew/changelog.html): Исправлено ложное обнаружение циклических импортов при использовании `from pkg.mod import attr`, которое приводило к ложным срабатываниям в нетривиальном многопоточном коде.
- [bpo-43497](https://python-all.ru/3/whatsnew/changelog.html): Генерировать синтаксическое предупреждение для утверждений с константами-кортежами; это регрессия, появившаяся в Python 3.7.
- [bpo-39316](https://python-all.ru/3/whatsnew/changelog.html): Трассировка теперь указывает правильные номера строк для обращений к атрибутам, когда атрибут находится на другой строке, чем объект. Улучшает отладку и профилирование для цепочек многострочных методов.
- [bpo-35883](https://python-all.ru/3/whatsnew/changelog.html): Python больше не завершает работу с фатальной ошибкой при запуске, если аргумент командной строки содержит недопустимый символ Unicode. Функция [`Py_DecodeLocale()`](https://python-all.ru/3/c-api/sys.html#c.Py_DecodeLocale) теперь экранирует последовательности байтов, которые декодировались бы как символы Unicode вне диапазона \[U+0000; U+10ffff\].
- [bpo-43410](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка, из-за которой парсер падал при выводе сообщений о синтаксических ошибках при чтении ввода со stdin. Исправление от Pablo Galindo.
- [bpo-43406](https://python-all.ru/3/whatsnew/changelog.html): Исправлена возможная гонка состояний, при которой `PyErr_CheckSignals` пытается выполнить обработчик сигнала, не относящегося к Python.
- [bpo-42128](https://python-all.ru/3/whatsnew/changelog.html): Добавлен `__match_args__` в [объекты последовательностей struct](https://python-all.ru/3/c-api/tuple.html#struct-sequence-objects). Исправление от Pablo Galindo.
- [bpo-43390](https://python-all.ru/3/whatsnew/changelog.html): CPython теперь устанавливает флаг `SA_ONSTACK` в `PyOS_setsig` для обработчиков сигналов по умолчанию в виртуальной машине. Это более дружелюбно к другому внутрипроцессному коду, который может подключаться через модуль расширения или встраивание (например, cgo от Golang), где характерны крошечные стеки потоков и `sigaltstack()` используется для поддержки обработчиков сигналов. Для подавляющего большинства процессов, не использующих sigaltstack, это изменение ничего не меняет.
- [bpo-43287](https://python-all.ru/3/whatsnew/changelog.html): Ускорены вызовы `filter()` за счёт использования соглашения о вызовах [**PEP 590**](https://python-all.ru/3/whatsnew/changelog.html)`vectorcall`. Исправление от Donghee Na.
- [bpo-37448](https://python-all.ru/3/whatsnew/changelog.html): Добавлена карта памяти на основе префиксного дерева для отслеживания используемых арен в 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 \<[tim.peters@gmail.com](https://python-all.ru/3/whatsnew/changelog.html)\>
- [bpo-29988](https://python-all.ru/3/whatsnew/changelog.html): Обрабатывать асинхронные исключения и запросы на освобождение GIL только при возврате из вызова или на обратных рёбрах циклов. Гарантирует, что [`__exit__()`](https://python-all.ru/3/reference/datamodel.html#object.__exit__) всегда вызывается в операторах with, даже при прерываниях.

### Библиотека

- [bpo-43720](https://python-all.ru/3/whatsnew/changelog.html): Документированы различные устаревания в imp, pkgutil и importlib.util, которые будут удалены в Python 3.12.
- [bpo-43433](https://python-all.ru/3/whatsnew/changelog.html): [`xmlrpc.client.ServerProxy`](https://python-all.ru/3/library/xmlrpc.client.html#xmlrpc.client.ServerProxy) больше не игнорирует query и fragment в URL сервера.
- [bpo-31956](https://python-all.ru/3/whatsnew/changelog.html): Метод [`index()`](https://python-all.ru/3/library/array.html#array.array.index) у [`array.array`](https://python-all.ru/3/library/array.html#array.array) теперь имеет необязательные параметры *start* и *stop*.
- [bpo-40066](https://python-all.ru/3/whatsnew/changelog.html): Enum: изменено `repr()` для отображения только имени перечисления и элемента (без значения и угловых скобок), а `str()` – только имени элемента. Обновлена и улучшена документация в соответствии с этим.
- [bpo-42136](https://python-all.ru/3/whatsnew/changelog.html): Объявлены устаревшими все методы module\_repr() в importlib, так как их использование будет прекращено в Python 3.12.
- [bpo-35930](https://python-all.ru/3/whatsnew/changelog.html): Возбуждение исключения, возникшего в экземпляре «future», будет создавать циклические ссылки.
- [bpo-41369](https://python-all.ru/3/whatsnew/changelog.html): Завершено обновление поставляемого libmpdec до версии 2.5.1. Исправление от Stefan Krah.
- [bpo-43422](https://python-all.ru/3/whatsnew/changelog.html): Откат C API модуля \_decimal, добавленного в [bpo-41324](https://python-all.ru/3/whatsnew/changelog.html).
- [bpo-43577](https://python-all.ru/3/whatsnew/changelog.html): Исправлена взаимная блокировка при использовании отладочного колбэка [`ssl.SSLContext`](https://python-all.ru/3/library/ssl.html#ssl.SSLContext) с [`ssl.SSLContext.sni_callback()`](https://python-all.ru/3/library/ssl.html#ssl.SSLContext.sni_callback).
- [bpo-43571](https://python-all.ru/3/whatsnew/changelog.html): Теперь возможно создавать MPTCP-сокеты с IPPROTO\_MPTCP.
- [bpo-43542](https://python-all.ru/3/whatsnew/changelog.html): `image/heic` и `image/heif` добавлены в [`mimetypes`](https://python-all.ru/3/library/mimetypes.html#module-mimetypes).
- [bpo-40645](https://python-all.ru/3/whatsnew/changelog.html): Модуль [`hmac`](https://python-all.ru/3/library/hmac.html#module-hmac) теперь использует реализацию HMAC из OpenSSL, когда аргумент digestmod является именем хеша или встроенной хеш-функцией.
- [bpo-43510](https://python-all.ru/3/whatsnew/changelog.html): Реализован [**PEP 597**](https://python-all.ru/3/whatsnew/changelog.html): добавлено предупреждение `EncodingWarning`, параметр `-X warn_default_encoding`, переменная окружения [`PYTHONWARNDEFAULTENCODING`](https://python-all.ru/3/using/cmdline.html#envvar-PYTHONWARNDEFAULTENCODING) и значение аргумента `encoding="locale"`.
- [bpo-43521](https://python-all.ru/3/whatsnew/changelog.html): `ast.unparse` теперь может отображать NaN и пустые множества.
- [bpo-42914](https://python-all.ru/3/whatsnew/changelog.html): [`pprint.pprint()`](https://python-all.ru/3/library/pprint.html#pprint.pprint) получил новый необязательный логический аргумент `underscore_numbers`, который позволяет выводить целые числа с разделением тысяч символом подчёркивания для улучшения читаемости (например, `1_000_000` вместо `1000000`).
- [bpo-41361](https://python-all.ru/3/whatsnew/changelog.html): Вызовы [`rotate()`](https://python-all.ru/3/library/collections.html#collections.deque.rotate) стали немного быстрее благодаря более быстрому разбору аргументов.
- [bpo-43423](https://python-all.ru/3/whatsnew/changelog.html): `subprocess.communicate()` больше не вызывает IndexError, когда при таймауте в Windows пуст буфер ввода-вывода stdout или stderr.
- [bpo-27820](https://python-all.ru/3/whatsnew/changelog.html): Исправлена давняя ошибка smtplib.SMTP, при которой выполнение AUTH LOGIN с initial\_response\_ok=False завершалось неудачей.

  Причина в том, что SMTP.auth\_login \_всегда\_ возвращает пароль, если ему передана строка запроса (challenge), что не соответствует стандарту AUTH LOGIN.

  Также исправлена ошибка в тесте для smtpd.
- [bpo-43445](https://python-all.ru/3/whatsnew/changelog.html): Добавлены замороженные модули в [`sys.stdlib_module_names`](https://python-all.ru/3/library/sys.html#sys.stdlib_module_names). Например, добавлены имена `"_frozen_importlib"` и `"_frozen_importlib_external"`.
- [bpo-43245](https://python-all.ru/3/whatsnew/changelog.html): Добавлена поддержка именованных аргументов в `ChainMap.new_child()`.
- [bpo-29982](https://python-all.ru/3/whatsnew/changelog.html): Добавлен необязательный параметр *ignore\_cleanup\_errors* в [`tempfile.TemporaryDirectory()`](https://python-all.ru/3/library/tempfile.html#tempfile.TemporaryDirectory), а также разрешено несколько попыток `cleanup()`. Автор: C.A.M. Gerlach.
- [bpo-43428](https://python-all.ru/3/whatsnew/changelog.html): Включены изменения из [importlib\_metadata 3.7](https://python-all.ru/3/whatsnew/changelog.html):

  Улучшения производительности при обнаружении дистрибутивов.

  `entry_points` теперь возвращает только уникальные дистрибутивы.

  Введён новый объект `EntryPoints` для хранения набора точек входа (entry points) с удобными методами выбора точек входа по группе или имени. `entry_points` теперь возвращает этот объект, если указаны параметры выбора, но для совместимости продолжает возвращать объект dict. Пользователям рекомендуется использовать интерфейс выбора. Результат в виде объекта dict, вероятно, будет объявлен устаревшим в будущем.

  Добавлена функция packages\_distributions, возвращающая отображение пакетов на дистрибутивы, которые их предоставляют.
- [bpo-43332](https://python-all.ru/3/whatsnew/changelog.html): Улучшена эффективность сетевого взаимодействия [`http.client`](https://python-all.ru/3/library/http.client.html#module-http.client) при использовании прокси через `set_tunnel()`. Во время установки соединения совершается меньше мелких вызовов send.
- [bpo-43420](https://python-all.ru/3/whatsnew/changelog.html): Улучшена производительность арифметики [`fractions.Fraction`](https://python-all.ru/3/library/fractions.html#fractions.Fraction) для больших компонентов. Автор: Sergey B. Kirpichev.
- [bpo-43356](https://python-all.ru/3/whatsnew/changelog.html): Разрешена передача номера сигнала в `_thread.interrupt_main()`.
- [bpo-43399](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка, из-за которой `ElementTree.extend` не работала с итераторами при использовании реализации на Python.
- [bpo-43369](https://python-all.ru/3/whatsnew/changelog.html): Улучшена обработка ошибок в [`sqlite3`](https://python-all.ru/3/library/sqlite3.html#module-sqlite3): если `sqlite3_column_text()` и `sqlite3_column_blob()` устанавливают `SQLITE_NOMEM`, теперь возбуждается [`MemoryError`](https://python-all.ru/3/library/exceptions.html#MemoryError). Патч от Erlend E. Aasland.
- [bpo-43368](https://python-all.ru/3/whatsnew/changelog.html): Исправлен регресс, внесённый в PR 24562, когда пустая байтовая строка извлекалась как `None` вместо `b''` в [`sqlite3`](https://python-all.ru/3/library/sqlite3.html#module-sqlite3). Патч от Mariusz Felisiak.
- [bpo-41282](https://python-all.ru/3/whatsnew/changelog.html): Исправлен stacklevel для `DeprecationWarning`, выдаваемого из `import distutils`.
- [bpo-42129](https://python-all.ru/3/whatsnew/changelog.html): `importlib.resources` теперь учитывает пакеты пространства имён (namespace packages), объединяя ресурсы из каждого местоположения в пространстве имён, как было введено в `importlib_resources` 3.2 и включая сопутствующие изменения до версии 5.0.3.
- [bpo-43295](https://python-all.ru/3/whatsnew/changelog.html): [`datetime.datetime.strptime()`](https://python-all.ru/3/library/datetime.html#datetime.datetime.strptime) теперь возбуждает `ValueError` вместо `IndexError` при сопоставлении `'z'` со спецификатором формата `%z`.
- [bpo-43125](https://python-all.ru/3/whatsnew/changelog.html): Возвращает пустую строку, если base64mime.body\_encode получает пустые байты.
- [bpo-43084](https://python-all.ru/3/whatsnew/changelog.html): [`curses.window.enclose()`](https://python-all.ru/3/library/curses.html#curses.window.enclose) теперь возвращает `True` или `False` (как и было документировано) вместо `1` или `0`.
- [bpo-42994](https://python-all.ru/3/whatsnew/changelog.html): Добавлены MIME-типы для opus, AAC, 3gpp и 3gpp2.
- [bpo-14678](https://python-all.ru/3/whatsnew/changelog.html): Добавлен метод invalidate\_caches() в класс zipimport.zipimporter для поддержки importlib.invalidate\_caches(). Патч от Desmond Cheong.
- [bpo-42782](https://python-all.ru/3/whatsnew/changelog.html): Быстрое завершение с ошибкой в [`shutil.move()`](https://python-all.ru/3/library/shutil.html#shutil.move), чтобы избежать создания целевых каталогов при сбое.
- [bpo-40066](https://python-all.ru/3/whatsnew/changelog.html): Изменены `repr()` и `str()` у Enum: `repr()` теперь *EnumClass.MemberName*, а `str()` – *MemberName*. Кроме того, у Enum из стандартной библиотеки, чьи содержимое доступно как атрибуты модуля, например `RegexFlag.IGNORECASE`, их `repr()` теперь *module.name*, например `re.IGNORECASE`.
- [bpo-26053](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка, из-за которой интерактивная команда запуска [`pdb`](https://python-all.ru/3/library/pdb.html#module-pdb) повторяла аргументы из командной строки оболочки, даже если они были переопределены в приглашении pdb.
- [bpo-24160](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка, из-за которой точки останова не сохранялись между несколькими сеансами отладчика в интерактивном режиме [`pdb`](https://python-all.ru/3/library/pdb.html#module-pdb).
- [bpo-40701](https://python-all.ru/3/whatsnew/changelog.html): Когда глобальная переменная [`tempfile.tempdir`](https://python-all.ru/3/library/tempfile.html#tempfile.tempdir) установлена в значение типа bytes, теперь она обрабатывается единообразно. Ранее в некоторых API tempfile могли возбуждаться исключения, если в такой ситуации каталог ещё не существовал. Также гарантируется, что функции [`tempfile.gettempdir()`](https://python-all.ru/3/library/tempfile.html#tempfile.gettempdir) и [`tempfile.gettempdirb()`](https://python-all.ru/3/library/tempfile.html#tempfile.gettempdirb) *всегда* возвращают `str` и `bytes` соответственно.
- [bpo-39342](https://python-all.ru/3/whatsnew/changelog.html): Предоставлен `X509_V_FLAG_ALLOW_PROXY_CERTS` как [`VERIFY_ALLOW_PROXY_CERTS`](https://python-all.ru/3/library/ssl.html#ssl.VERIFY_ALLOW_PROXY_CERTS) для возможности проверки прокси-сертификатов, как описано в [https://docs.openssl.org/1.1.1/man7/proxy-certificates/](https://python-all.ru/3/whatsnew/changelog.html).
- [bpo-31861](https://python-all.ru/3/whatsnew/changelog.html): Добавлены builtins.aiter и builtins.anext. Патч от Joshua Bronson (@jab), Daniel Pope (@lordmauve) и Justin Wang (@justin39).

### Документация

- [bpo-43199](https://python-all.ru/3/whatsnew/changelog.html): Ответ на вопрос «Почему нет goto?» в FAQ по дизайну и истории.
- [bpo-43407](https://python-all.ru/3/whatsnew/changelog.html): Уточнено, что результат [`time.monotonic()`](https://python-all.ru/3/library/time.html#time.monotonic), [`time.perf_counter()`](https://python-all.ru/3/library/time.html#time.perf_counter), [`time.process_time()`](https://python-all.ru/3/library/time.html#time.process_time) или [`time.thread_time()`](https://python-all.ru/3/library/time.html#time.thread_time) можно сравнивать с результатом любого последующего вызова той же функции, а не только следующего сразу за ним.
- [bpo-43354](https://python-all.ru/3/whatsnew/changelog.html): Исправлена документация типа для `Fault.faultCode`; тип должен быть `int` вместо `str`.
- [bpo-41933](https://python-all.ru/3/whatsnew/changelog.html): Уточнена формулировка s \* n в разделе «Общие операции с последовательностями».

### Тесты

- [bpo-37945](https://python-all.ru/3/whatsnew/changelog.html): Исправлен test\_getsetlocale\_issue1813() из test\_locale: тест пропускается, если `setlocale()` завершается неудачей. Патч Виктора Стиннера.
- [bpo-41561](https://python-all.ru/3/whatsnew/changelog.html): Добавлен обходной путь для пользовательской политики уровня безопасности OpenSSL в Ubuntu.

### Сборка

- [bpo-43179](https://python-all.ru/3/whatsnew/changelog.html): Введение и корректное использование ALIGNOF\_X вместо SIZEOF\_X для кода, связанного с выравниванием, в оптимизированных строковых процедурах. Патч Джессики Кларк.
- [bpo-43631](https://python-all.ru/3/whatsnew/changelog.html): Обновление macOS, Windows и CI до OpenSSL 1.1.1k.
- [bpo-43617](https://python-all.ru/3/whatsnew/changelog.html): Улучшение configure.ac: проверка наличия пакета autoconf-archive и удаление наших копий M4-макросов.
- [bpo-43466](https://python-all.ru/3/whatsnew/changelog.html): Скрипт `configure` теперь поддерживает опцию `--with-openssl-rpath`.
- [bpo-43372](https://python-all.ru/3/whatsnew/changelog.html): Использовать `_freeze_importlib` для генерации кода модуля `__hello__`. Такой подход гарантирует, что код соответствует версии интерпретатора. Ранее для генерации кода использовался PYTHON\_FOR\_REGEN, что могло быть неверно. Формат маршалинга для объектов кода был изменён в [bpo-42246](https://python-all.ru/3/whatsnew/changelog.html), коммит 877df851. Обновлён код и ожидаемые размеры кода в ctypes test\_frozentable.

### Windows

- [bpo-43440](https://python-all.ru/3/whatsnew/changelog.html): Сборка [`sqlite3`](https://python-all.ru/3/library/sqlite3.html#module-sqlite3) с включённым модулем `R*Tree`. Патч Эрленда Э. Осланда.

### IDLE

- [bpo-42225](https://python-all.ru/3/whatsnew/changelog.html): Документирование того, что IDLE может завершаться ошибкой в Unix либо из-за неверно настроенных правил маскарада IP, либо из-за невозможности отобразить сложные цветные (не ASCII) символы.

### C API

- [bpo-43688](https://python-all.ru/3/whatsnew/changelog.html): Ограниченный C API теперь поддерживается, если Python собран в режиме отладки (если определён макрос `Py_DEBUG`). В ограниченном C API функции [`Py_INCREF()`](https://python-all.ru/3/c-api/refcounting.html#c.Py_INCREF) и [`Py_DECREF()`](https://python-all.ru/3/c-api/refcounting.html#c.Py_DECREF) теперь реализованы как непрозрачные вызовы функций, а не прямой доступ к члену [`PyObject.ob_refcnt`](https://python-all.ru/3/c-api/structures.html#c.PyObject.ob_refcnt), если Python собран в режиме отладки и макрос `Py_LIMITED_API` нацелен на Python 3.10 или новее. Поддержка ограниченного C API в режиме отладки стала возможной, потому что структура [`PyObject`](https://python-all.ru/3/c-api/structures.html#c.PyObject) одинакова в релизном и отладочном режимах, начиная с Python 3.8 (см. [bpo-36465](https://python-all.ru/3/whatsnew/changelog.html)).

  Ограниченный C API по-прежнему не поддерживается в специальной сборке `--with-trace-refs` (макрос `Py_TRACE_REFS`).

  Патч Виктора Стиннера.
- [bpo-43244](https://python-all.ru/3/whatsnew/changelog.html): Удалён заголовочный файл `pyarena.h` с функциями:

  - `PyArena_New()`
  - `PyArena_Free()`
  - `PyArena_Malloc()`
  - `PyArena_AddPyObject()`

  Эти функции не были документированы, исключены из ограниченного C API и использовались только внутри компилятора. Патч Виктора Стиннера.
- [bpo-43244](https://python-all.ru/3/whatsnew/changelog.html): Удалены функции компилятора и парсера, использующие тип `struct _mod`, так как публичный C API AST был удалён:

  - `PyAST_Compile()`
  - `PyAST_CompileEx()`
  - `PyAST_CompileObject()`
  - `PyFuture_FromAST()`
  - `PyFuture_FromASTObject()`
  - `PyParser_ASTFromFile()`
  - `PyParser_ASTFromFileObject()`
  - `PyParser_ASTFromFilename()`
  - `PyParser_ASTFromString()`
  - `PyParser_ASTFromStringObject()`

  Эти функции не были документированы и исключены из ограниченного C API. Патч Виктора Стиннера.
- [bpo-43244](https://python-all.ru/3/whatsnew/changelog.html): Удалены заголовочные файлы `ast.h`, `asdl.h` и `Python-ast.h`. Эти функции не были документированы и исключены из ограниченного C API. Большинство имён, определённых в этих заголовочных файлах, не имели префикса `Py` и поэтому могли создавать конфликты имён. Например, `Python-ast.h` определял макрос `Yield`, который конфликтовал с именем `Yield`, используемым заголовочным файлом Windows `<winbase.h>`. Вместо этого используйте модуль Python [`ast`](https://python-all.ru/3/library/ast.html#module-ast). Патч Виктора Стиннера.
- [bpo-43541](https://python-all.ru/3/whatsnew/changelog.html): Исправлена регрессия `PyEval_EvalCodeEx()`: исправлен подсчёт ссылок на встроенные объекты. Патч Виктора Стиннера.
- [bpo-43244](https://python-all.ru/3/whatsnew/changelog.html): Удалён заголовочный файл `symtable.h` и недокументированные функции:

  - `PyST_GetScope()`
  - `PySymtable_Build()`
  - `PySymtable_BuildObject()`
  - `PySymtable_Free()`
  - `Py_SymtableString()`
  - `Py_SymtableStringObject()`

  Функция `Py_SymtableString()` была по ошибке частью стабильного ABI, но её нельзя было использовать, поскольку заголовочный файл `symtable.h` был исключён из ограниченного C API.

  Модуль Python [`symtable`](https://python-all.ru/3/library/symtable.html#module-symtable) остаётся доступным и не изменился.

  Патч Виктора Стиннера.
- [bpo-43244](https://python-all.ru/3/whatsnew/changelog.html): Удалена функция `PyAST_Validate()`. Больше невозможно создать объект AST (тип `mod_ty`) с помощью публичного C API. Функция уже была исключена из ограниченного C API ([**PEP 384**](https://python-all.ru/3/whatsnew/changelog.html)). Исправление от Victor Stinner.

## Python 3.10.0 alpha 6

*Дата выпуска: 2021-03-01*

### Безопасность

- [bpo-42967](https://python-all.ru/3/whatsnew/changelog.html): Исправлена уязвимость отравления веб-кэша: теперь по умолчанию разделителем аргументов запроса установлен `&`, и пользователь может выбрать собственный разделитель.

### Ядро и встроенные модули

- [bpo-43321](https://python-all.ru/3/whatsnew/changelog.html): Исправлено возбуждение `SystemError` при использовании `PyArg_Parse*()` с `#`, но без определения `PY_SSIZE_T_CLEAN`.
- [bpo-36346](https://python-all.ru/3/whatsnew/changelog.html): Функции `PyArg_Parse*()` теперь генерируют `DeprecationWarning` при использовании формата `u` или `Z`. Подробнее см. [**PEP 623**](https://python-all.ru/3/whatsnew/changelog.html).
- [bpo-43277](https://python-all.ru/3/whatsnew/changelog.html): Добавлена новая функция [`PySet_CheckExact()`](https://python-all.ru/3/c-api/set.html#c.PySet_CheckExact) в C-API, проверяющая, является ли объект экземпляром [`set`](https://python-all.ru/3/library/stdtypes.html#set), но не экземпляром подтипа. Исправление от Pablo Galindo.
- [bpo-42990](https://python-all.ru/3/whatsnew/changelog.html): Конструктор [`types.FunctionType`](https://python-all.ru/3/library/types.html#types.FunctionType) теперь наследует текущие встроенные модули, если словарь *globals* не содержит ключа `"__builtins__"` вместо использования `{"None": None}` в качестве встроенных: такое же поведение, как у функций [`eval()`](https://python-all.ru/3/library/functions.html#eval) и [`exec()`](https://python-all.ru/3/library/functions.html#exec). Определение функции с `def function(...): ...` в Python не затрагивается: глобальные переменные нельзя переопределить с помощью этого синтаксиса – он тоже наследует текущие встроенные модули. Исправление от Victor Stinner.
- [bpo-42990](https://python-all.ru/3/whatsnew/changelog.html): У функций появился новый атрибут `__builtins__`, который используется для поиска встроенных символов при выполнении функции, вместо обращения к `__globals__['__builtins__']`. Исправление от Mark Shannon и Victor Stinner.
- [bpo-43149](https://python-all.ru/3/whatsnew/changelog.html): Улучшено сообщение об ошибке в парсере для групп исключений без круглых скобок. Исправление от Pablo Galindo.
- [bpo-43121](https://python-all.ru/3/whatsnew/changelog.html): Исправлено некорректное сообщение [`SyntaxError`](https://python-all.ru/3/library/exceptions.html#SyntaxError) о пропущенной запятой в литералах. Исправление от Pablo Galindo.

### Библиотека

- [bpo-42819](https://python-all.ru/3/whatsnew/changelog.html): [`readline`](https://python-all.ru/3/library/readline.html#module-readline): Явное отключение bracketed paste в интерактивном интерпретаторе, даже если он задан в inputrc, включён по умолчанию (например, GNU Readline 8.1) или пользователь вызывает `readline.read_init_file()`. В Python REPL не реализована поддержка bracketed paste. Кроме того, bracketed mode записывает управляющую последовательность `"\x1b[?2004h"` в stdout, что вызывает сбои тестов в приложениях, не поддерживающих его. Его по-прежнему можно явно включить, вызвав `readline.parse_and_bind("set enable-bracketed-paste on")`. Исправление от Dustin Rodrigues.

### Ядро и встроенные модули

- [bpo-42808](https://python-all.ru/3/whatsnew/changelog.html): Простые вызовы `type(object)` теперь выполняются быстрее благодаря соглашению о вызовах `vectorcall`. Исправление от Dennis Sweeney.
- [bpo-42217](https://python-all.ru/3/whatsnew/changelog.html): Компилятор теперь объединяет одинаковые объекты co\_code и co\_linetable в модуле, как уже делал для co\_consts.
- [bpo-41972](https://python-all.ru/3/whatsnew/changelog.html): Функции поиска подстрок, такие как `str1 in str2` и `str2.find(str1)`, теперь иногда используют алгоритм сравнения строк «Two-Way», чтобы избежать квадратичного поведения на длинных строках.
- [bpo-42128](https://python-all.ru/3/whatsnew/changelog.html): Реализована [**PEP 634**](https://python-all.ru/3/whatsnew/changelog.html) (структурное сопоставление с образцом). Исправление от Brandt Bucher.

### Библиотека

- [bpo-40692](https://python-all.ru/3/whatsnew/changelog.html): В [`concurrent.futures.ProcessPoolExecutor`](https://python-all.ru/3/library/concurrent.futures.html#concurrent.futures.ProcessPoolExecutor) проверяется, что `multiprocess.synchronize()` доступен на данной платформе, и эта проверка используется в тестовом наборе [`concurrent.futures`](https://python-all.ru/3/library/concurrent.futures.html#module-concurrent.futures), чтобы можно было запускать тесты, не связанные с `ProcessPoolExecutor`, на этих платформах.

### Ядро и встроенные модули

- [bpo-38302](https://python-all.ru/3/whatsnew/changelog.html): Если [`object.__ipow__()`](https://python-all.ru/3/reference/datamodel.html#object.__ipow__) возвращает [`NotImplemented`](https://python-all.ru/3/library/constants.html#NotImplemented), то оператор корректно переключится на [`object.__pow__()`](https://python-all.ru/3/reference/datamodel.html#object.__pow__) и [`object.__rpow__()`](https://python-all.ru/3/reference/datamodel.html#object.__rpow__), как и ожидается.

### Библиотека

- [bpo-43316](https://python-all.ru/3/whatsnew/changelog.html): Приложение командной строки `python -m gzip` теперь корректно завершается с ошибкой при обнаружении неподдерживаемого расширения. Оно завершается с ненулевым кодом возврата и выводит сообщение об ошибке в stderr.
- [bpo-43317](https://python-all.ru/3/whatsnew/changelog.html): Размер блока для главной функции модуля `gzip` установлен в io.DEFAULT\_BUFFER\_SIZE. Это немного быстрее, чем константа 1024 байта, которая использовалась ранее.
- [bpo-43146](https://python-all.ru/3/whatsnew/changelog.html): Обработка None в однопараметрических версиях [`print_exception()`](https://python-all.ru/3/library/traceback.html#traceback.print_exception) и [`format_exception()`](https://python-all.ru/3/library/traceback.html#traceback.format_exception).
- [bpo-43260](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ситуация, когда TextIOWrapper не мог сбросить внутренний буфер после записи очень большого текста.
- [bpo-43258](https://python-all.ru/3/whatsnew/changelog.html): Предотвращение ненужного выделения контекста агрегатной функции [`sqlite3`](https://python-all.ru/3/library/sqlite3.html#module-sqlite3), когда ни одна строка не соответствует агрегатному запросу. Исправление от Erlend E. Aasland.
- [bpo-43251](https://python-all.ru/3/whatsnew/changelog.html): Улучшена обработка ошибок [`sqlite3`](https://python-all.ru/3/library/sqlite3.html#module-sqlite3): отказы `sqlite3_column_name()` теперь приводят к [`MemoryError`](https://python-all.ru/3/library/exceptions.html#MemoryError). Исправление от Erlend E. Aasland.
- [bpo-40956](https://python-all.ru/3/whatsnew/changelog.html): Исправлен segfault в [`sqlite3.Connection.backup()`](https://python-all.ru/3/library/sqlite3.html#sqlite3.Connection.backup), если не был передан аргумент. Регрессия была внесена PR 23838. Исправление от Erlend E. Aasland.
- [bpo-43172](https://python-all.ru/3/whatsnew/changelog.html): модуль readline теперь проходит свои тесты при сборке напрямую с libedit. Остаются неустранимые различия в API в поведении [`readline.get_begidx()`](https://python-all.ru/3/library/readline.html#readline.get_begidx) и [`readline.get_endidx()`](https://python-all.ru/3/library/readline.html#readline.get_endidx) в зависимости от использования libreadline или libedit.
- [bpo-43163](https://python-all.ru/3/whatsnew/changelog.html): исправлена ошибка в [`codeop`](https://python-all.ru/3/library/codeop.html#module-codeop), из-за которой он не запрашивал дополнительный ввод, если в многострочных фрагментах имелись незакрытые скобки. Патч от Pablo Galindo.
- [bpo-43162](https://python-all.ru/3/whatsnew/changelog.html): объявлена устаревшей неподдерживаемая возможность доступа к элементам перечисления как атрибутам других элементов перечисления.
- [bpo-43146](https://python-all.ru/3/whatsnew/changelog.html): исправлен недавний регресс в обработке аргумента None в функциях модуля [`traceback`](https://python-all.ru/3/library/traceback.html#module-traceback).
- [bpo-43102](https://python-all.ru/3/whatsnew/changelog.html): в методе \_\_new\_\_ именованного кортежа (namedtuple) в качестве \_\_builtins\_\_ устанавливался None вместо настоящего словаря. Это создавало проблемы для инструментов интроспекции.
- [bpo-43106](https://python-all.ru/3/whatsnew/changelog.html): добавлены [`O_EVTONLY`](https://python-all.ru/3/library/os.html#os.O_EVTONLY), [`O_FSYNC`](https://python-all.ru/3/library/os.html#os.O_FSYNC), [`O_SYMLINK`](https://python-all.ru/3/library/os.html#os.O_SYMLINK) и [`O_NOFOLLOW_ANY`](https://python-all.ru/3/library/os.html#os.O_NOFOLLOW_ANY) для macOS. Патч от Donghee Na.
- [bpo-42960](https://python-all.ru/3/whatsnew/changelog.html): добавлена константа [`resource.RLIMIT_KQUEUES`](https://python-all.ru/3/library/resource.html#resource.RLIMIT_KQUEUES) из FreeBSD в модуль [`resource`](https://python-all.ru/3/library/resource.html#module-resource).
- [bpo-42151](https://python-all.ru/3/whatsnew/changelog.html): чистая реализация [`xml.etree.ElementTree`](https://python-all.ru/3/library/xml.etree.elementtree.html#module-xml.etree.ElementTree) на Python теперь ведёт себя так же, как реализация на C (`_elementree`), в отношении значений атрибутов по умолчанию (не задавая `specified_attributes=1`).
- [bpo-29753](https://python-all.ru/3/whatsnew/changelog.html): в ctypes упакованные битовые поля теперь вычисляются правильно, и первый элемент упакованных битовых полей теперь корректно сжимается.

### Документация

- [bpo-27646](https://python-all.ru/3/whatsnew/changelog.html): уточнено, что конструкция 'yield from \<expr\>' работает с любым итерируемым объектом, а не только с итераторами.
- [bpo-36346](https://python-all.ru/3/whatsnew/changelog.html): обновлены некоторые устаревшие Unicode API, для которых в документации указано «будет удалено в 4.0» – теперь указано «3.12». Подробнее см. [**PEP 623**](https://python-all.ru/3/whatsnew/changelog.html).

### Тесты

- [bpo-43288](https://python-all.ru/3/whatsnew/changelog.html): исправлен test\_importlib для корректного пропуска тестов файлов с символами Unicode, если файловая система их не поддерживает.

### Сборка

- [bpo-43174](https://python-all.ru/3/whatsnew/changelog.html): сборка для Windows теперь использует параметр компилятора `/utf-8`.
- [bpo-43103](https://python-all.ru/3/whatsnew/changelog.html): добавлена новая опция configure `--without-static-libpython`, позволяющая не собирать статическую библиотеку `libpythonMAJOR.MINOR.a` и не устанавливать объектный файл `python.o`.
- [bpo-13501](https://python-all.ru/3/whatsnew/changelog.html): сценарий configure теперь может использовать *libedit* вместо *readline* с параметром командной строки `--with-readline=editline`.
- [bpo-42603](https://python-all.ru/3/whatsnew/changelog.html): сценарий configure теперь использует pkg-config для определения расположения заголовочных файлов и библиотек Tcl/Tk, используемых для сборки tkinter.

  На macOS конфигурация Tcl/Tk, предоставленная pkg-config, будет предпочитаться фреймворкам Tcl/Tk, установленным в `/{System/,}Library/Frameworks`. Если существуют обе и предпочтительнее последняя, необходимо явно задать соответствующие параметры конфигурации `--with-tcltk-*`.
- [bpo-39448](https://python-all.ru/3/whatsnew/changelog.html): добавлена цель makefile «regen-frozen», которая перегенерирует код для замороженного модуля `__hello__`.

### Windows

- [bpo-43155](https://python-all.ru/3/whatsnew/changelog.html): [`PyCMethod_New()`](https://python-all.ru/3/c-api/structures.html#c.PyCMethod_New) теперь присутствует в `python3.lib`.

### macOS

- [bpo-41837](https://python-all.ru/3/whatsnew/changelog.html): обновлена сборка установщика macOS для использования OpenSSL 1.1.1j.

### IDLE

- [bpo-43283](https://python-all.ru/3/whatsnew/changelog.html): описано, почему вывод в оболочку IDLE часто медленнее вывода в системный терминал и что его можно ускорить, предварительно отформатировав одну строку перед выводом.

### C API

- [bpo-43278](https://python-all.ru/3/whatsnew/changelog.html): информация о компиляторе и системе теперь всегда выводится в первой строке приветственного сообщения REPL.
- [bpo-43270](https://python-all.ru/3/whatsnew/changelog.html): удалён закрытый макрос `_PyErr_OCCURRED()`; вместо него используйте публичную функцию [`PyErr_Occurred()`](https://python-all.ru/3/c-api/exceptions.html#c.PyErr_Occurred).
- [bpo-35134](https://python-all.ru/3/whatsnew/changelog.html): переместите odictobject.h, parser\_interface.h, picklebufobject.h, pydebug.h и pyfpe.h в каталог cpython/. Они не должны подключаться напрямую, так как уже подключаются через Python.h: [Файлы Include](https://python-all.ru/3/c-api/intro.html#api-includes).
- [bpo-35134](https://python-all.ru/3/whatsnew/changelog.html): переместите pyarena.h, pyctype.h и pytime.h в каталог cpython/. Они не должны подключаться напрямую, так как уже подключаются через Python.h: [Файлы Include](https://python-all.ru/3/c-api/intro.html#api-includes).
- [bpo-40170](https://python-all.ru/3/whatsnew/changelog.html): [`PyExceptionClass_Name()`](https://python-all.ru/3/c-api/exceptions.html#c.PyExceptionClass_Name) теперь всегда объявляется как функция, чтобы скрыть детали реализации. Макрос обращался к [`PyTypeObject.tp_name`](https://python-all.ru/3/c-api/typeobj.html#c.PyTypeObject.tp_name) напрямую. Патч от Erlend E. Aasland.
- [bpo-43239](https://python-all.ru/3/whatsnew/changelog.html): Функция [`PyCFunction_New()`](https://python-all.ru/3/c-api/structures.html#c.PyCFunction_New) теперь экспортируется в ABI при компиляции с `-fvisibility=hidden`.
- [bpo-40170](https://python-all.ru/3/whatsnew/changelog.html): [`PyIter_Check()`](https://python-all.ru/3/c-api/iter.html#c.PyIter_Check) теперь всегда объявляется как функция, чтобы скрыть детали реализации. Макрос обращался к [`PyTypeObject.tp_iternext`](https://python-all.ru/3/c-api/typeobj.html#c.PyTypeObject.tp_iternext) напрямую. Патч от Erlend E. Aasland.
- [bpo-40170](https://python-all.ru/3/whatsnew/changelog.html): Преобразование макроса [`PyDescr_IsData()`](https://python-all.ru/3/c-api/descriptor.html#c.PyDescr_IsData) в функцию для сокрытия деталей реализации: макрос обращался к [`PyTypeObject.tp_descr_set`](https://python-all.ru/3/c-api/typeobj.html#c.PyTypeObject.tp_descr_set) напрямую. Патч от Erlend E. Aasland.
- [bpo-43181](https://python-all.ru/3/whatsnew/changelog.html): Преобразование макроса [`PyObject_TypeCheck()`](https://python-all.ru/3/c-api/object.html#c.PyObject_TypeCheck) в статическую встроенную функцию. Патч от Erlend E. Aasland.

## Python 3.10.0 alpha 5

*Дата выпуска: 2021-02-02*

### Безопасность

- [bpo-42938](https://python-all.ru/3/whatsnew/changelog.html): Отказ от статических буферов при вычислении repr значений [`ctypes.c_double`](https://python-all.ru/3/library/ctypes.html#ctypes.c_double) и [`ctypes.c_longdouble`](https://python-all.ru/3/library/ctypes.html#ctypes.c_longdouble).

### Ядро и встроенные объекты

- [bpo-42990](https://python-all.ru/3/whatsnew/changelog.html): Рефакторинг семейства функций `PyEval_`.

  - Добавлена новая функция `_PyEval_Vector` для упрощения вызовов Python из C.
  - `_PyEval_EvalCodeWithName` удалён
  - `PyEval_EvalCodeEx` сохранён как часть API, но не используется внутри
- [bpo-38631](https://python-all.ru/3/whatsnew/changelog.html): Замена вызовов [`Py_FatalError()`](https://python-all.ru/3/c-api/sys.html#c.Py_FatalError) в компиляторе на обычные исключения [`SystemError`](https://python-all.ru/3/library/exceptions.html#SystemError). Патч от Victor Stinner.
- [bpo-42997](https://python-all.ru/3/whatsnew/changelog.html): Улучшение сообщения об ошибке при отсутствии «:» перед блоками. Патч от Pablo Galindo.
- [bpo-43017](https://python-all.ru/3/whatsnew/changelog.html): Улучшение сообщения об ошибке в парсере при использовании кортежей без скобок в генераторах. Патч от Pablo Galindo.
- [bpo-42986](https://python-all.ru/3/whatsnew/changelog.html): Исправление падения парсера при сообщении об ошибках синтаксиса в f-строке с переводами строк. Патч от Pablo Galindo.
- [bpo-40176](https://python-all.ru/3/whatsnew/changelog.html): Ошибки синтаксиса для незавершённых строковых литералов теперь указывают на начало строки вместо сообщения о конце файла/строки.
- [bpo-42927](https://python-all.ru/3/whatsnew/changelog.html): Встроенный кеш для `LOAD_ATTR` теперь также оптимизирует доступ к атрибутам, определённым через `__slots__`. Это ускоряет чтение таких атрибутов до 30%.
- [bpo-42864](https://python-all.ru/3/whatsnew/changelog.html): Улучшение сообщений об ошибках в парсере при незакрытых скобках. Патч от Pablo Galindo.
- [bpo-42924](https://python-all.ru/3/whatsnew/changelog.html): Исправление повторения `bytearray`, которое некорректно копировало данные с начала буфера, даже если данные были смещены внутри буфера (например, после присваивания среза в начале `bytearray` более короткой строке байтов).
- [bpo-42882](https://python-all.ru/3/whatsnew/changelog.html): Исправление функции `_PyUnicode_FromId()` (API \_Py\_IDENTIFIER(var)) при многократном вызове [`Py_Initialize()`](https://python-all.ru/3/c-api/interp-lifecycle.html#c.Py_Initialize) / [`Py_Finalize()`](https://python-all.ru/3/c-api/interp-lifecycle.html#c.Py_Finalize): сохранение значения `_PyRuntime.unicode_ids.next_index`.
- [bpo-42827](https://python-all.ru/3/whatsnew/changelog.html): Исправление падения при определении строки с ошибкой для [`SyntaxError`](https://python-all.ru/3/library/exceptions.html#SyntaxError) в некоторых многострочных выражениях.
- [bpo-42823](https://python-all.ru/3/whatsnew/changelog.html): frame.f\_lineno корректен, даже если frame.f\_trace установлен в True

### Библиотека

- [bpo-37324](https://python-all.ru/3/whatsnew/changelog.html): Удаление устаревших псевдонимов [Абстрактных базовых классов коллекций](https://python-all.ru/3/library/collections.abc.html#collections-abstract-base-classes) из модуля [`collections`](https://python-all.ru/3/library/collections.html#module-collections).

### Ядро и встроенные объекты

- [bpo-41994](https://python-all.ru/3/whatsnew/changelog.html): Исправлена возможная утечка в `import`, когда `sys.modules` не является `dict`.
- [bpo-27772](https://python-all.ru/3/whatsnew/changelog.html): При форматировании строк предшествование `'0'` полю *ширины* больше не влияет на выравнивание по умолчанию для строк.

### Библиотека

- [bpo-43108](https://python-all.ru/3/whatsnew/changelog.html): Исправлена утечка ссылок в модуле [`curses`](https://python-all.ru/3/library/curses.html#module-curses). Патч от Pablo Galindo
- [bpo-43077](https://python-all.ru/3/whatsnew/changelog.html): Обновлена встроенная версия pip до 21.0.1 и setuptools до 52.0.0.
- [bpo-41282](https://python-all.ru/3/whatsnew/changelog.html): Объявлено устаревшим `distutils` в документации и добавлено предупреждение при импорте.
- [bpo-43014](https://python-all.ru/3/whatsnew/changelog.html): Повышена производительность [`tokenize`](https://python-all.ru/3/library/tokenize.html#module-tokenize) на 20–30%. Автор исправления – Энтони Соттил (Anthony Sottile).
- [bpo-42323](https://python-all.ru/3/whatsnew/changelog.html): Исправлен [`math.nextafter()`](https://python-all.ru/3/library/math.html#math.nextafter) для NaN на AIX.
- [bpo-42955](https://python-all.ru/3/whatsnew/changelog.html): Добавлен [`sys.stdlib_module_names`](https://python-all.ru/3/library/sys.html#sys.stdlib_module_names), содержащий список имён модулей стандартной библиотеки. Автор исправления – Виктор Стиннер (Victor Stinner).
- [bpo-42944](https://python-all.ru/3/whatsnew/changelog.html): Исправлен `random.Random.sample`, когда аргумент `counts` не является `None`.
- [bpo-42934](https://python-all.ru/3/whatsnew/changelog.html): Используется новый параметр `compact` объекта [`TracebackException`](https://python-all.ru/3/library/traceback.html#traceback.TracebackException) в [`TestResult`](https://python-all.ru/3/library/unittest.html#unittest.TestResult) для сокращения времени и памяти, затрачиваемых на форматирование трассировки стека.
- [bpo-42931](https://python-all.ru/3/whatsnew/changelog.html): Добавлен `randbytes()` в `random.__all__`.
- [bpo-38250](https://python-all.ru/3/whatsnew/changelog.html): \[Enum\] Флаги, состоящие из одного бита, теперь считаются каноническими и будут единственными флагами, возвращаемыми при перечислении и итерации по классу Flag или его члену. Многобитовые флаги считаются псевдонимами; они будут возвращены из операций поиска и операций, в результате которых получается их значение. Итерация как по Flag, так и по членам Flag выполняется в порядке определения.
- [bpo-42877](https://python-all.ru/3/whatsnew/changelog.html): В конструктор [`traceback.TracebackException`](https://python-all.ru/3/library/traceback.html#traceback.TracebackException) добавлен параметр `compact` для сокращения времени и памяти в случаях, когда нужно вызывать только `TracebackException.format()` и `TracebackException.format_exception_only()`.
- [bpo-42923](https://python-all.ru/3/whatsnew/changelog.html): Функция [`Py_FatalError()`](https://python-all.ru/3/c-api/sys.html#c.Py_FatalError) и модуль [`faulthandler`](https://python-all.ru/3/library/faulthandler.html#module-faulthandler) теперь выгружают список модулей расширения при фатальной ошибке.
- [bpo-42848](https://python-all.ru/3/whatsnew/changelog.html): Удалена рекурсия из [`TracebackException`](https://python-all.ru/3/library/traceback.html#traceback.TracebackException), чтобы он мог обрабатывать длинные цепочки исключений.
- [bpo-42901](https://python-all.ru/3/whatsnew/changelog.html): \[Enum\] Создание членов перенесено из `EnumMeta.__new__` в `_proto_member.__set_name__`, что позволяет создавать члены и делать их видимыми в `__init_subclass__`.
- [bpo-42780](https://python-all.ru/3/whatsnew/changelog.html): Исправлено os.set\_inheritable() для файловых дескрипторов O\_PATH в Linux.
- [bpo-42866](https://python-all.ru/3/whatsnew/changelog.html): Исправлена утечка ссылок в функции `getcodec()` кодировок CJK. Автор исправления – Виктор Стиннер.
- [bpo-42846](https://python-all.ru/3/whatsnew/changelog.html): Шесть модулей расширения кодировок CJK (\_codecs\_cn, \_codecs\_hk, \_codecs\_iso2022, \_codecs\_jp, \_codecs\_kr и \_codecs\_tw) переведены на многофазный API инициализации ([**PEP 489**](https://python-all.ru/3/whatsnew/changelog.html)). Автор исправления – Виктор Стиннер.
- [bpo-42851](https://python-all.ru/3/whatsnew/changelog.html): удалена поддержка \_\_init\_subclass\_\_ для членов Enum
- [bpo-42834](https://python-all.ru/3/whatsnew/changelog.html): Внутренние кэши модуля `_json` сделаны совместимыми с субинтерпретаторами.
- [bpo-41748](https://python-all.ru/3/whatsnew/changelog.html): Исправлены правила парсинга HTMLParser для атрибутов элементов, содержащих запятые с пробелами. Автор исправления – Карл Дюбост (Karl Dubost).
- [bpo-40810](https://python-all.ru/3/whatsnew/changelog.html): Теперь требуется SQLite 3.7.15 или новее. Автор исправления – Эрленд Э. Аасланд (Erlend E. Aasland).
- [bpo-1635741](https://python-all.ru/3/whatsnew/changelog.html): Модуль расширения \_multibytecodec (кодировки CJK) переведён на многофазную инициализацию ([**PEP 489**](https://python-all.ru/3/whatsnew/changelog.html)). Автор исправления – Эрленд Э. Аасланд.
- [bpo-42802](https://python-all.ru/3/whatsnew/changelog.html): Команда distutils `bdist_wininst`, объявленная устаревшей в Python 3.8, удалена. Для распространения бинарных пакетов в Windows теперь рекомендуется команда distutils `bdist_wheel`.
- [bpo-24464](https://python-all.ru/3/whatsnew/changelog.html): Незадокументированная встроенная функция `sqlite3.enable_shared_cache` теперь объявлена устаревшей; её удаление запланировано на Python 3.12. Документация SQLite3 настоятельно не рекомендует её использовать. Автор исправления – Эрленд Э. Аасланд.
- [bpo-42384](https://python-all.ru/3/whatsnew/changelog.html): Исправлено поведение pdb: теперь sys.path\[0\] заполняется в точности так же, как при обычном запуске python.
- [bpo-42383](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка в pdb: ранее pdb не удавалось перезапустить цель отладки, если она была указана с относительным путём, а текущий каталог изменился.
- [bpo-42005](https://python-all.ru/3/whatsnew/changelog.html): Исправлен интерфейс командной строки [`cProfile`](https://python-all.ru/3/library/profile.html#module-cProfile) и [`profile`](https://python-all.ru/3/library/profile.html#module-profile) для обработки [`BrokenPipeError`](https://python-all.ru/3/library/exceptions.html#BrokenPipeError).
- [bpo-41604](https://python-all.ru/3/whatsnew/changelog.html): Не уменьшать счётчик ссылок предыдущего user\_ptr при сбое set\_panel\_userptr.
- [bpo-41149](https://python-all.ru/3/whatsnew/changelog.html): Разрешено выполнение вызываемых объектов, имеющих булево значение `False`, при передаче их в качестве цели в `Threading.thread`. Автор исправления – Барни Стратфорд (Barney Stratford).
- [bpo-38307](https://python-all.ru/3/whatsnew/changelog.html): Добавлен атрибут ‘end\_lineno’ для объектов Class и Function, которые появляются в дереве, возвращаемом функциями pyclbr. Этот атрибут вместе с существующим атрибутом ‘lineno’ определяет границы операторов class и def. Автор исправления – Авирал Шривастав (Aviral Srivastava).
- [bpo-39273](https://python-all.ru/3/whatsnew/changelog.html): Константы `BUTTON5_*` теперь доступны в модуле [`curses`](https://python-all.ru/3/library/curses.html#module-curses), если это возможно.
- [bpo-33289](https://python-all.ru/3/whatsnew/changelog.html): Исправлен вызов [`tkinter.colorchooser`](https://python-all.ru/3/library/tkinter.colorchooser.html#module-tkinter.colorchooser) для возврата тройки RGB целых чисел вместо чисел с плавающей запятой. Автор исправления – Шерил Сабелла (Cheryl Sabella).

### Документация

- [bpo-40304](https://python-all.ru/3/whatsnew/changelog.html): Исправление документации для type(name, bases, dict). Патч от Бориса Верховского и Эрика Араужо.
- [bpo-42811](https://python-all.ru/3/whatsnew/changelog.html): Обновлена документация importlib.util.resolve\_name() – теперь используется \_\_spec\_\_.parent вместо \_\_package\_\_. (Благодарность Яиру Фриду.)

### Тесты

- [bpo-40823](https://python-all.ru/3/whatsnew/changelog.html): Использовать `unittest.TestLoader().loadTestsFromTestCase()` вместо `unittest.makeSuite()` в тестах [`sqlite3`](https://python-all.ru/3/library/sqlite3.html#module-sqlite3). Патч от Эрленда Э. Аасланда.
- [bpo-40810](https://python-all.ru/3/whatsnew/changelog.html): В [`sqlite3`](https://python-all.ru/3/library/sqlite3.html#module-sqlite3) исправлен `CheckTraceCallbackContent` для SQLite версий до 3.7.15.

### Сборка

- [bpo-43031](https://python-all.ru/3/whatsnew/changelog.html): Передавать опцию `--timeout=$(TESTTIMEOUT)` команде задачи профиля по умолчанию `./python -m test --pgo`.
- [bpo-36143](https://python-all.ru/3/whatsnew/changelog.html): `make regen-all` теперь также запускает `regen-keyword`. Патч от Виктора Стиннера.
- [bpo-42874](https://python-all.ru/3/whatsnew/changelog.html): Удалены флаги grep -q и -E в секции проверки tzpath скрипта configure для лучшей совместимости с пользователями некоторых платформ (в частности, Solaris 10).
- [bpo-31904](https://python-all.ru/3/whatsnew/changelog.html): Добавлен путь поиска библиотек по wr-cc в add\_cross\_compiling\_paths() для VxWorks.
- [bpo-42856](https://python-all.ru/3/whatsnew/changelog.html): Добавлена опция `--with-wheel-pkg-dir=PATH` в скрипт `./configure`. Если она указана, модуль [`ensurepip`](https://python-all.ru/3/library/ensurepip.html#module-ensurepip) ищет пакеты wheel `setuptools` и `pip` в этом каталоге: если оба присутствуют, используются эти пакеты wheel вместо встроенных пакетов ensurepip.

  Некоторые политики упаковки дистрибутивов Linux рекомендуют не включать зависимости. Например, Fedora устанавливает пакеты wheel в каталог `/usr/share/python-wheels/` и не устанавливает пакет `ensurepip._bundled`.

### Windows

- [bpo-41837](https://python-all.ru/3/whatsnew/changelog.html): Обновлён установщик Windows для включения OpenSSL 1.1.1i
- [bpo-42584](https://python-all.ru/3/whatsnew/changelog.html): Обновлён установщик Windows для использования SQLite 3.34.0.

### macOS

- [bpo-42504](https://python-all.ru/3/whatsnew/changelog.html): Обеспечить, чтобы значение sysconfig.get\_config\_var(‘MACOSX\_DEPLOYMENT\_TARGET’) всегда было строкой, даже если его можно разобрать как целое число.

### IDLE

- [bpo-43008](https://python-all.ru/3/whatsnew/changelog.html): Сделать, чтобы IDLE вызывал [`sys.excepthook()`](https://python-all.ru/3/library/sys.html#sys.excepthook) в обычном двухпроцессном режиме. Патч от Кена Хилтона.
- [bpo-33065](https://python-all.ru/3/whatsnew/changelog.html): Исправлена проблема отладки пользовательских классов с методом \_\_repr\_\_.
- [bpo-23544](https://python-all.ru/3/whatsnew/changelog.html): Отключать пункт Debug=\>Stack Viewer при выполнении пользовательского кода или активном отладчике для предотвращения зависания или сбоя. Патч от Закери Спайтца.
- [bpo-32631](https://python-all.ru/3/whatsnew/changelog.html): Завершение примера модуля расширения zzdummy: заставить пункты меню работать; добавлены строки документации и тесты со 100% покрытием.

### C API

- [bpo-42979](https://python-all.ru/3/whatsnew/changelog.html): Когда Python собран в отладочном режиме (с C-утверждениями), вызов слота типа, такого как `sq_length` (`__len__()` в Python), теперь завершается фатальной ошибкой, если слот выполнился успешно с установленным исключением, или завершился неудачно без установленного исключения. Сообщение об ошибке содержит слот, имя типа и текущее исключение (если оно установлено). Патч от Виктора Стиннера.
- [bpo-43030](https://python-all.ru/3/whatsnew/changelog.html): Исправлено предупреждение компилятора в [`Py_UNICODE_ISSPACE()`](https://python-all.ru/3/c-api/unicode.html#c.Py_UNICODE_ISSPACE) на платформах со знаковым `wchar_t`.

## Python 3.10.0 alpha 4

*Дата выпуска: 2021-01-04*

### Ядро и встроенные объекты

- [bpo-42814](https://python-all.ru/3/whatsnew/changelog.html): Исправлено неопределённое поведение в `Objects/genericaliasobject.c`.
- [bpo-42806](https://python-all.ru/3/whatsnew/changelog.html): Исправлены смещения столбцов для узлов f-строк [`ast`](https://python-all.ru/3/library/ast.html#module-ast), окружённых скобками, и для узлов, занимающих несколько строк. Патч от Пабло Галиндо.
- [bpo-40631](https://python-all.ru/3/whatsnew/changelog.html): Исправление регрессии, при которой одно звёздное выражение в скобках было допустимой целью присваивания.
- [bpo-27794](https://python-all.ru/3/whatsnew/changelog.html): Улучшено сообщение об ошибке для неудачных записей/удалений в объектах свойств. Теперь, когда это возможно, отображается имя атрибута. Патч от Юрия Карабаса.
- [bpo-42745](https://python-all.ru/3/whatsnew/changelog.html): Сделать кеш поиска атрибутов типа отдельным для каждого интерпретатора. Патч от Виктора Стиннера.
- [bpo-42246](https://python-all.ru/3/whatsnew/changelog.html): Переходы к переходам не удаляются, если это нарушает PEP 626.
- [bpo-42246](https://python-all.ru/3/whatsnew/changelog.html): Убедиться, что атрибуты `f_lasti` и `f_lineno` фрейма установлены корректно при возбуждении или повторном возбуждении исключения. Требуется для PEP 626.
- [bpo-32381](https://python-all.ru/3/whatsnew/changelog.html): Кодировочный cookie (например, `# coding: latin1`) теперь игнорируется в команде, переданной в опцию командной строки [`-c`](https://python-all.ru/3/using/cmdline.html#cmdoption-c). Исправление от Виктора Стинера.
- [bpo-30858](https://python-all.ru/3/whatsnew/changelog.html): Улучшено указание местоположения ошибки в выражениях, содержащих присваивания. Исправление от Пабло Галиндо и Лисандроса Николау.
- [bpo-42615](https://python-all.ru/3/whatsnew/changelog.html): Удаление команд перехода, ставших избыточными после удаления недостижимых блоков байткода.

### Библиотека

- [bpo-42639](https://python-all.ru/3/whatsnew/changelog.html): Сделать состояние модуля [`atexit`](https://python-all.ru/3/library/atexit.html#module-atexit) интерпретаторно-зависимым. Теперь безопасно иметь более одного экземпляра модуля `atexit`. Исправление от Донхи На и Виктора Стинера.

### Ядро и встроенные

- [bpo-32381](https://python-all.ru/3/whatsnew/changelog.html): Исправлено имя кодировки при запуске файла `.pyc` в Windows: [`PyRun_SimpleFileExFlags()`](https://python-all.ru/3/c-api/veryhigh.html#c.PyRun_SimpleFileExFlags) теперь использует правильную кодировку для декодирования имени файла.

### Библиотека

- [bpo-42195](https://python-all.ru/3/whatsnew/changelog.html): Свойства `__args__` параметризованных обобщённых типов для [`typing.Callable`](https://python-all.ru/3/library/typing.html#typing.Callable) и [`collections.abc.Callable`](https://python-all.ru/3/library/collections.abc.html#collections.abc.Callable) теперь согласованы. `__args__` для `collections.abc.Callable` теперь уплощены, а у `typing.Callable` не изменились. Для обеспечения этого изменения теперь можно наследоваться от [`types.GenericAlias`](https://python-all.ru/3/library/types.html#types.GenericAlias), и `__class_getitem__` у `collections.abc.Callable` теперь будет возвращать подкласс `types.GenericAlias`. Тесты для typing также обновлены, чтобы не наследоваться от таких вещей, как `Callable[..., T]`, поскольку это недопустимый базовый класс. Наконец, оба `Callable` больше не проверяют свои `argtypes`, в `Callable[[argtypes], resulttype]` рамках подготовки к [**PEP 612**](https://python-all.ru/3/whatsnew/changelog.html). Исправление от Кена Джина.
- [bpo-40137](https://python-all.ru/3/whatsnew/changelog.html): Преобразован модуль functools для использования [`PyType_FromModuleAndSpec()`](https://python-all.ru/3/c-api/type.html#c.PyType_FromModuleAndSpec).
- [bpo-40077](https://python-all.ru/3/whatsnew/changelog.html): Преобразован [`array`](https://python-all.ru/3/library/array.html#module-array) для использования кучевых типов и установлено состояние модуля для них.
- [bpo-42008](https://python-all.ru/3/whatsnew/changelog.html): Исправлена инициализация зерна \_random.Random().
- [bpo-1635741](https://python-all.ru/3/whatsnew/changelog.html): Портирован модуль расширения `pyexpat` на многофазовую инициализацию ([**PEP 489**](https://python-all.ru/3/whatsnew/changelog.html)).

### Ядро и встроенные

- [bpo-40521](https://python-all.ru/3/whatsnew/changelog.html): Сделать словарь Unicode интернированных строк совместимым с подынтерпретаторами. Исправление от Виктора Стинера.
- [bpo-39465](https://python-all.ru/3/whatsnew/changelog.html): Сделать функцию `_PyUnicode_FromId()` совместимой с подынтерпретаторами. Теперь каждый интерпретатор имеет массив объектов-идентификаторов (интернированные строки, декодированные из UTF-8). Исправление от Виктора Стинера.

### Библиотека

- [bpo-42257](https://python-all.ru/3/whatsnew/changelog.html): Обработка пустой строки в переменной executable в platform.libc\_ver().
- [bpo-42772](https://python-all.ru/3/whatsnew/changelog.html): randrange() теперь возбуждает TypeError, если шаг указан без аргумента stop. Ранее он молча игнорировал аргумент step.
- [bpo-42759](https://python-all.ru/3/whatsnew/changelog.html): Исправлено сравнение на равенство [`tkinter.Variable`](https://python-all.ru/3/library/tkinter.html#tkinter.Variable) и [`tkinter.font.Font`](https://python-all.ru/3/library/tkinter.font.html#tkinter.font.Font). Объекты, принадлежащие разным интерпретаторам Tcl, теперь всегда различны, даже если имеют одинаковое имя.
- [bpo-42756](https://python-all.ru/3/whatsnew/changelog.html): Настроить Unix-сокет LMTP на использование глобального таймаута сокета по умолчанию, если таймаут явно не указан.
- [bpo-23328](https://python-all.ru/3/whatsnew/changelog.html): Разрешить символ / в полях имени пользователя и пароля в переменных окружения \_PROXY.
- [bpo-42740](https://python-all.ru/3/whatsnew/changelog.html): [`typing.get_args()`](https://python-all.ru/3/library/typing.html#typing.get_args) и [`typing.get_origin()`](https://python-all.ru/3/library/typing.html#typing.get_origin) теперь поддерживают типы объединений [**PEP 604**](https://python-all.ru/3/whatsnew/changelog.html) и дополнения [**PEP 612**](https://python-all.ru/3/whatsnew/changelog.html) к `Callable`.
- [bpo-42655](https://python-all.ru/3/whatsnew/changelog.html): [`subprocess`](https://python-all.ru/3/library/subprocess.html#module-subprocess) *extra\_groups* теперь корректно передаётся в системный вызов setgroups().
- [bpo-42727](https://python-all.ru/3/whatsnew/changelog.html): `EnumMeta.__prepare__` теперь принимает `**kwds` для корректной поддержки `__init_subclass__`.
- [bpo-38308](https://python-all.ru/3/whatsnew/changelog.html): Добавить необязательные *веса* в *statistics.harmonic\_mean()*.
- [bpo-42721](https://python-all.ru/3/whatsnew/changelog.html): Когда простые диалоговые окна запроса ([`tkinter.simpledialog`](https://python-all.ru/3/library/dialog.html#module-tkinter.simpledialog)), сообщения ([`tkinter.messagebox`](https://python-all.ru/3/library/tkinter.messagebox.html#module-tkinter.messagebox)) или выбора цвета ([`tkinter.colorchooser`](https://python-all.ru/3/library/tkinter.colorchooser.html#module-tkinter.colorchooser)) создаются без аргументов *основное окно* и *родитель*, а корневое окно по умолчанию ещё не создано и [`NoDefaultRoot()`](https://python-all.ru/3/library/tkinter.html#tkinter.NoDefaultRoot) не вызывался, автоматически создаётся новое временное скрытое корневое окно. Оно не будет установлено как корневое окно по умолчанию и будет уничтожено сразу после закрытия диалогового окна. Это поможет использовать такие простые диалоговые окна в программах, которым не нужен другой графический интерфейс.
- [bpo-25246](https://python-all.ru/3/whatsnew/changelog.html): Оптимизирован [`collections.deque.remove()`](https://python-all.ru/3/library/collections.html#collections.deque.remove).
- [bpo-35728](https://python-all.ru/3/whatsnew/changelog.html): Добавлен параметр root в [`tkinter.font.nametofont()`](https://python-all.ru/3/library/tkinter.font.html#tkinter.font.nametofont).
- [bpo-15303](https://python-all.ru/3/whatsnew/changelog.html): [`tkinter`](https://python-all.ru/3/library/tkinter.html#module-tkinter) теперь поддерживает виджеты с логическим значением False.
- [bpo-42681](https://python-all.ru/3/whatsnew/changelog.html): Исправлены проверки диапазона для цветов и номеров пар в [`curses`](https://python-all.ru/3/library/curses.html#module-curses).
- [bpo-42685](https://python-all.ru/3/whatsnew/changelog.html): Улучшено размещение простых окон запросов в Tkinter (например, [`tkinter.simpledialog.askinteger()`](https://python-all.ru/3/library/dialog.html#tkinter.simpledialog.askinteger)). Теперь они центрируются по центру родительского окна, если оно указано и отображается, в противном случае – по центру экрана.
- [bpo-9694](https://python-all.ru/3/whatsnew/changelog.html): Справка argparse больше не использует сбивающую с толку фразу «optional arguments». Вместо неё используется «options».
- [bpo-1635741](https://python-all.ru/3/whatsnew/changelog.html): Модуль расширения `_thread` портирован на API многофазной инициализации ([**PEP 489**](https://python-all.ru/3/whatsnew/changelog.html)), а его статические типы преобразованы в типы кучи.
- [bpo-37961](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка, приводившая к падению в `tracemalloc.Traceback.__repr__()` (возникла в Python 3.9).
- [bpo-42630](https://python-all.ru/3/whatsnew/changelog.html): Функции и конструкторы [`tkinter`](https://python-all.ru/3/library/tkinter.html#module-tkinter), которым требуется корневое окно по умолчанию, теперь вызывают [`RuntimeError`](https://python-all.ru/3/library/exceptions.html#RuntimeError) с понятным сообщением вместо непонятных [`AttributeError`](https://python-all.ru/3/library/exceptions.html#AttributeError) или [`NameError`](https://python-all.ru/3/library/exceptions.html#NameError), если оно ещё не создано или не может быть создано автоматически.
- [bpo-42639](https://python-all.ru/3/whatsnew/changelog.html): `atexit._run_exitfuncs()` теперь регистрирует исключения колбэков с помощью [`sys.unraisablehook`](https://python-all.ru/3/library/sys.html#sys.unraisablehook), а не записывает их напрямую в [`sys.stderr`](https://python-all.ru/3/library/sys.html#sys.stderr) и не возбуждает последнее исключение.
- [bpo-42644](https://python-all.ru/3/whatsnew/changelog.html): `logging.disable` теперь проверяет типы и значение своего параметра. Кроме того, он принимает строки, представляющие уровни (как и `logging.setLevel`), а не только числовые значения.
- [bpo-42639](https://python-all.ru/3/whatsnew/changelog.html): При завершении Python, если колбэк, зарегистрированный через [`atexit.register()`](https://python-all.ru/3/library/atexit.html#atexit.register), завершается ошибкой, его исключение теперь регистрируется. Ранее регистрировались только некоторые исключения, а последнее исключение всегда молча игнорировалось.
- [bpo-36541](https://python-all.ru/3/whatsnew/changelog.html): Исправлен lib2to3.pgen2 для возможности разбора синтаксиса только позиционных аргументов из PEP-570.
- [bpo-42382](https://python-all.ru/3/whatsnew/changelog.html): В `importlib.metadata`: - Объекты `EntryPoint` теперь предоставляют объект `.dist`, ссылающийся на `Distribution`, если они созданы из `Distribution`. - Добавлена поддержка обнаружения пакетов в соответствии с правилами нормализации имён пакетов. - Объект, возвращаемый `metadata()`, теперь имеет формально определённый протокол `PackageMetadata` с объявленной поддержкой метода `.get_all()`. - Синхронизировано с importlib\_metadata 3.3.
- [bpo-41877](https://python-all.ru/3/whatsnew/changelog.html): Добавлена проверка на опечатки в autospect, auto\_spec и set\_spec, передаваемых в качестве аргументов в patch, patch.object и create\_autospec.
- [bpo-39717](https://python-all.ru/3/whatsnew/changelog.html): \[tarfile\] обновлено вложение исключений для использования `from None` или `from e`
- [bpo-41877](https://python-all.ru/3/whatsnew/changelog.html): AttributeError для предполагаемых опечаток в утверждениях (assertions) в моках теперь указывает, что причина – опечатки в утверждениях, а также что делать, если опечатка на самом деле является задуманным именем атрибута. Документация unittest.mock также обновлена, чтобы отражать текущий набор распознаваемых опечаток.
- [bpo-41559](https://python-all.ru/3/whatsnew/changelog.html): Implemented [**PEP 612**](https://python-all.ru/3/whatsnew/changelog.html): added `ParamSpec` and `Concatenate` to [`typing`](https://python-all.ru/3/library/typing.html#module-typing). Patch by Ken Jin.
- [bpo-42385](https://python-all.ru/3/whatsnew/changelog.html): StrEnum: исправлен \_generate\_next\_value\_ для возврата str
- [bpo-31904](https://python-all.ru/3/whatsnew/changelog.html): Определён THREAD\_STACK\_SIZE для VxWorks.
- [bpo-34750](https://python-all.ru/3/whatsnew/changelog.html): \[Enum\] теперь поддерживается `_EnumDict.update()`.
- [bpo-42517](https://python-all.ru/3/whatsnew/changelog.html): Enum: приватные имена не становятся членами / не вызывают ошибок – они остаются обычными атрибутами
- [bpo-42678](https://python-all.ru/3/whatsnew/changelog.html): `Enum`: вызывать `__init_subclass__` после добавления членов
- [bpo-28964](https://python-all.ru/3/whatsnew/changelog.html): [`ast.literal_eval()`](https://python-all.ru/3/library/ast.html#ast.literal_eval) добавляет информацию о номере строки (если доступна) в сообщение об ошибке для некорректных узлов.
- [bpo-42470](https://python-all.ru/3/whatsnew/changelog.html): [`random.sample()`](https://python-all.ru/3/library/random.html#random.sample) больше не выдаёт предупреждение для последовательности, которая также является множеством.
- [bpo-31904](https://python-all.ru/3/whatsnew/changelog.html): `posixpath.expanduser()` возвращает входной *путь* без изменений, если домашний каталог пользователя равен None на VxWorks.
- [bpo-42388](https://python-all.ru/3/whatsnew/changelog.html): Исправлено поведение subprocess.check\_output(…, input=None) при text=True для согласованности с документацией и universal\_newlines=True.
- [bpo-34463](https://python-all.ru/3/whatsnew/changelog.html): Исправлено несоответствие между [`traceback`](https://python-all.ru/3/library/traceback.html#module-traceback) и интерпретатором в форматировании SyntaxError с не заданным lineno (`traceback` изменено в соответствии с интерпретатором).
- [bpo-42393](https://python-all.ru/3/whatsnew/changelog.html): Возбуждать [`OverflowError`](https://python-all.ru/3/library/exceptions.html#OverflowError) вместо молчаливого усечения в [`socket.ntohs()`](https://python-all.ru/3/library/socket.html#socket.ntohs) и [`socket.htons()`](https://python-all.ru/3/library/socket.html#socket.htons). Молчаливое усечение было объявлено устаревшим в Python 3.7. Патч от Erlend E. Aasland.
- [bpo-42222](https://python-all.ru/3/whatsnew/changelog.html): Согласована обработка аргументов [`random.randrange()`](https://python-all.ru/3/library/random.html#random.randrange) для соответствия [`range()`](https://python-all.ru/3/library/stdtypes.html#range).

  - Проверка и преобразование целых чисел в `randrange()` теперь использует [`operator.index()`](https://python-all.ru/3/library/operator.html#operator.index).
  - Нецелочисленные аргументы в `randrange()` объявлены устаревшими.
  - `ValueError` объявлен устаревшим в пользу `TypeError`.
  - Теперь он работает немного быстрее, чем раньше.

  (Авторы: Raymond Hettinger и Serhiy Storchaka.)
- [bpo-42163](https://python-all.ru/3/whatsnew/changelog.html): Восстановлена совместимость для [`os.uname_result`](https://python-all.ru/3/library/os.html#os.uname_result) в отношении deepcopy и \_replace.
- [bpo-42090](https://python-all.ru/3/whatsnew/changelog.html): `zipfile.Path.joinpath` теперь принимает произвольные аргументы, так же как и `pathlib.Path.joinpath`.
- [bpo-1635741](https://python-all.ru/3/whatsnew/changelog.html): Перенос модуля \_csv на API многофазовой инициализации ([**PEP 489**](https://python-all.ru/3/whatsnew/changelog.html)).
- [bpo-42059](https://python-all.ru/3/whatsnew/changelog.html): Типы [`typing.TypedDict`](https://python-all.ru/3/library/typing.html#typing.TypedDict), созданные с помощью альтернативного синтаксиса вызова, теперь корректно учитывают ключевой аргумент `total` при установке своих атрибутов класса `__required_keys__` и `__optional_keys__`.
- [bpo-41960](https://python-all.ru/3/whatsnew/changelog.html): Добавлены параметры `globalns` и `localns` в [`inspect.signature()`](https://python-all.ru/3/library/inspect.html#inspect.signature) и [`inspect.Signature.from_callable()`](https://python-all.ru/3/library/inspect.html#inspect.Signature.from_callable).
- [bpo-41907](https://python-all.ru/3/whatsnew/changelog.html): исправлено поведение `format()` для `IntFlag`
- [bpo-41891](https://python-all.ru/3/whatsnew/changelog.html): Обеспечено ожидание завершения задачи в asyncio.wait\_for
- [bpo-24792](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка, из-за которой `zipimporter` иногда сообщал неверную причину ошибок импорта.
- [bpo-31904](https://python-all.ru/3/whatsnew/changelog.html): Исправлены модули site и sysconfig для VxWorks RTOS, в которой нет домашних каталогов.
- [bpo-41462](https://python-all.ru/3/whatsnew/changelog.html): Добавлена поддержка [`os.set_blocking()`](https://python-all.ru/3/library/os.html#os.set_blocking) для VxWorks RTOS.
- [bpo-40219](https://python-all.ru/3/whatsnew/changelog.html): Уменьшен фиктивный виджет [`tkinter.ttk.LabeledScale`](https://python-all.ru/3/library/tkinter.ttk.html#tkinter.ttk.LabeledScale), чтобы не скрывать часть метки содержимого.
- [bpo-37193](https://python-all.ru/3/whatsnew/changelog.html): Исправлена утечка памяти в `socketserver.ThreadingMixIn`, появившаяся в Python 3.7.
- [bpo-39068](https://python-all.ru/3/whatsnew/changelog.html): Исправлено состояние гонки при инициализации в `a85encode()` и `b85encode()` в [`base64`](https://python-all.ru/3/library/base64.html#module-base64). Патч от Brandon Stansbury.

### Документация

- [bpo-17140](https://python-all.ru/3/whatsnew/changelog.html): Добавлена документация для класса [`multiprocessing.pool.ThreadPool`](https://python-all.ru/3/library/multiprocessing.html#multiprocessing.pool.ThreadPool).
- [bpo-34398](https://python-all.ru/3/whatsnew/changelog.html): Выделить списки из глоссария в результатах поиска по документации. Патч от Ammar Askar.

### Тесты

- [bpo-42794](https://python-all.ru/3/whatsnew/changelog.html): Обновлён test\_nntplib для использования официального имени группы news.aioe.org в тестах. Патч от Donghee Na.
- [bpo-31904](https://python-all.ru/3/whatsnew/changelog.html): Пропущены некоторые тесты asyncio на VxWorks.
- [bpo-42641](https://python-all.ru/3/whatsnew/changelog.html): Улучшен `test_select.test_select()`: теперь он выполняется за 500 миллисекунд вместо 10 секунд. Для повышения переносимости теста используется Python вместо оболочки.
- [bpo-31904](https://python-all.ru/3/whatsnew/changelog.html): Пропущены некоторые тесты в \_test\_all\_chown\_common() на VxWorks.
- [bpo-42199](https://python-all.ru/3/whatsnew/changelog.html): Исправлен вспомогательный байткод assertNotInBytecode.
- [bpo-41443](https://python-all.ru/3/whatsnew/changelog.html): Добавлена дополнительная проверка атрибутов в test\_posix.py
- [bpo-31904](https://python-all.ru/3/whatsnew/changelog.html): Отключены os.popen и затронутые тесты на VxWorks
- [bpo-41439](https://python-all.ru/3/whatsnew/changelog.html): Перенесены test\_ssl и test\_uuid на VxWorks RTOS.

### Сборка

- [bpo-42692](https://python-all.ru/3/whatsnew/changelog.html): Исправлена проверка \_\_builtin\_available на старых компиляторах. Патч от Joshua Root.
- [bpo-27640](https://python-all.ru/3/whatsnew/changelog.html): Добавлена опция `--disable-test-modules` в скрипт `configure`: не собирать и не устанавливать тестовые модули. Патч от Xavier de Gaye, Thomas Petazzoni и Peixing Xin.
- [bpo-42604](https://python-all.ru/3/whatsnew/changelog.html): Теперь все платформы используют значение переменной сборки «EXT\_SUFFIX», полученное из SOABI (например, в FreeBSD «EXT\_SUFFIX» теперь «.cpython-310d.so» вместо «.so»). Ранее только Linux, Mac и VxWorks использовали значение «EXT\_SUFFIX», включавшее «SOABI».
- [bpo-42598](https://python-all.ru/3/whatsnew/changelog.html): Исправлены неявные объявления функций в configure, которые могли привести к некорректным проверкам конфигурации. Патч предоставлен Joshua Root.
- [bpo-31904](https://python-all.ru/3/whatsnew/changelog.html): Включена поддержка libpython3.so для VxWorks.
- [bpo-29076](https://python-all.ru/3/whatsnew/changelog.html): Добавлена поддержка оболочки fish в установщик macOS.

### macOS

- [bpo-42361](https://python-all.ru/3/whatsnew/changelog.html): Обновление сборки установщика macOS для использования Tcl/Tk 8.6.11 (rc2, ожидается финальный релиз).
- [bpo-41837](https://python-all.ru/3/whatsnew/changelog.html): Обновление сборки установщика macOS для использования OpenSSL 1.1.1i.
- [bpo-42584](https://python-all.ru/3/whatsnew/changelog.html): Обновление установщика macOS для использования SQLite 3.34.0.

### Tools/Demos

- [bpo-42726](https://python-all.ru/3/whatsnew/changelog.html): Исправлена проблема совместимости с Python 3 в gdb/libpython.py при обработке словарей атрибутов.
- [bpo-42613](https://python-all.ru/3/whatsnew/changelog.html): Исправлен инструмент `freeze.py` для использования правильных каталогов конфигурации и библиотек. Патч от Victor Stinner.

### C API

- [bpo-42591](https://python-all.ru/3/whatsnew/changelog.html): Экспортирована функция `Py_FrozenMain()`: исправление регрессии Python 3.9.0. Python 3.9 использует `-fvisibility=hidden`, и функция не экспортировалась явно, поэтому не была экспортирована.
- [bpo-32381](https://python-all.ru/3/whatsnew/changelog.html): Удалена приватная функция `_Py_fopen()`, которая больше не нужна. Вместо неё используйте `_Py_wfopen()` или `_Py_fopen_obj()`. Патч от Victor Stinner.
- [bpo-1635741](https://python-all.ru/3/whatsnew/changelog.html): Перенос модуля расширения [`resource`](https://python-all.ru/3/library/resource.html#module-resource) на состояние модуля.
- [bpo-42111](https://python-all.ru/3/whatsnew/changelog.html): Обновлён модуль `xxlimited`, чтобы он был лучшим примером использования ограниченного C API.
- [bpo-40052](https://python-all.ru/3/whatsnew/changelog.html): Исправлено предупреждение/ошибка сборки о выравнивании в функции `PyVectorcall_Function()`. Патч от Andreas Schneider, Antoine Pitrou и Petr Viktorin.

## Python 3.10.0 alpha 3

*Дата релиза: 2020-12-07*

### Безопасность

- [bpo-40791](https://python-all.ru/3/whatsnew/changelog.html): Добавлен `volatile` в переменную-аккумулятор в `hmac.compare_digest`, что делает менее вероятными оптимизации, разрушающие константное время.

### Ядро и встроенные функции

- [bpo-42576](https://python-all.ru/3/whatsnew/changelog.html): Теперь `types.GenericAlias` возбуждает исключение `TypeError` при попытке инициализации с именованным аргументом. Ранее это приводило к аварийному завершению интерпретатора, если он был скомпилирован с отладочными символами. Это не затрагивает интерпретаторы, скомпилированные для релиза. Патч от Ken Jin.
- [bpo-42536](https://python-all.ru/3/whatsnew/changelog.html): Несколько встроенных типов и типов из стандартной библиотеки теперь гарантируют, что их внутренние кортежи результатов всегда отслеживаются [сборщиком мусора](https://python-all.ru/3/glossary.html#term-garbage-collection):

  - [`collections.OrderedDict.items()`](https://python-all.ru/3/library/collections.html#collections.OrderedDict)
  - [`dict.items()`](https://python-all.ru/3/library/stdtypes.html#dict.items)
  - [`enumerate()`](https://python-all.ru/3/library/functions.html#enumerate)
  - [`functools.reduce()`](https://python-all.ru/3/library/functools.html#functools.reduce)
  - [`itertools.combinations()`](https://python-all.ru/3/library/itertools.html#itertools.combinations)
  - [`itertools.combinations_with_replacement()`](https://python-all.ru/3/library/itertools.html#itertools.combinations_with_replacement)
  - [`itertools.permutations()`](https://python-all.ru/3/library/itertools.html#itertools.permutations)
  - [`itertools.product()`](https://python-all.ru/3/library/itertools.html#itertools.product)
  - [`itertools.zip_longest()`](https://python-all.ru/3/library/itertools.html#itertools.zip_longest)
  - [`zip()`](https://python-all.ru/3/library/functions.html#zip)

  Ранее они могли стать неотслеживаемыми при предыдущей сборке мусора. Патч от Brandt Bucher.
- [bpo-42500](https://python-all.ru/3/whatsnew/changelog.html): Улучшена обработка исключений вблизи предела рекурсии. Преобразует ряд фатальных ошибок в исключения RecursionError.
- [bpo-42246](https://python-all.ru/3/whatsnew/changelog.html): PEP 626: После return атрибут f\_lineno фрейма всегда указывает на последнюю выполненную строку.
- [bpo-42435](https://python-all.ru/3/whatsnew/changelog.html): Ускорено сравнение байтовых объектов с небайтовыми при указании опции [`-b`](https://python-all.ru/3/using/cmdline.html#cmdoption-b). Ускорено сравнение байтовых массивов с небуферными объектами.

### Библиотека

- [bpo-1635741](https://python-all.ru/3/whatsnew/changelog.html): Перенос модуля расширения `_warnings` на API многофазной инициализации ([**PEP 489**](https://python-all.ru/3/whatsnew/changelog.html)). Патч от Victor Stinner.

### Ядро и встроенные функции

- [bpo-41686](https://python-all.ru/3/whatsnew/changelog.html): В Windows событие `SIGINT`, `_PyOS_SigintEvent()`, теперь создаётся, даже если Python настроен не устанавливать обработчики сигналов (если [`PyConfig.install_signal_handlers`](https://python-all.ru/3/c-api/init_config.html#c.PyConfig.install_signal_handlers) равно 0 или `Py_InitializeEx(0)`).
- [bpo-42381](https://python-all.ru/3/whatsnew/changelog.html): Разрешены выражения присваивания в литералах множеств и генераторах множеств в соответствии с PEP 572. Патч от Pablo Galindo.
- [bpo-42202](https://python-all.ru/3/whatsnew/changelog.html): Внутреннее представление аннотаций параметров функций изменено на кортеж строк. Патч предоставлен Yurii Karabas.
- [bpo-42374](https://python-all.ru/3/whatsnew/changelog.html): Исправлена регрессия, внесённая новым парсером, когда непроизведённый в скобки моржовый оператор не допускался внутри выражений-генераторов.
- [bpo-42316](https://python-all.ru/3/whatsnew/changelog.html): Разрешён непроизведённый в скобки моржовый оператор в индексах подстрок.
- [bpo-42349](https://python-all.ru/3/whatsnew/changelog.html): Теперь компилятор на этапе фронтенда гарантированно строит корректный граф потока управления. На этапе бэкенда можно действовать агрессивнее, поскольку это стало безопасно.
- [bpo-42296](https://python-all.ru/3/whatsnew/changelog.html): В Windows исправлен регресс в обработке сигналов, из‑за которого нельзя было прервать программу с помощью Ctrl+C. Обработчик сигнала мог запускаться в потоке, отличном от потока Python, и в этом случае проверка на возможность обработки сигнала потоком давала неверный результат.
- [bpo-42332](https://python-all.ru/3/whatsnew/changelog.html): Объекты [`types.GenericAlias`](https://python-all.ru/3/library/types.html#types.GenericAlias) теперь можно использовать как цели для слабых ссылок.
- [bpo-42282](https://python-all.ru/3/whatsnew/changelog.html): Оптимизированы константные подвыражения внутри именованных выражений (ранее оптимизатор AST не заходил в именованные выражения). Патч от Ника Коглана (Nick Coghlan).
- [bpo-42266](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка в кеше опкода LOAD\_ATTR, из‑за которой не учитывалось динамическое изменение (monkey-patching) атрибута класса, превращающее его в дескриптор. Патч от Пабло Галиндо (Pablo Galindo).

### Библиотеки

- [bpo-40077](https://python-all.ru/3/whatsnew/changelog.html): Переведён [`queue`](https://python-all.ru/3/library/queue.html#module-queue) на использование heap‑типов.

### Ядро и встроенные объекты

- [bpo-42246](https://python-all.ru/3/whatsnew/changelog.html): Повышена точность событий трассировки строк и атрибута f\_lineno объектов Frame. Подробнее см. PEP 626.

### Библиотеки

- [bpo-40077](https://python-all.ru/3/whatsnew/changelog.html): Переведён [`mmap`](https://python-all.ru/3/library/mmap.html#module-mmap) на использование heap‑типов.

### Ядро и встроенные объекты

- [bpo-42233](https://python-all.ru/3/whatsnew/changelog.html): Объекты `GenericAlias` теперь могут использовать [выражения объединения типов](https://python-all.ru/3/library/stdtypes.html#types-union). Это позволяет писать выражения вида `list[int] | dict[float, str]`, тогда как ранее выбрасывалось `TypeError`. Также исправлена проблема, при которой выражения объединения типов не дедуплицировали объекты `GenericAlias`. (Добавлено Кеном Джином (Ken Jin) в [bpo-42233](https://python-all.ru/3/whatsnew/changelog.html).)
- [bpo-26131](https://python-all.ru/3/whatsnew/changelog.html): Механизм импорта генерирует `ImportWarning`, если приходится использовать `load_module()`.

### Библиотеки

- [bpo-5054](https://python-all.ru/3/whatsnew/changelog.html): В CGIHTTPRequestHandler.run\_cgi() неправильно разбирался HTTP\_ACCEPT. Специализированный метод getallmatchingheaders заменён на универсальный get\_all, добавлены соответствующие тесты.

  Оригинальный патч от Мартина Пантера (Martin Panter). Изменён Сентилом Кумараном (Senthil Kumaran).
- [bpo-42562](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка, при которой модуль dis не мог разобрать функцию без номеров строк. Патч предоставлен Юрием Карабасом.
- [bpo-17735](https://python-all.ru/3/whatsnew/changelog.html): `inspect.findsource()` теперь возбуждает [`OSError`](https://python-all.ru/3/library/exceptions.html#OSError) вместо [`IndexError`](https://python-all.ru/3/library/exceptions.html#IndexError), когда `co_lineno` объекта кода превышает длину файла. Это возможно, например, если файл был изменён после импорта. PR от Ирит Катриэль (Irit Katriel).
- [bpo-42116](https://python-all.ru/3/whatsnew/changelog.html): Исправлена обработка завершающих комментариев в [`inspect.getsource()`](https://python-all.ru/3/library/inspect.html#inspect.getsource).
- [bpo-42532](https://python-all.ru/3/whatsnew/changelog.html): Удалён неожиданный вызов `__bool__` при передаче аргумента `spec_arg` объекту Mock.
- [bpo-38200](https://python-all.ru/3/whatsnew/changelog.html): Добавлена функция itertools.pairwise()
- [bpo-41818](https://python-all.ru/3/whatsnew/changelog.html): Исправлен test\_master\_read() так, чтобы он выполнялся успешно на всех платформах, которые либо возбуждают OSError, либо возвращают b”” при чтении из master.
- [bpo-42487](https://python-all.ru/3/whatsnew/changelog.html): ChainMap.\_\_iter\_\_ больше не вызывает \_\_getitem\_\_ на базовых отображениях.
- [bpo-42482](https://python-all.ru/3/whatsnew/changelog.html): [`TracebackException`](https://python-all.ru/3/library/traceback.html#traceback.TracebackException) больше не хранит ссылку на объект traceback исключения. В результате экземпляры TracebackException для эквивалентных, но не равных исключений теперь считаются равными.
- [bpo-41818](https://python-all.ru/3/whatsnew/changelog.html): Исправлено test\_openpty(), чтобы избежать ложного успеха, когда количество строк и/или столбцов равно 0.
- [bpo-42392](https://python-all.ru/3/whatsnew/changelog.html): Удалён параметр loop из функций `asyncio.subprocess` и `asyncio.tasks`. Патч предоставлен Юрием Карабасом.
- [bpo-42392](https://python-all.ru/3/whatsnew/changelog.html): Удалён параметр loop из функций `asyncio.open_connection` и `asyncio.start_server`. Патч предоставлен Юрием Карабасом.
- [bpo-28468](https://python-all.ru/3/whatsnew/changelog.html): Добавлена функция [`platform.freedesktop_os_release()`](https://python-all.ru/3/library/platform.html#platform.freedesktop_os_release) для разбора файлов `os-release` формата freedesktop.org.
- [bpo-42299](https://python-all.ru/3/whatsnew/changelog.html): Удалён модуль `formatter`, объявленный устаревшим в Python 3.4. Он устарел, редко используется и не тестируется. Изначально его планировали удалить в Python 3.6, но такие удаления отложили до окончания поддержки Python 2.7. Пользователям, которые его используют, следует скопировать нужные классы в свой код. Патч от Donghee Na и Терри Дж. Риди (Terry J. Reedy).
- [bpo-26131](https://python-all.ru/3/whatsnew/changelog.html): Метод zipimport.zipimporter.load\_module() объявлен устаревшим; вместо него следует использовать exec\_module().
- [bpo-41818](https://python-all.ru/3/whatsnew/changelog.html): Обновлены тесты для библиотеки pty. test\_basic() переименован в test\_openpty(); теперь он также проверяет, что pty.openpty() корректно устанавливает slave termios и slave winsize. Для поддержки FreeBSD, NetBSD, OpenBSD и Darwin добавлен test\_master\_read(), который демонстрирует, что pty.spawn() не должен полагаться на OSError для выхода из цикла копирования.
- [bpo-42392](https://python-all.ru/3/whatsnew/changelog.html): Удалён параметр loop из `__init__` во всех классах `asyncio.locks` и `asyncio.Queue`. Исправление предоставлено Yurii Karabas.
- [bpo-15450](https://python-all.ru/3/whatsnew/changelog.html): [`filecmp.dircmp`](https://python-all.ru/3/library/filecmp.html#filecmp.dircmp) теперь учитывает наследование. Теперь [`filecmp.dircmp.subdirs`](https://python-all.ru/3/library/filecmp.html#filecmp.dircmp.subdirs) ведёт себя ожидаемо при наследовании dircmp.
- [bpo-42413](https://python-all.ru/3/whatsnew/changelog.html): Исключение [`socket.timeout`](https://python-all.ru/3/library/socket.html#socket.timeout) теперь является псевдонимом [`TimeoutError`](https://python-all.ru/3/library/exceptions.html#TimeoutError).
- [bpo-31904](https://python-all.ru/3/whatsnew/changelog.html): Поддержка модуля signal на VxWorks.
- [bpo-42406](https://python-all.ru/3/whatsnew/changelog.html): Исправлена проблема в `pickle.whichmodule`, при которой импорт `multiprocessing` мог изменять то, как pickle определяет, какому модулю принадлежит объект, что потенциально нарушало распаковку этих объектов.
- [bpo-42403](https://python-all.ru/3/whatsnew/changelog.html): Упрощён внешний код начальной загрузки [`importlib`](https://python-all.ru/3/library/importlib.html#module-importlib): `importlib._bootstrap_external` теперь использует обычные импорты для импорта встроенных модулей. При его импорте встроенная функция [`__import__()`](https://python-all.ru/3/library/functions.html#import__) уже полностью работоспособна, и поэтому её можно использовать для импорта встроенных модулей, таких как [`sys`](https://python-all.ru/3/library/sys.html#module-sys). Исправление от Victor Stinner.
- [bpo-1635741](https://python-all.ru/3/whatsnew/changelog.html): Преобразованы типы модуля \_sre в типы-кучи (PEP 384). Исправление от Erlend E. Aasland.
- [bpo-42375](https://python-all.ru/3/whatsnew/changelog.html): Обновление модуля подпроцесса для поддержки DragonFlyBSD.
- [bpo-41713](https://python-all.ru/3/whatsnew/changelog.html): Перенос модуля расширения `_signal` на API многофазной инициализации ([**PEP 489**](https://python-all.ru/3/whatsnew/changelog.html)). Исправление от Victor Stinner и Mohamed Koubaa.
- [bpo-37205](https://python-all.ru/3/whatsnew/changelog.html): Функции [`time.time()`](https://python-all.ru/3/library/time.html#time.time), [`time.perf_counter()`](https://python-all.ru/3/library/time.html#time.perf_counter) и [`time.monotonic()`](https://python-all.ru/3/library/time.html#time.monotonic) больше не могут завершаться фатальной ошибкой Python, вместо этого при сбое они вызывают обычное исключение Python.
- [bpo-42328](https://python-all.ru/3/whatsnew/changelog.html): Исправлено [`tkinter.ttk.Style.map()`](https://python-all.ru/3/library/tkinter.ttk.html#tkinter.ttk.Style.map). Функция теперь принимает представление состояния по умолчанию в виде пустой последовательности (как возвращается `Style.map()`). Структура результата теперь одинакова на всех платформах и не зависит от значения `wantobjects`.
- [bpo-42345](https://python-all.ru/3/whatsnew/changelog.html): Исправлены различные проблемы с обработкой параметров `typing.Literal` (уплощение, дедупликация, использование типа для ключа кеша). Исправление предоставлено Yurii Karabas.
- [bpo-37205](https://python-all.ru/3/whatsnew/changelog.html): [`time.perf_counter()`](https://python-all.ru/3/library/time.html#time.perf_counter) в Windows и [`time.monotonic()`](https://python-all.ru/3/library/time.html#time.monotonic) в macOS теперь являются общесистемными. Ранее они использовали смещение, вычисляемое при запуске, для уменьшения потери точности, вызванной типом float. Используйте [`time.perf_counter_ns()`](https://python-all.ru/3/library/time.html#time.perf_counter_ns) и [`time.monotonic_ns()`](https://python-all.ru/3/library/time.html#time.monotonic_ns), добавленные в Python 3.7, чтобы избежать этой потери точности.
- [bpo-42318](https://python-all.ru/3/whatsnew/changelog.html): Исправлена поддержка символов не из BMP в [`tkinter`](https://python-all.ru/3/library/tkinter.html#module-tkinter) на macOS.
- [bpo-42350](https://python-all.ru/3/whatsnew/changelog.html): Исправлен класс [`threading.Thread`](https://python-all.ru/3/library/threading.html#threading.Thread) при fork: ничего не делать, если поток уже остановлен (например, fork вызван при завершении Python). Ранее в дочернем процессе регистрировалась ошибка.
- [bpo-42333](https://python-all.ru/3/whatsnew/changelog.html): Перенос модуля расширения \_ssl на типы-кучи.
- [bpo-42014](https://python-all.ru/3/whatsnew/changelog.html): Колбэк `onerror` из `shutil.rmtree` теперь получает правильную функцию при сбое `os.open`.
- [bpo-42237](https://python-all.ru/3/whatsnew/changelog.html): Исправлен `os.sendfile()` на illumos.
- [bpo-42308](https://python-all.ru/3/whatsnew/changelog.html): Добавлен [`threading.__excepthook__`](https://python-all.ru/3/library/threading.html#threading.__excepthook__) для возможности получения исходного значения [`threading.excepthook()`](https://python-all.ru/3/library/threading.html#threading.excepthook), если оно установлено в некорректное или другое значение. Исправление от Mario Corchero.
- [bpo-42131](https://python-all.ru/3/whatsnew/changelog.html): Реализованы методы PEP 451/spec в zipimport.zipimporter: find\_spec(), create\_module() и exec\_module().

  Это также позволяет задокументированное устаревание find\_loader(), find\_module() и load\_module().
- [bpo-41877](https://python-all.ru/3/whatsnew/changelog.html): Объекты Mock, не помеченные как unsafe, теперь будут вызывать AttributeError при обращении к атрибуту с префиксом asert, aseert или assrt, в дополнение к тому, что это уже происходит для префиксов assert или assret.
- [bpo-42264](https://python-all.ru/3/whatsnew/changelog.html): `sqlite3.OptimizedUnicode` не документирован и устарел начиная с Python 3.3, когда он стал псевдонимом [`str`](https://python-all.ru/3/library/stdtypes.html#str). Теперь он считается устаревшим, запланировано удаление в Python 3.12.
- [bpo-42251](https://python-all.ru/3/whatsnew/changelog.html): Добавлены [`threading.gettrace()`](https://python-all.ru/3/library/threading.html#threading.gettrace) и [`threading.getprofile()`](https://python-all.ru/3/library/threading.html#threading.getprofile) для получения функций, установленных соответственно [`threading.settrace()`](https://python-all.ru/3/library/threading.html#threading.settrace) и [`threading.setprofile()`](https://python-all.ru/3/library/threading.html#threading.setprofile). Исправление от Mario Corchero.
- [bpo-42249](https://python-all.ru/3/whatsnew/changelog.html): Исправлена запись бинарных Plist-файлов размером более 4 ГиБ.
- [bpo-42236](https://python-all.ru/3/whatsnew/changelog.html): В Unix функция [`os.device_encoding()`](https://python-all.ru/3/library/os.html#os.device_encoding) теперь возвращает `'UTF-8'`, а не кодировку устройства, если включён [режим UTF-8 Python](https://python-all.ru/3/library/os.html#utf8-mode).
- [bpo-41754](https://python-all.ru/3/whatsnew/changelog.html): webbrowser: игнорировать *NotADirectoryError* при вызове `xdg-settings`.
- [bpo-42183](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка переполнения стека для asyncio-задачи или Future repr().

  Переполнение происходит в некоторых случаях, когда задача или Future рекурсивно возвращает себя.
- [bpo-42140](https://python-all.ru/3/whatsnew/changelog.html): Улучшена функция asyncio.wait: теперь создаёт набор futures только один раз.
- [bpo-42133](https://python-all.ru/3/whatsnew/changelog.html): Обновлены различные модули в стандартной библиотеке: теперь они возвращаются к `__spec__.loader`, если `__loader__` не определён в модуле.
- [bpo-26131](https://python-all.ru/3/whatsnew/changelog.html): Методы `load_module()` в `importlib` теперь вызывают `DeprecationWarning`.
- [bpo-39825](https://python-all.ru/3/whatsnew/changelog.html): Windows: изменён `sysconfig.get_config_var('EXT_SUFFIX')` на ожидаемый полный формат `platform_tag.extension`. Ранее он был жёстко привязан к `.pyd`, теперь совместим с `distutils.sysconfig` и будет давать результат вида `.cp38-win_amd64.pyd`. Это приводит Windows к единообразию с другими платформами.
- [bpo-26389](https://python-all.ru/3/whatsnew/changelog.html): Функции [`traceback.format_exception()`](https://python-all.ru/3/library/traceback.html#traceback.format_exception), [`traceback.format_exception_only()`](https://python-all.ru/3/library/traceback.html#traceback.format_exception_only) и [`traceback.print_exception()`](https://python-all.ru/3/library/traceback.html#traceback.print_exception) теперь могут принимать объект исключения в качестве позиционного аргумента (только по позиции).
- [bpo-41889](https://python-all.ru/3/whatsnew/changelog.html): Enum: исправлен регресс, связанный с наследованием перечисления с множественным наследованием.
- [bpo-41861](https://python-all.ru/3/whatsnew/changelog.html): Преобразован [`sqlite3`](https://python-all.ru/3/library/sqlite3.html#module-sqlite3) для использования типов кучи (PEP 384). Патч от Erlend E. Aasland.
- [bpo-40624](https://python-all.ru/3/whatsnew/changelog.html): Добавлена поддержка оператора XPath `!=` в xml.etree.
- [bpo-28850](https://python-all.ru/3/whatsnew/changelog.html): Исправлено игнорирование переопределений [`pprint.PrettyPrinter.format()`](https://python-all.ru/3/library/pprint.html#pprint.PrettyPrinter.format) для содержимого маленьких контейнеров. Функция `pprint._safe_repr()` удалена.
- [bpo-41625](https://python-all.ru/3/whatsnew/changelog.html): Открыт доступ к `splice()` как [`os.splice()`](https://python-all.ru/3/library/os.html#os.splice) в модуле [`os`](https://python-all.ru/3/library/os.html#module-os). Патч от Pablo Galindo.
- [bpo-34215](https://python-all.ru/3/whatsnew/changelog.html): Уточнено сообщение об ошибке для [`asyncio.IncompleteReadError`](https://python-all.ru/3/library/asyncio-exceptions.html#asyncio.IncompleteReadError), когда `expected` равно `None`.
- [bpo-41543](https://python-all.ru/3/whatsnew/changelog.html): Добавлена поддержка асинхронного контекстного менеджера для contextlib.nullcontext.
- [bpo-21041](https://python-all.ru/3/whatsnew/changelog.html): [`pathlib.PurePath.parents`](https://python-all.ru/3/library/pathlib.html#pathlib.PurePath.parents) теперь поддерживает отрицательное индексирование. Патч предоставлен Yaroslav Pankovych.
- [bpo-41332](https://python-all.ru/3/whatsnew/changelog.html): Добавлен отсутствующий метод connect\_accepted\_socket() в `asyncio.AbstractEventLoop`.
- [bpo-12800](https://python-all.ru/3/whatsnew/changelog.html): Извлечение символической ссылки из tarball должно выполняться успешно и перезаписывать существующую символическую ссылку. Исправление: удаление существующего файла или символической ссылки перед извлечением. Основано на патче от Chris AtLee, Jeffrey Kintscher и Senthil Kumaran.
- [bpo-40968](https://python-all.ru/3/whatsnew/changelog.html): [`urllib.request`](https://python-all.ru/3/library/urllib.request.html#module-urllib.request) и [`http.client`](https://python-all.ru/3/library/http.client.html#module-http.client) теперь отправляют расширение ALPN `http/1.1` во время рукопожатия TLS, если не указан пользовательский контекст.
- [bpo-41001](https://python-all.ru/3/whatsnew/changelog.html): Добавлен [`os.eventfd()`](https://python-all.ru/3/library/os.html#os.eventfd) для предоставления низкоуровневого интерфейса для файлового дескриптора уведомления о событиях Linux.
- [bpo-40816](https://python-all.ru/3/whatsnew/changelog.html): Добавлен AsyncContextDecorator в contextlib для поддержки асинхронного контекстного менеджера в качестве декоратора.
- [bpo-40550](https://python-all.ru/3/whatsnew/changelog.html): Исправлена проблема «проверка-действие» (time-of-check/time-of-action) в subprocess.Popen.send\_signal.
- [bpo-39411](https://python-all.ru/3/whatsnew/changelog.html): Добавлен идентификатор `is_async` для объектов `Function` модуля [`pyclbr`](https://python-all.ru/3/library/pyclbr.html#module-pyclbr). Патч от Batuhan Taskaya.
- [bpo-35498](https://python-all.ru/3/whatsnew/changelog.html): Добавлена поддержка срезов для [`pathlib.PurePath.parents`](https://python-all.ru/3/library/pathlib.html#pathlib.PurePath.parents).

### Документация

- [bpo-42238](https://python-all.ru/3/whatsnew/changelog.html): Начало процесса объявления `make suspicious` устаревшим: сначала удаление из сборок CI и документации, но с сохранением для ручного использования.
- [bpo-42153](https://python-all.ru/3/whatsnew/changelog.html): Исправлен URL для документов протокола IMAP.
- [bpo-41028](https://python-all.ru/3/whatsnew/changelog.html): Переключатели языка и версии, ранее поддерживаемые в каждой ветке cpython, теперь обрабатываются docsbuild-script.

### Тесты

- [bpo-41473](https://python-all.ru/3/whatsnew/changelog.html): Повторно включён test\_gdb на gdb 9.2 и новее: ошибка [https://bugzilla.redhat.com/show\_bug.cgi?id=1866884](https://python-all.ru/3/whatsnew/changelog.html) исправлена в gdb 10.1.
- [bpo-42553](https://python-all.ru/3/whatsnew/changelog.html): Исправлено состояние гонки в `test_asyncio.test_call_later()`: не измерять производительность asyncio в модульном тесте `call_later()`. Тест случайно падал на CI.
- [bpo-31904](https://python-all.ru/3/whatsnew/changelog.html): Исправлен test\_netrc на VxWorks: создание временных каталогов с помощью temp\_cwd().
- [bpo-31904](https://python-all.ru/3/whatsnew/changelog.html): Пропуск test\_getaddrinfo\_ipv6\_scopeid\_symbolic и test\_getnameinfo\_ipv6\_scopeid\_symbolic на VxWorks
- [bpo-31904](https://python-all.ru/3/whatsnew/changelog.html): Пропуск test\_test из test\_mailcap на VxWorks
- [bpo-31904](https://python-all.ru/3/whatsnew/changelog.html): Добавлена зависимость от оболочки для test\_pipes
- [bpo-31904](https://python-all.ru/3/whatsnew/changelog.html): Пропущены некоторые тесты, связанные с FIFO на VxWorks
- [bpo-31904](https://python-all.ru/3/whatsnew/changelog.html): Исправлены ошибки test\_doctest.py на VxWorks.
- [bpo-40754](https://python-all.ru/3/whatsnew/changelog.html): Включён модуль `_testinternalcapi` в установщик Windows для набора тестов.
- [bpo-41561](https://python-all.ru/3/whatsnew/changelog.html): test\_ssl: пропускать test\_min\_max\_version\_mismatch, если TLS 1.0 недоступен
- [bpo-31904](https://python-all.ru/3/whatsnew/changelog.html): Исправлены ошибки модуля os для VxWorks RTOS.
- [bpo-31904](https://python-all.ru/3/whatsnew/changelog.html): Исправлены тестовые случаи fifo для VxWorks RTOS.

### Сборка

- [bpo-31904](https://python-all.ru/3/whatsnew/changelog.html): удалена зависимость от libnet в detect\_socket() для VxWorks
- [bpo-42398](https://python-all.ru/3/whatsnew/changelog.html): Исправлена гонка в «make regen-all» при использовании опции make -jN для параллельного запуска задач. Теперь скрипт clinic.py использует только атомарную запись файлов. Кроме того, сгенерированные файлы теперь остаются без изменений, если содержимое не поменялось, чтобы не изменять время модификации файла.
- [bpo-41617](https://python-all.ru/3/whatsnew/changelog.html): Исправлена сборка внутреннего заголовка `pycore_bitutils.h` в старой версии clang без `__builtin_bswap16()` (например, Xcode 4.6.3 на Mac OS X 10.7). Патч от Joshua Root и Victor Stinner.
- [bpo-38823](https://python-all.ru/3/whatsnew/changelog.html): Больше невозможно собрать модуль расширения `_ctypes` без типа `wchar_t`: удалён макрос `CTYPES_UNICODE`. В любом случае, тип `wchar_t` необходим для сборки Python. Патч от Victor Stinner.
- [bpo-42087](https://python-all.ru/3/whatsnew/changelog.html): Прекращена поддержка AIX 5.3 и ниже. См. [bpo-40680](https://python-all.ru/3/whatsnew/changelog.html).
- [bpo-40998](https://python-all.ru/3/whatsnew/changelog.html): Устранены три предупреждения компилятора, найденные санитайзером неопределённого поведения (ubsan).

### Windows

- [bpo-42120](https://python-all.ru/3/whatsnew/changelog.html): Удалено определение макроса `copysign` (в `_copysign`) в заголовках.
- [bpo-38506](https://python-all.ru/3/whatsnew/changelog.html): Загрузчик Windows теперь корректно обрабатывает Python 3.10 при перечислении установленных версий Python.

### macOS

- [bpo-42504](https://python-all.ru/3/whatsnew/changelog.html): Исправлена сборка на macOS Big Sur, когда MACOSX\_DEPLOYMENT\_TARGET=11
- [bpo-41116](https://python-all.ru/3/whatsnew/changelog.html): Обеспечено, что distutils.unixxcompiler.find\_library\_file может находить системные библиотеки на macOS 11.
- [bpo-41100](https://python-all.ru/3/whatsnew/changelog.html): Добавлена поддержка macOS 11 и систем Apple Silicon.

  Теперь можно собирать двоичные файлы «Universal 2» с помощью «–enable-universalsdk –with-universal-archs=universal2».

  Двоичные файлы, собранные на более поздних версиях macOS, можно разворачивать на более старых версиях (протестировано до macOS 10.9), если используется правильная цель развёртывания. Это протестировано с использованием Xcode 11 и более поздних версий.
- [bpo-42232](https://python-all.ru/3/whatsnew/changelog.html): Добавлены специфичные для Darwin опции madvise в модуль mmap.
- [bpo-38443](https://python-all.ru/3/whatsnew/changelog.html): Опции `--enable-universalsdk` и `--with-universal-archs` скрипта configure теперь проверяют, что указанные архитектуры могут быть использованы.

### IDLE

- [bpo-42508](https://python-all.ru/3/whatsnew/changelog.html): Обеспечена работа IDLE на macOS. Удалён устаревший обходной приём, который мешал запускать файлы с помощью ярлыков при использовании новых установщиков universal2, собранных на macOS 11.
- [bpo-42426](https://python-all.ru/3/whatsnew/changelog.html): Исправлено сообщение о смещении ошибки RE в searchengine.
- [bpo-42415](https://python-all.ru/3/whatsnew/changelog.html): Докстринги для подсказок IDLE теперь получаются чаще с помощью inspect.getdoc.

### Tools/Demos

- [bpo-42212](https://python-all.ru/3/whatsnew/changelog.html): Скрипт smelly.py теперь также проверяет динамическую библиотеку Python и модули расширения, а не только статическую библиотеку Python. Скрипт также стал более многословным: поясняется, что он делает.
- [bpo-36310](https://python-all.ru/3/whatsnew/changelog.html): Разрешить `Tools/i18n/pygettext.py` обнаруживать вызовы `gettext` в f-строках.

### C API

- [bpo-42423](https://python-all.ru/3/whatsnew/changelog.html): Функции [`PyType_FromSpecWithBases()`](https://python-all.ru/3/c-api/type.html#c.PyType_FromSpecWithBases) и [`PyType_FromModuleAndSpec()`](https://python-all.ru/3/c-api/type.html#c.PyType_FromModuleAndSpec) теперь принимают один класс в качестве аргумента *bases*.
- [bpo-1635741](https://python-all.ru/3/whatsnew/changelog.html): Перенос модуля расширения [`select`](https://python-all.ru/3/library/select.html#module-select) на многофазную инициализацию ([**PEP 489**](https://python-all.ru/3/whatsnew/changelog.html)).
- [bpo-1635741](https://python-all.ru/3/whatsnew/changelog.html): Перенос модуля расширения \_posixsubprocess на многофазную инициализацию ([**PEP 489**](https://python-all.ru/3/whatsnew/changelog.html)).
- [bpo-1635741](https://python-all.ru/3/whatsnew/changelog.html): Перенос модуля расширения \_posixshmem на многофазную инициализацию ([**PEP 489**](https://python-all.ru/3/whatsnew/changelog.html))
- [bpo-1635741](https://python-all.ru/3/whatsnew/changelog.html): Перенос модуля расширения \_struct на многофазную инициализацию ([**PEP 489**](https://python-all.ru/3/whatsnew/changelog.html))
- [bpo-1635741](https://python-all.ru/3/whatsnew/changelog.html): Перенос модуля расширения `spwd` на многофазную инициализацию ([**PEP 489**](https://python-all.ru/3/whatsnew/changelog.html))
- [bpo-1635741](https://python-all.ru/3/whatsnew/changelog.html): Перенос модуля расширения [`gc`](https://python-all.ru/3/library/gc.html#module-gc) на многофазную инициализацию ([**PEP 489**](https://python-all.ru/3/whatsnew/changelog.html))
- [bpo-1635741](https://python-all.ru/3/whatsnew/changelog.html): Перенос модуля расширения \_queue на многофазную инициализацию ([**PEP 489**](https://python-all.ru/3/whatsnew/changelog.html))
- [bpo-39573](https://python-all.ru/3/whatsnew/changelog.html): Convert [`Py_TYPE()`](https://python-all.ru/3/c-api/structures.html#c.Py_TYPE) and [`Py_SIZE()`](https://python-all.ru/3/c-api/structures.html#c.Py_SIZE) back to macros to allow using them as an l-value. Many third party C extension modules rely on the ability of using Py\_TYPE() and Py\_SIZE() to set an object type and size: `Py_TYPE(obj) = type;` and `Py_SIZE(obj) = size;`.
- [bpo-1635741](https://python-all.ru/3/whatsnew/changelog.html): Перенос модуля расширения [`symtable`](https://python-all.ru/3/library/symtable.html#module-symtable) на многофазную инициализацию ([**PEP 489**](https://python-all.ru/3/whatsnew/changelog.html))
- [bpo-1635741](https://python-all.ru/3/whatsnew/changelog.html): Перенос модулей расширения [`grp`](https://python-all.ru/3/library/grp.html#module-grp) и [`pwd`](https://python-all.ru/3/library/pwd.html#module-pwd) на многофазную инициализацию ([**PEP 489**](https://python-all.ru/3/whatsnew/changelog.html))
- [bpo-1635741](https://python-all.ru/3/whatsnew/changelog.html): Перенос модуля расширения \_random на многофазную инициализацию ([**PEP 489**](https://python-all.ru/3/whatsnew/changelog.html))
- [bpo-1635741](https://python-all.ru/3/whatsnew/changelog.html): Перенос модуля расширения \_hashlib на многофазную инициализацию ([**PEP 489**](https://python-all.ru/3/whatsnew/changelog.html))
- [bpo-41713](https://python-all.ru/3/whatsnew/changelog.html): Удалена недокументированная функция `PyOS_InitInterrupts()`. Инициализация Python уже неявно устанавливает обработчики сигналов: см. [`PyConfig.install_signal_handlers`](https://python-all.ru/3/c-api/init_config.html#c.PyConfig.install_signal_handlers). Патч от Victor Stinner.
- [bpo-40170](https://python-all.ru/3/whatsnew/changelog.html): Макрос `Py_TRASHCAN_BEGIN` больше не обращается к атрибутам PyTypeObject, а теперь может получать условие с помощью вызова новой приватной функции `_PyTrash_cond()`, которая скрывает детали реализации.
- [bpo-42260](https://python-all.ru/3/whatsnew/changelog.html): Функции [`Py_GetPath()`](https://python-all.ru/3/c-api/interp-lifecycle.html#c.Py_GetPath), [`Py_GetPrefix()`](https://python-all.ru/3/c-api/interp-lifecycle.html#c.Py_GetPrefix), [`Py_GetExecPrefix()`](https://python-all.ru/3/c-api/interp-lifecycle.html#c.Py_GetExecPrefix), [`Py_GetProgramFullPath()`](https://python-all.ru/3/c-api/interp-lifecycle.html#c.Py_GetProgramFullPath), [`Py_GetPythonHome()`](https://python-all.ru/3/c-api/interp-lifecycle.html#c.Py_GetPythonHome) и [`Py_GetProgramName()`](https://python-all.ru/3/c-api/interp-lifecycle.html#c.Py_GetProgramName) теперь возвращают `NULL`, если вызваны до [`Py_Initialize()`](https://python-all.ru/3/c-api/interp-lifecycle.html#c.Py_Initialize) (до инициализации Python). Используйте новый [API конфигурации инициализации Python](https://python-all.ru/3/c-api/init_config.html#init-config) для получения [конфигурации путей Python.](https://python-all.ru/3/c-api/init_config.html#init-path-config). Патч от Victor Stinner.
- [bpo-42260](https://python-all.ru/3/whatsnew/changelog.html): Функция [`PyConfig_Read()`](https://python-all.ru/3/c-api/init_config.html#c.PyConfig_Read) теперь разбирает аргументы [`PyConfig.argv`](https://python-all.ru/3/c-api/init_config.html#c.PyConfig.argv) только один раз: [`PyConfig.parse_argv`](https://python-all.ru/3/c-api/init_config.html#c.PyConfig.parse_argv) устанавливается в `2` после разбора аргументов. Поскольку аргументы Python удаляются из `PyConfig.argv`, повторный разбор аргументов привел бы к разбору опций приложения как опций Python.
- [bpo-42262](https://python-all.ru/3/whatsnew/changelog.html): Добавлены функции [`Py_NewRef()`](https://python-all.ru/3/c-api/refcounting.html#c.Py_NewRef) и [`Py_XNewRef()`](https://python-all.ru/3/c-api/refcounting.html#c.Py_XNewRef) для увеличения счетчика ссылок объекта и возврата объекта. Патч от Victor Stinner.
- [bpo-42260](https://python-all.ru/3/whatsnew/changelog.html): При двукратном вызове [`Py_Initialize()`](https://python-all.ru/3/c-api/interp-lifecycle.html#c.Py_Initialize) второй вызов теперь обновляет больше атрибутов [`sys`](https://python-all.ru/3/library/sys.html#module-sys) для конфигурации, а не только [`sys.argv`](https://python-all.ru/3/library/sys.html#sys.argv). Патч от Victor Stinner.
- [bpo-41832](https://python-all.ru/3/whatsnew/changelog.html): Функция [`PyType_FromModuleAndSpec()`](https://python-all.ru/3/c-api/type.html#c.PyType_FromModuleAndSpec) теперь принимает слот NULL `tp_doc`.
- [bpo-1635741](https://python-all.ru/3/whatsnew/changelog.html): Добавлена функция [`PyModule_AddObjectRef()`](https://python-all.ru/3/c-api/module.html#c.PyModule_AddObjectRef): похожа на [`PyModule_AddObject()`](https://python-all.ru/3/c-api/module.html#c.PyModule_AddObject), но не крадёт ссылку на значение в случае успеха. Патч от Victor Stinner.
- [bpo-42171](https://python-all.ru/3/whatsnew/changelog.html): Соглашение о вызове [`METH_FASTCALL`](https://python-all.ru/3/c-api/structures.html#c.METH_FASTCALL) добавлено в ограниченный API. Функции [`PyModule_AddType()`](https://python-all.ru/3/c-api/module.html#c.PyModule_AddType), [`PyType_FromModuleAndSpec()`](https://python-all.ru/3/c-api/type.html#c.PyType_FromModuleAndSpec), [`PyType_GetModule()`](https://python-all.ru/3/c-api/type.html#c.PyType_GetModule) и [`PyType_GetModuleState()`](https://python-all.ru/3/c-api/type.html#c.PyType_GetModuleState) добавлены в ограниченный API в Windows.
- [bpo-42085](https://python-all.ru/3/whatsnew/changelog.html): Добавлена отдельная запись в PyAsyncMethods для отправки значений.
- [bpo-41073](https://python-all.ru/3/whatsnew/changelog.html): [`PyType_GetSlot()`](https://python-all.ru/3/c-api/type.html#c.PyType_GetSlot) теперь может принимать статические типы.
- [bpo-30459](https://python-all.ru/3/whatsnew/changelog.html): Макросы [`PyList_SET_ITEM()`](https://python-all.ru/3/c-api/list.html#c.PyList_SET_ITEM), [`PyTuple_SET_ITEM()`](https://python-all.ru/3/c-api/tuple.html#c.PyTuple_SET_ITEM) и [`PyCell_SET()`](https://python-all.ru/3/c-api/cell.html#c.PyCell_SET) больше не могут использоваться в качестве l-value или r-value. Например, `x = PyList_SET_ITEM(a, b, c)` и `PyList_SET_ITEM(a, b, c) = x` теперь приводят к ошибке компиляции. Это предотвращает такие ошибки, как тест `if (PyList_SET_ITEM (a, b, c) < 0) ...`. Патч от Zackery Spytz и Victor Stinner.

## Python 3.10.0 alpha 2

*Дата выпуска: 2020-11-03*

### Безопасность

- [bpo-42103](https://python-all.ru/3/whatsnew/changelog.html): Предотвращена потенциальная DoS-атака через исчерпание CPU и RAM при обработке некорректных файлов Apple Property List в двоичном формате.
- [bpo-42051](https://python-all.ru/3/whatsnew/changelog.html): Модуль [`plistlib`](https://python-all.ru/3/library/plistlib.html#module-plistlib) больше не принимает объявления сущностей в XML plist-файлах для предотвращения XML-уязвимостей. Это не должно повлиять на пользователей, так как объявления сущностей не используются в обычных plist-файлах.

### Ядро и встроенные объекты

- [bpo-42236](https://python-all.ru/3/whatsnew/changelog.html): Если функция `nl_langinfo(CODESET)` возвращает пустую строку, Python теперь использует UTF-8 в качестве кодировки файловой системы. Патч от Victor Stinner.
- [bpo-42218](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка в PEG-парсере, вызывавшая крахи в режиме отладки. Теперь ошибки проверяются в леворекурсивных правилах, чтобы избежать ситуаций, когда такие ошибки не обрабатываются вовремя и проявляются как отдалённые крахи в других местах.
- [bpo-42214](https://python-all.ru/3/whatsnew/changelog.html): Исправлен возможный крах PEG-парсера при проверке токена ‘!=’ в правиле `barry_as_flufl`. Патч от Pablo Galindo.
- [bpo-42206](https://python-all.ru/3/whatsnew/changelog.html): Распространение и возбуждение ошибок, вызванных `PyAST_Validate()` в парсере.
- [bpo-41796](https://python-all.ru/3/whatsnew/changelog.html): Внутреннее состояние модуля [`ast`](https://python-all.ru/3/library/ast.html#module-ast) теперь относится к каждому интерпретатору. Патч от Victor Stinner.
- [bpo-42143](https://python-all.ru/3/whatsnew/changelog.html): Исправлена обработка ошибок при создании `PyFunctionObject`, которая приводила к операциям с неинициализированной памятью. Патч от Yonatan Goldschmidt.
- [bpo-41659](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка в парсере, когда фигурная скобка после `primary` не вызывала немедленную ошибку. Это приводило к тому, что недопустимые выражения вида `a {b}` выбрасывали [`SyntaxError`](https://python-all.ru/3/library/exceptions.html#SyntaxError) с неверным смещением, или недопустимые выражения, заканчивающиеся фигурной скобкой, например `a {`, не завершались ошибкой сразу в REPL.
- [bpo-42150](https://python-all.ru/3/whatsnew/changelog.html): Исправлена возможная проблема переполнения буфера в новом парсере при проверке строк продолжения. Патч от Pablo Galindo.
- [bpo-42123](https://python-all.ru/3/whatsnew/changelog.html): Парсер запускается дважды. При первом запуске отключаются все правила, которые только генерируют более качественные сообщения об ошибках, для повышения производительности. Если произошёл сбой разбора, парсер запускается второй раз с включёнными этими правилами.
- [bpo-42093](https://python-all.ru/3/whatsnew/changelog.html): Инструкция `LOAD_ATTR` теперь использует новый механизм «per opcode cache» и работает примерно на 36% быстрее. Патч от Pablo Galindo и Yury Selivanov.
- [bpo-42030](https://python-all.ru/3/whatsnew/changelog.html): Удалена поддержка устаревшего механизма загрузки разделяемых библиотек, специфичного для AIX. Все версии AIX начиная с 4.3 поддерживают и используют по умолчанию обычный механизм Unix.
- [bpo-41984](https://python-all.ru/3/whatsnew/changelog.html): Сборщик мусора теперь отслеживает все определённые пользователем классы. Патч от Brandt Bucher.
- [bpo-41993](https://python-all.ru/3/whatsnew/changelog.html): Исправлены потенциальные проблемы с удалением не полностью инициализированного модуля из `sys.modules` при ошибке импорта.
- [bpo-41979](https://python-all.ru/3/whatsnew/changelog.html): Распаковка со звёздочкой теперь разрешена для целей элементов в PEG-парсере.
- [bpo-41974](https://python-all.ru/3/whatsnew/changelog.html): Удалены специальные методы `__int__`, `__float__`, `__floordiv__`, `__mod__`, `__divmod__`, `__rfloordiv__`, `__rmod__` и `__rdivmod__` класса [`complex`](https://python-all.ru/3/library/functions.html#complex). Они всегда вызывали [`TypeError`](https://python-all.ru/3/library/exceptions.html#TypeError).
- [bpo-41902](https://python-all.ru/3/whatsnew/changelog.html): Микрооптимизация при вычислении [`sq_item`](https://python-all.ru/3/c-api/typeobj.html#c.PySequenceMethods.sq_item) и [`mp_subscript`](https://python-all.ru/3/c-api/typeobj.html#c.PyMappingMethods.mp_subscript) для [`range`](https://python-all.ru/3/library/stdtypes.html#range). Патч от Donghee Na.
- [bpo-41894](https://python-all.ru/3/whatsnew/changelog.html): При загрузке нативного модуля и возникновении ошибки загрузки предотвращается возможная UnicodeDecodeError при работе не в локали UTF-8 путём декодирования сообщения об ошибке загрузки с использованием кодировки текущей локали.
- [bpo-41902](https://python-all.ru/3/whatsnew/changelog.html): Микрооптимизация для range.index, если шаг равен 1. Патч от Donghee Na.

### Библиотека

- [bpo-41435](https://python-all.ru/3/whatsnew/changelog.html): Добавлена функция `sys._current_exceptions()` для получения словаря, сопоставляющего идентификатор каждого потока с самым верхним исключением, активным в этом потоке на момент вызова функции.

### Ядро и встроенные модули

- [bpo-38605](https://python-all.ru/3/whatsnew/changelog.html): Включена `from __future__ import annotations` ([**PEP 563**](https://python-all.ru/3/whatsnew/changelog.html)) по умолчанию. Значения в словарях [`__annotations__`](https://python-all.ru/3/reference/datamodel.html#object.__annotations__) теперь являются строками, например `{"x": "int"}` вместо `{"x": int}`.

### Библиотека

- [bpo-35455](https://python-all.ru/3/whatsnew/changelog.html): На Solaris [`thread_time()`](https://python-all.ru/3/library/time.html#time.thread_time) теперь реализована с помощью `gethrvtime()`, так как `clock_gettime(CLOCK_THREAD_CPUTIME_ID)` не всегда доступна. Патч от Jakub Kulik.
- [bpo-42233](https://python-all.ru/3/whatsnew/changelog.html): [`repr()`](https://python-all.ru/3/library/functions.html#repr) типов [`typing`](https://python-all.ru/3/library/typing.html#module-typing), содержащих [Обобщенные псевдонимы типов](https://python-all.ru/3/library/stdtypes.html#types-genericalias), ранее не показывал параметризованные типы в `GenericAlias`. Теперь это исправлено.
- [bpo-29566](https://python-all.ru/3/whatsnew/changelog.html): `binhex.binhex()` теперь последовательно записывает концы строк macOS 9.
- [bpo-26789](https://python-all.ru/3/whatsnew/changelog.html): Класс [`logging.FileHandler`](https://python-all.ru/3/library/logging.handlers.html#logging.FileHandler) теперь сохраняет ссылку на встроенную функцию [`open()`](https://python-all.ru/3/library/functions.html#open), чтобы иметь возможность открыть или переоткрыть файл во время завершения работы Python. Исправлены ошибки вида: `NameError: name 'open' is not defined`. Патч от Victor Stinner.
- [bpo-42157](https://python-all.ru/3/whatsnew/changelog.html): Удалён атрибут `unicodedata.ucnhash_CAPI`, который был внутренним объектом PyCapsule. Соответствующая приватная структура `_PyUnicode_Name_CAPI` перемещена во внутренний C API. Патч от Victor Stinner.
- [bpo-42157](https://python-all.ru/3/whatsnew/changelog.html): Модуль расширения [`unicodedata`](https://python-all.ru/3/library/unicodedata.html#module-unicodedata) переведён на многофазный API инициализации ([**PEP 489**](https://python-all.ru/3/whatsnew/changelog.html)), а статический тип `unicodedata.UCD` преобразован в тип из кучи. Патч от Mohamed Koubaa и Victor Stinner.
- [bpo-42146](https://python-all.ru/3/whatsnew/changelog.html): Исправлена утечка памяти в [`subprocess.Popen()`](https://python-all.ru/3/library/subprocess.html#subprocess.Popen), если uid (gid), указанный в `user` (`group`, `extra_groups`), выходит за пределы `uid_t` (`gid_t`).
- [bpo-42103](https://python-all.ru/3/whatsnew/changelog.html): [`InvalidFileException`](https://python-all.ru/3/library/plistlib.html#plistlib.InvalidFileException) и [`RecursionError`](https://python-all.ru/3/library/exceptions.html#RecursionError) теперь являются единственными ошибками, возникающими при загрузке повреждённого бинарного Plist-файла (ранее в некоторых случаях могли возникать ValueError и TypeError).
- [bpo-41490](https://python-all.ru/3/whatsnew/changelog.html): В `importlib.resources` метод `.path` стал более активно освобождать дескрипторы объектов zipfile раньше, что позволяет в таких сценариях, как certifi, оставлять контекст открытым, но удалять базовый zip-файл.
- [bpo-41052](https://python-all.ru/3/whatsnew/changelog.html): Сериализация (pickling) типов из кучи, реализованных на C, с протоколами 0 и 1 теперь вызывает ошибку вместо создания некорректных данных.
- [bpo-42089](https://python-all.ru/3/whatsnew/changelog.html): В `importlib.metadata.PackageNotFoundError` добавлена ссылка на отсутствие метаданных пакета для улучшения пользовательского опыта.
- [bpo-41491](https://python-all.ru/3/whatsnew/changelog.html): plistlib: исправлен разбор XML-файлов plist с шестнадцатеричными целочисленными значениями
- [bpo-42065](https://python-all.ru/3/whatsnew/changelog.html): Исправлена некорректно отформатированная ошибка из `_codecs.charmap_decode()` при вызове с отображаемым значением вне диапазона допустимых кодовых точек Unicode. PR от Max Bernstein.
- [bpo-41966](https://python-all.ru/3/whatsnew/changelog.html): Исправлена сериализация подклассов чистого Python [`datetime.time`](https://python-all.ru/3/library/datetime.html#datetime.time). Патч от Dean Inwood.
- [bpo-19270](https://python-all.ru/3/whatsnew/changelog.html): [`sched.scheduler.cancel()`](https://python-all.ru/3/library/sched.html#sched.scheduler.cancel) теперь отменяет правильное событие, если два события с одинаковым приоритетом запланированы на одно и то же время. Патч от Bar Harel.
- [bpo-28660](https://python-all.ru/3/whatsnew/changelog.html): [`textwrap.wrap()`](https://python-all.ru/3/library/textwrap.html#textwrap.wrap) теперь пытается разбивать длинные слова после дефисов, когда `break_long_words=True` и `break_on_hyphens=True`.
- [bpo-35823](https://python-all.ru/3/whatsnew/changelog.html): Используйте `vfork()` вместо `fork()` для [`subprocess.Popen()`](https://python-all.ru/3/library/subprocess.html#subprocess.Popen) на Linux для повышения производительности в случаях, когда это считается безопасным.
- [bpo-42043](https://python-all.ru/3/whatsnew/changelog.html): Добавлена поддержка наследования `zipfile.Path`. `zipfile.Path.is_file()` теперь возвращает False для несуществующих имён. Объекты `zipfile.Path` теперь содержат атрибут `.filename` и используют его для разрешения `.name` и `.parent`, когда объект `Path` находится в корне zip-файла.
- [bpo-42021](https://python-all.ru/3/whatsnew/changelog.html): Исправлена возможная утечка ссылок при инициализации модуля [`sqlite3`](https://python-all.ru/3/library/sqlite3.html#module-sqlite3).
- [bpo-39101](https://python-all.ru/3/whatsnew/changelog.html): Исправлены тесты, использующие IsolatedAsyncioTestCase, которые зависали при BaseExceptions.
- [bpo-41976](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка, из-за которой [`ctypes.util.find_library()`](https://python-all.ru/3/library/ctypes.html#ctypes.util.find_library) возвращал `None` при попытке найти библиотеку в окружении, где доступен gcc\>=9, а `ldconfig` нет. Патч от Pablo Galindo.
- [bpo-41943](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка, из-за которой TestCase.assertLogs неправильно фильтровал сообщения по уровню.
- [bpo-41923](https://python-all.ru/3/whatsnew/changelog.html): Реализован [**PEP 613**](https://python-all.ru/3/whatsnew/changelog.html), вводящий аннотацию [`typing.TypeAlias`](https://python-all.ru/3/library/typing.html#typing.TypeAlias).
- [bpo-41905](https://python-all.ru/3/whatsnew/changelog.html): Новая функция в abc: *update\_abstractmethods* для пересчёта абстрактного статуса абстрактного класса. Кроме того, *dataclass* был изменён, чтобы вызывать эту функцию.
- [bpo-23706](https://python-all.ru/3/whatsnew/changelog.html): Добавлен параметр *newline* в `pathlib.Path.write_text()`.
- [bpo-41876](https://python-all.ru/3/whatsnew/changelog.html): repr класса шрифта Tkinter использует имя шрифта
- [bpo-41831](https://python-all.ru/3/whatsnew/changelog.html): `str()` для атрибута `type` объекта `tkinter.Event` теперь всегда возвращает числовой код, возвращённый Tk, а не имя типа события.
- [bpo-39337](https://python-all.ru/3/whatsnew/changelog.html): [`encodings.normalize_encoding()`](https://python-all.ru/3/library/codecs.html#encodings.normalize_encoding) теперь игнорирует не-ASCII символы.
- [bpo-41747](https://python-all.ru/3/whatsnew/changelog.html): Обеспечено, что все методы, созданные из объектов [`dataclasses.dataclass()`](https://python-all.ru/3/library/dataclasses.html#dataclasses.dataclass), теперь имеют правильный атрибут `__qualname__`, указывающий на класс, которому они принадлежат. Патч от Batuhan Taskaya.
- [bpo-30681](https://python-all.ru/3/whatsnew/changelog.html): Обработка исключений, вызванных непарсируемыми заголовками даты при использовании стандартной политики email. Патч от Tim Bell, Georges Toth.
- [bpo-41586](https://python-all.ru/3/whatsnew/changelog.html): Добавлены F\_SETPIPE\_SZ и F\_GETPIPE\_SZ в модуль fcntl. Разрешена установка размера канала для subprocess.Popen.
- [bpo-41229](https://python-all.ru/3/whatsnew/changelog.html): Добавлен `contextlib.aclosing` для детерминированной очистки асинхронных генераторов, что аналогично `contextlib.closing` для неасинхронных генераторов. Патч от Joongi Kim и John Belmonte.
- [bpo-16396](https://python-all.ru/3/whatsnew/changelog.html): Разрешён импорт `ctypes.wintypes` на системах, отличных от Windows.
- [bpo-4356](https://python-all.ru/3/whatsnew/changelog.html): Добавлена функция ключа в модуль bisect.
- [bpo-40592](https://python-all.ru/3/whatsnew/changelog.html): [`shutil.which()`](https://python-all.ru/3/library/shutil.html#shutil.which) теперь игнорирует пустые записи в `PATHEXT` вместо того, чтобы считать их совпадением.
- [bpo-40492](https://python-all.ru/3/whatsnew/changelog.html): Исправлена `--outfile` для [`cProfile`](https://python-all.ru/3/library/profile.html#module-cProfile) / [`profile`](https://python-all.ru/3/library/profile.html#module-profile): теперь выходной файл записывается в исходный каталог, даже если профилируемая программа меняет рабочий каталог. PR от Anthony Sottile.
- [bpo-34204](https://python-all.ru/3/whatsnew/changelog.html): Модуль [`shelve`](https://python-all.ru/3/library/shelve.html#module-shelve) теперь использует [`pickle.DEFAULT_PROTOCOL`](https://python-all.ru/3/library/pickle.html#pickle.DEFAULT_PROTOCOL) по умолчанию вместо протокола [`pickle`](https://python-all.ru/3/library/pickle.html#module-pickle) `3`.
- [bpo-27321](https://python-all.ru/3/whatsnew/changelog.html): Исправлено исключение KeyError, возникавшее при преобразовании email в строку, когда производилась попытка заменить несуществующий заголовок Content-Transfer-Encoding.
- [bpo-38976](https://python-all.ru/3/whatsnew/changelog.html): Модуль [`http.cookiejar`](https://python-all.ru/3/library/http.cookiejar.html#module-http.cookiejar) теперь поддерживает разбор файлов cookie в стиле CURL через MozillaCookieJar на всех платформах. Ранее такие записи cookie молча игнорировались при загрузке файла cookie.

  Кроме того, атрибут HTTP Only сохраняется в объекте и будет корректно записан в файл, если объект MozillaCookieJar впоследствии будет выгружен.

### Документация

- [bpo-42061](https://python-all.ru/3/whatsnew/changelog.html): Документирована функциональность \_\_format\_\_ для IP-адресов.
- [bpo-41910](https://python-all.ru/3/whatsnew/changelog.html): Документирована реализация по умолчанию `object.__eq__`.
- [bpo-42010](https://python-all.ru/3/whatsnew/changelog.html): Уточнено, что выражения подписки также допустимы для некоторых [классов](https://python-all.ru/3/glossary.html#term-class) и [типов](https://python-all.ru/3/glossary.html#term-type) в стандартной библиотеке, а также для пользовательских классов и типов, если предоставлен метод класса `__class_getitem__()`.
- [bpo-41805](https://python-all.ru/3/whatsnew/changelog.html): Документированы [псевдоним обобщённого типа](https://python-all.ru/3/library/stdtypes.html#types-genericalias) и [`types.GenericAlias`](https://python-all.ru/3/library/types.html#types.GenericAlias). Также добавлена запись в глоссарий для [обобщённых типов](https://python-all.ru/3/glossary.html#term-generic-type).
- [bpo-39693](https://python-all.ru/3/whatsnew/changelog.html): Исправлена документация extractfile в модуле tarfile.
- [bpo-39416](https://python-all.ru/3/whatsnew/changelog.html): Документированы некоторые ограничения на строковые представления числовых классов по умолчанию.

### Тесты

- [bpo-41739](https://python-all.ru/3/whatsnew/changelog.html): Исправлен test\_logging.test\_race\_between\_set\_target\_and\_flush(): тест теперь ожидает завершения всех потоков, чтобы избежать утечки работающих потоков.
- [bpo-41970](https://python-all.ru/3/whatsnew/changelog.html): Предотвращён сбой теста в `test_lib2to3`, если модуль уже импортирован во время выполнения теста. Патч от Pablo Galindo.
- [bpo-41944](https://python-all.ru/3/whatsnew/changelog.html): Тесты для CJK-кодеков больше не вызывают `eval()` для содержимого, полученного по HTTP.
- [bpo-41306](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка в `test_tk.test_widgets.ScaleTest`, возникающая при выполнении теста с Tk 8.6.10.

### Сборка

- [bpo-38980](https://python-all.ru/3/whatsnew/changelog.html): Добавлен `-fno-semantic-interposition` как в команду компиляции, так и в команду компоновки при сборке с `--enable-optimizations`. Патч от Victor Stinner и Pablo Galindo.

### Windows

- [bpo-38439](https://python-all.ru/3/whatsnew/changelog.html): Обновление иконок для IDLE в пакете Windows Store.
- [bpo-38252](https://python-all.ru/3/whatsnew/changelog.html): Использование 8-байтового шага для обнаружения ASCII-последовательности в сборке 64-разрядной Windows.
- [bpo-39107](https://python-all.ru/3/whatsnew/changelog.html): Обновление Tcl и Tk до версии 8.6.10 в установщике Windows.
- [bpo-41557](https://python-all.ru/3/whatsnew/changelog.html): Обновление установщика Windows для использования SQLite 3.33.0.
- [bpo-38324](https://python-all.ru/3/whatsnew/changelog.html): Предотвращение ошибок Unicode при доступе к некоторым данным локали в Windows.

### macOS

- [bpo-41471](https://python-all.ru/3/whatsnew/changelog.html): Игнорирование недопустимых длин префиксов в исключениях системного прокси.

### IDLE

- [bpo-33987](https://python-all.ru/3/whatsnew/changelog.html): В основном завершено использование виджетов ttk, главным образом для редактора, настроек и поиска. Некоторые патчи от Mark Roseman.
- [bpo-40511](https://python-all.ru/3/whatsnew/changelog.html): Набор открывающих и закрывающих круглых скобок внутри круглых скобок вызова функции больше не вызывает ненужное «мерцание» включения/выключения открытой подсказки вызова, например, при вводе в строковом литерале.
- [bpo-38439](https://python-all.ru/3/whatsnew/changelog.html): Добавлена иконка IDLE размером 256×256 пикселей в файл .ico для Windows. Создана Andrew Clover. Удалены низкоцветные варианты gif из файла .ico.

### C API

- [bpo-42157](https://python-all.ru/3/whatsnew/changelog.html): Приватная структура `_PyUnicode_Name_CAPI` PyCapsule API `unicodedata.ucnhash_CAPI` перенесена во внутренний C API. Патч от Victor Stinner.
- [bpo-42015](https://python-all.ru/3/whatsnew/changelog.html): Исправлена потенциальная ошибка при удалении объектов-методов, когда время жизни динамически выделенного [`PyMethodDef`](https://python-all.ru/3/c-api/structures.html#c.PyMethodDef) управляется через аргумент `self` функции [`PyCFunction`](https://python-all.ru/3/c-api/structures.html#c.PyCFunction).
- [bpo-40423](https://python-all.ru/3/whatsnew/changelog.html): Модуль [`subprocess`](https://python-all.ru/3/library/subprocess.html#module-subprocess) и `os.closerange` теперь используют системный вызов `close_range(low, high, flags)`, когда он доступен, для более эффективного закрытия диапазонов дескрипторов.
- [bpo-41845](https://python-all.ru/3/whatsnew/changelog.html): [`PyObject_GenericGetDict()`](https://python-all.ru/3/c-api/object.html#c.PyObject_GenericGetDict) снова доступен в ограниченном API при использовании Python 3.10 или новее.
- [bpo-40422](https://python-all.ru/3/whatsnew/changelog.html): Добавлена функция `_Py_closerange` для эффективного закрытия диапазона файловых дескрипторов.
- [bpo-41986](https://python-all.ru/3/whatsnew/changelog.html): `Py_FileSystemDefaultEncodeErrors` и `Py_UTF8Mode` снова доступны в ограниченном API.
- [bpo-41756](https://python-all.ru/3/whatsnew/changelog.html): Добавлена функция `PyIter_Send`, позволяющая отправлять значение в генератор/корутину/итератор без возбуждения исключения StopIteration для сигнализации о возврате.
- [bpo-41784](https://python-all.ru/3/whatsnew/changelog.html): Добавлен `PyUnicode_AsUTF8AndSize` в ограниченный C API.

## Python 3.10.0 alpha 1

*Дата выпуска: 2020-10-05*

### Безопасность

- [bpo-41304](https://python-all.ru/3/whatsnew/changelog.html): Исправлена проблема, из-за которой `python3x._pth` игнорировался в Windows, вызванная исправлением для [bpo-29778](https://python-all.ru/3/whatsnew/changelog.html) ([**CVE 2020-15801**](https://python-all.ru/3/whatsnew/changelog.html)).
- [bpo-41162](https://python-all.ru/3/whatsnew/changelog.html): Хуки аудита теперь очищаются позже при финализации, чтобы не пропускать события.
- [bpo-29778](https://python-all.ru/3/whatsnew/changelog.html): Обеспечивает загрузку `python3.dll` из правильных мест при встраивании Python ([**CVE 2020-15523**](https://python-all.ru/3/whatsnew/changelog.html)).
- [bpo-41004](https://python-all.ru/3/whatsnew/changelog.html): Методы \_\_hash\_\_() классов ipaddress.IPv4Interface и ipaddress.IPv6Interface некорректно генерировали постоянные хеш-значения 32 и 128 соответственно. Это приводило к постоянным коллизиям хешей. Исправление использует hash() для генерации хеш-значений кортежа (address, mask length, network address).
- [bpo-39603](https://python-all.ru/3/whatsnew/changelog.html): Предотвращение инъекции HTTP-заголовков путём отклонения управляющих символов в http.client.putrequest(…).

### Ядро и встроенные модули

- [bpo-41909](https://python-all.ru/3/whatsnew/changelog.html): Исправлено переполнение стека в [`issubclass()`](https://python-all.ru/3/library/functions.html#issubclass) и [`isinstance()`](https://python-all.ru/3/library/functions.html#isinstance), когда получение атрибута `__bases__` приводило к бесконечной рекурсии.
- [bpo-41922](https://python-all.ru/3/whatsnew/changelog.html): Ускорены вызовы `reversed()` за счёт использования соглашения о вызовах [**PEP 590**](https://python-all.ru/3/whatsnew/changelog.html) `vectorcall`. Исправление от Donghee Na.
- [bpo-41873](https://python-all.ru/3/whatsnew/changelog.html): Вызовы `float()` теперь выполняются быстрее благодаря соглашению о вызовах `vectorcall`. Исправление от Dennis Sweeney.
- [bpo-41870](https://python-all.ru/3/whatsnew/changelog.html): Ускорены вызовы `bool()` за счёт использования соглашения о вызовах [**PEP 590**](https://python-all.ru/3/whatsnew/changelog.html) `vectorcall`. Исправление от Donghee Na.

### Библиотеки

- [bpo-1635741](https://python-all.ru/3/whatsnew/changelog.html): Перенос модуля `_bisect` на API многофазной инициализации ([**PEP 489**](https://python-all.ru/3/whatsnew/changelog.html)).

### Ядро и встроенные модули

- [bpo-39934](https://python-all.ru/3/whatsnew/changelog.html): Корректный подсчёт управляющих блоков в 'except' в компиляторе. Гарантирует, что для глубоко вложенных именованных обработчиков исключений возникает синтаксическая ошибка, а не фатальная.
- [bpo-41780](https://python-all.ru/3/whatsnew/changelog.html): Исправление `__dir__()` для [`types.GenericAlias`](https://python-all.ru/3/library/types.html#types.GenericAlias). Исправление от Batuhan Taskaya.

### Библиотеки

- [bpo-1635741](https://python-all.ru/3/whatsnew/changelog.html): Перенос модуля расширения `_lsprof` на многофазную инициализацию ([**PEP 489**](https://python-all.ru/3/whatsnew/changelog.html)).
- [bpo-1635741](https://python-all.ru/3/whatsnew/changelog.html): Перенос модуля расширения [`cmath`](https://python-all.ru/3/library/cmath.html#module-cmath) на многофазную инициализацию ([**PEP 489**](https://python-all.ru/3/whatsnew/changelog.html)).
- [bpo-1635741](https://python-all.ru/3/whatsnew/changelog.html): Перенос модуля расширения `_scproxy` на многофазную инициализацию ([**PEP 489**](https://python-all.ru/3/whatsnew/changelog.html)).
- [bpo-1635741](https://python-all.ru/3/whatsnew/changelog.html): Перенос модуля расширения [`termios`](https://python-all.ru/3/library/termios.html#module-termios) на многофазную инициализацию ([**PEP 489**](https://python-all.ru/3/whatsnew/changelog.html)).
- [bpo-1635741](https://python-all.ru/3/whatsnew/changelog.html): Преобразование типов модуля расширения `_sha256` в типы, размещаемые в куче (heap types).

### Ядро и встроенные модули

- [bpo-41690](https://python-all.ru/3/whatsnew/changelog.html): Исправление возможного переполнения стека в парсере при разборе функций и классов с большим числом аргументов. Исправление от Pablo Galindo.

### Библиотеки

- [bpo-1635741](https://python-all.ru/3/whatsnew/changelog.html): Перенос модуля расширения `_overlapped` на многофазную инициализацию ([**PEP 489**](https://python-all.ru/3/whatsnew/changelog.html)).
- [bpo-1635741](https://python-all.ru/3/whatsnew/changelog.html): Перенос модуля расширения `_curses_panel` на многофазную инициализацию ([**PEP 489**](https://python-all.ru/3/whatsnew/changelog.html)).
- [bpo-1635741](https://python-all.ru/3/whatsnew/changelog.html): Перенос модуля расширения `_opcode` на многофазную инициализацию ([**PEP 489**](https://python-all.ru/3/whatsnew/changelog.html)).

### Ядро и встроенные модули

- [bpo-41681](https://python-all.ru/3/whatsnew/changelog.html): Исправлено неверное описание ошибки в ошибке, возникающей при использовании 2 `,` в строке форматирования в f-строке и [`str.format()`](https://python-all.ru/3/library/stdtypes.html#str.format).

### Библиотеки

- [bpo-41675](https://python-all.ru/3/whatsnew/changelog.html): Реализация [`signal.siginterrupt()`](https://python-all.ru/3/library/signal.html#signal.siginterrupt) теперь использует `sigaction()` (если он доступен в системе) вместо устаревшего `siginterrupt()`. Исправление от Pablo Galindo.

### Ядро и встроенные модули

- [bpo-41670](https://python-all.ru/3/whatsnew/changelog.html): Предотвращает пропуск трассировки строк на платформах, не скомпилированных с `USE_COMPUTED_GOTOS`. Исправляет проблему, из-за которой некоторые строки, вложенные в try-except блок, не трассировались в Windows.
- [bpo-41654](https://python-all.ru/3/whatsnew/changelog.html): Исправляет аварийное завершение, возникавшее при уничтожении подклассов [`MemoryError`](https://python-all.ru/3/library/exceptions.html#MemoryError). Исправление от Pablo Galindo.

### Библиотека

- [bpo-1635741](https://python-all.ru/3/whatsnew/changelog.html): Переносит модуль расширения [`zlib`](https://python-all.ru/3/library/zlib.html#module-zlib) на многофазную инициализацию ([**PEP 489**](https://python-all.ru/3/whatsnew/changelog.html)).

### Ядро и встроенные модули

- [bpo-41631](https://python-all.ru/3/whatsnew/changelog.html): Модуль `_ast` снова использует глобальное состояние. Использование состояния модуля для каждого экземпляра модуля вызывает тонкие практические проблемы. Например, проект Mercurial заменяет функцию `__import__()` для реализации ленивого импорта, тогда как Python ожидает, что `import _ast` всегда будет возвращать полностью инициализированный модуль `_ast`.

### Библиотека

- [bpo-40077](https://python-all.ru/3/whatsnew/changelog.html): Преобразует `_operator` для использования [`PyType_FromSpec()`](https://python-all.ru/3/c-api/type.html#c.PyType_FromSpec).

### Ядро и встроенные модули

- [bpo-1653741](https://python-all.ru/3/whatsnew/changelog.html): Переносит `_sha3` на многофазную инициализацию. Преобразует статические типы в типы кучи.

### Библиотека

- [bpo-1635741](https://python-all.ru/3/whatsnew/changelog.html): Переносит модуль расширения `_blake2` на API многофазной инициализации ([**PEP 489**](https://python-all.ru/3/whatsnew/changelog.html)).

### Ядро и встроенные модули

- [bpo-41533](https://python-all.ru/3/whatsnew/changelog.html): Освобождает стек, выделенный в `va_build_stack`, если `do_mkstack` завершается неудачей и стек не является `small_stack`.
- [bpo-41531](https://python-all.ru/3/whatsnew/changelog.html): Исправляет ошибку, из-за которой терялись ключи при компиляции литералов словаря с более чем 0xFFFF элементами. Исправление от Pablo Galindo.
- [bpo-41525](https://python-all.ru/3/whatsnew/changelog.html): Теперь вывод `python --help` содержит только ASCII-символы.

### Библиотека

- [bpo-1635741](https://python-all.ru/3/whatsnew/changelog.html): Переносит модули расширения `_sha1`, `_sha512` и `_md5` на API многофазной инициализации ([**PEP 489**](https://python-all.ru/3/whatsnew/changelog.html)).

### Ядро и встроенные модули

- [bpo-41431](https://python-all.ru/3/whatsnew/changelog.html): Оптимизирует `dict_merge()` для копирования словаря (например, `dict(d)` и `{}.update(d)`).
- [bpo-41428](https://python-all.ru/3/whatsnew/changelog.html): Реализует PEP 604. Это поддерживает (int | str) и т.д. вместо Union\[str, int\].
- [bpo-41340](https://python-all.ru/3/whatsnew/changelog.html): Удалена резервная реализация для `strdup`.
- [bpo-38156](https://python-all.ru/3/whatsnew/changelog.html): Корректно обрабатывает прерывания, поступающие после EOF, в `PyOS_StdioReadline`.
- [bpo-41342](https://python-all.ru/3/whatsnew/changelog.html): [`round()`](https://python-all.ru/3/library/functions.html#round) с целочисленным аргументом теперь работает быстрее (на 9–60%).
- [bpo-41334](https://python-all.ru/3/whatsnew/changelog.html): Конструкторы [`str()`](https://python-all.ru/3/library/stdtypes.html#str), [`bytes()`](https://python-all.ru/3/library/stdtypes.html#bytes) и [`bytearray()`](https://python-all.ru/3/library/stdtypes.html#bytearray) теперь работают быстрее (примерно на 30–40% для маленьких объектов).
- [bpo-41295](https://python-all.ru/3/whatsnew/changelog.html): Устраняет регрессию в CPython 3.8.4, при которой определение «\_\_setattr\_\_» в сценарии множественного наследования и вызов по цепочке иерархии могли завершаться неудачей, если в базовых типах были задействованы встроенные типы/типы расширений.
- [bpo-41323](https://python-all.ru/3/whatsnew/changelog.html): Оптимизации байткода выполняются непосредственно на графе потока управления. Это приведет к несколько более компактным объектам кода в некоторых случаях.
- [bpo-41247](https://python-all.ru/3/whatsnew/changelog.html): Всегда кэширует владельца работающего цикла при выполнении `asyncio.set_running_loop`.
- [bpo-41252](https://python-all.ru/3/whatsnew/changelog.html): Исправляет некорректный подсчет ссылок в \_ssl.c’s `_servername_callback()`.
- [bpo-1635741](https://python-all.ru/3/whatsnew/changelog.html): Переносит [`multiprocessing`](https://python-all.ru/3/library/multiprocessing.html#module-multiprocessing) на многофазную инициализацию

### Библиотека

- [bpo-1635741](https://python-all.ru/3/whatsnew/changelog.html): Перенос `winapi` на многофазную инициализацию

### Ядро и встроенные объекты

- [bpo-41215](https://python-all.ru/3/whatsnew/changelog.html): Использование ненулевых значений по умолчанию в списке ключевых слов PEG-парсера для устранения ошибки, которая мешала корректной компиляции Python при использовании компилятора XLC. Исправление от Pablo Galindo.
- [bpo-41218](https://python-all.ru/3/whatsnew/changelog.html): В Python 3.8.3 наблюдался регресс: компиляция с ast.PyCF\_ALLOW\_TOP\_LEVEL\_AWAIT агрессивно помечала list comprehension флагом CO\_COROUTINE. Теперь только list comprehension, использующие async/await, будут помечены как таковые.

### Библиотека

- [bpo-1635741](https://python-all.ru/3/whatsnew/changelog.html): Перенос [`faulthandler`](https://python-all.ru/3/library/faulthandler.html#module-faulthandler) на многофазную инициализацию.
- [bpo-1635741](https://python-all.ru/3/whatsnew/changelog.html): Перенос `sha256` на многофазную инициализацию

### Ядро и встроенные объекты

- [bpo-41175](https://python-all.ru/3/whatsnew/changelog.html): Защита от разыменования NULL-указателя внутри bytearrayobject, вызванного операцией `bytearray() + bytearray()`.
- [bpo-41100](https://python-all.ru/3/whatsnew/changelog.html): Добавление arm64 в список допустимых архитектур Mac OS в mpdecimal.h
- [bpo-41094](https://python-all.ru/3/whatsnew/changelog.html): Исправление ошибок декодирования при аудите при открытии файлов с не-ASCII именами в локали, отличной от UTF-8.
- [bpo-39960](https://python-all.ru/3/whatsnew/changelog.html): «Хак-проверка», которая предотвращает обход \_\_setattr\_\_() типа через вызов метода суперкласса, была переписана, чтобы поддерживать типы кучи, реализованные на C.
- [bpo-41084](https://python-all.ru/3/whatsnew/changelog.html): Добавление префикса 'f-string: ' к сообщению об ошибке при разборе f-string выражения, которое вызывает [`SyntaxError`](https://python-all.ru/3/library/exceptions.html#SyntaxError).
- [bpo-40521](https://python-all.ru/3/whatsnew/changelog.html): Пустые frozensets больше не являются синглтонами.
- [bpo-41076](https://python-all.ru/3/whatsnew/changelog.html): Предварительная передача парсеру местоположения f-string выражения, а не самого f-string, что позволяет пропустить сдвиг местоположений узлов AST после завершения разбора.
- [bpo-41056](https://python-all.ru/3/whatsnew/changelog.html): Исправление ссылки на освобождённое стековое пространство во время запуска при построении sys.path с использованием относительной символьной ссылки, когда код передавался через -c. (обнаружено через Coverity)
- [bpo-41061](https://python-all.ru/3/whatsnew/changelog.html): Исправление некорректных выражений и утверждений в коде хеш-таблицы и тестах.
- [bpo-41052](https://python-all.ru/3/whatsnew/changelog.html): Отказ от сериализации/десериализации для \_random.Random
- [bpo-40939](https://python-all.ru/3/whatsnew/changelog.html): Переименование функций `PyPegen*` в `PyParser*`, чтобы можно было удалить старый набор функций `PyParser*`, использующих старый парсер, но сохранить обратную совместимость.
- [bpo-35975](https://python-all.ru/3/whatsnew/changelog.html): Stefan Behnel сообщил, что cf\_feature\_version используется даже если PyCF\_ONLY\_AST не установлен. Это противоречит намерению и задокументированному поведению, поэтому было исправлено.
- [bpo-40939](https://python-all.ru/3/whatsnew/changelog.html): Удаление оставшихся файлов из старого парсера и модуля `symbol`.

### Библиотека

- [bpo-40077](https://python-all.ru/3/whatsnew/changelog.html): Преобразование `_bz2` для использования [`PyType_FromSpec()`](https://python-all.ru/3/c-api/type.html#c.PyType_FromSpec).

### Ядро и встроенные объекты

- [bpo-41006](https://python-all.ru/3/whatsnew/changelog.html): Модуль `encodings.latin_1` больше не импортируется при запуске. Теперь он импортируется только в том случае, если он является кодировкой файловой системы или кодировкой stdio.
- [bpo-40636](https://python-all.ru/3/whatsnew/changelog.html): [`zip()`](https://python-all.ru/3/library/functions.html#zip) теперь поддерживает с параметром `strict` из [**PEP 618**](https://python-all.ru/3/whatsnew/changelog.html), который вызывает [`ValueError`](https://python-all.ru/3/library/exceptions.html#ValueError), если аргументы исчерпаны разной длины. Исправление от Brandt Bucher.
- [bpo-1635741](https://python-all.ru/3/whatsnew/changelog.html): Перенос `_gdbm` на многофазную инициализацию.
- [bpo-40985](https://python-all.ru/3/whatsnew/changelog.html): Исправление ошибки, из-за которой текст [`SyntaxError`](https://python-all.ru/3/library/exceptions.html#SyntaxError) был пустым, когда файл заканчивается строкой, оканчивающейся символом продолжения строки (т.е. обратной косой чертой). Текст ошибки должен содержать текст последней строки.
- [bpo-40958](https://python-all.ru/3/whatsnew/changelog.html): Исправление возможного переполнения буфера в PEG-парсере при сборе информации для выдачи синтаксических ошибок. Исправление от Pablo Galindo.
- [bpo-1635741](https://python-all.ru/3/whatsnew/changelog.html): Перенос `_dbm` на многофазную инициализацию.
- [bpo-40957](https://python-all.ru/3/whatsnew/changelog.html): Исправление утечки ссылки в \_Py\_fopen\_obj() при сбое PySys\_Audit()

### Библиотека

- [bpo-40950](https://python-all.ru/3/whatsnew/changelog.html): Добавить состояние в модуль `nis` ([**PEP 3121**](https://python-all.ru/3/whatsnew/changelog.html)) и применить многофазовую инициализацию. Патч от Donghee Na.

### Ядро и встроенные модули

- [bpo-40947](https://python-all.ru/3/whatsnew/changelog.html): Python [конфигурация путей](https://python-all.ru/3/c-api/init_config.html#init-path-config) теперь учитывает [`PyConfig.platlibdir`](https://python-all.ru/3/c-api/init_config.html#c.PyConfig.platlibdir).
- [bpo-40939](https://python-all.ru/3/whatsnew/changelog.html): Удалить старый парсер, модуль `parser` и весь связанный вспомогательный код, параметры командной строки и переменные окружения. Патч от Pablo Galindo.
- [bpo-40847](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка, при которой строка, содержащая только символ продолжения строки, не считалась пустой строкой на уровне токенизатора. В таких случаях выдавалось больше одного `NEWLINE` токена. Старый парсер обходил эту проблему, но новый парсер из-за этого выдавал [`SyntaxError`](https://python-all.ru/3/library/exceptions.html#SyntaxError) для корректного ввода. Например, пустая строка после символа продолжения строки интерпретировалась как `SyntaxError`.
- [bpo-40890](https://python-all.ru/3/whatsnew/changelog.html): Каждое представление словаря теперь имеет атрибут `mapping`, предоставляющий [`types.MappingProxyType`](https://python-all.ru/3/library/types.html#types.MappingProxyType), оборачивающий исходный словарь. Патч от Dennis Sweeney.
- [bpo-40889](https://python-all.ru/3/whatsnew/changelog.html): Улучшена производительность операций симметрической разности над представлениями элементов словаря. Патч от Dennis Sweeney.
- [bpo-40904](https://python-all.ru/3/whatsnew/changelog.html): Исправлена возможная ошибка сегментации в новом PEG-парсере при разборе f-строки, содержащей операторы yield без значения (`f"{yield}"`). Патч от Pablo Galindo
- [bpo-40903](https://python-all.ru/3/whatsnew/changelog.html): Исправлена возможная ошибка сегментации в новом PEG-парсере при создании сообщений об ошибках для недопустимых присваиваний вида `p=p=`. Патч от Pablo Galindo
- [bpo-40880](https://python-all.ru/3/whatsnew/changelog.html): Исправлено недопустимое чтение памяти в новом парсере при проверке символов новой строки в строковых литералах. Патч от Pablo Galindo.
- [bpo-40883](https://python-all.ru/3/whatsnew/changelog.html): Исправлена утечка памяти при разборе f-строк в новом парсере. Патч от Pablo Galindo
- [bpo-40870](https://python-all.ru/3/whatsnew/changelog.html): Возбуждать [`ValueError`](https://python-all.ru/3/library/exceptions.html#ValueError) при проверке пользовательских AST, где константы `True`, `False` и `None` используются внутри узла [`ast.Name`](https://python-all.ru/3/library/ast.html#ast.Name).
- [bpo-40854](https://python-all.ru/3/whatsnew/changelog.html): Разрешить переопределение [`sys.platlibdir`](https://python-all.ru/3/library/sys.html#sys.platlibdir) с помощью новой переменной окружения [`PYTHONPLATLIBDIR`](https://python-all.ru/3/using/cmdline.html#envvar-PYTHONPLATLIBDIR).
- [bpo-40826](https://python-all.ru/3/whatsnew/changelog.html): Исправлено использование GIL в `PyOS_Readline()`: блокировать GIL для установки исключения и передачи состояния потока Python при проверке наличия ожидающего сигнала.
- [bpo-1635741](https://python-all.ru/3/whatsnew/changelog.html): Перенести [`fcntl`](https://python-all.ru/3/library/fcntl.html#module-fcntl) на многофазовую инициализацию.
- [bpo-19468](https://python-all.ru/3/whatsnew/changelog.html): Удалена излишняя проверка экземпляра в importlib.reload(). Патч от Furkan Önder.
- [bpo-40824](https://python-all.ru/3/whatsnew/changelog.html): Неожиданные ошибки при вызове метода `__iter__` больше не маскируются `TypeError` в операторе [`in`](https://python-all.ru/3/reference/expressions.html#in) и функциях [`contains()`](https://python-all.ru/3/library/operator.html#operator.contains), [`indexOf()`](https://python-all.ru/3/library/operator.html#operator.indexOf) и [`countOf()`](https://python-all.ru/3/library/operator.html#operator.countOf) модуля [`operator`](https://python-all.ru/3/library/operator.html#module-operator).
- [bpo-40792](https://python-all.ru/3/whatsnew/changelog.html): Атрибуты `start`, `stop` и `step` объекта [`range`](https://python-all.ru/3/library/stdtypes.html#range) теперь всегда имеют точный тип [`int`](https://python-all.ru/3/library/functions.html#int). Ранее они могли быть экземпляром подкласса `int`.
- [bpo-40780](https://python-all.ru/3/whatsnew/changelog.html): Исправлен крайний случай, когда g-стиль форматирования строки числа с плавающей запятой не удалял конечные нули.
- [bpo-38964](https://python-all.ru/3/whatsnew/changelog.html): Когда в выражении f-строки присутствует [`SyntaxError`](https://python-all.ru/3/library/exceptions.html#SyntaxError), атрибут filename объекта `SyntaxError` корректно устанавливается в имя файла, в котором находится f-строка.
- [bpo-40750](https://python-all.ru/3/whatsnew/changelog.html): Поддержка отладочного флага «-d» в новом PEG-парсере. Патч от Pablo Galindo
- [bpo-40217](https://python-all.ru/3/whatsnew/changelog.html): Экземпляры типов, созданные с помощью [`PyType_FromSpecWithBases()`](https://python-all.ru/3/c-api/type.html#c.PyType_FromSpecWithBases), больше не будут автоматически обходить свой объект класса при обходе ссылок в сборщике мусора. Пользователь должен вручную обходить класс объекта. Патч от Pablo Galindo.
- [bpo-39573](https://python-all.ru/3/whatsnew/changelog.html): [`Py_TYPE()`](https://python-all.ru/3/c-api/structures.html#c.Py_TYPE) изменён на встроенную статическую функцию. Патч от Donghee Na.
- [bpo-40696](https://python-all.ru/3/whatsnew/changelog.html): Исправлена зависание, которое может возникнуть после [`generator.throw()`](https://python-all.ru/3/reference/expressions.html#generator.throw) из-за цикла в цепочке контекста исключения.
- [bpo-40521](https://python-all.ru/3/whatsnew/changelog.html): Каждый интерпретатор теперь имеет собственные списки свободных блоков, синглтоны и кеши:

  - Списки свободных блоков: float, tuple, list, dict, frame, context, asynchronous generator, MemoryError.
  - Синглтоны: пустой кортеж, пустая строка байтов, пустая строка Unicode, однобайтовый символ, односимвольный Unicode (latin1) символ.
  - Кеш срезов.

  Они больше не разделяются всеми интерпретаторами.
- [bpo-40679](https://python-all.ru/3/whatsnew/changelog.html): Некоторые сообщения [`TypeError`](https://python-all.ru/3/library/exceptions.html#TypeError) о пропущенных или лишних аргументах теперь включают [полное имя](https://python-all.ru/3/glossary.html#term-qualified-name) функции. Патч от Dennis Sweeney.
- [bpo-29590](https://python-all.ru/3/whatsnew/changelog.html): Сделать стек вызовов корректным после вызова [`generator.throw()`](https://python-all.ru/3/reference/expressions.html#generator.throw) на генераторе, который выполнил yield из `yield from`.
- [bpo-4022](https://python-all.ru/3/whatsnew/changelog.html): Улучшить производительность генераторов за счёт отказа от возбуждения внутреннего StopIteration.

### Библиотека

- [bpo-1635741](https://python-all.ru/3/whatsnew/changelog.html): Перенос [`mmap`](https://python-all.ru/3/library/mmap.html#module-mmap) на многофазную инициализацию.
- [bpo-1635741](https://python-all.ru/3/whatsnew/changelog.html): Перенос `_lzma` на многофазную инициализацию.

### Ядро и встроенные модули

- [bpo-37999](https://python-all.ru/3/whatsnew/changelog.html): Встроенные функции и функции расширений, принимающие целочисленные аргументы, больше не принимают объекты [`Decimal`](https://python-all.ru/3/library/decimal.html#decimal.Decimal), [`Fraction`](https://python-all.ru/3/library/fractions.html#fractions.Fraction) и другие объекты, которые могут быть преобразованы в целые числа только с потерей (например, имеющие метод [`__int__()`](https://python-all.ru/3/reference/datamodel.html#object.__int__), но не имеющие метода [`__index__()`](https://python-all.ru/3/reference/datamodel.html#object.__index__)).
- [bpo-29882](https://python-all.ru/3/whatsnew/changelog.html): Добавлена функция [`int.bit_count()`](https://python-all.ru/3/library/stdtypes.html#int.bit_count), подсчитывающая количество единиц в двоичном представлении целого числа. Патч от Niklas Fiekas.

### Библиотека

- [bpo-36982](https://python-all.ru/3/whatsnew/changelog.html): Использовать расширенные цветовые функции ncurses, когда они доступны, для поддержки терминалов с 256 цветами, и добавлена новая функция [`curses.has_extended_color_support()`](https://python-all.ru/3/library/curses.html#curses.has_extended_color_support), указывающая, поддерживает ли базовая библиотека ncurses расширенные цвета.

### Ядро и встроенные модули

- [bpo-19569](https://python-all.ru/3/whatsnew/changelog.html): Добавлены закрытые макросы `_Py_COMP_DIAG_PUSH`, `_Py_COMP_DIAG_IGNORE_DEPR_DECLS` и `_Py_COMP_DIAG_POP`.
- [bpo-26680](https://python-all.ru/3/whatsnew/changelog.html): Тип int теперь поддерживает метод x.is\_integer() для совместимости с float.

### Библиотека

- [bpo-41900](https://python-all.ru/3/whatsnew/changelog.html): Сериализация C14N 2.0 в xml.etree.ElementTree не работала для атрибутов без префикса, если было определено пространство имён по умолчанию.
- [bpo-41887](https://python-all.ru/3/whatsnew/changelog.html): Удаление начальных пробелов и табуляции в [`ast.literal_eval()`](https://python-all.ru/3/library/ast.html#ast.literal_eval). Также документировано удаление пробелов и табуляции для [`eval()`](https://python-all.ru/3/library/functions.html#eval).
- [bpo-41773](https://python-all.ru/3/whatsnew/changelog.html): В документации отмечено, что [`random.choices()`](https://python-all.ru/3/library/random.html#random.choices) не поддерживает нефинитные веса; при передаче нефинитных весов возбуждается [`ValueError`](https://python-all.ru/3/library/exceptions.html#ValueError).
- [bpo-41840](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка в модуле [`symtable`](https://python-all.ru/3/library/symtable.html#module-symtable), из-за которой глобальные переменные на уровне модуля не сообщались как локальные и глобальные. Патч от Pablo Galindo.
- [bpo-41842](https://python-all.ru/3/whatsnew/changelog.html): Добавлена функция [`codecs.unregister()`](https://python-all.ru/3/library/codecs.html#codecs.unregister) для отмены регистрации функции поиска кодека.
- [bpo-40564](https://python-all.ru/3/whatsnew/changelog.html): В `zipfile.Path` изменяется переданный объект типа ZipFile вместо создания копии. Предотвращает проблемы, когда и локальная копия, и копия вызывающего кода пытаются закрыть один и тот же файловый дескриптор.
- [bpo-40670](https://python-all.ru/3/whatsnew/changelog.html): Более надёжная проверка операторов в [`timeit.Timer`](https://python-all.ru/3/library/timeit.html#timeit.Timer). Теперь он принимает «пустые» операторы (только пробелы и комментарии) и отклоняет операторы с неправильными отступами.
- [bpo-41833](https://python-all.ru/3/whatsnew/changelog.html): Конструктор [`threading.Thread`](https://python-all.ru/3/library/threading.html#threading.Thread) теперь использует имя цели, если указан аргумент *target*, а аргумент *name* опущен.
- [bpo-41817](https://python-all.ru/3/whatsnew/changelog.html): исправлено `tkinter.EventType` Enum, теперь все элементы являются строками, а не кортежами
- [bpo-41810](https://python-all.ru/3/whatsnew/changelog.html): [`types.EllipsisType`](https://python-all.ru/3/library/types.html#types.EllipsisType), [`types.NotImplementedType`](https://python-all.ru/3/library/types.html#types.NotImplementedType) и [`types.NoneType`](https://python-all.ru/3/library/types.html#types.NoneType) вновь введены, предоставляя новый набор типов, легко интерпретируемых статическими проверками типов.
- [bpo-41815](https://python-all.ru/3/whatsnew/changelog.html): Исправлено падение SQLite3 при резервном копировании закрытой базы данных. Патч предоставлен Peter David McCormick.
- [bpo-41816](https://python-all.ru/3/whatsnew/changelog.html): Добавлен StrEnum: он гарантирует, что все элементы уже являются строками или кандидатами в строки
- [bpo-41517](https://python-all.ru/3/whatsnew/changelog.html): исправлена ошибка, позволявшая расширять перечисления с помощью множественного наследования
- [bpo-39587](https://python-all.ru/3/whatsnew/changelog.html): использование правильного типа данных примеси при создании перечислений
- [bpo-41792](https://python-all.ru/3/whatsnew/changelog.html): Добавлена функция is\_typeddict в typing.py для проверки, является ли тип классом TypedDict

  Раньше не было способа проверить это без использования частного API. См. [соответствующую проблему в python/typing](https://python-all.ru/3/whatsnew/changelog.html).
- [bpo-41789](https://python-all.ru/3/whatsnew/changelog.html): Учёт переопределений `object` при создании класса `Enum` (а именно `__str__`, `__repr__`, `__format__` и `__reduce_ex__`).
- [bpo-32218](https://python-all.ru/3/whatsnew/changelog.html): Элементы `enum.Flag` и `enum.IntFlag` теперь итерируемы.
- [bpo-39651](https://python-all.ru/3/whatsnew/changelog.html): Исправлено состояние гонки в методе `call_soon_threadsafe()` класса `asyncio.ProactorEventLoop`: ничего не делать, если сокет самопайпа (self-pipe) был закрыт.
- [bpo-1635741](https://python-all.ru/3/whatsnew/changelog.html): Перенос модуля расширения `mashal` на многофазный API инициализации ([**PEP 489**](https://python-all.ru/3/whatsnew/changelog.html)).
- [bpo-1635741](https://python-all.ru/3/whatsnew/changelog.html): порт модуля расширения `_string` на многофазный API инициализации ([**PEP 489**](https://python-all.ru/3/whatsnew/changelog.html)).
- [bpo-41732](https://python-all.ru/3/whatsnew/changelog.html): добавлен [итератор](https://python-all.ru/3/glossary.html#term-iterator) в [`memoryview`](https://python-all.ru/3/library/stdtypes.html#memoryview).
- [bpo-41720](https://python-all.ru/3/whatsnew/changelog.html): исправлен `turtle.Vec2D.__rmul__()` для аргументов, которые не являются int или float.
- [bpo-41696](https://python-all.ru/3/whatsnew/changelog.html): исправлена обработка режима отладки в [`asyncio.run()`](https://python-all.ru/3/library/asyncio-runner.html#asyncio.run). Это позволяет установить `PYTHONASYNCIODEBUG` или `-X dev` для включения режима отладки asyncio при использовании `asyncio.run()`.
- [bpo-41687](https://python-all.ru/3/whatsnew/changelog.html): исправлена реализация sendfile для совместимости с Solaris.
- [bpo-41662](https://python-all.ru/3/whatsnew/changelog.html): больше не переопределяются исключения, возникшие в `__len__()` последовательности параметров в [`sqlite3`](https://python-all.ru/3/library/sqlite3.html#module-sqlite3), с помощью [`ProgrammingError`](https://python-all.ru/3/library/sqlite3.html#sqlite3.ProgrammingError).
- [bpo-39010](https://python-all.ru/3/whatsnew/changelog.html): перезапуск `ProactorEventLoop` в Windows больше не регистрирует ложные `ConnectionResetErrors`.
- [bpo-41638](https://python-all.ru/3/whatsnew/changelog.html): сообщение [`ProgrammingError`](https://python-all.ru/3/library/sqlite3.html#sqlite3.ProgrammingError) об отсутствующем параметре в [`sqlite3`](https://python-all.ru/3/library/sqlite3.html#module-sqlite3) теперь содержит имя параметра вместо его индекса, если параметры переданы в виде словаря.
- [bpo-41662](https://python-all.ru/3/whatsnew/changelog.html): исправлен сбой при изменении списка параметров во время итерации в [`sqlite3`](https://python-all.ru/3/library/sqlite3.html#module-sqlite3).
- [bpo-41513](https://python-all.ru/3/whatsnew/changelog.html): повышена точность math.hypot(). Внутренне каждый шаг вычисляется с дополнительной точностью, так что результат теперь почти всегда правильно округляется.
- [bpo-41609](https://python-all.ru/3/whatsnew/changelog.html): команда pdb whatis теперь правильно сообщает о методах экземпляра как «Method», а не «Function».
- [bpo-39994](https://python-all.ru/3/whatsnew/changelog.html): исправлена обработка подклассов dict в pprint, которые переопределяют \_\_repr\_\_.
- [bpo-32751](https://python-all.ru/3/whatsnew/changelog.html): при отмене задачи из-за тайм-аута [`asyncio.wait_for()`](https://python-all.ru/3/library/asyncio-task.html#asyncio.wait_for) теперь будет ждать завершения отмены также в случае, когда *тайм-аут* \<= 0, как это делается с положительными тайм-аутами.
- [bpo-37658](https://python-all.ru/3/whatsnew/changelog.html): [`asyncio.wait_for()`](https://python-all.ru/3/library/asyncio-task.html#asyncio.wait_for) теперь правильно обрабатывает гонки между своей отменой и завершением обёрнутого ожидаемого объекта.
- [bpo-40782](https://python-all.ru/3/whatsnew/changelog.html): изменить метод asyncio.AbstractEventLoop.run\_in\_executor, чтобы он не был корутиной.
- [bpo-41520](https://python-all.ru/3/whatsnew/changelog.html): исправлен регресс [`codeop`](https://python-all.ru/3/library/codeop.html#module-codeop), который не позволял превращать предупреждения компиляции в ошибки.
- [bpo-41528](https://python-all.ru/3/whatsnew/changelog.html): turtle использует функции модуля math для преобразования градусов в радианы и обратно, а также для вычисления нормы вектора.
- [bpo-41513](https://python-all.ru/3/whatsnew/changelog.html): небольшое алгоритмическое улучшение math.hypot() и math.dist(), дающее небольшой прирост в скорости и точности.
- [bpo-41503](https://python-all.ru/3/whatsnew/changelog.html): исправлена гонка между setTarget и flush в logging.handlers.MemoryHandler.
- [bpo-41497](https://python-all.ru/3/whatsnew/changelog.html): исправлена потенциальная ошибка UnicodeDecodeError в модуле dis.
- [bpo-41467](https://python-all.ru/3/whatsnew/changelog.html): в Windows исправлено возвращаемое значение asyncio `recv_into()` при закрытии сокета/канала ([`BrokenPipeError`](https://python-all.ru/3/library/exceptions.html#BrokenPipeError)): возвращается `0` вместо пустой строки байтов (`b''`).
- [bpo-41425](https://python-all.ru/3/whatsnew/changelog.html): сделать пример документации tkinter запускаемым.
- [bpo-41421](https://python-all.ru/3/whatsnew/changelog.html): выполнено алгебраическое упрощение для random.paretovariate(). Теперь она немного менее подвержена ошибкам округления и работает немного быстрее. Входные данные, которые раньше вызывали ZeroDivisionError, теперь вызывают OverflowError.
- [bpo-41440](https://python-all.ru/3/whatsnew/changelog.html): добавлена поддержка [`os.cpu_count()`](https://python-all.ru/3/library/os.html#os.cpu_count) для VxWorks RTOS.
- [bpo-41316](https://python-all.ru/3/whatsnew/changelog.html): исправлен модуль [`tarfile`](https://python-all.ru/3/library/tarfile.html#module-tarfile) для записи только базового имени TAR-файла в заголовок сжатия GZIP.
- [bpo-41384](https://python-all.ru/3/whatsnew/changelog.html): возбуждается TclError вместо TypeError, когда неизвестная опция передаётся в tkinter.OptionMenu.
- [bpo-41317](https://python-all.ru/3/whatsnew/changelog.html): использовать add\_done\_callback() в asyncio.loop.sock\_accept() для отмены подписки читателя при отмене.
- [bpo-41364](https://python-all.ru/3/whatsnew/changelog.html): уменьшены накладные расходы на импорт [`uuid`](https://python-all.ru/3/library/uuid.html#module-uuid).
- [bpo-35328](https://python-all.ru/3/whatsnew/changelog.html): установить переменную окружения `VIRTUAL_ENV_PROMPT` при активации [`venv`](https://python-all.ru/3/library/venv.html#module-venv).
- [bpo-41341](https://python-all.ru/3/whatsnew/changelog.html): рекурсивное вычисление `typing.ForwardRef` в `get_type_hints`.
- [bpo-41344](https://python-all.ru/3/whatsnew/changelog.html): предотвратить создание `shared_memory.SharedMemory` объектов с помощью `size=0`.
- [bpo-41333](https://python-all.ru/3/whatsnew/changelog.html): `collections.OrderedDict.pop()` теперь работает в 2 раза быстрее.
- [bpo-41288](https://python-all.ru/3/whatsnew/changelog.html): При распаковке (unpickling) недопустимого опкода NEWOBJ\_EX с помощью реализации на C теперь возникает UnpicklingError, а не аварийное завершение.
- [bpo-39017](https://python-all.ru/3/whatsnew/changelog.html): Устранена возможность бесконечного цикла при чтении специально сформированных TAR-файлов с помощью модуля tarfile ([**CVE 2019-20907**](https://python-all.ru/3/whatsnew/changelog.html)).
- [bpo-41273](https://python-all.ru/3/whatsnew/changelog.html): Ускорение любого транспорта, использующего `_ProactorReadPipeTransport`, за счёт вызова `recv_into` вместо `recv`, что позволяет не создавать новый буфер для каждого вызова `recv` в цикле чтения транспорта.
- [bpo-41235](https://python-all.ru/3/whatsnew/changelog.html): Исправлена обработка ошибок в [`ssl.SSLContext.load_dh_params()`](https://python-all.ru/3/library/ssl.html#ssl.SSLContext.load_dh_params).
- [bpo-41207](https://python-all.ru/3/whatsnew/changelog.html): В distutils.spawn восстановлено ожидание, что DistutilsExecError возникает, когда команда не найдена.
- [bpo-29727](https://python-all.ru/3/whatsnew/changelog.html): Зарегистрировать [`array.array`](https://python-all.ru/3/library/array.html#array.array) как [`MutableSequence`](https://python-all.ru/3/library/collections.abc.html#collections.abc.MutableSequence). Патч от Pablo Galindo.
- [bpo-39168](https://python-all.ru/3/whatsnew/changelog.html): Удалён метод `__new__` объекта [`typing.Generic`](https://python-all.ru/3/library/typing.html#typing.Generic).
- [bpo-41194](https://python-all.ru/3/whatsnew/changelog.html): Исправлена аварийная остановка в модуле `_ast`: теперь его нельзя загрузить более одного раза. Вместо состояния модуля теперь используется глобальное состояние.
- [bpo-41195](https://python-all.ru/3/whatsnew/changelog.html): Добавлен атрибут ssl.SSLContext.security\_level только для чтения, позволяющий получить уровень безопасности контекста.
- [bpo-41193](https://python-all.ru/3/whatsnew/changelog.html): Функция `write_history()` atexit в дополнении readline теперь игнорирует любые [`OSError`](https://python-all.ru/3/library/exceptions.html#OSError), чтобы пропускать ошибки, если файловая система доступна только для чтения, вместо того чтобы игнорировать только [`FileNotFoundError`](https://python-all.ru/3/library/exceptions.html#FileNotFoundError) и [`PermissionError`](https://python-all.ru/3/library/exceptions.html#PermissionError).
- [bpo-41182](https://python-all.ru/3/whatsnew/changelog.html): selector: используется DefaultSelector в зависимости от реализации.
- [bpo-41161](https://python-all.ru/3/whatsnew/changelog.html): Модуль decimal теперь требует libmpdec-2.5.0. Пользователям –with-system-libmpdec следует обновить системную библиотеку.
- [bpo-40874](https://python-all.ru/3/whatsnew/changelog.html): Модуль decimal теперь требует libmpdec-2.5.0.
- [bpo-41138](https://python-all.ru/3/whatsnew/changelog.html): Исправлен CLI модуля [`trace`](https://python-all.ru/3/library/trace.html#module-trace) для исходных файлов Python с кодировкой, отличной от UTF-8.
- [bpo-31082](https://python-all.ru/3/whatsnew/changelog.html): Использовать термин «iterable» в строке документации для [`functools.reduce()`](https://python-all.ru/3/library/functools.html#functools.reduce).
- [bpo-40521](https://python-all.ru/3/whatsnew/changelog.html): Удалён freelist из collections.deque().
- [bpo-31938](https://python-all.ru/3/whatsnew/changelog.html): Исправлены сигнатуры значений по умолчанию нескольких функций в модуле [`select`](https://python-all.ru/3/library/select.html#module-select) – автор Anthony Sottile.
- [bpo-41068](https://python-all.ru/3/whatsnew/changelog.html): Исправлено чтение файлов с не-ASCII именами из ZIP-архива сразу после их записи.
- [bpo-41058](https://python-all.ru/3/whatsnew/changelog.html): `pdb.find_function()` теперь корректно определяет кодировку исходного файла.
- [bpo-41056](https://python-all.ru/3/whatsnew/changelog.html): Теперь предотвращается передача недопустимых значений файловых дескрипторов в os.fpathconf. (обнаружено Coverity)
- [bpo-41056](https://python-all.ru/3/whatsnew/changelog.html): Исправлено разыменование нулевого указателя в модуле ssl при возникновении MemoryError в колбэке keylog. (обнаружено Coverity)
- [bpo-41056](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ситуация, когда MemoryError в модуле zoneinfo мог не сообщаться или не сообщаться в его источнике. (найдено Coverity)
- [bpo-41048](https://python-all.ru/3/whatsnew/changelog.html): Функция [`mimetypes.read_mime_types()`](https://python-all.ru/3/library/mimetypes.html#mimetypes.read_mime_types) читает файл правил, используя кодировку UTF-8, а не кодировку локали. Патч от Srinivas Reddy Thatiparthy.
- [bpo-41043](https://python-all.ru/3/whatsnew/changelog.html): Исправлено использование [`glob()`](https://python-all.ru/3/library/glob.html#glob.glob) в stdlib: литеральная часть пути теперь всегда корректно экранируется.
- [bpo-41025](https://python-all.ru/3/whatsnew/changelog.html): Исправлена проблема, не позволявшая создавать подклассы реализации на C для [`zoneinfo.ZoneInfo`](https://python-all.ru/3/library/zoneinfo.html#zoneinfo.ZoneInfo).
- [bpo-35018](https://python-all.ru/3/whatsnew/changelog.html): Добавлен класс [`xml.sax.handler.LexicalHandler`](https://python-all.ru/3/library/xml.sax.handler.html#xml.sax.handler.LexicalHandler), присутствующий в других реализациях SAX XML.
- [bpo-41002](https://python-all.ru/3/whatsnew/changelog.html): Улучшена производительность HTTPResponse.read при чтении указанного объёма данных. Патч от Bruce Merry.
- [bpo-40448](https://python-all.ru/3/whatsnew/changelog.html): [`ensurepip`](https://python-all.ru/3/library/ensurepip.html#module-ensurepip) теперь отключает использование кэша `pip` при установке встроенных версий `pip` и `setuptools`. Патч от Krzysztof Konopko.
- [bpo-40967](https://python-all.ru/3/whatsnew/changelog.html): Удалены `asyncio.Task.current_task()` и `asyncio.Task.all_tasks()`. Патч предоставлен Rémi Lapeyre.
- [bpo-40924](https://python-all.ru/3/whatsnew/changelog.html): Обеспечено, что `importlib.resources.path` возвращает существующий путь для чтения ресурсов SourceFileLoader. Это позволяет избежать регрессии, обнаруженной в master, пока разрабатывается долгосрочное решение.
- [bpo-40955](https://python-all.ru/3/whatsnew/changelog.html): Исправлена небольшая утечка памяти в модуле [`subprocess`](https://python-all.ru/3/library/subprocess.html#module-subprocess) при указании extra\_groups.
- [bpo-40855](https://python-all.ru/3/whatsnew/changelog.html): Функции стандартного отклонения и дисперсии в модуле statistics игнорировали свои аргументы mu и xbar.
- [bpo-40939](https://python-all.ru/3/whatsnew/changelog.html): Использовать новый PEG-парсер при генерации stdlib [`keyword`](https://python-all.ru/3/library/keyword.html#module-keyword) модуля.
- [bpo-23427](https://python-all.ru/3/whatsnew/changelog.html): Добавить атрибут [`sys.orig_argv`](https://python-all.ru/3/library/sys.html#sys.orig_argv): список исходных аргументов командной строки, переданных исполняемому файлу Python.
- [bpo-33689](https://python-all.ru/3/whatsnew/changelog.html): Игнорировать пустые строки и строки, состоящие только из пробелов, в файлах .pth. Это соответствует задокументированному поведению. Раньше пустые строки приводили к многократному появлению каталога site-packages в sys.path. Автор: Ido Michael, соавторы: Malcolm Smith и Tal Einat.
- [bpo-40884](https://python-all.ru/3/whatsnew/changelog.html): Добавлен параметр `defaults` к [`logging.Formatter`](https://python-all.ru/3/library/logging.html#logging.Formatter), позволяющий задавать значения по умолчанию для пользовательских полей. Патч от Asaf Alon и Bar Harel.
- [bpo-40876](https://python-all.ru/3/whatsnew/changelog.html): Уточнить сообщение об ошибке в модуле [`csv`](https://python-all.ru/3/library/csv.html#module-csv).
- [bpo-39791](https://python-all.ru/3/whatsnew/changelog.html): Обновить importlib.metadata до версии importlib\_metadata 1.6.1.
- [bpo-40807](https://python-all.ru/3/whatsnew/changelog.html): Предотвратить троекратное повторение каждого предупреждения в codeop.\_maybe\_compile, используемом code.InteractiveInterpreter (и IDLE).
- [bpo-32604](https://python-all.ru/3/whatsnew/changelog.html): Исправить утечку ссылок в модуле [`select`](https://python-all.ru/3/library/select.html#module-select) при импорте модуля в подынтерпретаторе.
- [bpo-39791](https://python-all.ru/3/whatsnew/changelog.html): Встроенные загрузчики (SourceFileLoader и ZipImporter) теперь предоставляют реализации `TraversableResources` для `ResourceReader`, а резервная функция удалена.
- [bpo-39314](https://python-all.ru/3/whatsnew/changelog.html): [`rlcompleter.Completer`](https://python-all.ru/3/library/rlcompleter.html#rlcompleter.Completer) и стандартная оболочка Python теперь закрывают скобку для функций, не принимающих аргументов. Патч предоставлен Rémi Lapeyre.
- [bpo-17005](https://python-all.ru/3/whatsnew/changelog.html): Функциональность топологической сортировки, изначально введённая в модуле [`functools`](https://python-all.ru/3/library/functools.html#module-functools), перенесена в новый модуль [`graphlib`](https://python-all.ru/3/library/graphlib.html#module-graphlib) для лучшей поддержки новых инструментов и сохранения исходной области применения модуля `functools`. Патч от Pablo Galindo.
- [bpo-40834](https://python-all.ru/3/whatsnew/changelog.html): Исправить усечение при отправке строкового объекта с помощью \_xxsubinterpreters.channel\_send.
- [bpo-40755](https://python-all.ru/3/whatsnew/changelog.html): Добавить расширенные сравнения (rich comparisons) для collections.Counter().
- [bpo-26407](https://python-all.ru/3/whatsnew/changelog.html): Неожиданные ошибки при вызове метода `__iter__` больше не маскируются `TypeError` в [`csv.reader()`](https://python-all.ru/3/library/csv.html#csv.reader), `csv.writer.writerow()` и `csv.writer.writerows()`.
- [bpo-39384](https://python-all.ru/3/whatsnew/changelog.html): Исправлен модуль email.contentmanager: теперь set\_content() может устанавливать пустую строку.
- [bpo-40744](https://python-all.ru/3/whatsnew/changelog.html): Модуль [`sqlite3`](https://python-all.ru/3/library/sqlite3.html#module-sqlite3) использует функции SQLite API, требующие SQLite версии 3.7.3 или выше. Этот патч удаляет поддержку старых версий SQLite и явно требует SQLite 3.7.3 как на этапе сборки и компиляции, так и во время выполнения. Патч от Sergey Fedoseev и Erlend E. Aasland.
- [bpo-40777](https://python-all.ru/3/whatsnew/changelog.html): Инициализировать PyDateTime\_IsoCalendarDateType.tp\_base во время выполнения, чтобы избежать ошибок на некоторых компиляторах.
- [bpo-38488](https://python-all.ru/3/whatsnew/changelog.html): Обновить ensurepip для установки pip 20.1.1 и setuptools 47.1.0.
- [bpo-40792](https://python-all.ru/3/whatsnew/changelog.html): Результат [`operator.index()`](https://python-all.ru/3/library/operator.html#operator.index) теперь всегда имеет точный тип [`int`](https://python-all.ru/3/library/functions.html#int). Раньше результатом мог быть экземпляр подкласса `int`.
- [bpo-40767](https://python-all.ru/3/whatsnew/changelog.html): [`webbrowser`](https://python-all.ru/3/library/webbrowser.html#module-webbrowser) теперь корректно находит браузер по умолчанию в чистых системах Wayland, проверяя переменную окружения WAYLAND\_DISPLAY. Патч предоставлен Jérémy Attali.
- [bpo-40791](https://python-all.ru/3/whatsnew/changelog.html): `hashlib.compare_digest()` использует функцию OpenSSL `CRYPTO_memcmp()`, если OpenSSL доступен.
- [bpo-40795](https://python-all.ru/3/whatsnew/changelog.html): Модуль [`ctypes`](https://python-all.ru/3/library/ctypes.html#module-ctypes): Если ctypes не удаётся преобразовать результат колбэка или если функция колбэка ctypes вызывает исключение, теперь вызывается sys.unraisablehook с установленным исключением. Раньше ошибка записывалась в stderr с помощью [`PyErr_Print()`](https://python-all.ru/3/c-api/exceptions.html#c.PyErr_Print).
- [bpo-16995](https://python-all.ru/3/whatsnew/changelog.html): Добавить [`base64.b32hexencode()`](https://python-all.ru/3/library/base64.html#base64.b32hexencode) и [`base64.b32hexdecode()`](https://python-all.ru/3/library/base64.html#base64.b32hexdecode) для поддержки кодирования Base32 с расширенным шестнадцатеричным алфавитом.
- [bpo-30008](https://python-all.ru/3/whatsnew/changelog.html): Исправить код [`ssl`](https://python-all.ru/3/library/ssl.html#module-ssl) для совместимости со сборками OpenSSL 1.1.x, использующими `no-deprecated` и `--api=1.1.0`.
- [bpo-30064](https://python-all.ru/3/whatsnew/changelog.html): Исправить проблему состояния гонки в asyncio `loop.sock_*`.
- [bpo-40759](https://python-all.ru/3/whatsnew/changelog.html): Объявить модуль `symbol` устаревшим.
- [bpo-40756](https://python-all.ru/3/whatsnew/changelog.html): Второй аргумент (extra) функции `LoggerAdapter.__init__` теперь по умолчанию равен None.
- [bpo-37129](https://python-all.ru/3/whatsnew/changelog.html): Добавить новый флаг [`os.RWF_APPEND`](https://python-all.ru/3/library/os.html#os.RWF_APPEND) для [`os.pwritev()`](https://python-all.ru/3/library/os.html#os.pwritev).
- [bpo-40737](https://python-all.ru/3/whatsnew/changelog.html): Исправить возможную утечку ссылок при инициализации [`sqlite3`](https://python-all.ru/3/library/sqlite3.html#module-sqlite3).
- [bpo-40726](https://python-all.ru/3/whatsnew/changelog.html): Обрабатывать случаи, когда `end_lineno` равно `None` на [`ast.increment_lineno()`](https://python-all.ru/3/library/ast.html#ast.increment_lineno).
- [bpo-40698](https://python-all.ru/3/whatsnew/changelog.html): Загрузка `distutils` создаёт дайджесты SHA2-256 и Blake2b-256. MD5-дайджесты пропускаются, если платформа блокирует MD5.
- [bpo-40695](https://python-all.ru/3/whatsnew/changelog.html): [`hashlib`](https://python-all.ru/3/library/hashlib.html#module-hashlib) больше не использует встроенные реализации хешей, когда OpenSSL предоставляет дайджест хеша, а алгоритм заблокирован политикой безопасности.
- [bpo-9216](https://python-all.ru/3/whatsnew/changelog.html): [`hashlib.new()`](https://python-all.ru/3/library/hashlib.html#hashlib.new) передаёт `usedforsecurity` в конструктор OpenSSL EVP `_hashlib.new()`. test\_hashlib и test\_smtplib теперь лучше работают со строгими политиками безопасности.
- [bpo-40614](https://python-all.ru/3/whatsnew/changelog.html): [`ast.parse()`](https://python-all.ru/3/library/ast.html#ast.parse) не будет разбирать самодокументирующиеся выражения в f-строках, если переданное `feature_version` меньше `(3, 8)`.
- [bpo-40626](https://python-all.ru/3/whatsnew/changelog.html): Добавлено расширение файла .h5 как MIME-тип application/x-hdf5 в соответствии с рекомендацией HDF Group для файлов данных в формате HDF5. Патч предоставлен Марком Швабом.
- [bpo-25920](https://python-all.ru/3/whatsnew/changelog.html): В macOS при сборке Python для macOS 10.4 и старше (чего не было для установщика python.org для macOS) [`socket.getaddrinfo()`](https://python-all.ru/3/library/socket.html#socket.getaddrinfo) больше не использует внутреннюю блокировку для предотвращения состояний гонки при вызове `getaddrinfo()`, которая является потокобезопасной начиная с macOS 10.5. Python 3.9 требует macOS 10.6 или новее. Внутренняя блокировка вызывала случайное зависание при fork, когда другой поток вызывал `socket.getaddrinfo()`. Блокировка также использовалась во FreeBSD старше 5.3, OpenBSD старше 201311 и NetBSD старше 4.
- [bpo-40671](https://python-all.ru/3/whatsnew/changelog.html): Подготовить `_hashlib` для [**PEP 489**](https://python-all.ru/3/whatsnew/changelog.html) и использовать [`PyModule_AddType()`](https://python-all.ru/3/c-api/module.html#c.PyModule_AddType).
- [bpo-32309](https://python-all.ru/3/whatsnew/changelog.html): Добавлена новая [корутина](https://python-all.ru/3/glossary.html#term-coroutine) [`asyncio.to_thread()`](https://python-all.ru/3/library/asyncio-task.html#asyncio.to_thread). Она в основном используется для выполнения функций, связанных с вводом-выводом, в отдельном потоке, чтобы избежать блокировки цикла событий, и по сути работает как высокоуровневая версия [`run_in_executor()`](https://python-all.ru/3/library/asyncio-eventloop.html#asyncio.loop.run_in_executor), которая может напрямую принимать именованные аргументы.
- [bpo-36543](https://python-all.ru/3/whatsnew/changelog.html): Восстановлен устаревший модуль `xml.etree.cElementTree`.
- [bpo-40611](https://python-all.ru/3/whatsnew/changelog.html): Константа [`MAP_POPULATE`](https://python-all.ru/3/library/mmap.html#mmap.MAP_POPULATE) теперь добавлена в список экспортируемых флагов модуля [`mmap`](https://python-all.ru/3/library/mmap.html#module-mmap).
- [bpo-39881](https://python-all.ru/3/whatsnew/changelog.html): PEP 554 для использования в тестовом наборе. (Патч от Джоанны Нанджекье)
- [bpo-13097](https://python-all.ru/3/whatsnew/changelog.html): `ctypes` теперь вызывает `ArgumentError`, когда колбэк вызывается с более чем 1024 аргументами.
- [bpo-39385](https://python-all.ru/3/whatsnew/changelog.html): Новый менеджер контекста для тестовых утверждений, `unittest.assertNoLogs()` гарантирует, что заданный блок кода не генерирует сообщений журнала с использованием модуля logging. Предоставлено Кит Яном Чоем.
- [bpo-23082](https://python-all.ru/3/whatsnew/changelog.html): Обновлены сообщение об ошибке и документация PurePath.relative\_to(), чтобы лучше отражать поведение функции.
- [bpo-40318](https://python-all.ru/3/whatsnew/changelog.html): Использовать API трассировки SQLite3 v2, если он доступен.
- [bpo-40105](https://python-all.ru/3/whatsnew/changelog.html): ZipFile усекает файлы, чтобы избежать повреждения, когда в режиме добавления (“a”) указан более короткий комментарий. Патч от Яна Мазура.
- [bpo-40084](https://python-all.ru/3/whatsnew/changelog.html): Исправлено `Enum.__dir__`: dir(Enum.member) теперь включает атрибуты, а также методы.
- [bpo-31122](https://python-all.ru/3/whatsnew/changelog.html): ssl.wrap\_socket() теперь вызывает ssl.SSLEOFError вместо OSError, когда удалённая сторона закрывает соединение во время согласования TLS.
- [bpo-39728](https://python-all.ru/3/whatsnew/changelog.html): исправлено значение по умолчанию `_missing_`, чтобы дубликат `ValueError` не устанавливался как `__context__` исходного `ValueError`.
- [bpo-39244](https://python-all.ru/3/whatsnew/changelog.html): Исправлено `multiprocessing.context.get_all_start_methods`, чтобы правильно возвращать метод по умолчанию первым в macOS.
- [bpo-39040](https://python-all.ru/3/whatsnew/changelog.html): Исправлен разбор недопустимых параметров mime-заголовков путём сжатия пробелов между закодированными словами в bare-quote-string.
- [bpo-38731](https://python-all.ru/3/whatsnew/changelog.html): Добавлена опция `--quiet` в интерфейс командной строки [`py_compile`](https://python-all.ru/3/library/py_compile.html#module-py_compile). Патч от Грегори Шевченко.
- [bpo-35714](https://python-all.ru/3/whatsnew/changelog.html): [`struct.error`](https://python-all.ru/3/library/struct.html#struct.error) теперь вызывается, если в строке формата [`struct`](https://python-all.ru/3/library/struct.html#module-struct) есть нулевой символ.
- [bpo-38144](https://python-all.ru/3/whatsnew/changelog.html): Добавлены параметры *root\_dir* и *dir\_fd* в [`glob.glob()`](https://python-all.ru/3/library/glob.html#glob.glob).
- [bpo-26543](https://python-all.ru/3/whatsnew/changelog.html): Исправлено `IMAP4.noop()`, когда включён режим отладки (напр.: `imaplib.Debug = 3`).
- [bpo-12178](https://python-all.ru/3/whatsnew/changelog.html): [`csv.writer()`](https://python-all.ru/3/library/csv.html#csv.writer) теперь корректно экранирует *escapechar*, когда входные данные содержат *escapechar*. Патч от Каталина Якоба, Беркера Пексага и Итая Эльбирта.
- [bpo-36290](https://python-all.ru/3/whatsnew/changelog.html): Узлы AST теперь вызывают [`TypeError`](https://python-all.ru/3/library/exceptions.html#TypeError) при конфликтующих именованных аргументах. Патч предоставлен Реми Лапейром.
- [bpo-33944](https://python-all.ru/3/whatsnew/changelog.html): Добавлена трассировка site-packages в site.py в подробном режиме.
- [bpo-35078](https://python-all.ru/3/whatsnew/changelog.html): Рефакторинг методов formatweekday, formatmonthname в классах LocaleHTMLCalendar и LocaleTextCalendar модуля calendar для вызова методов базового класса. Это позволяет настраивать CSS-классы для LocaleHTMLCalendar. Патч от Сриниваса Редди Татипарти.
- [bpo-29620](https://python-all.ru/3/whatsnew/changelog.html): [`assertWarns()`](https://python-all.ru/3/library/unittest.html#unittest.TestCase.assertWarns) больше не вызывает `RuntimeException`, когда при доступе к `__warningregistry__` модуля происходит импорт нового модуля, или когда новый модуль импортируется в другом потоке. Патч от Kernc.
- [bpo-31844](https://python-all.ru/3/whatsnew/changelog.html): Удалён метод `ParserBase.error()` из приватного и недокументированного модуля `_markupbase`. [`html.parser.HTMLParser`](https://python-all.ru/3/library/html.parser.html#html.parser.HTMLParser) является единственным подклассом `ParserBase`, и его реализация `error()` была устаревшей в Python 3.4 и удалена в Python 3.5.
- [bpo-34226](https://python-all.ru/3/whatsnew/changelog.html): Исправлено `cgi.parse_multipart` без content\_length. Патч от Роджера Дурана.
- [bpo-33660](https://python-all.ru/3/whatsnew/changelog.html): Исправлен pathlib.PosixPath для корректного разрешения относительного пути, находящегося в корневом каталоге.
- [bpo-28557](https://python-all.ru/3/whatsnew/changelog.html): Улучшено сообщение об ошибке для некорректно работающего `rawio.readinto`.
- [bpo-26680](https://python-all.ru/3/whatsnew/changelog.html): метод d.is\_integer() добавлен в тип Decimal для совместимости с другими числовыми типами.
- [bpo-26680](https://python-all.ru/3/whatsnew/changelog.html): метод x.is\_integer() включён в абстрактные типы числовой иерархии: Real, Rational и Integral, с соответствующими реализациями по умолчанию.

### Документация

- [bpo-41428](https://python-all.ru/3/whatsnew/changelog.html): Добавить документацию для [**PEP 604**](https://python-all.ru/3/whatsnew/changelog.html) (разрешить запись объединённых типов как `X | Y`).
- [bpo-41774](https://python-all.ru/3/whatsnew/changelog.html): В разделе «Sequences (Tuples/Lists)» из FAQ по программированию добавлен вопрос «Как удалить несколько элементов из списка?».
- [bpo-35293](https://python-all.ru/3/whatsnew/changelog.html): Исправлено предупреждение RemovedInSphinx40Warning при сборке документации. Исправление от Donghee Na.
- [bpo-37149](https://python-all.ru/3/whatsnew/changelog.html): Изменена ссылка на документацию по tkinter от Шипмана с archive.org на TkDocs. (Документация была удалена с сервера NMT.) Новая ссылка отвечает гораздо быстрее и включает краткое пояснение.
- [bpo-41726](https://python-all.ru/3/whatsnew/changelog.html): Обновлена информация о счётчиках ссылок для `PyType_FromModuleAndSpec`.
- [bpo-41624](https://python-all.ru/3/whatsnew/changelog.html): Исправлена сигнатура [`typing.Coroutine`](https://python-all.ru/3/library/typing.html#typing.Coroutine).
- [bpo-40204](https://python-all.ru/3/whatsnew/changelog.html): Включена опция `c_allow_pre_v3` Sphinx 3.2 и отключена опция `c_warn_on_allowed_pre_v3` для обеспечения совместимости документации с Sphinx 2 и Sphinx 3.
- [bpo-41045](https://python-all.ru/3/whatsnew/changelog.html): Добавлена документация по отладочной возможности f-строк.
- [bpo-41314](https://python-all.ru/3/whatsnew/changelog.html): Изменён номер версии, когда `from __future__ import annotations` становится значением по умолчанию, с `4.0` на `3.10` (вслед за изменениями в PEP 563).
- [bpo-40979](https://python-all.ru/3/whatsnew/changelog.html): Переработан файл typing.rst: более 70 классов, функций и декораторов распределены по новым подразделам.
- [bpo-40552](https://python-all.ru/3/whatsnew/changelog.html): Исправление в разделе 4.2 учебного руководства. Фрагмент кода теперь корректен.
- [bpo-39883](https://python-all.ru/3/whatsnew/changelog.html): Код, примеры и рецепты в документации Python теперь лицензированы также под более разрешительной лицензией BSD0 в дополнение к существующей лицензии Python 2.0.
- [bpo-37703](https://python-all.ru/3/whatsnew/changelog.html): Обновлена документация для всестороннего описания поведения gather.cancel().

### Тесты

- [bpo-41939](https://python-all.ru/3/whatsnew/changelog.html): Исправлен test\_site.test\_license\_exists\_at\_url(): вызов `urllib.request.urlcleanup()` для сброса глобального `urllib.request._opener`. Исправление от Victor Stinner.
- [bpo-41731](https://python-all.ru/3/whatsnew/changelog.html): Обеспечено прохождение test\_cmd\_line\_script с опцией «-vv».
- [bpo-41602](https://python-all.ru/3/whatsnew/changelog.html): Добавлены тесты для обработки SIGINT в модуле runpy.
- [bpo-41521](https://python-all.ru/3/whatsnew/changelog.html): [`test.support`](https://python-all.ru/3/library/test.html#module-test.support): Переименован параметр `blacklist` функции [`check__all__()`](https://python-all.ru/3/library/test.html#test.support.check__all__) в `not_exported`.
- [bpo-41477](https://python-all.ru/3/whatsnew/changelog.html): Сделать ctypes опциональным в test\_genericalias.
- [bpo-41085](https://python-all.ru/3/whatsnew/changelog.html): Исправлено целочисленное переполнение в методе [`array.array.index()`](https://python-all.ru/3/library/array.html#array.array.index) на 64-разрядной Windows для индекса больше `2**31`.
- [bpo-41069](https://python-all.ru/3/whatsnew/changelog.html): `test.support.TESTFN` и текущий каталог для тестов при запуске через `test.regrtest` теперь содержат не-ascii символы, если это возможно.
- [bpo-38377](https://python-all.ru/3/whatsnew/changelog.html): В Linux пропускать тесты, использующие multiprocessing, если текущий пользователь не может создать файл в каталоге `/dev/shm/`. Добавлена функция [`skip_if_broken_multiprocessing_synchronize()`](https://python-all.ru/3/library/test.html#test.support.skip_if_broken_multiprocessing_synchronize) в модуль [`test.support`](https://python-all.ru/3/library/test.html#module-test.support).
- [bpo-41009](https://python-all.ru/3/whatsnew/changelog.html): Исправлено использование декораторов `support.require_{linux|mac|freebsd}_version()` в качестве декоратора класса.
- [bpo-41003](https://python-all.ru/3/whatsnew/changelog.html): Исправлено `test_copyreg`, когда установлен `numpy`: `test.pickletester` теперь сохраняет/восстанавливает фильтры предупреждений при импорте `numpy`, чтобы игнорировать фильтры, установленные `numpy`.
- [bpo-40964](https://python-all.ru/3/whatsnew/changelog.html): Отключены удалённые тесты [`imaplib`](https://python-all.ru/3/library/imaplib.html#module-imaplib): хост cyrus.andrew.cmu.edu блокирует входящие соединения.
- [bpo-40927](https://python-all.ru/3/whatsnew/changelog.html): Исправлен test\_binhex при двукратном запуске: теперь он использует import\_fresh\_module(), чтобы гарантировать выдачу DeprecationWarning каждый раз.
- [bpo-17258](https://python-all.ru/3/whatsnew/changelog.html): Пропускать некоторые тесты [`multiprocessing`](https://python-all.ru/3/library/multiprocessing.html#module-multiprocessing), когда дайджест MD5 заблокирован.
- [bpo-31904](https://python-all.ru/3/whatsnew/changelog.html): Увеличено значение LOOPBACK\_TIMEOUT до 10 для VxWorks RTOS.
- [bpo-38169](https://python-all.ru/3/whatsnew/changelog.html): Увеличено покрытие кода для SharedMemory и ShareableList.
- [bpo-34401](https://python-all.ru/3/whatsnew/changelog.html): Исправление test\_gdb для корректной работы на HP-UX. Исправление от Michael Osipov.

### Сборка

- [bpo-38249](https://python-all.ru/3/whatsnew/changelog.html): Обновление [`Py_UNREACHABLE`](https://python-all.ru/3/c-api/intro.html#c.Py_UNREACHABLE) для использования \_\_builtin\_unreachable(), если компилятор его поддерживает. Исправление от Donghee Na.
- [bpo-41617](https://python-all.ru/3/whatsnew/changelog.html): Исправление заголовочного файла `pycore_bitutils.h` для поддержки старых версий clang: `__builtin_bswap16()` недоступна в LLVM clang 3.0.
- [bpo-40204](https://python-all.ru/3/whatsnew/changelog.html): Зафиксировать версию Sphinx 2.3.1 в `Doc/Makefile`.
- [bpo-36020](https://python-all.ru/3/whatsnew/changelog.html): Для сборки Python теперь требуются функции C99 `snprintf()` и `vsnprintf()`.
- [bpo-40684](https://python-all.ru/3/whatsnew/changelog.html): `make install` теперь использует переменную `PLATLIBDIR` для целевого каталога `lib-dynload/` при использовании `./configure --with-platlibdir`.
- [bpo-40683](https://python-all.ru/3/whatsnew/changelog.html): Исправлена проблема, при которой модуль [`zoneinfo`](https://python-all.ru/3/library/zoneinfo.html#module-zoneinfo) и его тесты не включались при установке Python с `make`.

### Windows

- [bpo-41744](https://python-all.ru/3/whatsnew/changelog.html): Исправлен автоматический импорт файла props при использовании пакета Nuget.
- [bpo-41627](https://python-all.ru/3/whatsnew/changelog.html): Каталог пользовательских пакетов для 32-битной версии теперь содержит суффикс `-32`, чтобы отличать его от каталога 64-битного интерпретатора.
- [bpo-41526](https://python-all.ru/3/whatsnew/changelog.html): Исправлена верстка последней страницы установщика путем удаления благодарности Mark Hammond (с его разрешения).
- [bpo-41492](https://python-all.ru/3/whatsnew/changelog.html): Исправлено описание, отображаемое в запросах UAC.
- [bpo-40948](https://python-all.ru/3/whatsnew/changelog.html): Улучшено сообщение после установки, чтобы направлять пользователей к команде «py».
- [bpo-41412](https://python-all.ru/3/whatsnew/changelog.html): Установщик теперь отказывается устанавливаться на Windows 7 и Windows 8. Кроме того, зависимость UCRT теперь всегда загружается по требованию.
- [bpo-40741](https://python-all.ru/3/whatsnew/changelog.html): Обновление Windows-релиза для включения SQLite 3.32.3.
- [bpo-41142](https://python-all.ru/3/whatsnew/changelog.html): `msilib` теперь поддерживает создание CAB-файлов с не-ASCII путями и добавление в них файлов с не-ASCII путями.
- [bpo-41074](https://python-all.ru/3/whatsnew/changelog.html): Исправлена поддержка не-ASCII имён в функциях `msilib.OpenDatabase()` и `msilib.init_database()`, а также не-ASCII SQL в методе `msilib.Database.OpenView()`.
- [bpo-41039](https://python-all.ru/3/whatsnew/changelog.html): DLL перенаправления стабильного ABI (python3.dll) теперь использует `#pragma comment(linker)` для реэкспорта.
- [bpo-40164](https://python-all.ru/3/whatsnew/changelog.html): Обновление Windows OpenSSL до версии 1.1.1g
- [bpo-39631](https://python-all.ru/3/whatsnew/changelog.html): Изменение зарегистрированного MIME-типа для файлов `.py` на Windows на `text/x-python` вместо `text/plain`.
- [bpo-40677](https://python-all.ru/3/whatsnew/changelog.html): Явное определение IO\_REPARSE\_TAG\_APPEXECLINK на случай, если в старом Windows SDK его нет.
- [bpo-37556](https://python-all.ru/3/whatsnew/changelog.html): Расширена справка py.exe для упоминания переопределений через venv, shebang, переменные окружения и ini-файлы.

### macOS

- [bpo-41557](https://python-all.ru/3/whatsnew/changelog.html): Обновление установщика macOS для использования SQLite 3.33.0.
- [bpo-39580](https://python-all.ru/3/whatsnew/changelog.html): Предотвращение открытия окна Finder при запуске установщика из командной строки. Исправление предоставлено Rick Heil.
- [bpo-41100](https://python-all.ru/3/whatsnew/changelog.html): Исправление ошибки configure при сборке на macOS 11. Обратите внимание, что текущий релиз Python был выпущен вскоре после первой предварительной версии для разработчиков macOS 11 (Big Sur); есть и другие известные проблемы со сборкой и запуском в этой предварительной версии. Ожидается, что Big Sur будет полностью поддерживаться в будущем исправляющем релизе Python 3.8.x и в версии 3.9.0.
- [bpo-40741](https://python-all.ru/3/whatsnew/changelog.html): Обновление установщика macOS для использования SQLite 3.32.3.
- [bpo-41005](https://python-all.ru/3/whatsnew/changelog.html): Исправлена проблема с настройками XDG, не позволявшая macOS открывать браузер в webbrowser.py.
- [bpo-40741](https://python-all.ru/3/whatsnew/changelog.html): Обновление установщика macOS для использования SQLite 3.32.2.

### IDLE

- [bpo-41775](https://python-all.ru/3/whatsnew/changelog.html): Использовать «IDLE Shell» в качестве заголовка оболочки.
- [bpo-35764](https://python-all.ru/3/whatsnew/changelog.html): Переписана документация раздела Calltips.
- [bpo-40181](https://python-all.ru/3/whatsnew/changelog.html): В подсказках больше не напоминается, что символ ‘/’ отмечает конец только позиционных аргументов.
- [bpo-41468](https://python-all.ru/3/whatsnew/changelog.html): Улучшено сообщение об ошибке при крахе IDLE (пользователям его видеть не положено).
- [bpo-41373](https://python-all.ru/3/whatsnew/changelog.html): Файлы, загруженные без окончания строки (например, пустые или с иными окончаниями), теперь сохраняются с окончанием строки по умолчанию для системы. Исправлен регресс в 3.8.4 и 3.9.0b4.
- [bpo-41300](https://python-all.ru/3/whatsnew/changelog.html): Сохранение файлов с не-ASCII символами. Исправлен регресс, выпущенный в 3.9.0b4 и 3.8.4.
- [bpo-37765](https://python-all.ru/3/whatsnew/changelog.html): Добавлены ключевые слова в список автодополнения имён модулей. Переписана секция автодополнения в документации IDLE.
- [bpo-41152](https://python-all.ru/3/whatsnew/changelog.html): Кодировка `stdin`, `stdout` и `stderr` в IDLE теперь всегда UTF-8.
- [bpo-41144](https://python-all.ru/3/whatsnew/changelog.html): Команда Open Module теперь открывает такие специальные модули, как os.path.
- [bpo-39885](https://python-all.ru/3/whatsnew/changelog.html): Контекстное меню «Вырезать» и «Копировать» снова работает при щелчке правой кнопкой мыши внутри выделения.
- [bpo-40723](https://python-all.ru/3/whatsnew/changelog.html): test\_idle теперь успешно проходит при запуске после импорта.

### C API

- [bpo-41936](https://python-all.ru/3/whatsnew/changelog.html): Удалены недокументированные макросы `Py_ALLOW_RECURSION` и `Py_END_ALLOW_RECURSION`, а также поле `recursion_critical` структуры [`PyInterpreterState`](https://python-all.ru/3/c-api/subinterpreters.html#c.PyInterpreterState).
- [bpo-41692](https://python-all.ru/3/whatsnew/changelog.html): Функция `PyUnicode_InternImmortal()` теперь объявлена устаревшей и будет удалена в Python 3.12; вместо неё используйте [`PyUnicode_InternInPlace()`](https://python-all.ru/3/c-api/unicode.html#c.PyUnicode_InternInPlace). Патч от Victor Stinner.
- [bpo-41842](https://python-all.ru/3/whatsnew/changelog.html): Добавлена функция [`PyCodec_Unregister()`](https://python-all.ru/3/c-api/codec.html#c.PyCodec_Unregister) для отмены регистрации функции поиска кодеков.
- [bpo-41834](https://python-all.ru/3/whatsnew/changelog.html): Удалена переменная `_Py_CheckRecursionLimit`; она заменена на `ceval.recursion_limit` структуры [`PyInterpreterState`](https://python-all.ru/3/c-api/subinterpreters.html#c.PyInterpreterState). Патч от Victor Stinner.
- [bpo-41689](https://python-all.ru/3/whatsnew/changelog.html): Типы, созданные с помощью [`PyType_FromSpec()`](https://python-all.ru/3/c-api/type.html#c.PyType_FromSpec), теперь делают любую сигнатуру из своего слота `tp_doc` доступной из `__text_signature__`.
- [bpo-41524](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка в [`PyOS_mystrnicmp()`](https://python-all.ru/3/c-api/conversion.html#c.PyOS_mystrnicmp) и [`PyOS_mystricmp()`](https://python-all.ru/3/c-api/conversion.html#c.PyOS_mystricmp), в которых указатели увеличивались за пределами строки.
- [bpo-41324](https://python-all.ru/3/whatsnew/changelog.html): Добавлен минимальный API для decimal в виде капсулы. Этот API поддерживает быстрые преобразования между Decimal (до 38 цифр) и их тройным представлением в виде структуры C.
- [bpo-30155](https://python-all.ru/3/whatsnew/changelog.html): Добавлены макросы [`PyDateTime_DATE_GET_TZINFO()`](https://python-all.ru/3/c-api/datetime.html#c.PyDateTime_DATE_GET_TZINFO) и [`PyDateTime_TIME_GET_TZINFO()`](https://python-all.ru/3/c-api/datetime.html#c.PyDateTime_TIME_GET_TZINFO) для доступа к атрибутам `tzinfo` объектов [`datetime.datetime`](https://python-all.ru/3/library/datetime.html#datetime.datetime) и [`datetime.time`](https://python-all.ru/3/library/datetime.html#datetime.time).
- [bpo-40170](https://python-all.ru/3/whatsnew/changelog.html): Откат изменения [`PyType_HasFeature()`](https://python-all.ru/3/c-api/type.html#c.PyType_HasFeature): теперь он снова читает напрямую член [`PyTypeObject.tp_flags`](https://python-all.ru/3/c-api/typeobj.html#c.PyTypeObject.tp_flags), когда не используется ограниченный C API, вместо вызова [`PyType_GetFlags()`](https://python-all.ru/3/c-api/type.html#c.PyType_GetFlags), который скрывает детали реализации.
- [bpo-41123](https://python-all.ru/3/whatsnew/changelog.html): Удалено `PyUnicode_AsUnicodeCopy`.
- [bpo-41123](https://python-all.ru/3/whatsnew/changelog.html): Удалено `PyLong_FromUnicode()`.
- [bpo-41123](https://python-all.ru/3/whatsnew/changelog.html): Удалено `PyUnicode_GetMax()`.
- [bpo-41123](https://python-all.ru/3/whatsnew/changelog.html): Удалены функции `Py_UNICODE_str*` для работы со строками `Py_UNICODE*`.
- [bpo-41103](https://python-all.ru/3/whatsnew/changelog.html): `PyObject_AsCharBuffer()`, `PyObject_AsReadBuffer()`, `PyObject_CheckReadBuffer()` и `PyObject_AsWriteBuffer()` удалены. Перейдите на новый буферный протокол: [`PyObject_GetBuffer()`](https://python-all.ru/3/c-api/buffer.html#c.PyObject_GetBuffer) и [`PyBuffer_Release()`](https://python-all.ru/3/c-api/buffer.html#c.PyBuffer_Release).
- [bpo-36346](https://python-all.ru/3/whatsnew/changelog.html): Генерируется DeprecationWarning для `PyUnicode_FromUnicode(NULL, size)` и `PyUnicode_FromStringAndSize(NULL, size)` с `size > 0`.
- [bpo-36346](https://python-all.ru/3/whatsnew/changelog.html): Пометить `Py_UNICODE_COPY`, `Py_UNICODE_FILL`, `PyUnicode_WSTR_LENGTH`, `PyUnicode_FromUnicode`, `PyUnicode_AsUnicode` и `PyUnicode_AsUnicodeAndSize` как устаревшие в C. Удалить `Py_UNICODE_MATCH`, которое было устаревшим и нерабочим с Python 3.3.
- [bpo-40989](https://python-all.ru/3/whatsnew/changelog.html): Макросы [`PyObject_INIT()`](https://python-all.ru/3/c-api/allocation.html#c.PyObject_INIT) и [`PyObject_INIT_VAR()`](https://python-all.ru/3/c-api/allocation.html#c.PyObject_INIT_VAR) становятся псевдонимами для функций [`PyObject_Init()`](https://python-all.ru/3/c-api/allocation.html#c.PyObject_Init) и [`PyObject_InitVar()`](https://python-all.ru/3/c-api/allocation.html#c.PyObject_InitVar) соответственно.
- [bpo-36020](https://python-all.ru/3/whatsnew/changelog.html): В Windows `#include "pyerrors.h"` больше не определяет макросы `snprintf` и `vsnprintf`.
- [bpo-40943](https://python-all.ru/3/whatsnew/changelog.html): Макрос `PY_SSIZE_T_CLEAN` теперь должен быть определён для использования форматов [`PyArg_ParseTuple()`](https://python-all.ru/3/c-api/arg.html#c.PyArg_ParseTuple) и [`Py_BuildValue()`](https://python-all.ru/3/c-api/arg.html#c.Py_BuildValue), которые используют `#`: `es#`, `et#`, `s#`, `u#`, `y#`, `z#`, `U#` и `Z#`. См. [Разбор аргументов и построение значений](https://python-all.ru/3/c-api/arg.html#arg-parsing) и [**PEP 353**](https://python-all.ru/3/whatsnew/changelog.html).
- [bpo-40910](https://python-all.ru/3/whatsnew/changelog.html): Явно экспортирована функция [`Py_GetArgcArgv()`](https://python-all.ru/3/c-api/init_config.html#c.Py_GetArgcArgv) в C API и документирована. Ранее она экспортировалась неявно, что больше не работает, так как Python собирается с `-fvisibility=hidden`.
- [bpo-40724](https://python-all.ru/3/whatsnew/changelog.html): Разрешено определять буферные слоты в спецификациях типов.
- [bpo-40679](https://python-all.ru/3/whatsnew/changelog.html): Исправлено падение `_PyEval_EvalCode()`, если аргумент *qualname* равен NULL.
- [bpo-40839](https://python-all.ru/3/whatsnew/changelog.html): Вызов [`PyDict_GetItem()`](https://python-all.ru/3/c-api/dict.html#c.PyDict_GetItem) без удержания [GIL](https://python-all.ru/3/glossary.html#term-GIL) был разрешён по историческим причинам. Теперь это запрещено.
- [bpo-40826](https://python-all.ru/3/whatsnew/changelog.html): [`PyOS_InterruptOccurred()`](https://python-all.ru/3/c-api/sys.html#c.PyOS_InterruptOccurred) теперь завершается с фатальной ошибкой, если вызывается при отпущенном GIL.
- [bpo-40792](https://python-all.ru/3/whatsnew/changelog.html): Результат [`PyNumber_Index()`](https://python-all.ru/3/c-api/number.html#c.PyNumber_Index) теперь всегда имеет точный тип [`int`](https://python-all.ru/3/library/functions.html#int). Ранее результатом мог быть экземпляр подкласса `int`.
- [bpo-39573](https://python-all.ru/3/whatsnew/changelog.html): Преобразованы макросы [`Py_REFCNT()`](https://python-all.ru/3/c-api/refcounting.html#c.Py_REFCNT) и [`Py_SIZE()`](https://python-all.ru/3/c-api/structures.html#c.Py_SIZE) в статические встраиваемые функции. Их больше нельзя использовать как l-value: для установки счётчика ссылок и размера объекта используйте [`Py_SET_REFCNT()`](https://python-all.ru/3/c-api/refcounting.html#c.Py_SET_REFCNT) и [`Py_SET_SIZE()`](https://python-all.ru/3/c-api/structures.html#c.Py_SET_SIZE). Это изменение намеренно несовместимо с предыдущими версиями, чтобы подготовить C API к непрозрачной структуре [`PyObject`](https://python-all.ru/3/c-api/structures.html#c.PyObject).
- [bpo-40703](https://python-all.ru/3/whatsnew/changelog.html): Функции PyType\_FromSpec\*() больше не перезаписывают атрибут “\_\_module\_\_” типа, если он задан через “Py\_tp\_members” или “Py\_tp\_getset”.
- [bpo-39583](https://python-all.ru/3/whatsnew/changelog.html): Удалены лишние объявления “extern C” из `Include/cpython/*.h`.

## Python 3.9.0 beta 1

*Дата выпуска: 2020-05-19*

### Безопасность

- [bpo-40501](https://python-all.ru/3/whatsnew/changelog.html): [`uuid`](https://python-all.ru/3/library/uuid.html#module-uuid) больше не использует [`ctypes`](https://python-all.ru/3/library/ctypes.html#module-ctypes) для загрузки `libuuid` или `rpcrt4.dll` во время выполнения.

### Ядро и встроенные модули

- [bpo-40663](https://python-all.ru/3/whatsnew/changelog.html): Корректная генерация аннотаций в тех случаях, когда скобки опущены, но требуются (например: `Type[(str, int, *other))]`).
- [bpo-40596](https://python-all.ru/3/whatsnew/changelog.html): Исправлен [`str.isidentifier()`](https://python-all.ru/3/library/stdtypes.html#str.isidentifier) для неканонизированных строк, содержащих символы не из BMP в Windows.
- [bpo-40593](https://python-all.ru/3/whatsnew/changelog.html): Улучшены сообщения о синтаксических ошибках для недопустимых символов в исходном коде.
- [bpo-40585](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка при использовании [`codeop.compile_command()`](https://python-all.ru/3/library/codeop.html#codeop.compile_command), которая приводила к игнорированию исключений с новым парсером. Патч от Pablo Galindo
- [bpo-40566](https://python-all.ru/3/whatsnew/changelog.html): Применён [**PEP 573**](https://python-all.ru/3/whatsnew/changelog.html) к [`abc`](https://python-all.ru/3/library/abc.html#module-abc).
- [bpo-40502](https://python-all.ru/3/whatsnew/changelog.html): Инициализация `n->n_col_offset`. (Патч от Joannah Nanjekye)
- [bpo-40527](https://python-all.ru/3/whatsnew/changelog.html): Исправлен разбор аргументов командной строки: сообщения об ошибках больше не записываются несколько раз в stderr.
- [bpo-1635741](https://python-all.ru/3/whatsnew/changelog.html): Портирован [`errno`](https://python-all.ru/3/library/errno.html#module-errno) на многофазную инициализацию ([**PEP 489**](https://python-all.ru/3/whatsnew/changelog.html)).
- [bpo-40523](https://python-all.ru/3/whatsnew/changelog.html): Добавлены сквозные вызовы для [`hash()`](https://python-all.ru/3/library/functions.html#hash) и [`reversed()`](https://python-all.ru/3/library/functions.html#reversed) в объектах [`weakref.proxy`](https://python-all.ru/3/library/weakref.html#weakref.proxy). Патч от Pablo Galindo.
- [bpo-1635741](https://python-all.ru/3/whatsnew/changelog.html): Портирован [`syslog`](https://python-all.ru/3/library/syslog.html#module-syslog) на многофазную инициализацию ([**PEP 489**](https://python-all.ru/3/whatsnew/changelog.html)).
- [bpo-40246](https://python-all.ru/3/whatsnew/changelog.html): Сообщение со специальной ошибкой для недопустимых строковых префиксов, введённое в [bpo-40246](https://python-all.ru/3/whatsnew/changelog.html), отменяется из-за проблем с обратной совместимостью для строк, которые следуют сразу за зарезервированным ключевым словом без пробела между ними. Конструкции типа `bg="#d00" if clear else"#fca"` перестали разбираться, что является недопустимым нарушением на столь коротком уведомлении.
- [bpo-40417](https://python-all.ru/3/whatsnew/changelog.html): Исправлено предупреждение об устаревании модуля imp при вызове PyImport\_ReloadModule. Патч от Robert Rouhani.
- [bpo-40408](https://python-all.ru/3/whatsnew/changelog.html): Исправлена поддержка вложенных переменных типа в GenericAlias (например, `list[list[T]]`).
- [bpo-1635741](https://python-all.ru/3/whatsnew/changelog.html): Портирован модуль \_stat на многофазную инициализацию ([**PEP 489**](https://python-all.ru/3/whatsnew/changelog.html)).
- [bpo-29587](https://python-all.ru/3/whatsnew/changelog.html): Включена неявная цепочка исключений при вызове [`generator.throw()`](https://python-all.ru/3/reference/expressions.html#generator.throw).
- [bpo-40328](https://python-all.ru/3/whatsnew/changelog.html): Добавлены инструменты для генерации заголовков отображений для CJKCodecs.
- [bpo-40228](https://python-all.ru/3/whatsnew/changelog.html): Установка frame.f\_lineno теперь корректно работает при изменениях в компиляторе исходного кода в байт-код.
- [bpo-38880](https://python-all.ru/3/whatsnew/changelog.html): Добавлена возможность получать список интерпретаторов, связанных с концами канала, во внутреннем модуле под-интерпретаторов.
- [bpo-37986](https://python-all.ru/3/whatsnew/changelog.html): Повышена производительность [`PyLong_FromDouble()`](https://python-all.ru/3/c-api/long.html#c.PyLong_FromDouble) для значений, помещающихся в long.

### Библиотека

- [bpo-40662](https://python-all.ru/3/whatsnew/changelog.html): Исправлен [`ast.get_source_segment()`](https://python-all.ru/3/library/ast.html#ast.get_source_segment) для узлов ast, которые имеют неполную информацию о местоположении. Патч от Irit Katriel.
- [bpo-40665](https://python-all.ru/3/whatsnew/changelog.html): Преобразовано [`bisect`](https://python-all.ru/3/library/bisect.html#module-bisect) для использования Argument Clinic.
- [bpo-40536](https://python-all.ru/3/whatsnew/changelog.html): Добавлена функция [`available_timezones()`](https://python-all.ru/3/library/zoneinfo.html#zoneinfo.available_timezones) в модуль [`zoneinfo`](https://python-all.ru/3/library/zoneinfo.html#module-zoneinfo). Патч от Paul Ganssle.
- [bpo-40645](https://python-all.ru/3/whatsnew/changelog.html): [`hmac.HMAC`](https://python-all.ru/3/library/hmac.html#hmac.HMAC) раскрывает внутренние детали реализации. Атрибуты `digest_cons`, `inner` и `outer` устарели и будут удалены в будущем.
- [bpo-40645](https://python-all.ru/3/whatsnew/changelog.html): Внутренний модуль `_hashlib` оборачивает и предоставляет HMAC API OpenSSL. Новый код будет использоваться в Python 3.10 после того, как внутренние детали реализации чистого Python HMAC-модуля перестанут быть частью публичного API.
- [bpo-40637](https://python-all.ru/3/whatsnew/changelog.html): Встроенные модули хеширования теперь можно отключать или выборочно включать с помощью `configure --with-builtin-hashlib-hashes=sha3,blake1` или `--without-builtin-hashlib-hashes`.
- [bpo-37630](https://python-all.ru/3/whatsnew/changelog.html): Модуль [`hashlib`](https://python-all.ru/3/library/hashlib.html#module-hashlib) теперь может использовать хеши SHA3 и SHAKE XOF из OpenSSL, когда они доступны.
- [bpo-40479](https://python-all.ru/3/whatsnew/changelog.html): Теперь [`hashlib`](https://python-all.ru/3/library/hashlib.html#module-hashlib) компилируется с OpenSSL 3.0.0-alpha2.
- [bpo-40257](https://python-all.ru/3/whatsnew/changelog.html): Откат изменений в [`inspect.getdoc()`](https://python-all.ru/3/library/inspect.html#inspect.getdoc).
- [bpo-40607](https://python-all.ru/3/whatsnew/changelog.html): При отмене задачи по тайм-ауту [`asyncio.wait_for()`](https://python-all.ru/3/library/asyncio-task.html#asyncio.wait_for) теперь будет распространять исключение, если во время отмены произошла ошибка. Патч от Roman Skurikhin.
- [bpo-40612](https://python-all.ru/3/whatsnew/changelog.html): Исправлены пограничные случаи в форматировании SyntaxError. Если смещение \<= 0, каретка не выводится. Если смещение \> длины строки, каретка выводится сразу после последнего символа.
- [bpo-40597](https://python-all.ru/3/whatsnew/changelog.html): Если строки текстового содержимого длиннее, чем policy.max\_line\_length, всегда используется content-encoding, чтобы гарантировать их перенос.
- [bpo-40571](https://python-all.ru/3/whatsnew/changelog.html): Добавлен functools.cache() как более простой и более очевидный способ доступа к неограниченному варианту кэша lru\_cache(maxsize=None).
- [bpo-40503](https://python-all.ru/3/whatsnew/changelog.html): [**PEP 615**](https://python-all.ru/3/whatsnew/changelog.html), модуль [`zoneinfo`](https://python-all.ru/3/library/zoneinfo.html#module-zoneinfo). Добавлена поддержка базы данных часовых поясов IANA.
- [bpo-40397](https://python-all.ru/3/whatsnew/changelog.html): Удалены атрибуты `__args__` и `__parameters__` из специальных общих псевдонимов, таких как `typing.List` (не индексированных).
- [bpo-40549](https://python-all.ru/3/whatsnew/changelog.html): Преобразован posixmodule.c (модуль «posix» или «nt») для многофазной инициализации (PEP 489).
- [bpo-31033](https://python-all.ru/3/whatsnew/changelog.html): Добавлен аргумент `msg` в `Future.cancel()` и `Task.cancel()`.
- [bpo-40541](https://python-all.ru/3/whatsnew/changelog.html): Добавлен необязательный параметр *counts* в random.sample().
- [bpo-40515](https://python-all.ru/3/whatsnew/changelog.html): Модули [`ssl`](https://python-all.ru/3/library/ssl.html#module-ssl) и [`hashlib`](https://python-all.ru/3/library/hashlib.html#module-hashlib) теперь активно проверяют, что OpenSSL собран с поддержкой потоков. Python 3.7.0 сделал поддержку потоков обязательной и больше не работает безопасно со сборками без поддержки потоков.
- [bpo-31033](https://python-all.ru/3/whatsnew/changelog.html): При отмене [`asyncio.Task`](https://python-all.ru/3/library/asyncio-task.html#asyncio.Task) цепочка трассировки исключения теперь прослеживается вплоть до того места, где задача была впервые прервана.
- [bpo-40504](https://python-all.ru/3/whatsnew/changelog.html): Объекты [`functools.lru_cache()`](https://python-all.ru/3/library/functools.html#functools.lru_cache) теперь могут быть целями слабых ссылок.
- [bpo-40559](https://python-all.ru/3/whatsnew/changelog.html): Исправлена возможная утечка памяти в C-реализации [`asyncio.Task`](https://python-all.ru/3/library/asyncio-task.html#asyncio.Task).
- [bpo-40480](https://python-all.ru/3/whatsnew/changelog.html): `fnmatch.fnmatch()` могло занимать экспоненциальное время при наличии нескольких символов шаблона `*`. Это было исправлено генерацией более сложных регулярных выражений, чтобы избежать бесполезного возврата.
- [bpo-40495](https://python-all.ru/3/whatsnew/changelog.html): [`compileall`](https://python-all.ru/3/library/compileall.html#module-compileall) теперь может использовать жёсткие ссылки для предотвращения дублирования в случае, когда файлы `.pyc` для разных уровней оптимизации имеют одинаковое содержимое.
- [bpo-40457](https://python-all.ru/3/whatsnew/changelog.html): Модуль ssl теперь поддерживает сборки OpenSSL без методов TLS 1.0 и 1.1.
- [bpo-40355](https://python-all.ru/3/whatsnew/changelog.html): Улучшено сообщение об ошибках в [`ast.literal_eval()`](https://python-all.ru/3/library/ast.html#ast.literal_eval) при наличии некорректных узлов [`ast.Dict`](https://python-all.ru/3/library/ast.html#ast.Dict) вместо молчаливого игнорирования любых несоответствующих элементов. Патч от Curtis Bucher.
- [bpo-40465](https://python-all.ru/3/whatsnew/changelog.html): Устарел необязательный аргумент *random* для *random.shuffle()*.
- [bpo-40459](https://python-all.ru/3/whatsnew/changelog.html): [`platform.win32_ver()`](https://python-all.ru/3/library/platform.html#platform.win32_ver) теперь создаёт корректные строки *ptype* вместо пустых строк.
- [bpo-39435](https://python-all.ru/3/whatsnew/changelog.html): Первый аргумент [`pickle.loads()`](https://python-all.ru/3/library/pickle.html#pickle.loads) теперь является только позиционным.
- [bpo-39305](https://python-all.ru/3/whatsnew/changelog.html): Обновлён `nntplib` для объединения `nntplib.NNTP` и `nntplib._NNTPBase`. Патч от Donghee Na.
- [bpo-32494](https://python-all.ru/3/whatsnew/changelog.html): Обновлён [`dbm.gnu`](https://python-all.ru/3/library/dbm.html#module-dbm.gnu) для использования gdbm\_count, если возможно, при вызове [`len()`](https://python-all.ru/3/library/functions.html#len). Патч от Donghee Na.
- [bpo-40453](https://python-all.ru/3/whatsnew/changelog.html): Добавлен параметр только по ключу `isolated=True` в `_xxsubinterpreters.create()`. Изолированный подынтерпретатор не может порождать потоки, порождать дочерний процесс или вызывать `os.fork()`.
- [bpo-40286](https://python-all.ru/3/whatsnew/changelog.html): Удалить `_random.Random.randbytes()`: реализацию на C для `randbytes()`. Реализовать метод на Python для упрощения создания подклассов: `randbytes()` теперь напрямую использует `getrandbits()`.
- [bpo-40394](https://python-all.ru/3/whatsnew/changelog.html): Добавлены аргументы по умолчанию для [`difflib.SequenceMatcher.find_longest_match()`](https://python-all.ru/3/library/difflib.html#difflib.SequenceMatcher.find_longest_match).
- [bpo-39995](https://python-all.ru/3/whatsnew/changelog.html): Исправлена гонка (race condition) в concurrent.futures.\_ThreadWakeup: доступ к \_ThreadWakeup теперь защищён блокировкой shutdown lock.
- [bpo-30966](https://python-all.ru/3/whatsnew/changelog.html): `Process.shutdown(wait=True)` для [`concurrent.futures`](https://python-all.ru/3/library/concurrent.futures.html#module-concurrent.futures) теперь явно закрывает очередь результатов.
- [bpo-30966](https://python-all.ru/3/whatsnew/changelog.html): Добавлен новый метод [`close()`](https://python-all.ru/3/library/multiprocessing.html#multiprocessing.SimpleQueue.close) в класс [`SimpleQueue`](https://python-all.ru/3/library/multiprocessing.html#multiprocessing.SimpleQueue) для явного закрытия очереди.
- [bpo-39966](https://python-all.ru/3/whatsnew/changelog.html): Откат [bpo-25597](https://python-all.ru/3/whatsnew/changelog.html). [`unittest.mock.MagicMock`](https://python-all.ru/3/library/unittest.mock.html#unittest.mock.MagicMock) с wraps’ set использует значения по умолчанию для магических методов.
- [bpo-39791](https://python-all.ru/3/whatsnew/changelog.html): Добавлена функция `files()` в importlib.resources с поддержкой подкаталогов в данных пакета, соответствующая бэкпорту в importlib\_resources 1.5.
- [bpo-40375](https://python-all.ru/3/whatsnew/changelog.html): Добавлен [`imaplib.IMAP4.unselect()`](https://python-all.ru/3/library/imaplib.html#imaplib.IMAP4.unselect). Патч от Donghee Na.
- [bpo-40389](https://python-all.ru/3/whatsnew/changelog.html): `repr()` теперь возвращает `typing.Optional[T]` при вызове для `typing.Union` двух типов, один из которых – `NoneType`.
- [bpo-40291](https://python-all.ru/3/whatsnew/changelog.html): Добавлена поддержка сокетов CAN\_J1939 (доступны на Linux 5.4+).
- [bpo-40273](https://python-all.ru/3/whatsnew/changelog.html): [`types.MappingProxyType`](https://python-all.ru/3/library/types.html#types.MappingProxyType) теперь обратим.
- [bpo-39075](https://python-all.ru/3/whatsnew/changelog.html): repr для [`types.SimpleNamespace`](https://python-all.ru/3/library/types.html#types.SimpleNamespace) теперь упорядочен по порядку вставки, а не по алфавиту.
- [bpo-40192](https://python-all.ru/3/whatsnew/changelog.html): На AIX [`thread_time()`](https://python-all.ru/3/library/time.html#time.thread_time) теперь реализован с помощью `thread_cputime()`, имеющего наносекундное разрешение, вместо `clock_gettime(CLOCK_THREAD_CPUTIME_ID)` с разрешением 10 миллисекунд. Патч от Batuhan Taskaya.
- [bpo-40025](https://python-all.ru/3/whatsnew/changelog.html): Возбуждать TypeError, если \_generate\_next\_value\_ определён после членов. Патч от Ethan Onstott.
- [bpo-39058](https://python-all.ru/3/whatsnew/changelog.html): В модуле argparse repr для Namespace() и других хранилищ аргументов теперь отображается в порядке добавления атрибутов. Ранее он отображался в алфавитном порядке, хотя порядок аргументов сохраняется в видимых пользователю частях модуля.
- [bpo-24416](https://python-all.ru/3/whatsnew/changelog.html): Методы `isocalendar()` для [`datetime.date`](https://python-all.ru/3/library/datetime.html#datetime.date) и [`datetime.datetime`](https://python-all.ru/3/library/datetime.html#datetime.datetime) теперь возвращают [именованный кортеж](https://python-all.ru/3/glossary.html#term-named-tuple) вместо [`tuple`](https://python-all.ru/3/library/stdtypes.html#tuple).

### Документация

- [bpo-34790](https://python-all.ru/3/whatsnew/changelog.html): Добавлена версия удаления для явной передачи корутин в документацию `asyncio.wait()`.
- [bpo-40561](https://python-all.ru/3/whatsnew/changelog.html): Добавлены докстринги для функций открытия в webbrowser.
- [bpo-40499](https://python-all.ru/3/whatsnew/changelog.html): Упомянуто, что [`asyncio.wait()`](https://python-all.ru/3/library/asyncio-task.html#asyncio.wait) требует непустого набора ожидаемых объектов.
- [bpo-39705](https://python-all.ru/3/whatsnew/changelog.html): Пример из учебника для sorted() в разделе «Loop Techniques» получил более подробное объяснение. Также добавлен новый пример для демонстрации базового поведения sorted().
- [bpo-39435](https://python-all.ru/3/whatsnew/changelog.html): Исправлена неверная сигнатура для [`pickle.loads()`](https://python-all.ru/3/library/pickle.html#pickle.loads) в документации.

### Тесты

- [bpo-40055](https://python-all.ru/3/whatsnew/changelog.html): distutils.tests теперь сохраняет/восстанавливает фильтры предупреждений, оставляя их без изменений. Импорт тестов приводит к импорту docutils, который импортирует pkg\_resources, что добавляет фильтр предупреждений.
- [bpo-40436](https://python-all.ru/3/whatsnew/changelog.html): test\_gdb и test.pythoninfo теперь проверяют код завершения команды gdb.

### Сборка

- [bpo-40653](https://python-all.ru/3/whatsnew/changelog.html): Перенос \_dirnameW за пределы HAVE\_SYMLINK для исправления потенциальной проблемы компиляции.
- [bpo-40514](https://python-all.ru/3/whatsnew/changelog.html): Добавлена опция сборки `--with-experimental-isolated-subinterpreters` для `configure`: лучшая изоляция субинтерпретаторов, экспериментальный режим сборки.

### Windows

- [bpo-40650](https://python-all.ru/3/whatsnew/changelog.html): Добавлен winsock2.h в pytime.c для timeval.
- [bpo-40458](https://python-all.ru/3/whatsnew/changelog.html): Увеличен зарезервированный стек для предотвращения аварийного переполнения на Windows.
- [bpo-39148](https://python-all.ru/3/whatsnew/changelog.html): Добавлена поддержка IPv6 для датаграммных конечных точек [`asyncio`](https://python-all.ru/3/library/asyncio.html#module-asyncio) в ProactorEventLoop. Возбуждаемое исключение для неизвестных семейств адресов изменено на ValueError, так как оно не поступает от Windows API.

### macOS

- [bpo-34956](https://python-all.ru/3/whatsnew/changelog.html): При сборке Python на macOS из исходного кода `_tkinter` теперь связывается с несистемными фреймворками Tcl и Tk, если они установлены в `/Library/Frameworks`, как это было в старых версиях macOS. Если явно настроен macOS SDK, с помощью `--enable-universalsdk=` или `-isysroot`, выполняется поиск только в самом SDK. Поведение по умолчанию по-прежнему можно переопределить с помощью `--with-tcltk-includes` и `--with-tcltk-libs`.
- [bpo-35569](https://python-all.ru/3/whatsnew/changelog.html): Открыть доступ к сокетным опциям IPv6 из RFC 3542.

### Tools/Demos

- [bpo-40479](https://python-all.ru/3/whatsnew/changelog.html): Обновление вспомогательного инструмента multissltest для тестирования с последними версиями OpenSSL 1.0.2, 1.1.0, 1.1.1 и 3.0.0-alpha.
- [bpo-40431](https://python-all.ru/3/whatsnew/changelog.html): Исправление синтаксической опечатки в `turtledemo`, которая теперь вызывает `SyntaxError`.
- [bpo-40163](https://python-all.ru/3/whatsnew/changelog.html): Исправление инструмента multissltest. OpenSSL изменил URL загрузки для старых выпусков. Теперь multissltest пытается загрузить и с текущего, и со старого URL.

### C API

- [bpo-39465](https://python-all.ru/3/whatsnew/changelog.html): Удаление функции `_PyUnicode_ClearStaticStrings()` из C API.
- [bpo-38787](https://python-all.ru/3/whatsnew/changelog.html): Добавление макроса PyCFunction\_CheckExact() для точной проверки типов, теперь когда допускаются подтипы PyCFunction, а также PyCMethod\_CheckExact() и PyCMethod\_Check() для нового подтипа PyCMethod.
- [bpo-40545](https://python-all.ru/3/whatsnew/changelog.html): Объявление `_PyErr_GetTopmostException()` с `PyAPI_FUNC()` для правильного экспорта функции в C API. Функция остаётся приватной (префикс `_Py`).
- [bpo-40412](https://python-all.ru/3/whatsnew/changelog.html): Обнуление inittab\_copy во время финализации, что предотвращает крах при последующих инициализациях интерпретатора во встроенном сценарии. Патч от Gregory Szorc.
- [bpo-40429](https://python-all.ru/3/whatsnew/changelog.html): Функция [`PyThreadState_GetFrame()`](https://python-all.ru/3/c-api/threads.html#c.PyThreadState_GetFrame) теперь возвращает сильную ссылку на фрейм.
- [bpo-40428](https://python-all.ru/3/whatsnew/changelog.html): Удаление следующих функций из C API. Вызывайте [`PyGC_Collect()`](https://python-all.ru/3/c-api/gcsupport.html#c.PyGC_Collect) явно для освобождения всех свободных списков.

  - `PyAsyncGen_ClearFreeLists()`
  - `PyContext_ClearFreeList()`
  - `PyDict_ClearFreeList()`
  - `PyFloat_ClearFreeList()`
  - `PyFrame_ClearFreeList()`
  - `PyList_ClearFreeList()`
  - `PySet_ClearFreeList()`
  - `PyTuple_ClearFreeList()`
- [bpo-40421](https://python-all.ru/3/whatsnew/changelog.html): Новая функция [`PyFrame_GetBack()`](https://python-all.ru/3/c-api/frame.html#c.PyFrame_GetBack): получение следующего внешнего фрейма.
- [bpo-40421](https://python-all.ru/3/whatsnew/changelog.html): Новая функция [`PyFrame_GetCode()`](https://python-all.ru/3/c-api/frame.html#c.PyFrame_GetCode): возврат заимствованной ссылки на код фрейма.
- [bpo-40217](https://python-all.ru/3/whatsnew/changelog.html): Обеспечение того, что экземпляры типов, созданных с помощью [`PyType_FromSpecWithBases()`](https://python-all.ru/3/c-api/type.html#c.PyType_FromSpecWithBases), будут посещать свой объект класса при обходе ссылок в сборщике мусора (реализовано как расширение предоставленного [`tp_traverse`](https://python-all.ru/3/c-api/typeobj.html#c.PyTypeObject.tp_traverse)). Патч от Pablo Galindo.
- [bpo-38787](https://python-all.ru/3/whatsnew/changelog.html): Состояние модуля C теперь доступно из методов heap-типов, определённых на C ([**PEP 573**](https://python-all.ru/3/whatsnew/changelog.html)). Патч от Marcel Plch и Petr Viktorin.

## Python 3.9.0 alpha 6

*Дата выпуска: 2020-04-27*

### Безопасность

- [bpo-40121](https://python-all.ru/3/whatsnew/changelog.html): Исправление событий аудита, возникающих при создании нового сокета.
- [bpo-39073](https://python-all.ru/3/whatsnew/changelog.html): Запрет символов CR и LF в аргументах email.headerregistry.Address для защиты от атак внедрения заголовков.
- [bpo-39503](https://python-all.ru/3/whatsnew/changelog.html): [**CVE 2020-8492**](https://python-all.ru/3/whatsnew/changelog.html): Класс [`AbstractBasicAuthHandler`](https://python-all.ru/3/library/urllib.request.html#urllib.request.AbstractBasicAuthHandler) модуля [`urllib.request`](https://python-all.ru/3/library/urllib.request.html#module-urllib.request) использует неэффективное регулярное выражение, которое может быть использовано злоумышленником для отказа в обслуживании. Исправление регулярного выражения для предотвращения катастрофического возврата. Уязвимость сообщена Ben Caller и Matt Schwager.

### Ядро и встроенные модули

- [bpo-40313](https://python-all.ru/3/whatsnew/changelog.html): Улучшение производительности bytes.hex().
- [bpo-40334](https://python-all.ru/3/whatsnew/changelog.html): Переход на новый парсер на основе PEG. Подробнее см. PEP 617. Чтобы временно вернуться к старому парсеру, используйте `-X oldparser` или `PYTHONOLDPARSER=1`. В Python 3.10 старый парсер будет полностью удалён, включая модуль `parser` (уже устарел) и всё, что от него зависит.
- [bpo-40267](https://python-all.ru/3/whatsnew/changelog.html): Исправление токенизатора для отображения правильного сообщения об ошибке, когда на последнем вводимом символе есть `SyntaxError` и нет перевода строки. Раньше было `unexpected EOF while parsing`, а должно быть `invalid syntax`.
- [bpo-39522](https://python-all.ru/3/whatsnew/changelog.html): Корректное обратное преобразование явного префикса `u` для строк при отложенной оценке аннотаций. Патч от Batuhan Taskaya.
- [bpo-40246](https://python-all.ru/3/whatsnew/changelog.html): Вывод специализированного сообщения об ошибке, `invalid string prefix`, когда токенизатор встречает строку с недопустимым префиксом.
- [bpo-40082](https://python-all.ru/3/whatsnew/changelog.html): Исправление обработчика сигналов: теперь он всегда использует главный интерпретатор, а не пытается получить текущее состояние потока Python.
- [bpo-37388](https://python-all.ru/3/whatsnew/changelog.html): str.encode() и str.decode() больше не проверяют кодировку и ошибки в режиме разработки или отладки во время финализации Python. Механизм кодеков больше не может работать при очень поздних вызовах str.encode() и str.decode().
- [bpo-40077](https://python-all.ru/3/whatsnew/changelog.html): Исправить возможные утечки ссылок в `_json`, памятка PyScannerObject должна обходиться.
- [bpo-37207](https://python-all.ru/3/whatsnew/changelog.html): Ускорить вызовы `dict()` с помощью соглашения о вызовах [**PEP 590**](https://python-all.ru/3/whatsnew/changelog.html) `vectorcall`.
- [bpo-40141](https://python-all.ru/3/whatsnew/changelog.html): Добавить информацию о столбце и строке в узлы `ast.keyword`. Патч от Пабло Галиндо.
- [bpo-1635741](https://python-all.ru/3/whatsnew/changelog.html): Перенести [`resource`](https://python-all.ru/3/library/resource.html#module-resource) на многофазовую инициализацию ([**PEP 489**](https://python-all.ru/3/whatsnew/changelog.html)).
- [bpo-1635741](https://python-all.ru/3/whatsnew/changelog.html): Перенести [`math`](https://python-all.ru/3/library/math.html#module-math) на многофазовую инициализацию ([**PEP 489**](https://python-all.ru/3/whatsnew/changelog.html)).
- [bpo-1635741](https://python-all.ru/3/whatsnew/changelog.html): Перенести модуль \_uuid на многофазовую инициализацию ([**PEP 489**](https://python-all.ru/3/whatsnew/changelog.html)).
- [bpo-40077](https://python-all.ru/3/whatsnew/changelog.html): Преобразовать модуль json для использования [`PyType_FromSpec()`](https://python-all.ru/3/c-api/type.html#c.PyType_FromSpec).
- [bpo-40067](https://python-all.ru/3/whatsnew/changelog.html): Улучшить сообщение об ошибке для нескольких выражений со звёздочкой в присваивании. Патч от Фуркана Ондера.
- [bpo-1635741](https://python-all.ru/3/whatsnew/changelog.html): Перенести модуль \_functools на многофазовую инициализацию (PEP 489). Патч от Пауло Энрике Сильвы.
- [bpo-1635741](https://python-all.ru/3/whatsnew/changelog.html): Перенести модуль operator на многофазовую инициализацию (PEP 489). Патч от Пауло Энрике Сильвы.
- [bpo-20526](https://python-all.ru/3/whatsnew/changelog.html): Исправить [`PyThreadState_Clear()`](https://python-all.ru/3/c-api/threads.html#c.PyThreadState_Clear). `PyThreadState.frame` является заёмной ссылкой, а не сильной ссылкой: `PyThreadState_Clear()` не должен вызывать `Py_CLEAR(tstate->frame)`.
- [bpo-1635741](https://python-all.ru/3/whatsnew/changelog.html): Перенести модуль time на многофазовую инициализацию ([**PEP 489**](https://python-all.ru/3/whatsnew/changelog.html)). Патч от Пауло Энрике Сильвы.
- [bpo-1635741](https://python-all.ru/3/whatsnew/changelog.html): Перенести модуль расширения \_weakref на многофазовую инициализацию ([**PEP 489**](https://python-all.ru/3/whatsnew/changelog.html)).
- [bpo-40020](https://python-all.ru/3/whatsnew/changelog.html): Исправить утечку и последующий сбой в parsetok.c, вызванные неправильным использованием realloc в редком пути кода.
- [bpo-39939](https://python-all.ru/3/whatsnew/changelog.html): Добавлены методы str.removeprefix и str.removesuffix и соответствующие методы для bytes, bytearray и collections.UserString для удаления префиксов/суффиксов из строки, если они присутствуют. См. [**PEP 616**](https://python-all.ru/3/whatsnew/changelog.html) для полного описания. Патч от Денниса Суини.
- [bpo-39481](https://python-all.ru/3/whatsnew/changelog.html): Реализовать PEP 585. Это поддерживает list\[int\], tuple\[str, …\] и т.д.
- [bpo-32894](https://python-all.ru/3/whatsnew/changelog.html): Поддержка распарсивания бесконечных чисел в отложенных аннотациях. Патч от Батухана Ташкая.
- [bpo-37207](https://python-all.ru/3/whatsnew/changelog.html): Ускорить вызовы `list()` с помощью соглашения о вызовах [**PEP 590**](https://python-all.ru/3/whatsnew/changelog.html) `vectorcall`. Патч от Марка Шеннона.

### Библиотека

- [bpo-40398](https://python-all.ru/3/whatsnew/changelog.html): [`typing.get_args()`](https://python-all.ru/3/library/typing.html#typing.get_args) теперь всегда возвращает пустой кортеж для специальных обобщённых псевдонимов.
- [bpo-40396](https://python-all.ru/3/whatsnew/changelog.html): Функции [`typing.get_origin()`](https://python-all.ru/3/library/typing.html#typing.get_origin), [`typing.get_args()`](https://python-all.ru/3/library/typing.html#typing.get_args) и [`typing.get_type_hints()`](https://python-all.ru/3/library/typing.html#typing.get_type_hints) теперь поддерживают обобщённые псевдонимы, такие как `list[int]`.
- [bpo-38061](https://python-all.ru/3/whatsnew/changelog.html): Оптимизировать модуль [`subprocess`](https://python-all.ru/3/library/subprocess.html#module-subprocess) на FreeBSD с помощью `closefrom()`. Один системный вызов `close(fd)` дёшев, но когда `sysconf(_SC_OPEN_MAX)` высок, цикл, вызывающий `close(fd)` для каждого файлового дескриптора, может занимать несколько миллисекунд.

  Обходным путём на FreeBSD для повышения производительности была загрузка и монтирование модуля ядра fdescfs, но он не включён по умолчанию.

  Первоначальный патч от Ed Maste (emaste), Conrad Meyer (cem), Kyle Evans (kevans) и Kubilay Kocak (koobs): [https://bugs.freebsd.org/bugzilla/show\_bug.cgi?id=242274](https://python-all.ru/3/whatsnew/changelog.html)
- [bpo-38061](https://python-all.ru/3/whatsnew/changelog.html): На FreeBSD, `os.closerange(fd_low, fd_high)` теперь вызывает `closefrom(fd_low)`, если *fd\_high* больше или равно `sysconf(_SC_OPEN_MAX)`.

  Первоначальный патч от Ed Maste (emaste), Conrad Meyer (cem), Kyle Evans (kevans) и Kubilay Kocak (koobs): [https://bugs.freebsd.org/bugzilla/show\_bug.cgi?id=242274](https://python-all.ru/3/whatsnew/changelog.html)
- [bpo-40360](https://python-all.ru/3/whatsnew/changelog.html): Модуль `lib2to3` ожидает устаревания из-за [**PEP 617**](https://python-all.ru/3/whatsnew/changelog.html).
- [bpo-40138](https://python-all.ru/3/whatsnew/changelog.html): Исправить реализацию [`os.waitpid()`](https://python-all.ru/3/library/os.html#os.waitpid) в Windows для кода возврата большего, чем `INT_MAX >> 8`. Статус выхода теперь интерпретируется как беззнаковое число.
- [bpo-39942](https://python-all.ru/3/whatsnew/changelog.html): Установить “\_\_main\_\_” в качестве имени модуля по умолчанию, когда “\_\_name\_\_” отсутствует в [`typing.TypeVar`](https://python-all.ru/3/library/typing.html#typing.TypeVar). Патч от Вейпэн Хонга.
- [bpo-40275](https://python-all.ru/3/whatsnew/changelog.html): Пакет [`logging`](https://python-all.ru/3/library/logging.html#module-logging) теперь импортируется лениво в [`unittest`](https://python-all.ru/3/library/unittest.html#module-unittest) только тогда, когда используется утверждение [`assertLogs()`](https://python-all.ru/3/library/unittest.html#unittest.TestCase.assertLogs).
- [bpo-40275](https://python-all.ru/3/whatsnew/changelog.html): Пакет [`asyncio`](https://python-all.ru/3/library/asyncio.html#module-asyncio) теперь импортируется лениво в [`unittest`](https://python-all.ru/3/library/unittest.html#module-unittest) только тогда, когда используется класс [`IsolatedAsyncioTestCase`](https://python-all.ru/3/library/unittest.html#unittest.IsolatedAsyncioTestCase).
- [bpo-40330](https://python-all.ru/3/whatsnew/changelog.html): В `ShareableList.__setitem__()` проверять размер нового строкового элемента после кодирования его в utf-8, а не до.
- [bpo-40148](https://python-all.ru/3/whatsnew/changelog.html): Добавлен `pathlib.Path.with_stem()` для создания нового Path с заменённым stem.
- [bpo-40325](https://python-all.ru/3/whatsnew/changelog.html): Объявлена устаревшей поддержка множеств в random.sample().
- [bpo-40257](https://python-all.ru/3/whatsnew/changelog.html): Улучшена справка для модуля [`typing`](https://python-all.ru/3/library/typing.html#module-typing). Докстринги теперь показываются для всех специальных форм и специальных обобщённых псевдонимов (например, `Union` и `List`). Использование `help()` с обобщённым псевдонимом, например `List[int]`, покажет справку для соответствующего конкретного типа (в данном случае `list`).
- [bpo-40257](https://python-all.ru/3/whatsnew/changelog.html): [`inspect.getdoc()`](https://python-all.ru/3/library/inspect.html#inspect.getdoc) больше не возвращает докстринг, унаследованный от типа объекта или от родительского класса (если речь о классе), если он не определён в самом объекте. В [`pydoc`](https://python-all.ru/3/library/pydoc.html#module-pydoc) строка документации теперь показывается не только для классов, функций, методов и т.п., но и для любого объекта, у которого есть собственный атрибут `__doc__`.
- [bpo-40287](https://python-all.ru/3/whatsnew/changelog.html): Исправлен `SpooledTemporaryFile.seek()`: теперь возвращает позицию.
- [bpo-40290](https://python-all.ru/3/whatsnew/changelog.html): В statistics.NormalDist() добавлен метод zscore().
- [bpo-40282](https://python-all.ru/3/whatsnew/changelog.html): Разрешить `random.getrandbits(0)` успешно завершаться и возвращать 0.
- [bpo-40286](https://python-all.ru/3/whatsnew/changelog.html): Добавлены функция [`random.randbytes()`](https://python-all.ru/3/library/random.html#random.randbytes) и метод [`random.Random.randbytes()`](https://python-all.ru/3/library/random.html#random.Random.randbytes) для генерации случайных байтов.
- [bpo-40277](https://python-all.ru/3/whatsnew/changelog.html): [`collections.namedtuple()`](https://python-all.ru/3/library/collections.html#collections.namedtuple) теперь предоставляет человекочитаемое представление для своих аксессоров полей.
- [bpo-40270](https://python-all.ru/3/whatsnew/changelog.html): Встроенная копия sqlite3 в Windows теперь компилируется с расширением json. Это позволяет использовать такие функции, как `json_object`.
- [bpo-29255](https://python-all.ru/3/whatsnew/changelog.html): Ожидание в `KqueueSelector.select`, когда нет зарегистрированных файловых дескрипторов.
- [bpo-40260](https://python-all.ru/3/whatsnew/changelog.html): Обеспечить, чтобы [`modulefinder`](https://python-all.ru/3/library/modulefinder.html#module-modulefinder) использовал [`io.open_code()`](https://python-all.ru/3/library/io.html#io.open_code) и учитывал комментарии о кодировке.
- [bpo-40234](https://python-all.ru/3/whatsnew/changelog.html): Снова разрешить создание потоков-демонов в подинтерпретаторах (отмена изменения, которое их запрещало).
- [bpo-39207](https://python-all.ru/3/whatsnew/changelog.html): Работники в [`ProcessPoolExecutor`](https://python-all.ru/3/library/concurrent.futures.html#concurrent.futures.ProcessPoolExecutor) теперь порождаются по требованию, только когда нет доступных простаивающих работников для повторного использования. Это снижает накладные расходы при запуске и уменьшает количество потерянного процессорного времени на простаивающих работников. Патч от Kyle Stanley.
- [bpo-40091](https://python-all.ru/3/whatsnew/changelog.html): Исправлено зависание при fork в модуле logging: теперь используется новый приватный метод \_at\_fork\_reinit() для повторной инициализации блокировок при fork в дочернем процессе.
- [bpo-40149](https://python-all.ru/3/whatsnew/changelog.html): Реализованы слоты traverse и clear в типе \_abc.\_abc\_data.
- [bpo-40208](https://python-all.ru/3/whatsnew/changelog.html): Удалён устаревший `symtable.SymbolTable.has_exec()`.
- [bpo-40196](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка в модуле [`symtable`](https://python-all.ru/3/library/symtable.html#module-symtable), из-за которой глобальные переменные ошибочно сообщались как локальные. Патч от Pablo Galindo.
- [bpo-40190](https://python-all.ru/3/whatsnew/changelog.html): Добавлена поддержка `_SC_AIX_REALMEM` для `posix.sysconf()`.
- [bpo-40182](https://python-all.ru/3/whatsnew/changelog.html): Удалён атрибут `_field_types` класса [`typing.NamedTuple`](https://python-all.ru/3/library/typing.html#typing.NamedTuple).
- [bpo-36517](https://python-all.ru/3/whatsnew/changelog.html): Множественное наследование с [`typing.NamedTuple`](https://python-all.ru/3/library/typing.html#typing.NamedTuple) теперь вызывает ошибку вместо молчаливого игнорирования других типов.
- [bpo-40126](https://python-all.ru/3/whatsnew/changelog.html): Исправлено откатывание нескольких патчей в unittest.mock. Метод `__exit__()` патчера теперь никогда не вызывается, если его `__enter__()` завершился неудачей. Возврат true из `__exit__()` теперь подавляет исключение.
- [bpo-40094](https://python-all.ru/3/whatsnew/changelog.html): CGIHTTPRequestHandler из http.server теперь логирует код возврата CGI-скрипта, а не статус завершения от os.waitpid(). Например, если скрипт был убит сигналом 11, теперь логируется: «CGI script exit code -11».
- [bpo-40108](https://python-all.ru/3/whatsnew/changelog.html): Улучшено сообщение об ошибке при попытке импортировать модуль с помощью [`runpy`](https://python-all.ru/3/library/runpy.html#module-runpy) и некорректном добавлении расширения «.py» в конце имени модуля. Патч от Pablo Galindo.
- [bpo-40094](https://python-all.ru/3/whatsnew/changelog.html): Добавлена функция [`os.waitstatus_to_exitcode()`](https://python-all.ru/3/library/os.html#os.waitstatus_to_exitcode): преобразует статус ожидания в код возврата.
- [bpo-40089](https://python-all.ru/3/whatsnew/changelog.html): Исправлен threading.\_after\_fork(): если fork не был вызван потоком, порождённым threading.Thread, threading.\_after\_fork() теперь создаёт экземпляр \_MainThread для \_main\_thread вместо экземпляра \_DummyThread.
- [bpo-40089](https://python-all.ru/3/whatsnew/changelog.html): Добавлен приватный метод `_at_fork_reinit()` в классы `_thread.Lock`, `_thread.RLock`, [`threading.RLock`](https://python-all.ru/3/library/threading.html#threading.RLock) и [`threading.Condition`](https://python-all.ru/3/library/threading.html#threading.Condition): повторно инициализирует блокировку при fork в дочернем процессе, сбрасывая блокировку в разблокированное состояние. Также переименован приватный метод `_reset_internal_locks()` класса [`threading.Event`](https://python-all.ru/3/library/threading.html#threading.Event) в `_at_fork_reinit()`.
- [bpo-25780](https://python-all.ru/3/whatsnew/changelog.html): Открыт [`CAN_RAW_JOIN_FILTERS`](https://python-all.ru/3/library/socket.html#socket.CAN_RAW_JOIN_FILTERS) в модуле [`socket`](https://python-all.ru/3/library/socket.html#module-socket).
- [bpo-39503](https://python-all.ru/3/whatsnew/changelog.html): [`AbstractBasicAuthHandler`](https://python-all.ru/3/library/urllib.request.html#urllib.request.AbstractBasicAuthHandler) из [`urllib.request`](https://python-all.ru/3/library/urllib.request.html#module-urllib.request) теперь разбирает все HTTP-заголовки WWW-Authenticate и принимает несколько вызовов (challenge) на заголовок: используется realm первого Basic-вызова.
- [bpo-39812](https://python-all.ru/3/whatsnew/changelog.html): Удалены потоки-демоны из [`concurrent.futures`](https://python-all.ru/3/library/concurrent.futures.html#module-concurrent.futures) путём добавления внутреннего `threading._register_atexit()`, который вызывает зарегистрированные функции перед присоединением всех потоков, не являющихся демонами. Это обеспечивает совместимость с подинтерпретаторами, которые не поддерживают потоки-демоны.
- [bpo-40050](https://python-all.ru/3/whatsnew/changelog.html): Исправлен `importlib._bootstrap_external`: избегать создания нового встроенного модуля `winreg`, если он уже доступен в [`sys.modules`](https://python-all.ru/3/library/sys.html#sys.modules), и удалить избыточные импорты.
- [bpo-40014](https://python-all.ru/3/whatsnew/changelog.html): Исправлен `os.getgrouplist()`: если функция `getgrouplist()` завершается неудачей, потому что список групп слишком мал, повторить с большим списком групп. В случае неудачи реализация `getgrouplist()` в glibc устанавливает `ngroups` в общее количество групп. Для других реализаций удваивать размер списка групп.
- [bpo-40017](https://python-all.ru/3/whatsnew/changelog.html): Добавлена константа [`time.CLOCK_TAI`](https://python-all.ru/3/library/time.html#time.CLOCK_TAI), если операционная система её поддерживает.
- [bpo-40016](https://python-all.ru/3/whatsnew/changelog.html): В docstring модуля re разъяснена взаимосвязь между встроенными флагами компиляции и флагами аргументов.
- [bpo-39953](https://python-all.ru/3/whatsnew/changelog.html): Обновлена внутренняя таблица кодов ошибок OpenSSL в модуле `ssl`.
- [bpo-36144](https://python-all.ru/3/whatsnew/changelog.html): Добавлены операторы [**PEP 584**](https://python-all.ru/3/whatsnew/changelog.html) к [`weakref.WeakValueDictionary`](https://python-all.ru/3/library/weakref.html#weakref.WeakValueDictionary).
- [bpo-36144](https://python-all.ru/3/whatsnew/changelog.html): Добавлены операторы [**PEP 584**](https://python-all.ru/3/whatsnew/changelog.html) к [`weakref.WeakKeyDictionary`](https://python-all.ru/3/library/weakref.html#weakref.WeakKeyDictionary).
- [bpo-38891](https://python-all.ru/3/whatsnew/changelog.html): Исправлено линейное поведение во время выполнения методов `__getitem__` и `__setitem__` в [`multiprocessing.shared_memory.ShareableList`](https://python-all.ru/3/library/multiprocessing.shared_memory.html#multiprocessing.shared_memory.ShareableList). Это устраняет квадратичную производительность при итерации по `ShareableList`. Патч от Thomas Krennwallner.
- [bpo-39682](https://python-all.ru/3/whatsnew/changelog.html): Удалена недокументированная поддержка *закрытия* объекта `pathlib.Path` через его контекстный менеджер. Магические методы контекстного менеджера остались, но теперь они ничего не делают, что делает объекты `Path` неизменяемыми.
- [bpo-36144](https://python-all.ru/3/whatsnew/changelog.html): Добавлены операторы [**PEP 584**](https://python-all.ru/3/whatsnew/changelog.html) (`|` и `|=`) к [`collections.ChainMap`](https://python-all.ru/3/library/collections.html#collections.ChainMap).
- [bpo-39011](https://python-all.ru/3/whatsnew/changelog.html): Нормализация концов строк в атрибутах ElementTree удалена, поскольку концы строк, заменённые номерами сущностей, должны сохраняться в исходном виде.
- [bpo-38410](https://python-all.ru/3/whatsnew/changelog.html): Корректная обработка ошибок [`sys.audit()`](https://python-all.ru/3/library/sys.html#sys.audit) в [`sys.set_asyncgen_hooks()`](https://python-all.ru/3/library/sys.html#sys.set_asyncgen_hooks).
- [bpo-36541](https://python-all.ru/3/whatsnew/changelog.html): lib2to3 теперь распознаёт именованные выражения присваивания (оператор walrus, `:=`).
- [bpo-35967](https://python-all.ru/3/whatsnew/changelog.html): В модуле platform вызов 'uname -p' отложен до момента запроса атрибута processor.
- [bpo-35113](https://python-all.ru/3/whatsnew/changelog.html): [`inspect.getsource()`](https://python-all.ru/3/library/inspect.html#inspect.getsource) теперь возвращает корректный исходный код для внутреннего класса с тем же именем, что и класс уровня модуля. Декораторы также возвращаются как часть исходного кода класса. Патч от Karthikeyan Singaravelan.
- [bpo-33262](https://python-all.ru/3/whatsnew/changelog.html): Передача None в качестве аргумента для параметра `s` функции [`shlex.split()`](https://python-all.ru/3/library/shlex.html#shlex.split) устарела. Патч от Zackery Spytz.
- [bpo-31758](https://python-all.ru/3/whatsnew/changelog.html): Предотвращение аварийных завершений при использовании неинициализированного объекта `_elementtree.XMLParser`. Патч от Oren Milman.

### Документация

- [bpo-27635](https://python-all.ru/3/whatsnew/changelog.html): Документация pickle неверно утверждала, что `__new__` не вызывается по умолчанию при распаковке.
- [bpo-39879](https://python-all.ru/3/whatsnew/changelog.html): Обновлена документация [модели данных](https://python-all.ru/3/reference/datamodel.html#datamodel), чтобы включить сохранение порядка вставки [`dict()`](https://python-all.ru/3/library/stdtypes.html#dict). Патч от Furkan Onder и Samy Lahfa.
- [bpo-38387](https://python-all.ru/3/whatsnew/changelog.html): Документирован макрос [`PyDoc_STRVAR`](https://python-all.ru/3/c-api/intro.html#c.PyDoc_STRVAR) в справочнике C-API.
- [bpo-13743](https://python-all.ru/3/whatsnew/changelog.html): Некоторые методы класса xml.dom.minidom.Element теперь документированы лучше.

### Тесты

- [bpo-31904](https://python-all.ru/3/whatsnew/changelog.html): Установлена ожидаемая кодировка по умолчанию в test\_c\_locale\_coercion.py для VxWorks RTOS.
- [bpo-40162](https://python-all.ru/3/whatsnew/changelog.html): Обновлена конфигурация Travis CI до OpenSSL 1.1.1f.
- [bpo-40146](https://python-all.ru/3/whatsnew/changelog.html): Обновлён OpenSSL до версии 1.1.1f в Azure Pipelines.
- [bpo-40094](https://python-all.ru/3/whatsnew/changelog.html): Добавлена функция [`test.support.wait_process()`](https://python-all.ru/3/library/test.html#test.support.wait_process).
- [bpo-40003](https://python-all.ru/3/whatsnew/changelog.html): `test.bisect_cmd` теперь копирует параметры командной строки Python, такие как `-O` или `-W`. Кроме того, выдаётся предупреждение, если `test.bisect_cmd` используется с опцией `-w`/`--verbose2`.
- [bpo-39380](https://python-all.ru/3/whatsnew/changelog.html): Добавлена кодировка в [`ftplib.FTP`](https://python-all.ru/3/library/ftplib.html#ftplib.FTP) и [`ftplib.FTP_TLS`](https://python-all.ru/3/library/ftplib.html#ftplib.FTP_TLS) в конструктор как keyword-only, и изменено значение по умолчанию с `latin-1` на `utf-8` в соответствии с [**RFC 2640**](https://python-all.ru/3/whatsnew/changelog.html).
- [bpo-39793](https://python-all.ru/3/whatsnew/changelog.html): Используется тот же домен при тестировании `make_msgid`. Патч от Batuhan Taskaya.
- [bpo-1812](https://python-all.ru/3/whatsnew/changelog.html): Исправлена обработка символов новой строки в doctest.testfile при загрузке из пакета, загрузчик которого имеет метод get\_data. Патч от Peter Donis.

### Сборка

- [bpo-38360](https://python-all.ru/3/whatsnew/changelog.html): Поддержка одноаргументной формы флага -isysroot для macOS.
- [bpo-40158](https://python-all.ru/3/whatsnew/changelog.html): Исправлены свойства MSBuild CPython в пакете NuGet (build/native/python.props).
- [bpo-38527](https://python-all.ru/3/whatsnew/changelog.html): Исправлена проверка конфигурации на Solaris для «float word ordering»: иногда использовалась неверная команда «grep». Патч от Arnon Yaari.

### Windows

- [bpo-40164](https://python-all.ru/3/whatsnew/changelog.html): Обновление Windows до OpenSSL 1.1.1f
- [bpo-8901](https://python-all.ru/3/whatsnew/changelog.html): Игнорировать реестр Windows при использовании опции `-E`.

### macOS

- [bpo-38329](https://python-all.ru/3/whatsnew/changelog.html): Установщики macOS с python.org теперь обновляют симлинк Current в /Library/Frameworks/Python.framework/Versions для установок 3.9. Ранее Current обновлялся только для установок Python 2.x. Это должно упростить встраивание Python 3 в другие приложения macOS.
- [bpo-40164](https://python-all.ru/3/whatsnew/changelog.html): Обновление сборок установщика macOS для использования OpenSSL 1.1.1g.

### IDLE

- [bpo-38439](https://python-all.ru/3/whatsnew/changelog.html): Добавлен значок IDLE размером 256×256 пикселей для поддержки более современных окружений. Создан Andrew Clover. Удалён неиспользуемый файл значка macOS idle.icns .
- [bpo-38689](https://python-all.ru/3/whatsnew/changelog.html): IDLE больше не будет зависать, когда inspect.signature выдаёт ошибку при получении подсказки по вызову.

### Tools/Demos

- [bpo-40385](https://python-all.ru/3/whatsnew/changelog.html): Удалён инструмент checkpyc.py. В качестве возможной альтернативы используйте compileall без режима force.
- [bpo-40179](https://python-all.ru/3/whatsnew/changelog.html): Исправлен перевод `#elif` в Argument Clinic.
- [bpo-40094](https://python-all.ru/3/whatsnew/changelog.html): Исправлен код возврата скрипта `which.py`: теперь он использует [`os.waitstatus_to_exitcode()`](https://python-all.ru/3/library/os.html#os.waitstatus_to_exitcode) для преобразования [`os.system()`](https://python-all.ru/3/library/os.html#os.system) статуса выхода в код возврата.

### C API

- [bpo-40241](https://python-all.ru/3/whatsnew/changelog.html): Перенос структуры `PyGC_Head` во внутренний C API.
- [bpo-40170](https://python-all.ru/3/whatsnew/changelog.html): Преобразование макроса [`PyObject_IS_GC()`](https://python-all.ru/3/c-api/gcsupport.html#c.PyObject_IS_GC) в функцию для сокрытия деталей реализации.
- [bpo-40241](https://python-all.ru/3/whatsnew/changelog.html): Добавлены функции [`PyObject_GC_IsTracked()`](https://python-all.ru/3/c-api/gcsupport.html#c.PyObject_GC_IsTracked) и [`PyObject_GC_IsFinalized()`](https://python-all.ru/3/c-api/gcsupport.html#c.PyObject_GC_IsFinalized) в публичный API для запроса, отслеживаются ли объекты Python в данный момент или уже были финализированы сборщиком мусора соответственно. Патч от Pablo Galindo.
- [bpo-40170](https://python-all.ru/3/whatsnew/changelog.html): Макрос `PyObject_NEW()` становится псевдонимом макроса [`PyObject_New()`](https://python-all.ru/3/c-api/allocation.html#c.PyObject_New), а макрос `PyObject_NEW_VAR()` становится псевдонимом макроса [`PyObject_NewVar()`](https://python-all.ru/3/c-api/allocation.html#c.PyObject_NewVar) для сокрытия деталей реализации. Они больше не обращаются напрямую к члену [`PyTypeObject.tp_basicsize`](https://python-all.ru/3/c-api/typeobj.html#c.PyTypeObject.tp_basicsize).
- [bpo-40170](https://python-all.ru/3/whatsnew/changelog.html): [`PyType_HasFeature()`](https://python-all.ru/3/c-api/type.html#c.PyType_HasFeature) теперь всегда вызывает [`PyType_GetFlags()`](https://python-all.ru/3/c-api/type.html#c.PyType_GetFlags) для сокрытия деталей реализации. Ранее он обращался напрямую к члену [`PyTypeObject.tp_flags`](https://python-all.ru/3/c-api/typeobj.html#c.PyTypeObject.tp_flags), если не использовался ограниченный C API.
- [bpo-40170](https://python-all.ru/3/whatsnew/changelog.html): Преобразование макроса `PyObject_GET_WEAKREFS_LISTPTR()` в функцию для сокрытия деталей реализации: макрос обращался напрямую к члену [`PyTypeObject.tp_weaklistoffset`](https://python-all.ru/3/c-api/typeobj.html#c.PyTypeObject.tp_weaklistoffset).
- [bpo-40170](https://python-all.ru/3/whatsnew/changelog.html): Преобразование макроса [`PyObject_CheckBuffer()`](https://python-all.ru/3/c-api/buffer.html#c.PyObject_CheckBuffer) в функцию для сокрытия деталей реализации: макрос обращался напрямую к члену [`PyTypeObject.tp_as_buffer`](https://python-all.ru/3/c-api/typeobj.html#c.PyTypeObject.tp_as_buffer).
- [bpo-40170](https://python-all.ru/3/whatsnew/changelog.html): Всегда объявлять [`PyIndex_Check()`](https://python-all.ru/3/c-api/number.html#c.PyIndex_Check) как непрозрачную функцию для сокрытия деталей реализации: удалить макрос `PyIndex_Check()`. Макрос обращался напрямую к члену [`PyTypeObject.tp_as_number`](https://python-all.ru/3/c-api/typeobj.html#c.PyTypeObject.tp_as_number).
- [bpo-39947](https://python-all.ru/3/whatsnew/changelog.html): Добавлена функция [`PyThreadState_GetID()`](https://python-all.ru/3/c-api/threads.html#c.PyThreadState_GetID): получение уникального идентификатора состояния потока Python.

## Python 3.9.0 alpha 5

*Дата выпуска: 2020-03-23*

### Безопасность

- [bpo-38576](https://python-all.ru/3/whatsnew/changelog.html): Запрещены управляющие символы в именах хостов в http.client, что устраняет [**CVE 2019-18348**](https://python-all.ru/3/whatsnew/changelog.html). Такие потенциально вредоносные URL с внедрением заголовков теперь вызывают исключение InvalidURL.

### Ядро и встроенные модули

- [bpo-40010](https://python-all.ru/3/whatsnew/changelog.html): Оптимизация отложенных вызовов в многопоточных приложениях. Если поток, отличный от главного, планирует отложенный вызов ([`Py_AddPendingCall()`](https://python-all.ru/3/c-api/threads.html#c.Py_AddPendingCall)), цикл выполнения байткода больше не прерывается на каждой инструкции байткода для проверки отложенных вызовов, которые не могут быть выполнены. Только главный поток может выполнять отложенные вызовы.

  Ранее цикл выполнения байткода прерывался на каждой инструкции, пока главный поток не выполнял отложенные вызовы.
- [bpo-1635741](https://python-all.ru/3/whatsnew/changelog.html): Перенос модуля расширения \_weakref на многофазную инициализацию ([**PEP 489**](https://python-all.ru/3/whatsnew/changelog.html)).
- [bpo-1635741](https://python-all.ru/3/whatsnew/changelog.html): Перенос модуля \_collections на многофазную инициализацию ([**PEP 489**](https://python-all.ru/3/whatsnew/changelog.html)).
- [bpo-40010](https://python-all.ru/3/whatsnew/changelog.html): Оптимизация обработки сигналов в многопоточных приложениях. Если поток, отличный от главного, получает сигнал, цикл выполнения байт-кода больше не прерывается на каждой инструкции для проверки ожидающих сигналов, которые не могут быть обработаны. Только главный поток главного интерпретатора может обрабатывать сигналы.

  Ранее цикл выполнения байт-кода прерывался на каждой инструкции, пока главный поток не обработает сигналы.
- [bpo-39984](https://python-all.ru/3/whatsnew/changelog.html): Если [`Py_AddPendingCall()`](https://python-all.ru/3/c-api/threads.html#c.Py_AddPendingCall) вызывается в подынтерпретаторе, функция теперь планируется к вызову из подынтерпретатора, а не из главного интерпретатора. Каждый подынтерпретатор теперь имеет свой собственный список запланированных вызовов.
- [bpo-1635741](https://python-all.ru/3/whatsnew/changelog.html): Перенос модуля \_heapq на многофазную инициализацию.
- [bpo-1635741](https://python-all.ru/3/whatsnew/changelog.html): Перенос модуля itertools на многофазную инициализацию ([**PEP 489**](https://python-all.ru/3/whatsnew/changelog.html)).
- [bpo-37207](https://python-all.ru/3/whatsnew/changelog.html): Ускорение вызовов `frozenset()` за счёт использования соглашения о вызовах [**PEP 590**](https://python-all.ru/3/whatsnew/changelog.html)`vectorcall`. Исправление от Donghee Na.
- [bpo-39984](https://python-all.ru/3/whatsnew/changelog.html): подынтерпретаторы: Перенос `_PyRuntimeState.ceval.tracing_possible` в `PyInterpreterState.ceval.tracing_possible`: теперь каждый интерпретатор имеет собственную переменную.
- [bpo-37207](https://python-all.ru/3/whatsnew/changelog.html): Ускорение вызовов `set()` за счёт использования соглашения о вызовах [**PEP 590**](https://python-all.ru/3/whatsnew/changelog.html)`vectorcall`. Исправление от Donghee Na.
- [bpo-1635741](https://python-all.ru/3/whatsnew/changelog.html): Перенос модуля \_statistics на многофазную инициализацию ([**PEP 489**](https://python-all.ru/3/whatsnew/changelog.html)).
- [bpo-39968](https://python-all.ru/3/whatsnew/changelog.html): Использование встроенной функции для замены макросов get\_module\_state модулей расширений.
- [bpo-39965](https://python-all.ru/3/whatsnew/changelog.html): Корректное возбуждение `SyntaxError`, если *await* используется внутри не-асинхронных функций и установлен `PyCF_ALLOW_TOP_LEVEL_AWAIT` (как в asyncio REPL). Исправление от Pablo Galindo.
- [bpo-39562](https://python-all.ru/3/whatsnew/changelog.html): Разрешение выполнения асинхронных выражений на верхнем уровне при указании флага `PyCF_ALLOW_TOP_LEVEL_AWAIT`. Исправление от Batuhan Taskaya.
- [bpo-37207](https://python-all.ru/3/whatsnew/changelog.html): Ускорение вызовов `tuple()` за счёт использования соглашения о вызовах [**PEP 590**](https://python-all.ru/3/whatsnew/changelog.html)`vectorcall`. Исправление от Donghee Na.
- [bpo-38373](https://python-all.ru/3/whatsnew/changelog.html): Изменена стратегия предварительного выделения памяти для списков. Теперь дополнительное выделение не производится, если новый размер ближе к уже выделенному размеру, чем к старому, и добавляется выравнивание.
- [bpo-39926](https://python-all.ru/3/whatsnew/changelog.html): Обновление базы данных Unicode до версии 13.0.0.
- [bpo-19466](https://python-all.ru/3/whatsnew/changelog.html): Очистка фреймов потоков-демонов раньше во время завершения работы Python для вызова деструкторов объектов. В результате предупреждения о ресурсах «unclosed file» теперь выдаются для потоков-демонов более надёжным образом.
- [bpo-38894](https://python-all.ru/3/whatsnew/changelog.html): Исправление ошибки, которая приводила к неполным результатам при вызове `pathlib.Path.glob` при наличии символических ссылок, указывающих на файлы, на чтение которых у пользователя нет прав. Исправление от Pablo Galindo и Matt Wozniski.
- [bpo-39877](https://python-all.ru/3/whatsnew/changelog.html): Исправление случайного падения [`PyEval_RestoreThread()`](https://python-all.ru/3/c-api/threads.html#c.PyEval_RestoreThread) при завершении с потоками-демонами. Теперь он обращается к переменной `_PyRuntime` напрямую вместо использования `tstate->interp->runtime`, так как `tstate` может быть висячим указателем после вызова [`Py_Finalize()`](https://python-all.ru/3/c-api/interp-lifecycle.html#c.Py_Finalize). Кроме того, поток-демон теперь завершается до попытки захвата GIL.
- [bpo-39871](https://python-all.ru/3/whatsnew/changelog.html): Исправление возможного [`SystemError`](https://python-all.ru/3/library/exceptions.html#SystemError) в `math.{atan2,copysign,remainder}()`, когда первый аргумент не может быть преобразован в [`float`](https://python-all.ru/3/library/functions.html#float). Исправление от Zackery Spytz.
- [bpo-39776](https://python-all.ru/3/whatsnew/changelog.html): Исправление состояния гонки, при котором потоки, созданные PyGILState\_Ensure(), могли получить дублирующийся идентификатор.

  Это затрагивает потребителей tstate-\>id, такие как механизм кеширования contextvar, который мог возвращать недействительные кешированные объекты при высокой нагрузке потоков (наблюдалось во встраиваемых сценариях).
- [bpo-39778](https://python-all.ru/3/whatsnew/changelog.html): Исправление падения из-за некорректной обработки слабых ссылок в классах `collections.OrderedDict`. Исправление от Pablo Galindo.
- [bpo-1635741](https://python-all.ru/3/whatsnew/changelog.html): Перенос модуля расширения audioop на многофазную инициализацию ([**PEP 489**](https://python-all.ru/3/whatsnew/changelog.html)).
- [bpo-39702](https://python-all.ru/3/whatsnew/changelog.html): Ослабление грамматических ограничений для [декоратора](https://python-all.ru/3/glossary.html#term-decorator), чтобы разрешить любое допустимое выражение ([**PEP 614**](https://python-all.ru/3/whatsnew/changelog.html)).
- [bpo-38091](https://python-all.ru/3/whatsnew/changelog.html): Изменение кода обнаружения взаимоблокировок при импорте, чтобы он сам не вызывал взаимоблокировку.
- [bpo-1635741](https://python-all.ru/3/whatsnew/changelog.html): Перенос модуля расширения \_locale на многофазную инициализацию ([**PEP 489**](https://python-all.ru/3/whatsnew/changelog.html)).
- [bpo-39087](https://python-all.ru/3/whatsnew/changelog.html): Небольшая оптимизация [`PyUnicode_AsUTF8()`](https://python-all.ru/3/c-api/unicode.html#c.PyUnicode_AsUTF8) и [`PyUnicode_AsUTF8AndSize()`](https://python-all.ru/3/c-api/unicode.html#c.PyUnicode_AsUTF8AndSize), когда им необходимо создать внутренний UTF-8 кеш.
- [bpo-39520](https://python-all.ru/3/whatsnew/changelog.html): Исправление обратной обработки расширенных срезов без элементов (`foo[:,]`). Исправление от Batuhan Taskaya.
- [bpo-39220](https://python-all.ru/3/whatsnew/changelog.html): Не оптимизировать аннотации, если используется ‘from \_\_future\_\_ import annotations’. Исправление от Pablo Galindo.
- [bpo-35712](https://python-all.ru/3/whatsnew/changelog.html): Использование [`NotImplemented`](https://python-all.ru/3/library/constants.html#NotImplemented) в логическом контексте было признано устаревшим. Исправление от Josh Rosenberg.
- [bpo-22490](https://python-all.ru/3/whatsnew/changelog.html): Предотвращение утечки переменной окружения `__PYVENV_LAUNCHER__` в сессию интерпретатора на macOS.

### Библиотека

- [bpo-39830](https://python-all.ru/3/whatsnew/changelog.html): Добавлен [`zipfile.Path`](https://python-all.ru/3/library/zipfile.html#zipfile.Path) в `__all__` в модуле [`zipfile`](https://python-all.ru/3/library/zipfile.html#module-zipfile).
- [bpo-40000](https://python-all.ru/3/whatsnew/changelog.html): Улучшены сообщения об ошибках при проверке узлов `ast.Constant`. Исправление от Batuhan Taskaya.
- [bpo-39999](https://python-all.ru/3/whatsnew/changelog.html): Поле `__module__` классов узлов AST теперь установлено в «ast» вместо «\_ast». Добавлены докстринги для фиктивных классов узлов AST и устаревших атрибутов.
- [bpo-39991](https://python-all.ru/3/whatsnew/changelog.html): [`uuid.getnode()`](https://python-all.ru/3/library/uuid.html#uuid.getnode) теперь пропускает IPv6-адреса с той же длиной строки, что и MAC-адрес (17 символов): используются только MAC-адреса.
- [bpo-39988](https://python-all.ru/3/whatsnew/changelog.html): Объявлены устаревшими классы узлов `ast.AugLoad` и `ast.AugStore`, так как они больше не используются.
- [bpo-39656](https://python-all.ru/3/whatsnew/changelog.html): Обеспечено постоянное присутствие `bin/python3.#` в виртуальных окружениях на платформах POSIX – автор Anthony Sottile.
- [bpo-39969](https://python-all.ru/3/whatsnew/changelog.html): Объявлен устаревшим класс узлов `ast.Param`, так как он больше не используется. Исправление от Batuhan Taskaya.
- [bpo-39360](https://python-all.ru/3/whatsnew/changelog.html): Обеспечен выход всех рабочих процессов при неявном завершении `multiprocessing.Pool` через обработчики финализации модуля multiprocessing. Это устраняет взаимоблокировку, которая могла возникнуть, если Pool не был корректно завершён через контекстный менеджер или вызов `multiprocessing.Pool.terminate`. Исправление от Batuhan Taskaya и Pablo Galindo.
- [bpo-35370](https://python-all.ru/3/whatsnew/changelog.html): sys.settrace(), sys.setprofile() и \_lsprof.Profiler.enable() теперь правильно сообщают об ошибке [`PySys_Audit()`](https://python-all.ru/3/c-api/sys.html#c.PySys_Audit), если аудит-событие «sys.setprofile» или «sys.settrace» отклонено.
- [bpo-39936](https://python-all.ru/3/whatsnew/changelog.html): AIX: Исправлен модуль \_aix\_support, когда подпроцесс недоступен при сборке Python с нуля. Теперь используется новый приватный модуль \_bootsubprocess вместо двух реализаций в зависимости от доступности subprocess. Таким образом, результат \_aix\_support.aix\_platform() теперь одинаков вне зависимости от доступности subprocess.
- [bpo-36144](https://python-all.ru/3/whatsnew/changelog.html): [`collections.OrderedDict`](https://python-all.ru/3/library/collections.html#collections.OrderedDict) теперь реализует `|` и `|=` ([**PEP 584**](https://python-all.ru/3/whatsnew/changelog.html)).
- [bpo-39652](https://python-all.ru/3/whatsnew/changelog.html): Имя столбца, найденное в `sqlite3.Cursor.description`, теперь обрезается по первому символу ‘\[’ только если установлена опция PARSE\_COLNAMES.
- [bpo-39915](https://python-all.ru/3/whatsnew/changelog.html): Обеспечено, что [`unittest.mock.AsyncMock.await_args_list`](https://python-all.ru/3/library/unittest.mock.html#unittest.mock.AsyncMock.await_args_list) содержит объекты вызовов в порядке ожидаемых аргументов, а не использует [`unittest.mock.Mock.call_args`](https://python-all.ru/3/library/unittest.mock.html#unittest.mock.Mock.call_args), который содержит последнее значение вызова. Исправление от Karthikeyan Singaravelan.
- [bpo-36144](https://python-all.ru/3/whatsnew/changelog.html): Обновлены [`os.environ`](https://python-all.ru/3/library/os.html#os.environ) и [`os.environb`](https://python-all.ru/3/library/os.html#os.environb) для поддержки операторов слияния (`|`) и обновления (`|=`) из [**PEP 584**](https://python-all.ru/3/whatsnew/changelog.html).
- [bpo-38662](https://python-all.ru/3/whatsnew/changelog.html): Модуль `ensurepip` теперь вызывает `pip` через модуль `runpy`. Поэтому он больше не привязан к внутреннему программному интерфейсу встроенной версии `pip`, что упрощает обновление до более новой версии `pip` как в составе Python, так и для распространителей.
- [bpo-38075](https://python-all.ru/3/whatsnew/changelog.html): Исправлен метод [`random.Random.seed()`](https://python-all.ru/3/library/random.html#random.Random.seed), когда в качестве seed передаётся [`bool`](https://python-all.ru/3/library/functions.html#bool).
- [bpo-39916](https://python-all.ru/3/whatsnew/changelog.html): Более надёжное использование `os.scandir()` в `Path.glob()`. Больше не выдаётся ResourceWarning при прерывании.
- [bpo-39850](https://python-all.ru/3/whatsnew/changelog.html): [`multiprocessing`](https://python-all.ru/3/library/multiprocessing.html#module-multiprocessing) теперь поддерживает адреса абстрактных сокетов (если они поддерживаются на платформе). При создании произвольных адресов (например, при конструировании объектов [`multiprocessing.connection.Listener`](https://python-all.ru/3/library/multiprocessing.html#multiprocessing.connection.Listener) по умолчанию) предпочитаются абстрактные сокеты, чтобы избежать ситуации, когда сгенерированный временным файлом адрес оказывается слишком длинным для AF\_UNIX-сокета. Исправление от Pablo Galindo.
- [bpo-36287](https://python-all.ru/3/whatsnew/changelog.html): [`ast.dump()`](https://python-all.ru/3/library/ast.html#ast.dump) больше не выводит необязательные поля и атрибуты со значениями по умолчанию. Значения по умолчанию для необязательных полей и атрибутов узлов AST теперь задаются как атрибуты класса (например, `Constant.kind` установлено в `None`).
- [bpo-39889](https://python-all.ru/3/whatsnew/changelog.html): Исправлен [`ast.unparse()`](https://python-all.ru/3/library/ast.html#ast.unparse) для расширенных срезов, содержащих один элемент (например, `a[i:j,]`). Удалены избыточные кортежи при индексации кортежем (например, `a[i, j]`).
- [bpo-39828](https://python-all.ru/3/whatsnew/changelog.html): Исправлен [`json.tool`](https://python-all.ru/3/library/json.html#module-json.tool) для перехвата [`BrokenPipeError`](https://python-all.ru/3/library/exceptions.html#BrokenPipeError). Исправление от Donghee Na.
- [bpo-13487](https://python-all.ru/3/whatsnew/changelog.html): Предотвращена возможная ошибка *«RuntimeError: dictionary changed size during iteration»* в [`inspect.getmodule()`](https://python-all.ru/3/library/inspect.html#inspect.getmodule) при попытке обхода [`sys.modules`](https://python-all.ru/3/library/sys.html#sys.modules).
- [bpo-39674](https://python-all.ru/3/whatsnew/changelog.html): Откат изменения «[bpo-37330](https://python-all.ru/3/whatsnew/changelog.html): open() больше не принимает 'U' в режиме файла». Режим «U» в open() сохранён в Python 3.9 для упрощения перехода с Python 2.7, но будет удалён в Python 3.10.
- [bpo-28577](https://python-all.ru/3/whatsnew/changelog.html): Метод hosts для IPv4Networks с префиксом 32 бита и IPv6Networks с префиксом 128 бит теперь возвращает список, содержащий единственный адрес, вместо пустого списка.
- [bpo-39826](https://python-all.ru/3/whatsnew/changelog.html): В logging HTTPHandler добавлен метод getConnection для поддержки пользовательских соединений.
- [bpo-39763](https://python-all.ru/3/whatsnew/changelog.html): Функция `distutils.spawn.spawn` переписана с использованием модуля [`subprocess`](https://python-all.ru/3/library/subprocess.html#module-subprocess).
- [bpo-39794](https://python-all.ru/3/whatsnew/changelog.html): Добавлен параметр сборки –without-decimal-contextvar. Он включает поточный контекст вместо контекста корутины.
- [bpo-36144](https://python-all.ru/3/whatsnew/changelog.html): [`collections.defaultdict`](https://python-all.ru/3/library/collections.html#collections.defaultdict) теперь реализует `|` ([**PEP 584**](https://python-all.ru/3/whatsnew/changelog.html)).
- [bpo-39517](https://python-all.ru/3/whatsnew/changelog.html): Исправлен runpy.run\_path() при использовании pathlike-объектов
- [bpo-39775](https://python-all.ru/3/whatsnew/changelog.html): `inspect.Signature.parameters` изменён обратно на `collections.OrderedDict`. Ранее в Python 3.9.0a4 он был изменён на `dict`.
- [bpo-39678](https://python-all.ru/3/whatsnew/changelog.html): Проведён рефакторинг queue\_manager в [`concurrent.futures.ProcessPoolExecutor`](https://python-all.ru/3/library/concurrent.futures.html#concurrent.futures.ProcessPoolExecutor) для упрощения поддержки.
- [bpo-39764](https://python-all.ru/3/whatsnew/changelog.html): Исправление AttributeError при вызове get\_stack на объекте PyAsyncGenObject Задача
- [bpo-39769](https://python-all.ru/3/whatsnew/changelog.html): Параметр *ddir* функции [`compileall.compile_dir()`](https://python-all.ru/3/library/compileall.html#compileall.compile_dir) и флаг командной строки `-d` в compileall больше не записывают ошибочный путь в генерируемый pyc-файл для подмодулей, находящихся ниже корня компилируемого дерева каталогов. Это исправляет регрессию, появившуюся в Python 3.5.
- [bpo-36144](https://python-all.ru/3/whatsnew/changelog.html): Объекты [`types.MappingProxyType`](https://python-all.ru/3/library/types.html#types.MappingProxyType) теперь поддерживают оператор слияния (`|`) из [**PEP 584**](https://python-all.ru/3/whatsnew/changelog.html).
- [bpo-38691](https://python-all.ru/3/whatsnew/changelog.html): Модуль [`importlib`](https://python-all.ru/3/library/importlib.html#module-importlib) теперь игнорирует переменную окружения [`PYTHONCASEOK`](https://python-all.ru/3/using/cmdline.html#envvar-PYTHONCASEOK) при использовании опций командной строки [`-E`](https://python-all.ru/3/using/cmdline.html#cmdoption-E) или [`-I`](https://python-all.ru/3/using/cmdline.html#cmdoption-I).
- [bpo-39719](https://python-all.ru/3/whatsnew/changelog.html): Удалён `tempfile.SpooledTemporaryFile.softspace()`, поскольку файлы больше не имеют атрибута `softspace` в Python 3. Патч от Shantanu.
- [bpo-39667](https://python-all.ru/3/whatsnew/changelog.html): Улучшена совместимость pathlib.Path с zipfile.Path и исправлено снижение производительности, обнаруженное в zipp 3.0.
- [bpo-39638](https://python-all.ru/3/whatsnew/changelog.html): Сохранены сигнатуры ASDL в docstrings для узлов `AST`. Патч от Batuhan Taskaya
- [bpo-39639](https://python-all.ru/3/whatsnew/changelog.html): Устарел класс узла `ast.Suite`, так как он больше не используется. Патч от Batuhan Taskaya.
- [bpo-39609](https://python-all.ru/3/whatsnew/changelog.html): Добавлен thread\_name\_prefix в исполнитель asyncio по умолчанию
- [bpo-39548](https://python-all.ru/3/whatsnew/changelog.html): Исправлена обработка заголовка в [`urllib.request.AbstractDigestAuthHandler`](https://python-all.ru/3/library/urllib.request.html#urllib.request.AbstractDigestAuthHandler), когда необязательный параметр `qop` отсутствует.
- [bpo-39509](https://python-all.ru/3/whatsnew/changelog.html): Коды состояния HTTP `103 EARLY_HINTS` и `425 TOO_EARLY` добавлены в [`http.HTTPStatus`](https://python-all.ru/3/library/http.html#http.HTTPStatus). Патч от Donghee Na.
- [bpo-39507](https://python-all.ru/3/whatsnew/changelog.html): Добавление HTTP-статуса 418 «I’m a Teapot» в HTTPStatus в библиотеке http. Патч от Ross Rhodes.
- [bpo-39495](https://python-all.ru/3/whatsnew/changelog.html): Удалено значение по умолчанию из параметра *attrs* функции [`xml.etree.ElementTree.TreeBuilder.start()`](https://python-all.ru/3/library/xml.etree.elementtree.html#xml.etree.ElementTree.TreeBuilder.start) для согласованности между реализациями на Python и C.
- [bpo-38971](https://python-all.ru/3/whatsnew/changelog.html): Открытый вопрос в BPO указывал на желание привести реализацию codecs.open() к паритету с io.open(), которая реализует try/except, чтобы гарантировать закрытие файлового потока до того, как будет вызвано исключение.
- [bpo-38641](https://python-all.ru/3/whatsnew/changelog.html): Добавлена поддержка выражений со звёздочкой в операторы `return` и `yield` для `lib2to3`. Патч от Vlad Emelianov.
- [bpo-37534](https://python-all.ru/3/whatsnew/changelog.html): При использовании модуля minidom для генерации XML-документов добавлена возможность добавлять объявление самостоятельности документа (Standalone Document Declaration). Все изменения сделаны для генерации документа, соответствующего рекомендации W3C Extensible Markup Language (XML) 1.0 (Fifth Edition) (доступна здесь: [https://www.w3.org/TR/xml/#sec-prolog-dtd](https://python-all.ru/3/whatsnew/changelog.html)).
- [bpo-34788](https://python-all.ru/3/whatsnew/changelog.html): Добавлена поддержка областей IPv6-адресов (scoped IPv6 addresses) в [`ipaddress`](https://python-all.ru/3/library/ipaddress.html#module-ipaddress). Патч от Oleksandr Pavliuk.
- [bpo-34822](https://python-all.ru/3/whatsnew/changelog.html): Упрощён AST для операций индексирования. Простые индексы теперь представляются своим значением, расширенные срезы – кортежами. Классы [`ast`](https://python-all.ru/3/library/ast.html#module-ast), `Index` и `ExtSlice` считаются устаревшими и будут удалены в будущих версиях Python. Тем временем, `Index(value)` теперь возвращает сам `value`, а `ExtSlice(slices)` возвращает `Tuple(slices, Load())`.

### Документация

- [bpo-39868](https://python-all.ru/3/whatsnew/changelog.html): Обновлён Справочник по языку для [**PEP 572**](https://python-all.ru/3/whatsnew/changelog.html).
- [bpo-13790](https://python-all.ru/3/whatsnew/changelog.html): Изменено слово ‘string’ на ‘specification’ в документации по format.
- [bpo-17422](https://python-all.ru/3/whatsnew/changelog.html): Справочник по языку больше не ограничивает пространства имён классов по умолчанию только словарями.
- [bpo-39530](https://python-all.ru/3/whatsnew/changelog.html): Исправлена вводящая в заблуждение документация о сравнениях чисел разных типов.
- [bpo-39718](https://python-all.ru/3/whatsnew/changelog.html): Обновлена документация [`token`](https://python-all.ru/3/library/token.html#module-token), чтобы отразить дополнения в Python 3.8
- [bpo-39677](https://python-all.ru/3/whatsnew/changelog.html): Изменено имя операнда **MAKE\_FUNCTION** с *argc* на *flags* для модуля [`dis`](https://python-all.ru/3/library/dis.html#module-dis)

### Тесты

- [bpo-40019](https://python-all.ru/3/whatsnew/changelog.html): test\_gdb теперь пропускает тесты, если обнаруживает, что gdb не смог прочитать отладочную информацию, потому что бинарный файл Python оптимизирован.
- [bpo-27807](https://python-all.ru/3/whatsnew/changelog.html): `test_site.test_startup_imports()` теперь пропускается, если путь [`sys.path`](https://python-all.ru/3/library/sys.html#sys.path) содержит файл `.pth`.
- [bpo-26067](https://python-all.ru/3/whatsnew/changelog.html): Тесты test\_shutil и test\_chown больше не завершаются ошибкой, когда uid или gid пользователя не могут быть преобразованы в имя.
- [bpo-39855](https://python-all.ru/3/whatsnew/changelog.html): test\_subprocess.test\_user() теперь пропускает тест для имени пользователя, если это имя пользователя не существует. Например, тест пропускается, если пользователь «nobody» не существует в Linux.

### Сборка

- [bpo-39761](https://python-all.ru/3/whatsnew/changelog.html): Исправлена сборка с DTrace, но без дополнительных DFLAGS.
- [bpo-39763](https://python-all.ru/3/whatsnew/changelog.html): setup.py теперь использует базовую реализацию модуля [`subprocess`](https://python-all.ru/3/library/subprocess.html#module-subprocess), если модуль `subprocess` недоступен: перед сборкой необходимых расширений на C.
- [bpo-1294959](https://python-all.ru/3/whatsnew/changelog.html): Добавлена опция `--with-platlibdir` в скрипт configure: имя каталога библиотеки, специфичного для платформы, хранящееся в новом атрибуте [`sys.platlibdir`](https://python-all.ru/3/library/sys.html#sys.platlibdir). Оно используется для построения пути к расширениям, специфичным для платформы, и пути к стандартной библиотеке. На большинстве платформ оно равно `"lib"`. На Fedora и SuSE оно равно `"lib64"` на 64-битных платформах. Патч от Jan Matějek, Matěj Cepl, Charalampos Stratakis и Victor Stinner.

### Windows

- [bpo-39930](https://python-all.ru/3/whatsnew/changelog.html): Обеспечивает включение требуемого `vcruntime140.dll` в пакеты установки.
- [bpo-39847](https://python-all.ru/3/whatsnew/changelog.html): Предотвращает зависание при переходе компьютера в спящий режим во время ожидания мьютекса (для объектов, связанных с блокировками, из модуля [`threading`](https://python-all.ru/3/library/threading.html#module-threading)) при времени работы около 49 дней работы.
- [bpo-38597](https://python-all.ru/3/whatsnew/changelog.html): `distutils` больше не будет статически связывать `vcruntime140.dll`, когда версия для распространения недоступна. Все будущие выпуски CPython будут включать копию этой DLL, чтобы гарантировать, что распространяемые расширения могут продолжать загружаться.
- [bpo-38380](https://python-all.ru/3/whatsnew/changelog.html): Обновлены сборки Windows для использования SQLite 3.31.1
- [bpo-39789](https://python-all.ru/3/whatsnew/changelog.html): Обновлены машины для сборки релизов Windows до Visual Studio 2019 (MSVC 14.2).
- [bpo-34803](https://python-all.ru/3/whatsnew/changelog.html): Пакет для nuget.org теперь включает ссылку на репозиторий и встроенное изображение значка.

### macOS

- [bpo-38380](https://python-all.ru/3/whatsnew/changelog.html): Обновлены сборки macOS для использования SQLite 3.31.1

### IDLE

- [bpo-27115](https://python-all.ru/3/whatsnew/changelog.html): Для «Go to Line» используется подкласс Query box со стандартным поведением IDLE и улучшенной проверкой ошибок.
- [bpo-39885](https://python-all.ru/3/whatsnew/changelog.html): Поскольку щелчок для вызова контекстного меню IDLE перемещает курсор, любое выделение текста должно было и теперь очищается.
- [bpo-39852](https://python-all.ru/3/whatsnew/changelog.html): Команда «Go to line» теперь очищает любое выделение, предотвращая случайное удаление. Она также обновляет номера строки и столбца на строке состояния.
- [bpo-39781](https://python-all.ru/3/whatsnew/changelog.html): Выделение строк контекста кода больше не вызывает перехода.

### Tools/Demos

- [bpo-36184](https://python-all.ru/3/whatsnew/changelog.html): Портирован python-gdb.py на FreeBSD. python-gdb.py теперь проверяет имя функции «take\_gil», чтобы определить, пытается ли фрейм захватить GIL, вместо проверки «pthread\_cond\_timedwait», которая специфична для Linux и может относиться к другому условию, а не к GIL.
- [bpo-38080](https://python-all.ru/3/whatsnew/changelog.html): Добавлена поддержка исправления `getproxies` в модуле `lib2to3.fixes.fix_urllib`. Патч от José Roberto Meza Cabrera.

### C API

- [bpo-40024](https://python-all.ru/3/whatsnew/changelog.html): Добавлена вспомогательная функция [`PyModule_AddType()`](https://python-all.ru/3/c-api/module.html#c.PyModule_AddType): добавление типа в модуль. Патч от Donghee Na.
- [bpo-39946](https://python-all.ru/3/whatsnew/changelog.html): Удалён хук `_PyRuntime.getframe` и удалён макрос `_PyThreadState_GetFrame`, который был псевдонимом для `_PyRuntime.getframe`. Они были доступны только через внутренний C API. Также удалён тип `PyThreadFrameGetter`.
- [bpo-39947](https://python-all.ru/3/whatsnew/changelog.html): Добавлена функция [`PyThreadState_GetFrame()`](https://python-all.ru/3/c-api/threads.html#c.PyThreadState_GetFrame): получение текущего фрейма состояния потока Python.
- [bpo-37207](https://python-all.ru/3/whatsnew/changelog.html): Добавлена вспомогательная функция \_PyArg\_NoKwnames. Патч от Donghee Na.
- [bpo-39947](https://python-all.ru/3/whatsnew/changelog.html): Добавлен [`PyThreadState_GetInterpreter()`](https://python-all.ru/3/c-api/threads.html#c.PyThreadState_GetInterpreter): получение интерпретатора состояния потока Python.
- [bpo-39947](https://python-all.ru/3/whatsnew/changelog.html): Добавлена функция [`PyInterpreterState_Get()`](https://python-all.ru/3/c-api/subinterpreters.html#c.PyInterpreterState_Get) в ограниченный C API.
- [bpo-35370](https://python-all.ru/3/whatsnew/changelog.html): Если [`PySys_Audit()`](https://python-all.ru/3/c-api/sys.html#c.PySys_Audit) завершается ошибкой в [`PyEval_SetProfile()`](https://python-all.ru/3/c-api/profiling.html#c.PyEval_SetProfile) или [`PyEval_SetTrace()`](https://python-all.ru/3/c-api/profiling.html#c.PyEval_SetTrace), ошибка логируется как невыбрасываемое исключение.
- [bpo-39947](https://python-all.ru/3/whatsnew/changelog.html): Перемещены версии static inline функций Py\_EnterRecursiveCall() и Py\_LeaveRecursiveCall() во внутренний C API: они обращаются к атрибутам PyThreadState. Ограниченный C API предоставляет обычные функции, которые скрывают детали реализации.
- [bpo-39947](https://python-all.ru/3/whatsnew/changelog.html): Макросы Py\_TRASHCAN\_BEGIN\_CONDITION и Py\_TRASHCAN\_END больше не обращаются к атрибутам PyThreadState, а вызывают новые приватные функции \_PyTrash\_begin() и \_PyTrash\_end(), которые скрывают детали реализации.
- [bpo-39884](https://python-all.ru/3/whatsnew/changelog.html): [`PyDescr_NewMethod()`](https://python-all.ru/3/c-api/descriptor.html#c.PyDescr_NewMethod) и [`PyCFunction_NewEx()`](https://python-all.ru/3/c-api/structures.html#c.PyCFunction_NewEx) теперь включают имя метода в сообщение об ошибке SystemError «bad call flags» для упрощения отладки.
- [bpo-39877](https://python-all.ru/3/whatsnew/changelog.html): Устарели `PyEval_InitThreads()` и `PyEval_ThreadsInitialized()`. Вызов `PyEval_InitThreads()` теперь ничего не делает.
- [bpo-38249](https://python-all.ru/3/whatsnew/changelog.html): [`Py_UNREACHABLE`](https://python-all.ru/3/c-api/intro.html#c.Py_UNREACHABLE) теперь реализована с помощью `__builtin_unreachable()` и аналогов в режиме выпуска.
- [bpo-38643](https://python-all.ru/3/whatsnew/changelog.html): [`PyNumber_ToBase()`](https://python-all.ru/3/c-api/number.html#c.PyNumber_ToBase) теперь вызывает [`SystemError`](https://python-all.ru/3/library/exceptions.html#SystemError) вместо аварийного завершения при вызове с недопустимым основанием.
- [bpo-39882](https://python-all.ru/3/whatsnew/changelog.html): Функция [`Py_FatalError()`](https://python-all.ru/3/c-api/sys.html#c.Py_FatalError) заменена на макрос, который автоматически записывает имя текущей функции, если не определён макрос `Py_LIMITED_API`.
- [bpo-39824](https://python-all.ru/3/whatsnew/changelog.html): Функции расширений модулей: [`m_traverse`](https://python-all.ru/3/c-api/module.html#c.PyModuleDef.m_traverse), [`m_clear`](https://python-all.ru/3/c-api/module.html#c.PyModuleDef.m_clear) и [`m_free`](https://python-all.ru/3/c-api/module.html#c.PyModuleDef.m_free) из [`PyModuleDef`](https://python-all.ru/3/c-api/module.html#c.PyModuleDef) больше не вызываются, если было запрошено состояние модуля, но оно ещё не выделено. Это происходит сразу после создания модуля и до его выполнения (функция [`Py_mod_exec`](https://python-all.ru/3/c-api/module.html#c.Py_mod_exec)). Точнее, эти функции не вызываются, если [`m_size`](https://python-all.ru/3/c-api/module.html#c.PyModuleDef.m_size) больше 0, а состояние модуля (возвращаемое [`PyModule_GetState()`](https://python-all.ru/3/c-api/module.html#c.PyModule_GetState)) равно `NULL`.

  Модули расширения без состояния модуля (`m_size <= 0`) не затрагиваются.
- [bpo-38913](https://python-all.ru/3/whatsnew/changelog.html): Исправлен segfault в `Py_BuildValue()` при вызове с форматом, содержащим «#», и неопределённом PY\_SSIZE\_T\_CLEAN, когда установлено исключение.
- [bpo-38500](https://python-all.ru/3/whatsnew/changelog.html): Добавлен частный API для получения и установки функции оценки фрейма: добавлены C-функции [`_PyInterpreterState_GetEvalFrameFunc()`](https://python-all.ru/3/c-api/subinterpreters.html#c._PyInterpreterState_GetEvalFrameFunc) и [`_PyInterpreterState_SetEvalFrameFunc()`](https://python-all.ru/3/c-api/subinterpreters.html#c._PyInterpreterState_SetEvalFrameFunc). Тип функции [`_PyFrameEvalFunction`](https://python-all.ru/3/c-api/subinterpreters.html#c._PyFrameEvalFunction) теперь принимает параметр *tstate*.

## Python 3.9.0 alpha 4

*Дата выпуска: 2020-02-25*

### Безопасность

- [bpo-39184](https://python-all.ru/3/whatsnew/changelog.html): Добавлены события аудита для функций в `fcntl`, `msvcrt`, `os`, `resource`, `shutil`, `signal` и `syslog`.
- [bpo-39401](https://python-all.ru/3/whatsnew/changelog.html): Предотвращение небезопасной загрузки DLL при запуске на Windows 7 и более ранних версиях.
- [bpo-39184](https://python-all.ru/3/whatsnew/changelog.html): Добавлены события аудита для функций выполнения команд в модулях os и pty.

### Ядро и встроенные модули

- [bpo-39382](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка use-after-free в пути одиночного наследования `issubclass()`, когда `__bases__` объекта имеет одну ссылку, и то же самое для его первого элемента. Патч от Yonatan Goldschmidt.
- [bpo-39573](https://python-all.ru/3/whatsnew/changelog.html): Обновлена утилита clinic для использования [`Py_IS_TYPE()`](https://python-all.ru/3/c-api/structures.html#c.Py_IS_TYPE). Патч от Donghee Na.
- [bpo-39619](https://python-all.ru/3/whatsnew/changelog.html): Включена поддержка [`os.chroot()`](https://python-all.ru/3/library/os.html#os.chroot) в системах HP-UX.
- [bpo-39573](https://python-all.ru/3/whatsnew/changelog.html): Добавлена статическая встроенная функция [`Py_IS_TYPE()`](https://python-all.ru/3/c-api/structures.html#c.Py_IS_TYPE) для проверки, является ли тип объекта *o* *type*.
- [bpo-39606](https://python-all.ru/3/whatsnew/changelog.html): Исправлена регрессия, вызванная исправлением для [bpo-39386](https://python-all.ru/3/whatsnew/changelog.html), которая не позволяла вызвать `aclose` для асинхронного генератора, который уже был закрыт или исчерпан.
- [bpo-39579](https://python-all.ru/3/whatsnew/changelog.html): Изменено конечное смещение колонки узлов `Attribute`, создаваемых в `ast_for_dotted_name`, чтобы оно указывало на конец текущего узла, а не на конец последнего узла `NAME`.
- [bpo-1635741](https://python-all.ru/3/whatsnew/changelog.html): Перенос модуля расширения \_crypt на многофазную инициализацию ([**PEP 489**](https://python-all.ru/3/whatsnew/changelog.html)).
- [bpo-1635741](https://python-all.ru/3/whatsnew/changelog.html): Перенос модуля расширения \_contextvars на многофазную инициализацию ([**PEP 489**](https://python-all.ru/3/whatsnew/changelog.html)).
- [bpo-39510](https://python-all.ru/3/whatsnew/changelog.html): Исправлен segfault в методе `readinto()` на закрытом BufferedReader.
- [bpo-39502](https://python-all.ru/3/whatsnew/changelog.html): Исправлена [`time.localtime()`](https://python-all.ru/3/library/time.html#time.localtime) на 64-разрядной AIX для поддержки лет до 1902 и после 2038. Патч от M Felt.
- [bpo-39492](https://python-all.ru/3/whatsnew/changelog.html): Исправлен цикл ссылок в C Pickler, который препятствовал сборке мусора удалённых, сериализованных объектов.
- [bpo-39453](https://python-all.ru/3/whatsnew/changelog.html): Исправлена возможная аварийная остановка в `list.__contains__()`, когда список изменяется во время сравнения элементов. Патч от Donghee Na.
- [bpo-39434](https://python-all.ru/3/whatsnew/changelog.html): [Целочисленное деление](https://python-all.ru/3/glossary.html#term-floor-division) для операции с плавающей точкой теперь работает быстрее. Также обновлено сообщение [`ZeroDivisionError`](https://python-all.ru/3/library/exceptions.html#ZeroDivisionError) для этой операции. Патч от Donghee Na.
- [bpo-1635741](https://python-all.ru/3/whatsnew/changelog.html): Перенос модуля расширения \_codecs на многофазную инициализацию ([**PEP 489**](https://python-all.ru/3/whatsnew/changelog.html)).
- [bpo-1635741](https://python-all.ru/3/whatsnew/changelog.html): Перенос модуля расширения \_bz2 на многофазную инициализацию ([**PEP 489**](https://python-all.ru/3/whatsnew/changelog.html)).
- [bpo-1635741](https://python-all.ru/3/whatsnew/changelog.html): Перенос модуля расширения \_abc на многофазную инициализацию ([**PEP 489**](https://python-all.ru/3/whatsnew/changelog.html)).
- [bpo-39320](https://python-all.ru/3/whatsnew/changelog.html): Два сложных байт-кода для построения словарей заменены на два более простых. Добавлены новые байт-коды `DICT_MERGE` и `DICT_UPDATE`. Удалены старые байт-коды `BUILD_MAP_UNPACK` и `BUILD_MAP_UNPACK_WITH_CALL`.
- [bpo-39219](https://python-all.ru/3/whatsnew/changelog.html): Синтаксические ошибки, возникающие в токенизаторе, теперь всегда устанавливают правильные атрибуты «text» и «offset».
- [bpo-36051](https://python-all.ru/3/whatsnew/changelog.html): Снятие GIL во время больших операций `bytes.join`. Патч от Bruce Merry.
- [bpo-38960](https://python-all.ru/3/whatsnew/changelog.html): Исправлены проблемы сборки DTrace на FreeBSD. Исправление от Дэвида Карлье.
- [bpo-37207](https://python-all.ru/3/whatsnew/changelog.html): Ускорены вызовы `range()` примерно на 30% за счёт использования соглашения о вызовах `vectorcall` из PEP 590. Исправление от Марка Шеннона.
- [bpo-36144](https://python-all.ru/3/whatsnew/changelog.html): Объекты [`dict`](https://python-all.ru/3/library/stdtypes.html#dict) (и [`collections.UserDict`](https://python-all.ru/3/library/collections.html#collections.UserDict)) теперь поддерживают операторы слияния (`|`) и обновления (`|=`) из PEP 584. Исправление от Брандта Бухера.
- [bpo-32856](https://python-all.ru/3/whatsnew/changelog.html): Оптимизирован идиоматический способ присваивания временной переменной в генераторах. Теперь `for y in [expr]` в генераторах работает так же быстро, как простое присваивание `y = expr`.

### Библиотека

- [bpo-30566](https://python-all.ru/3/whatsnew/changelog.html): Исправлена [`IndexError`](https://python-all.ru/3/library/exceptions.html#IndexError) при попытке декодировать недопустимую строку с помощью кодека punycode.
- [bpo-39649](https://python-all.ru/3/whatsnew/changelog.html): Удалена устаревшая проверка `__args__` в `bdb.Bdb.format_stack_entry`.
- [bpo-39648](https://python-all.ru/3/whatsnew/changelog.html): Расширены [`math.gcd()`](https://python-all.ru/3/library/math.html#math.gcd) и [`math.lcm()`](https://python-all.ru/3/library/math.html#math.lcm) для обработки нескольких аргументов.
- [bpo-39681](https://python-all.ru/3/whatsnew/changelog.html): Исправлен регресс, при котором C-модуль pickle не позволял десериализовать данные из файлоподобного объекта, не поддерживающего метод readinto().
- [bpo-35950](https://python-all.ru/3/whatsnew/changelog.html): Вызывать [`io.UnsupportedOperation`](https://python-all.ru/3/library/io.html#io.UnsupportedOperation) в `io.BufferedReader.truncate()` при вызове на экземпляре [`io.BufferedReader`](https://python-all.ru/3/library/io.html#io.BufferedReader), доступном только для чтения.
- [bpo-39479](https://python-all.ru/3/whatsnew/changelog.html): Добавлена функция [`math.lcm()`](https://python-all.ru/3/library/math.html#math.lcm): наименьшее общее кратное.
- [bpo-39674](https://python-all.ru/3/whatsnew/changelog.html): Откат изменения «Не раскрывать абстрактные классы коллекций в модуле collections» ([bpo-25988](https://python-all.ru/3/whatsnew/changelog.html)). Псевдонимы для ABC, такие как collections.Mapping, сохраняются в Python 3.9 для облегчения перехода с Python 2.7, но будут удалены в Python 3.10.
- [bpo-39104](https://python-all.ru/3/whatsnew/changelog.html): Исправлено зависание ProcessPoolExecutor на `shutdown(wait=False)`, когда задача не смогла сериализоваться.
- [bpo-39627](https://python-all.ru/3/whatsnew/changelog.html): Исправлена проверка полноты TypedDict для унаследованных ключей.
- [bpo-39474](https://python-all.ru/3/whatsnew/changelog.html): Исправлена начальная позиция AST для выражений, таких как `(a)(b)`, `(a)[b]` и `(a).b`.
- [bpo-21016](https://python-all.ru/3/whatsnew/changelog.html): Модули [`pydoc`](https://python-all.ru/3/library/pydoc.html#module-pydoc) и [`trace`](https://python-all.ru/3/library/trace.html#module-trace) теперь используют модуль [`sysconfig`](https://python-all.ru/3/library/sysconfig.html#module-sysconfig) для получения пути к стандартной библиотеке Python, чтобы поддерживать нестандартные пути установки, такие как `/usr/lib64/python3.9/` на Fedora. Исправление от Яна Матейека.
- [bpo-39590](https://python-all.ru/3/whatsnew/changelog.html): Collections.deque теперь хранит сильные ссылки во время deque.\_\_contains\_\_ и deque.count, что устраняет сбои.
- [bpo-39586](https://python-all.ru/3/whatsnew/changelog.html): Команда distutils `bdist_msi` устарела в Python 3.9, вместо неё используйте `bdist_wheel` (пакеты wheel).
- [bpo-39595](https://python-all.ru/3/whatsnew/changelog.html): Повышена производительность zipfile.Path для файлов с большим количеством записей. Также улучшена производительность и исправлена небольшая проблема, как описано в [importlib\_metadata 1.5](https://python-all.ru/3/whatsnew/changelog.html).
- [bpo-39350](https://python-all.ru/3/whatsnew/changelog.html): Исправлен регресс в [`fractions.Fraction`](https://python-all.ru/3/library/fractions.html#fractions.Fraction), если числитель и/или знаменатель является подклассом [`int`](https://python-all.ru/3/library/functions.html#int). Теперь для нормализации *числителя* и *знаменателя* используется функция [`math.gcd()`](https://python-all.ru/3/library/math.html#math.gcd). `math.gcd()` всегда возвращает тип `int`. Ранее тип НОД зависел от *числителя* и *знаменателя*.
- [bpo-39567](https://python-all.ru/3/whatsnew/changelog.html): Добавлен аудит для [`os.walk()`](https://python-all.ru/3/library/os.html#os.walk), [`os.fwalk()`](https://python-all.ru/3/library/os.html#os.fwalk), [`pathlib.Path.glob()`](https://python-all.ru/3/library/pathlib.html#pathlib.Path.glob) и [`pathlib.Path.rglob()`](https://python-all.ru/3/library/pathlib.html#pathlib.Path.rglob).
- [bpo-39559](https://python-all.ru/3/whatsnew/changelog.html): Удалён неиспользуемый, недокументированный аргумент `getters` из [`uuid.getnode()`](https://python-all.ru/3/library/uuid.html#uuid.getnode)
- [bpo-38149](https://python-all.ru/3/whatsnew/changelog.html): [`sys.audit()`](https://python-all.ru/3/library/sys.html#sys.audit) теперь вызывается только один раз за вызов [`glob.glob()`](https://python-all.ru/3/library/glob.html#glob.glob) и [`glob.iglob()`](https://python-all.ru/3/library/glob.html#glob.iglob).
- [bpo-39546](https://python-all.ru/3/whatsnew/changelog.html): Исправлен регресс в [`ArgumentParser`](https://python-all.ru/3/library/argparse.html#argparse.ArgumentParser), когда `allow_abbrev=False` игнорировался для длинных опций, использующих префикс, отличный от «-».
- [bpo-39450](https://python-all.ru/3/whatsnew/changelog.html): Удаляются пробельные символы из docstring перед возвратом его из `unittest.case.shortDescription()`.
- [bpo-12915](https://python-all.ru/3/whatsnew/changelog.html): В модуль `pkgutil` добавлена новая функция `resolve_name`. Она преобразует строку вида `'a.b.c.d'` или `'a.b:c.d'` в объект. В примере `a.b` – это пакет/модуль, а `c.d` – объект внутри этого пакета/модуля, доступный через рекурсивный доступ к атрибутам.
- [bpo-39353](https://python-all.ru/3/whatsnew/changelog.html): Функция [`binascii.crc_hqx()`](https://python-all.ru/3/library/binascii.html#binascii.crc_hqx) больше не является устаревшей.
- [bpo-39493](https://python-all.ru/3/whatsnew/changelog.html): Отметить `typing.IO.closed` как свойство
- [bpo-39491](https://python-all.ru/3/whatsnew/changelog.html): Добавлены параметры [`typing.Annotated`](https://python-all.ru/3/library/typing.html#typing.Annotated) и `include_extras` в [`typing.get_type_hints()`](https://python-all.ru/3/library/typing.html#typing.get_type_hints) в рамках [**PEP 593**](https://python-all.ru/3/whatsnew/changelog.html). Исправление от Тиля Вароко, документация от Тиля Вароко и Константина Кашина.
- [bpo-39485](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка в [`unittest.mock.create_autospec()`](https://python-all.ru/3/library/unittest.mock.html#unittest.mock.create_autospec), которая вызывала сообщение о неверном количестве аргументов для пользовательских дескрипторов, определённых в модуле расширения, возвращающих функции.
- [bpo-38932](https://python-all.ru/3/whatsnew/changelog.html): Mock полностью сбрасывает дочерние объекты при reset\_mock(). Исправление от Вегарда Стикбакке
- [bpo-39082](https://python-all.ru/3/whatsnew/changelog.html): Разрешить AsyncMock корректно патчить статические и классовые методы
- [bpo-39432](https://python-all.ru/3/whatsnew/changelog.html): реализован алгоритм PEP-489 для не-ASCII имён символов "PyInit\_…" в distutils, чтобы он экспортировал правильный init-символ и в Windows.
- [bpo-18819](https://python-all.ru/3/whatsnew/changelog.html): опущены поля `devmajor` и `devminor` для файлов не-устройств в архивах [`tarfile`](https://python-all.ru/3/library/tarfile.html#module-tarfile), что обеспечивает побитовую совместимость с GNU `tar(1)`.
- [bpo-39349](https://python-all.ru/3/whatsnew/changelog.html): добавлен новый параметр *cancel\_futures* в [`concurrent.futures.Executor.shutdown()`](https://python-all.ru/3/library/concurrent.futures.html#concurrent.futures.Executor.shutdown), который отменяет все ожидающие future (которые ещё не начали выполняться) вместо того, чтобы ждать их завершения перед остановкой исполнителя.
- [bpo-39274](https://python-all.ru/3/whatsnew/changelog.html): `bool(fraction.Fraction)` теперь возвращает булево значение даже если (numerator != 0) не возвращает булево значение (например, число из numpy).
- [bpo-34793](https://python-all.ru/3/whatsnew/changelog.html): удалена поддержка `with (await asyncio.lock):` и `with (yield from asyncio.lock):`. То же самое верно для `asyncio.Condition` и `asyncio.Semaphore`.
- [bpo-25597](https://python-all.ru/3/whatsnew/changelog.html): обеспечено, что если `wraps` передан в [`unittest.mock.MagicMock`](https://python-all.ru/3/library/unittest.mock.html#unittest.mock.MagicMock), он используется для вычисления возвращаемых значений магических методов вместо использования значений по умолчанию. Патч от Karthikeyan Singaravelan.
- [bpo-36350](https://python-all.ru/3/whatsnew/changelog.html): `inspect.Signature.parameters` и `inspect.BoundArguments.arguments` теперь являются словарями вместо упорядоченных словарей. Патч предоставлен Rémi Lapeyre.
- [bpo-35727](https://python-all.ru/3/whatsnew/changelog.html): исправлена передача кода завершения sys.exit() и sys.exit(None) при использовании в multiprocessing.Process.
- [bpo-32173](https://python-all.ru/3/whatsnew/changelog.html): \* Добавлена функция `lazycache` в `__all__`. \* Использование `dict.clear` для очистки кэша. \* Рефакторинг функций `getline` и `checkcache`.

### Документация

- [bpo-17422](https://python-all.ru/3/whatsnew/changelog.html): в справочнике по языку теперь указаны ограничения на пространства имён классов. Адаптировано из патча от Ethan Furman.
- [bpo-39572](https://python-all.ru/3/whatsnew/changelog.html): обновлена документация флага `total` для `TypedDict`.
- [bpo-39654](https://python-all.ru/3/whatsnew/changelog.html): в документации pyclbr заменено 'class' на 'module' где необходимо, и добавлен комментарий readmodule. Патч от Hakan Çelik.
- [bpo-39153](https://python-all.ru/3/whatsnew/changelog.html): уточнена семантика подсчёта ссылок для следующих функций: - PyObject\_SetItem - PyMapping\_SetItemString - PyDict\_SetItem - PyDict\_SetItemString
- [bpo-39392](https://python-all.ru/3/whatsnew/changelog.html): поясняется, что при заливке с помощью turtle области перекрытия могут остаться незаполненными.
- [bpo-39369](https://python-all.ru/3/whatsnew/changelog.html): обновлено описание метода readline модуля mmap. Факт того, что readline обновляет позицию в файле, не следует игнорировать, так как это может создать у программиста впечатление, что она её не обновляет.
- [bpo-9056](https://python-all.ru/3/whatsnew/changelog.html): включить подраздел в оглавление для PDF-версии документации.

### Тесты

- [bpo-38325](https://python-all.ru/3/whatsnew/changelog.html): пропускать тесты на символы вне BMP в test\_winconsoleio.
- [bpo-39502](https://python-all.ru/3/whatsnew/changelog.html): пропускать test\_zipfile.test\_add\_file\_after\_2107() если [`time.localtime()`](https://python-all.ru/3/library/time.html#time.localtime) завершается с [`OverflowError`](https://python-all.ru/3/library/exceptions.html#OverflowError). Например, это происходит на AIX 6.1.

### Сборка

- [bpo-39489](https://python-all.ru/3/whatsnew/changelog.html): удалена специальная сборка `COUNT_ALLOCS`.

### Windows

- [bpo-39553](https://python-all.ru/3/whatsnew/changelog.html): удалён неиспользуемый код, связанный с манифестами SxS.
- [bpo-39439](https://python-all.ru/3/whatsnew/changelog.html): учитывать путь Python, когда активна виртуальная среда (virtualenv) на Windows.
- [bpo-39393](https://python-all.ru/3/whatsnew/changelog.html): улучшено сообщение об ошибке при попытке загрузки DLL с неразрешёнными зависимостями.
- [bpo-38883](https://python-all.ru/3/whatsnew/changelog.html): [`home()`](https://python-all.ru/3/library/pathlib.html#pathlib.Path.home) и [`expanduser()`](https://python-all.ru/3/library/pathlib.html#pathlib.Path.expanduser) на Windows теперь предпочитают `USERPROFILE` и больше не используют `HOME`, который обычно не задан для обычных учётных записей. Это снова делает их поведение похожим на [`os.path.expanduser()`](https://python-all.ru/3/library/os.path.html#os.path.expanduser), который был изменён для игнорирования `HOME` в 3.8, см. [bpo-36264](https://python-all.ru/3/whatsnew/changelog.html).
- [bpo-39185](https://python-all.ru/3/whatsnew/changelog.html): скрипт build.bat получил дополнительные опции для очень тихого вывода (-q) и очень подробного вывода (-vv)

### IDLE

- [bpo-39663](https://python-all.ru/3/whatsnew/changelog.html): добавлены тесты для pyparse find\_good\_parse\_start().
- [bpo-39600](https://python-all.ru/3/whatsnew/changelog.html): в окне настройки шрифта удалены повторяющиеся названия шрифтов.
- [bpo-30780](https://python-all.ru/3/whatsnew/changelog.html): добавлены оставшиеся тесты configdialog для вкладок кнопок, подсветки и клавиш.
- [bpo-39388](https://python-all.ru/3/whatsnew/changelog.html): Кнопка «Отмена» в настройках IDLE теперь отменяет ожидающие изменения
- [bpo-38792](https://python-all.ru/3/whatsnew/changelog.html): Закрывать подсказку вызова в оболочке IDLE, если происходит [`KeyboardInterrupt`](https://python-all.ru/3/library/exceptions.html#KeyboardInterrupt) или перезапуск оболочки. Исправление от Zackery Spytz.

### C API

- [bpo-35081](https://python-all.ru/3/whatsnew/changelog.html): Перенести заголовочный файл `bytes_methods.h` во внутренний C API как `pycore_bytes_methods.h`: он содержит только приватные символы (с префиксом `_Py`), за исключением макроса `PyDoc_STRVAR_shared()`.
- [bpo-35081](https://python-all.ru/3/whatsnew/changelog.html): Перенести заголовочный файл `dtoa.h` во внутренний C API как `pycore_dtoa.h`: он содержит только приватные функции (с префиксом `_Py`). Модули [`math`](https://python-all.ru/3/library/math.html#module-math) и [`cmath`](https://python-all.ru/3/library/cmath.html#module-cmath) теперь должны компилироваться с определённым макросом `Py_BUILD_CORE`.
- [bpo-39573](https://python-all.ru/3/whatsnew/changelog.html): Добавить функцию [`Py_SET_SIZE()`](https://python-all.ru/3/c-api/structures.html#c.Py_SET_SIZE) для установки размера объекта.
- [bpo-39500](https://python-all.ru/3/whatsnew/changelog.html): [`PyUnicode_IsIdentifier()`](https://python-all.ru/3/c-api/unicode.html#c.PyUnicode_IsIdentifier) больше не вызывает [`Py_FatalError()`](https://python-all.ru/3/c-api/sys.html#c.Py_FatalError), если строка не готова.
- [bpo-39573](https://python-all.ru/3/whatsnew/changelog.html): Добавить функцию [`Py_SET_TYPE()`](https://python-all.ru/3/c-api/structures.html#c.Py_SET_TYPE) для установки типа объекта.
- [bpo-39573](https://python-all.ru/3/whatsnew/changelog.html): Добавить функцию [`Py_SET_REFCNT()`](https://python-all.ru/3/c-api/refcounting.html#c.Py_SET_REFCNT) для установки счётчика ссылок объекта.
- [bpo-39542](https://python-all.ru/3/whatsnew/changelog.html): Преобразовать макросы [`PyType_HasFeature()`](https://python-all.ru/3/c-api/type.html#c.PyType_HasFeature), [`PyType_Check()`](https://python-all.ru/3/c-api/type.html#c.PyType_Check) и [`PyType_CheckExact()`](https://python-all.ru/3/c-api/type.html#c.PyType_CheckExact) в статические встроенные функции.
- [bpo-39542](https://python-all.ru/3/whatsnew/changelog.html): В ограниченном C API `PyObject_INIT()` и `PyObject_INIT_VAR()` теперь определены как псевдонимы к [`PyObject_Init()`](https://python-all.ru/3/c-api/allocation.html#c.PyObject_Init) и [`PyObject_InitVar()`](https://python-all.ru/3/c-api/allocation.html#c.PyObject_InitVar), чтобы сделать их реализацию непрозрачной. Это предотвращает утечку деталей реализации в ограниченном C API. Исключить следующие функции из ограниченного C API: `_Py_NewReference()`, `_Py_ForgetReference()`, `_PyTraceMalloc_NewReference()` и `_Py_GetRefTotal()`.
- [bpo-39542](https://python-all.ru/3/whatsnew/changelog.html): Исключить механизм trashcan из ограниченного C API: он требует доступа к полям структур PyTypeObject и PyThreadState, тогда как эти структуры являются непрозрачными в ограниченном C API.
- [bpo-39511](https://python-all.ru/3/whatsnew/changelog.html): Функция [`PyThreadState_Clear()`](https://python-all.ru/3/c-api/threads.html#c.PyThreadState_Clear) теперь вызывает колбэк `PyThreadState.on_delete`. Ранее это происходило в [`PyThreadState_Delete()`](https://python-all.ru/3/c-api/threads.html#c.PyThreadState_Delete).
- [bpo-38076](https://python-all.ru/3/whatsnew/changelog.html): Исправление: очищать состояние интерпретатора только после очистки глобальных переменных модуля. Это гарантирует доступ к состоянию модуля из C-расширений при завершении выполнения.
- [bpo-39245](https://python-all.ru/3/whatsnew/changelog.html): API Vectorcall (PEP 590) было сделано публичным, добавлены функции `PyObject_Vectorcall`, `PyObject_VectorcallMethod`, `PyVectorcall_Function`, `PyObject_CallOneArg`, `PyObject_CallMethodNoArgs`, `PyObject_CallMethodOneArg`, `PyObject_FastCallDict` и флаг `Py_TPFLAGS_HAVE_VECTORCALL`.

## Python 3.9.0 alpha 3

*Дата выпуска: 2020-01-24*

### Ядро и встроенные модули

- [bpo-39427](https://python-all.ru/3/whatsnew/changelog.html): Описать все возможности для опции `-X` в разделе справки командной строки. Исправление от Pablo Galindo.
- [bpo-39421](https://python-all.ru/3/whatsnew/changelog.html): Исправление возможных сбоев при работе с функциями модуля [`heapq`](https://python-all.ru/3/library/heapq.html#module-heapq) и пользовательскими операторами сравнения.
- [bpo-39386](https://python-all.ru/3/whatsnew/changelog.html): Предотвращение двойного ожидания асинхронного итератора.
- [bpo-17005](https://python-all.ru/3/whatsnew/changelog.html): Добавить `functools.TopologicalSorter` в модуль [`functools`](https://python-all.ru/3/library/functools.html#module-functools) для предоставления функциональности топологической сортировки графов. Исправление от Pablo Galindo, Tim Peters и Larry Hastings.
- [bpo-39320](https://python-all.ru/3/whatsnew/changelog.html): Заменить четыре сложных байткода для построения последовательностей на три более простых.

  Следующие четыре байткода были удалены:

  - BUILD\_LIST\_UNPACK
  - BUILD\_TUPLE\_UNPACK
  - BUILD\_SET\_UNPACK
  - BUILD\_TUPLE\_UNPACK\_WITH\_CALL

  Следующие три байткода были добавлены:

  - LIST\_TO\_TUPLE
  - LIST\_EXTEND
  - SET\_UPDATE
- [bpo-39336](https://python-all.ru/3/whatsnew/changelog.html): Загрузчики импорта, которые публикуют неизменяемые объекты модулей, теперь могут публиковать неизменяемые пакеты, а не только отдельные модули.
- [bpo-39322](https://python-all.ru/3/whatsnew/changelog.html): Добавлена новая функция [`gc.is_finalized()`](https://python-all.ru/3/library/gc.html#gc.is_finalized) для проверки того, был ли объект завершён сборщиком мусора. Исправление от Pablo Galindo.
- [bpo-39048](https://python-all.ru/3/whatsnew/changelog.html): Улучшено отображаемое сообщение об ошибке при передаче некорректных типов в операторы `async with`: при входе в асинхронный менеджер контекста теперь сначала проверяется специальный метод `__aenter__()`, а затем `__aexit__()`. Исправление от Géry Ogam.
- [bpo-39235](https://python-all.ru/3/whatsnew/changelog.html): Исправлена конечная позиция в AST для одиночного выражения-генератора в вызове функции, например f(i for i in a).
- [bpo-39209](https://python-all.ru/3/whatsnew/changelog.html): Исправлена обработка многострочных токенов в интерактивном режиме. Исправление от Pablo Galindo.
- [bpo-1635741](https://python-all.ru/3/whatsnew/changelog.html): Модуль расширения \_json портирован на многофазную инициализацию ([**PEP 489**](https://python-all.ru/3/whatsnew/changelog.html)).
- [bpo-39216](https://python-all.ru/3/whatsnew/changelog.html): Исправлена оптимизация свёртки констант для позиционных аргументов (только позиционные) – Anthony Sottile.
- [bpo-39215](https://python-all.ru/3/whatsnew/changelog.html): Исправлено `SystemError`, когда во вложенной функции есть аннотация для позиционного аргумента – Anthony Sottile.
- [bpo-39200](https://python-all.ru/3/whatsnew/changelog.html): Исправлено сообщение об ошибке при вызове [`min()`](https://python-all.ru/3/library/functions.html#min) или [`max()`](https://python-all.ru/3/library/functions.html#max) без аргументов. Исправление от Donghee Na.
- [bpo-39200](https://python-all.ru/3/whatsnew/changelog.html): Исправлено сообщение об ошибке при попытке создания объектов [`range`](https://python-all.ru/3/library/stdtypes.html#range) без аргументов. Исправление от Pablo Galindo.
- [bpo-39166](https://python-all.ru/3/whatsnew/changelog.html): Исправлена некорректная регистрация выполнения строк в функциях трассировки при трассировке последней итерации асинхронных циклов for. Исправление от Pablo Galindo.
- [bpo-39114](https://python-all.ru/3/whatsnew/changelog.html): Исправлена некорректная регистрация выполнения строк в функциях трассировки при трассировке обработчиков исключений с привязкой имени. Исправление от Pablo Galindo.
- [bpo-39156](https://python-all.ru/3/whatsnew/changelog.html): Инструкция байт-кода COMPARE\_OP разделена на четыре отдельных инструкции.

  - COMPARE\_OP для расширенных сравнений
  - IS\_OP для проверок 'is' и 'is not'
  - CONTAINS\_OP для проверок 'in' и 'not in'
  - JUMP\_IF\_NOT\_EXC\_MATCH для проверки исключений в конструкциях 'try-except'.

  Это улучшает читаемость кода интерпретатора и должно дать небольшой прирост производительности.
- [bpo-38588](https://python-all.ru/3/whatsnew/changelog.html): Исправлены возможные крахи в dict и list при вызове [`PyObject_RichCompareBool()`](https://python-all.ru/3/c-api/object.html#c.PyObject_RichCompareBool).
- [bpo-13601](https://python-all.ru/3/whatsnew/changelog.html): Теперь по умолчанию `sys.stderr` использует построчную буферизацию, даже если `stderr` перенаправлен в файл. `sys.stderr` по-прежнему можно сделать небуферизованным, передав опцию командной строки [`-u`](https://python-all.ru/3/using/cmdline.html#cmdoption-u) или установив переменную окружения [`PYTHONUNBUFFERED`](https://python-all.ru/3/using/cmdline.html#envvar-PYTHONUNBUFFERED).

  (Добавлено Jendrik Seipp в [bpo-13601](https://python-all.ru/3/whatsnew/changelog.html).)
- [bpo-38610](https://python-all.ru/3/whatsnew/changelog.html): Исправлены возможные крахи в нескольких методах списков за счёт удержания сильных ссылок на элементы списка при вызове [`PyObject_RichCompareBool()`](https://python-all.ru/3/c-api/object.html#c.PyObject_RichCompareBool).
- [bpo-32021](https://python-all.ru/3/whatsnew/changelog.html): Добавлена кодировка brotli .br в encodings\_map модуля mimetypes

### Библиотека

- [bpo-39430](https://python-all.ru/3/whatsnew/changelog.html): Исправлено состояние гонки при ленивом импорте в [`tarfile`](https://python-all.ru/3/library/tarfile.html#module-tarfile).
- [bpo-39413](https://python-all.ru/3/whatsnew/changelog.html): Функция [`os.unsetenv()`](https://python-all.ru/3/library/os.html#os.unsetenv) теперь доступна и в Windows.
- [bpo-39390](https://python-all.ru/3/whatsnew/changelog.html): Исправлена регрессия с колбэком `ignore` в [`shutil.copytree()`](https://python-all.ru/3/library/shutil.html#shutil.copytree). Типы аргументов снова стали `str` и `List[str]`.
- [bpo-39395](https://python-all.ru/3/whatsnew/changelog.html): Функции [`os.putenv()`](https://python-all.ru/3/library/os.html#os.putenv) и [`os.unsetenv()`](https://python-all.ru/3/library/os.html#os.unsetenv) теперь всегда доступны.
- [bpo-39406](https://python-all.ru/3/whatsnew/changelog.html): Если доступна C-функция `setenv()`, то [`os.putenv()`](https://python-all.ru/3/library/os.html#os.putenv) теперь реализована через `setenv()` вместо `putenv()`, что избавляет Python от необходимости управлять памятью переменных окружения.
- [bpo-39396](https://python-all.ru/3/whatsnew/changelog.html): Исправлено `math.nextafter(-0.0, +0.0)` на AIX 7.1.
- [bpo-29435](https://python-all.ru/3/whatsnew/changelog.html): Разрешено использование [`tarfile.is_tarfile()`](https://python-all.ru/3/library/tarfile.html#tarfile.is_tarfile) с файлами и файлоподобными объектами, например [`zipfile.is_zipfile()`](https://python-all.ru/3/library/zipfile.html#zipfile.is_zipfile). Исправление от William Woodruff.
- [bpo-39377](https://python-all.ru/3/whatsnew/changelog.html): Удалена опция `encoding` из [`json.loads()`](https://python-all.ru/3/library/json.html#json.loads). Она была объявлена устаревшей начиная с Python 3.1.
- [bpo-39389](https://python-all.ru/3/whatsnew/changelog.html): Запись точных метаданных уровня сжатия в [`gzip`](https://python-all.ru/3/library/gzip.html#module-gzip) архивах вместо постоянного указания максимального сжатия.
- [bpo-39366](https://python-all.ru/3/whatsnew/changelog.html): Ранее устаревшие методы `xpath()` и `xgtitle()` класса `nntplib.NNTP` удалены.
- [bpo-39357](https://python-all.ru/3/whatsnew/changelog.html): Удалён параметр *buffering* у [`bz2.BZ2File`](https://python-all.ru/3/library/bz2.html#bz2.BZ2File). Начиная с Python 3.0 он игнорировался, и его использование вызывало [`DeprecationWarning`](https://python-all.ru/3/library/exceptions.html#DeprecationWarning). Передавайте открытый файловый объект, чтобы управлять тем, как открывается файл. Параметр *compresslevel* становится только ключевым.
- [bpo-39353](https://python-all.ru/3/whatsnew/changelog.html): Объявлены устаревшими стандарты binhex4 и hexbin4. Объявлены устаревшими модуль `binhex` и следующие функции [`binascii`](https://python-all.ru/3/library/binascii.html#module-binascii): `b2a_hqx()`, `a2b_hqx()`, `rlecode_hqx()`, `rledecode_hqx()`, [`crc_hqx()`](https://python-all.ru/3/library/binascii.html#binascii.crc_hqx).
- [bpo-39351](https://python-all.ru/3/whatsnew/changelog.html): Удалены `base64.encodestring()` и `base64.decodestring()`, псевдонимы, устаревшие с Python 3.1: используйте [`base64.encodebytes()`](https://python-all.ru/3/library/base64.html#base64.encodebytes) и [`base64.decodebytes()`](https://python-all.ru/3/library/base64.html#base64.decodebytes) вместо них.
- [bpo-39350](https://python-all.ru/3/whatsnew/changelog.html): Удалена функция `fractions.gcd()`, устаревшая с Python 3.5 ([bpo-22486](https://python-all.ru/3/whatsnew/changelog.html)): используйте [`math.gcd()`](https://python-all.ru/3/library/math.html#math.gcd) вместо неё.
- [bpo-39329](https://python-all.ru/3/whatsnew/changelog.html): Конструктор [`LMTP`](https://python-all.ru/3/library/smtplib.html#smtplib.LMTP) теперь имеет необязательный параметр *timeout*. Патч от Donghee Na.
- [bpo-39313](https://python-all.ru/3/whatsnew/changelog.html): Добавлена новая опция `exec_function` (*–exec-function* в CLI) для `RefactoringTool`, позволяющая сделать `exec` функцией. Патч от Batuhan Taskaya.
- [bpo-39259](https://python-all.ru/3/whatsnew/changelog.html): [`FTP_TLS`](https://python-all.ru/3/library/ftplib.html#ftplib.FTP_TLS) и `FTP_TLS` теперь вызывают [`ValueError`](https://python-all.ru/3/library/exceptions.html#ValueError), если указанный таймаут для их конструктора равен нулю, чтобы предотвратить создание неблокирующего сокета. Патч от Donghee Na.
- [bpo-39259](https://python-all.ru/3/whatsnew/changelog.html): [`SMTP`](https://python-all.ru/3/library/smtplib.html#smtplib.SMTP) и [`SMTP_SSL`](https://python-all.ru/3/library/smtplib.html#smtplib.SMTP_SSL) теперь вызывают [`ValueError`](https://python-all.ru/3/library/exceptions.html#ValueError), если указанный таймаут для их конструктора равен нулю, чтобы предотвратить создание неблокирующего сокета. Патч от Donghee Na.
- [bpo-39310](https://python-all.ru/3/whatsnew/changelog.html): Добавлена [`math.ulp()`](https://python-all.ru/3/library/math.html#math.ulp): возвращает значение наименьшего значащего бита числа с плавающей точкой.
- [bpo-39297](https://python-all.ru/3/whatsnew/changelog.html): Улучшена производительность обнаружения дистрибутивов importlib.metadata и устойчивость к недоступным записям sys.path (importlib\_metadata v1.4.0).
- [bpo-39259](https://python-all.ru/3/whatsnew/changelog.html): `NNTP` и `NNTP_SSL` теперь вызывают [`ValueError`](https://python-all.ru/3/library/exceptions.html#ValueError), если указанный таймаут для их конструктора равен нулю, чтобы предотвратить создание неблокирующего сокета. Патч от Donghee Na.
- [bpo-38901](https://python-all.ru/3/whatsnew/changelog.html): При указании prompt=’.’ или, что эквивалентно, python -m venv –prompt . … базовое имя текущего каталога используется для установки подсказки создаваемой виртуальной среды при её активации.
- [bpo-39288](https://python-all.ru/3/whatsnew/changelog.html): Добавлена [`math.nextafter()`](https://python-all.ru/3/library/math.html#math.nextafter): возвращает следующее значение с плавающей точкой после *x* в направлении *y*.
- [bpo-39259](https://python-all.ru/3/whatsnew/changelog.html): [`POP3`](https://python-all.ru/3/library/poplib.html#poplib.POP3) и [`POP3_SSL`](https://python-all.ru/3/library/poplib.html#poplib.POP3_SSL) теперь вызывают [`ValueError`](https://python-all.ru/3/library/exceptions.html#ValueError), если указанный таймаут для их конструктора равен нулю, чтобы предотвратить создание неблокирующего сокета. Патч от Donghee Na.
- [bpo-39242](https://python-all.ru/3/whatsnew/changelog.html): Обновлён домен Gmane с news.gmane.org на news.gmane.io, который используется в примерах сервера новостей `NNTP` и тестах nntplib.
- [bpo-35292](https://python-all.ru/3/whatsnew/changelog.html): Проксировать `SimpleHTTPRequestHandler.guess_type` в `mimetypes.guess_type`, чтобы `mimetypes.init` вызывался лениво и избежать ненужных затрат при импорте модуля [`http.server`](https://python-all.ru/3/library/http.server.html#module-http.server).
- [bpo-39239](https://python-all.ru/3/whatsnew/changelog.html): Метод [`select.epoll.unregister()`](https://python-all.ru/3/library/select.html#select.epoll.unregister) больше не игнорирует ошибку [`EBADF`](https://python-all.ru/3/library/errno.html#errno.EBADF).
- [bpo-38907](https://python-all.ru/3/whatsnew/changelog.html): В скрипте http.server восстановлена привязка к IPv4 в Windows.
- [bpo-39152](https://python-all.ru/3/whatsnew/changelog.html): Исправлено ttk.Scale.configure(\[name\]), чтобы возвращал кортеж конфигурации для указанного имени или всех опций. Giovanni Lombardo предоставил часть патча.
- [bpo-39198](https://python-all.ru/3/whatsnew/changelog.html): Если в `Logger.isEnabledFor` возникает исключение (например, из-за таймаутов asyncio или stopit), глобальная блокировка `logging` может не освободиться должным образом, что приведёт к взаимоблокировке. Это изменение оборачивает этот блок кода в `try...finally`, чтобы гарантировать освобождение блокировки.
- [bpo-39191](https://python-all.ru/3/whatsnew/changelog.html): Выполняется проверка на работающий цикл перед запуском новой задачи в `loop.run_until_complete()` для быстрого отказа; это предотвращает побочный эффект порождения новой задачи до возникновения исключения.
- [bpo-38871](https://python-all.ru/3/whatsnew/changelog.html): Правильная расстановка скобок в выражениях фильтра, содержащих лямбда-выражения, в `lib2to3`. Патч от Donghee Na.
- [bpo-39142](https://python-all.ru/3/whatsnew/changelog.html): В logging.config.dictConfig внесено изменение, чтобы избежать преобразования экземпляров именованных кортежей в ConvertingTuple. Предполагается, что именованные кортежи слишком специализированы, чтобы обращаться с ними как с обычными кортежами; если пользователю именованных кортежей требуется функциональность ConvertingTuple, ему придётся реализовать её самостоятельно в своём классе именованного кортежа.
- [bpo-39158](https://python-all.ru/3/whatsnew/changelog.html): ast.literal\_eval() теперь поддерживает пустые множества.
- [bpo-39129](https://python-all.ru/3/whatsnew/changelog.html): Исправлен путь импорта для `asyncio.TimeoutError`
- [bpo-39057](https://python-all.ru/3/whatsnew/changelog.html): `urllib.request.proxy_bypass_environment()` теперь игнорирует начальные точки и больше не игнорирует завершающий символ новой строки.
- [bpo-39056](https://python-all.ru/3/whatsnew/changelog.html): Исправлена обработка недопустимой категории предупреждений в опции -W. Больше не импортируется модуль re, если он не нужен.
- [bpo-39055](https://python-all.ru/3/whatsnew/changelog.html): [`base64.b64decode()`](https://python-all.ru/3/library/base64.html#base64.b64decode) с `validate=True` теперь вызывает binascii.Error, если ввод заканчивается одним символом `\n`.
- [bpo-21600](https://python-all.ru/3/whatsnew/changelog.html): Исправлен `mock.patch.stopall()` для остановки активных патчей, созданных с помощью `mock.patch.dict()`.
- [bpo-39019](https://python-all.ru/3/whatsnew/changelog.html): Реализован фиктивный `__class_getitem__` для [`tempfile.SpooledTemporaryFile`](https://python-all.ru/3/library/tempfile.html#tempfile.SpooledTemporaryFile).
- [bpo-39019](https://python-all.ru/3/whatsnew/changelog.html): Реализована заглушка `__class_getitem__` для `subprocess.Popen`, `subprocess.CompletedProcess`
- [bpo-38914](https://python-all.ru/3/whatsnew/changelog.html): Изменена формулировка предупреждения, выдаваемого командой `check` из distutils, когда указаны поля `author` и `maintainer`, но не найдено соответствующее поле e-mail (`author_email` или `maintainer_email`). Новая формулировка отражает тот факт, что эти поля рекомендуются, но не обязательны. Исправление от Juergen Gmach.
- [bpo-38878](https://python-all.ru/3/whatsnew/changelog.html): Исправлен \_\_subclasshook\_\_ у [`os.PathLike`](https://python-all.ru/3/library/os.html#os.PathLike), чтобы он возвращал корректный результат при наследовании. Исправление от Bar Harel.
- [bpo-38615](https://python-all.ru/3/whatsnew/changelog.html): [`IMAP4`](https://python-all.ru/3/library/imaplib.html#imaplib.IMAP4) и [`IMAP4_SSL`](https://python-all.ru/3/library/imaplib.html#imaplib.IMAP4_SSL) теперь имеют необязательный параметр *timeout* в своих конструкторах. Кроме того, метод [`open()`](https://python-all.ru/3/library/imaplib.html#imaplib.IMAP4.open) теперь также имеет необязательный параметр *timeout*. Переопределённые методы `IMAP4_SSL` и [`IMAP4_stream`](https://python-all.ru/3/library/imaplib.html#imaplib.IMAP4_stream) были применены в этом изменении. Исправление от Donghee Na.
- [bpo-35182](https://python-all.ru/3/whatsnew/changelog.html): Исправлен сбой при последующем вызове `Popen.communicate()`, когда дочерний процесс уже закрыл какой-либо перенаправленный стандартный поток, но всё ещё продолжает выполняться. Исправление от Andriy Maletsky.
- [bpo-38630](https://python-all.ru/3/whatsnew/changelog.html): На Unix [`subprocess.Popen.send_signal()`](https://python-all.ru/3/library/subprocess.html#subprocess.Popen.send_signal) теперь опрашивает статус процесса. Опрос снижает риск отправки сигнала не тому процессу, если процесс завершился, атрибут [`subprocess.Popen.returncode`](https://python-all.ru/3/library/subprocess.html#subprocess.Popen.returncode) всё ещё `None`, а pid был переназначен (переиспользован) новому другому процессу.
- [bpo-38536](https://python-all.ru/3/whatsnew/changelog.html): Удаляет завершающий пробел в форматированной валюте при использовании `international=True` и локали, где символ следует за значением. Например, `locale.currency(12.34, international=True)` возвращал `'12,34 EUR '` вместо `'12,34 EUR'`.
- [bpo-38473](https://python-all.ru/3/whatsnew/changelog.html): Использовать сигнатуру внутреннего mock-объекта для методов с автоматической спецификацией, присоединённых с помощью `unittest.mock.attach_mock()`. Исправление от Karthikeyan Singaravelan.
- [bpo-38361](https://python-all.ru/3/whatsnew/changelog.html): Исправлена проблема, при которой `ident` мог включать начальный разделитель пути, когда [`syslog.openlog()`](https://python-all.ru/3/library/syslog.html#syslog.openlog) вызывался без аргументов.
- [bpo-38293](https://python-all.ru/3/whatsnew/changelog.html): Добавлена поддержка [`copy.copy()`](https://python-all.ru/3/library/copy.html#copy.copy) и [`copy.deepcopy()`](https://python-all.ru/3/library/copy.html#copy.deepcopy) для объектов [`property()`](https://python-all.ru/3/library/functions.html#property).
- [bpo-37958](https://python-all.ru/3/whatsnew/changelog.html): Добавлен метод pstats.Stats.get\_profile\_dict() для возврата данных профиля в виде экземпляра StatsProfile.
- [bpo-28367](https://python-all.ru/3/whatsnew/changelog.html): Магические константы termios для следующих скоростей передачи: - B500000 - B576000 - B921600 - B1000000 - B1152000 - B1500000 - B2000000 - B2500000 - B3000000 - B3500000 - B4000000 Исправление от Andrey Smirnov.

### Документация

- [bpo-39381](https://python-all.ru/3/whatsnew/changelog.html): Упомянуть в документации, что [`asyncio.get_event_loop()`](https://python-all.ru/3/library/asyncio-eventloop.html#asyncio.get_event_loop) неявно создаёт новый цикл событий только при вызове из главного потока.
- [bpo-38918](https://python-all.ru/3/whatsnew/changelog.html): Добавить запись для `__module__` в разделах «function» и «method» таблицы [Типы и элементы](https://python-all.ru/3/library/inspect.html#inspect-types) документации [`inspect`](https://python-all.ru/3/library/inspect.html#module-inspect).
- [bpo-3530](https://python-all.ru/3/whatsnew/changelog.html): В документации модуля [`ast`](https://python-all.ru/3/library/ast.html#module-ast) исправить вводящий в заблуждение пример `NodeTransformer` и добавить рекомендации о том, когда использовать функцию `fix_missing_locations`.

### Сборка

- [bpo-39395](https://python-all.ru/3/whatsnew/changelog.html): На платформах, отличных от Windows, функции `setenv()` и `unsetenv()` теперь обязательны для сборки Python.
- [bpo-39160](https://python-all.ru/3/whatsnew/changelog.html): Обновлена документация в `./configure --help`: теперь показаны значения по умолчанию, добавлены ссылки на документацию, где необходимо, и добавлены дополнительные пояснения.
- [bpo-39144](https://python-all.ru/3/whatsnew/changelog.html): Цели сборки ctags и etags теперь включают Modules/\_ctypes и исходные файлы стандартной библиотеки Python.

### IDLE

- [bpo-39050](https://python-all.ru/3/whatsnew/changelog.html): Снова включить работу кнопки «Справка» в диалоге настроек IDLE.
- [bpo-34118](https://python-all.ru/3/whatsnew/changelog.html): Пометьте memoryview, range и tuple как классы, так же как list и т.д., в списке встроенных функций в справочнике библиотеки.
- [bpo-32989](https://python-all.ru/3/whatsnew/changelog.html): Добавлены тесты для метода editor.newline\_and\_indent\_event. Удалён мёртвый код из метода pyparse.find\_good\_parse\_start.

### C API

- [bpo-39372](https://python-all.ru/3/whatsnew/changelog.html): Очищены заголовочные файлы от интерфейсов, которые объявлены, но не имеют реализации. Удаляемые символы публичного API: `_PyBytes_InsertThousandsGroupingLocale`, `_PyBytes_InsertThousandsGrouping`, `_Py_InitializeFromArgs`, `_Py_InitializeFromWideArgs`, `_PyFloat_Repr`, `_PyFloat_Digits`, `_PyFloat_DigitsInit`, `PyFrame_ExtendStack`, `_PyAIterWrapper_Type`, `PyNullImporter_Type`, `PyCmpWrapper_Type`, `PySortWrapper_Type`, `PyNoArgsFunction`.
- [bpo-39164](https://python-all.ru/3/whatsnew/changelog.html): Добавлена приватная функция `_PyErr_GetExcInfo()` для получения информации об исключении указанного состояния потока Python.

## Python 3.9.0 alpha 2

*Дата выпуска: 2019-12-18*

### Безопасность

- [bpo-38945](https://python-all.ru/3/whatsnew/changelog.html): Символы новой строки теперь экранируются при uu-кодировании, чтобы предотвратить их попадание в раздел содержимого закодированного файла. Это предотвращает вредоносное или случайное изменение данных в процессе декодирования.
- [bpo-37228](https://python-all.ru/3/whatsnew/changelog.html): Из-за серьёзных проблем безопасности параметр *reuse\_address* функции [`asyncio.loop.create_datagram_endpoint()`](https://python-all.ru/3/library/asyncio-eventloop.html#asyncio.loop.create_datagram_endpoint) больше не поддерживается. Это связано с поведением `SO_REUSEADDR` в UDP. Подробнее см. документацию `loop.create_datagram_endpoint()`. (Авторы: Kyle Stanley, Antoine Pitrou и Yury Selivanov, [bpo-37228](https://python-all.ru/3/whatsnew/changelog.html).)
- [bpo-38804](https://python-all.ru/3/whatsnew/changelog.html): Исправлена уязвимость ReDoS в [`http.cookiejar`](https://python-all.ru/3/library/http.cookiejar.html#module-http.cookiejar). Патч от Бена Коллера.

### Ядро и встроенные

- [bpo-39028](https://python-all.ru/3/whatsnew/changelog.html): Незначительно увеличена скорость разбора именованных аргументов с большим количеством kwargs за счёт усиления предположения, что kwargs – интернированные строки.
- [bpo-39080](https://python-all.ru/3/whatsnew/changelog.html): Исправлено значение *end\_col\_offset* для узлов AST Starred Expression, когда они входят в число элементов атрибута *args* узлов Call AST.
- [bpo-39031](https://python-all.ru/3/whatsnew/changelog.html): При разборе узла «elif» атрибуты lineno и col\_offset узла теперь указывают на ключевое слово «elif», а не на его условие, что приводит к согласованности с узлом «if». Патч от Лисандроса Николау.
- [bpo-20443](https://python-all.ru/3/whatsnew/changelog.html): В Python 3.9.0a1 sys.argv\[0\] преобразовывался в абсолютный путь, если в командной строке было указано имя файла. Это изменение отменено, поскольку большинство пользователей ожидает, что sys.argv останется без изменений.
- [bpo-39008](https://python-all.ru/3/whatsnew/changelog.html): [`PySys_Audit()`](https://python-all.ru/3/c-api/sys.html#c.PySys_Audit) теперь требует использования `Py_ssize_t` для аргументов размера в строке форматирования, независимо от того, был ли `PY_SSIZE_T_CLEAN` определён во время включения.
- [bpo-38673](https://python-all.ru/3/whatsnew/changelog.html): В режиме REPL не переключаться на PS2, если строка начинается с комментария или пробела. На основе работы Батухана Ташкая.
- [bpo-38922](https://python-all.ru/3/whatsnew/changelog.html): Вызов `replace` для объекта кода теперь вызывает аудит-событие `code.__new__`.
- [bpo-38920](https://python-all.ru/3/whatsnew/changelog.html): Добавлены аудит-хуки для ситуаций, когда вызываются [`sys.excepthook()`](https://python-all.ru/3/library/sys.html#sys.excepthook) и [`sys.unraisablehook()`](https://python-all.ru/3/library/sys.html#sys.unraisablehook).
- [bpo-38892](https://python-all.ru/3/whatsnew/changelog.html): Улучшена документация для таблицы аудит-событий и функций.
- [bpo-38852](https://python-all.ru/3/whatsnew/changelog.html): Установлен размер стека потока 8 МБ для отладочных сборок на платформах Android.
- [bpo-38858](https://python-all.ru/3/whatsnew/changelog.html): Каждый подынтерпретатор Python теперь имеет свои собственные «синглтоны малых целых»: числа в диапазоне \[-5; 257\]. Больше не изменить количество малых целых при сборке, переопределяя макросы `NSMALLNEGINTS` и `NSMALLPOSINTS`: теперь макросы нужно изменять вручную в заголовочном файле `pycore_pystate.h`.
- [bpo-36854](https://python-all.ru/3/whatsnew/changelog.html): Состояние сборщика мусора становится привязанным к интерпретатору (`PyInterpreterState.gc`), а не глобальным (`_PyRuntimeState.gc`).
- [bpo-38835](https://python-all.ru/3/whatsnew/changelog.html): Макросы `PyFPE_START_PROTECT()` и `PyFPE_END_PROTECT()` пусты: в течение последнего года они ничего не делали, поэтому прекратите их использовать.
- [bpo-38328](https://python-all.ru/3/whatsnew/changelog.html): Ускорено время создания константных [`list`](https://python-all.ru/3/library/stdtypes.html#list) и [`set`](https://python-all.ru/3/library/stdtypes.html#set) литералов. Патч от Брандта Бухера.
- [bpo-38707](https://python-all.ru/3/whatsnew/changelog.html): `MainThread.native_id` теперь корректно сбрасывается в дочерних процессах, порождённых с помощью [`multiprocessing.Process`](https://python-all.ru/3/library/multiprocessing.html#multiprocessing.Process), вместо сохранения родительского значения.
- [bpo-38629](https://python-all.ru/3/whatsnew/changelog.html): Добавлены методы `__floor__` и `__ceil__` к объекту float. Патч от Батухана Ташкая.
- [bpo-27145](https://python-all.ru/3/whatsnew/changelog.html): Операторы int + int и int - int теперь могут возвращать синглтоны малых целых. Патч от hongweipeng.
- [bpo-38021](https://python-all.ru/3/whatsnew/changelog.html): Добавлен тег платформы для AIX, достаточный для идентификации бинарных дистрибутивов согласно PEP 425. Патч от Майкла Фелта.
- [bpo-35409](https://python-all.ru/3/whatsnew/changelog.html): Игнорировать исключения GeneratorExit при выбрасывании исключения в корутину aclose асинхронного генератора.
- [bpo-33387](https://python-all.ru/3/whatsnew/changelog.html): Удалены байткоды 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](https://python-all.ru/3/whatsnew/changelog.html): Исправлен [`NameError`](https://python-all.ru/3/library/exceptions.html#NameError) в [`zipimport`](https://python-all.ru/3/library/zipimport.html#module-zipimport). Патч от Картикеяна Сингаравелана.
- [bpo-39022](https://python-all.ru/3/whatsnew/changelog.html): Обновлён importlib.metadata – включены улучшения из importlib\_metadata 1.3, включая улучшенную сериализацию точек входа (EntryPoints) и улучшенную документацию для пользовательских искателей.
- [bpo-39006](https://python-all.ru/3/whatsnew/changelog.html): Исправлен asyncio при отсутствии модуля ssl: проверять экземпляр ssl.SSLSocket только если модуль ssl доступен.
- [bpo-38708](https://python-all.ru/3/whatsnew/changelog.html): Исправлена потенциальная ошибка IndexError в парсере email при разборе пустого msg-id.
- [bpo-38698](https://python-all.ru/3/whatsnew/changelog.html): Добавлен новый токен `InvalidMessageID` в парсер email для представления недопустимых заголовков Message-ID. Также добавлены дефекты, когда после разбора заголовка остаётся значение.
- [bpo-38994](https://python-all.ru/3/whatsnew/changelog.html): Реализован `__class_getitem__` для `os.PathLike`, `pathlib.Path`.
- [bpo-38979](https://python-all.ru/3/whatsnew/changelog.html): Возвращать класс из `ContextVar.__class_getitem__` для упрощения создания подклассов.
- [bpo-38978](https://python-all.ru/3/whatsnew/changelog.html): Реализован `__class_getitem__` для объектов asyncio (Future, задача, очередь). Патч от Батухана Ташкая.
- [bpo-38916](https://python-all.ru/3/whatsnew/changelog.html): [`array.array`](https://python-all.ru/3/library/array.html#array.array): удалены методы `tostring()` и `fromstring()`. Они были псевдонимами для `tobytes()` и `frombytes()`, устаревшими с Python 3.2.
- [bpo-38986](https://python-all.ru/3/whatsnew/changelog.html): Сделать repr ускоренной C-версии TaskWakeupMethWrapper таким же, как у чистой Python-версии.
- [bpo-38982](https://python-all.ru/3/whatsnew/changelog.html): Исправление asyncio `PidfdChildWatcher`: обработка ошибки `waitpid()`. Если `waitpid()` вызывается в другом месте, вызов `waitpid()` завершается ошибкой [`ChildProcessError`](https://python-all.ru/3/library/exceptions.html#ChildProcessError): в этом случае использовать код возврата 255 и записать предупреждение в журнал. Это гарантирует, что файловый дескриптор pidfd будет закрыт, если произойдёт эта ошибка.
- [bpo-38529](https://python-all.ru/3/whatsnew/changelog.html): Убрано слишком шумное предупреждение asyncio об удалении потока данных без явного вызова `.close()`.
- [bpo-27413](https://python-all.ru/3/whatsnew/changelog.html): Добавлена возможность передачи параметров `ensure_ascii` в json.dumps в интерфейсе командной строки `json.tool`.
- [bpo-38634](https://python-all.ru/3/whatsnew/changelog.html): Модуль [`readline`](https://python-all.ru/3/library/readline.html#module-readline) теперь определяет, связан ли Python с libedit во время выполнения на всех платформах. Ранее проверка выполнялась только на macOS.
- [bpo-33684](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка `json.tool`, из-за которой не удавалось прочитать JSON-файл с не-ASCII символами, когда кодировка локали не UTF-8.
- [bpo-38698](https://python-all.ru/3/whatsnew/changelog.html): Предотвращение появления UnboundLocalError в parse\_message\_id.

  Функция parse\_message\_id() некорректно использовала токен, определённый внутри обработчика исключений, что вызывало `UnboundLocalError` при разборе недопустимого значения. Патч от Claudiu Popa.
- [bpo-38927](https://python-all.ru/3/whatsnew/changelog.html): Использовать `python -m pip` вместо `pip` для обновления зависимостей в venv.
- [bpo-26730](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка `SpooledTemporaryFile.rollover()`, которая могла повредить файл в текстовом режиме. Патч от Serhiy Storchaka.
- [bpo-38881](https://python-all.ru/3/whatsnew/changelog.html): random.choices() теперь вызывает ValueError, когда все веса равны нулю.
- [bpo-38876](https://python-all.ru/3/whatsnew/changelog.html): Вызывать pickle.UnpicklingError при загрузке элемента из memo для недопустимого входного значения.

  Предыдущий код вызывал `KeyError` как в Python, так и в C реализации. Это происходило из-за указанного индекса недопустимого входа, который отсутствовал в структуре memo (где pickle хранит информацию о просмотренных объектах). Некорректный ввод приводил к загрузке из memo либо `BINGET`, либо `LONG_BINGET`, что вызывало `KeyError`, так как вычисленный индекс был ошибочным. Патч от Claudiu Popa.
- [bpo-38688](https://python-all.ru/3/whatsnew/changelog.html): Вызов func:`shutil.copytree` для копирования дерева каталогов из одной директории в другую поддиректорию приводил к бесконечному циклу и RecursionError. Было добавлено исправление: теперь итератор потребляется, и создаётся список копируемых записей, что предотвращает рекурсию для вновь созданных каталогов. Патч от Bruno P. Kinoshita.
- [bpo-38863](https://python-all.ru/3/whatsnew/changelog.html): Улучшена функция `is_cgi()` в [`http.server`](https://python-all.ru/3/library/http.server.html#module-http.server), что позволяет обрабатывать случай, когда каталог cgi является дочерним по отношению к другому каталогу, отличному от корневого.
- [bpo-37838](https://python-all.ru/3/whatsnew/changelog.html): [`typing.get_type_hints()`](https://python-all.ru/3/library/typing.html#typing.get_type_hints) корректно обрабатывает функции, декорированные [`functools.wraps()`](https://python-all.ru/3/library/functools.html#functools.wraps).
- [bpo-38870](https://python-all.ru/3/whatsnew/changelog.html): Предоставить [`ast.unparse()`](https://python-all.ru/3/library/ast.html#ast.unparse) в качестве функции модуля [`ast`](https://python-all.ru/3/library/ast.html#module-ast), которую можно использовать для выполнения обратного разбора (unparse) объекта [`ast.AST`](https://python-all.ru/3/library/ast.html#ast.AST) и получения строки с кодом, который при разборе даст эквивалентный объект `ast.AST`. Патч от Pablo Galindo и Batuhan Taskaya.
- [bpo-38859](https://python-all.ru/3/whatsnew/changelog.html): AsyncMock теперь возвращает StopAsyncIteration при исчерпании итерабельного объекта side\_effects. Начиная с PEP-479, невозможно возбудить исключение StopIteration из корутины.
- [bpo-38857](https://python-all.ru/3/whatsnew/changelog.html): Исправление AsyncMock для возвращаемых значений, являющихся ожидаемыми типами. Это также касается итерабельных значений side\_effect, которые оказались ожидаемыми, и оборачивает вызываемые объекты, возвращающие ожидаемый тип. Ранее эти ожидаемые объекты ожидались вместо того, чтобы возвращаться как есть.
- [bpo-38834](https://python-all.ru/3/whatsnew/changelog.html): Подклассы [`typing.TypedDict`](https://python-all.ru/3/library/typing.html#typing.TypedDict) теперь отслеживают, какие ключи являются необязательными, используя атрибуты `__required_keys__` и `__optional_keys__`, чтобы обеспечить проверку во время выполнения в дочерних проектах. Патч от Zac Hatfield-Dodds.
- [bpo-38821](https://python-all.ru/3/whatsnew/changelog.html): Исправлены необработанные исключения в [`argparse`](https://python-all.ru/3/library/argparse.html#module-argparse) при интернационализации сообщений об ошибках для аргументов с `nargs`, установленным в специальные (нецелые) значения. Патч от Federico Bond.
- [bpo-38820](https://python-all.ru/3/whatsnew/changelog.html): Обеспечить совместимость Python с OpenSSL 3.0.0. [`ssl.SSLSocket.getpeercert()`](https://python-all.ru/3/library/ssl.html#ssl.SSLSocket.getpeercert) больше не возвращает IPv6-адреса с завершающим переводом строки.
- [bpo-38811](https://python-all.ru/3/whatsnew/changelog.html): Исправлено необработанное исключение в [`pathlib`](https://python-all.ru/3/library/pathlib.html#module-pathlib) при отсутствии [`os.link()`](https://python-all.ru/3/library/os.html#os.link). Патч от Toke Høiland-Jørgensen.
- [bpo-38686](https://python-all.ru/3/whatsnew/changelog.html): Добавлена поддержка нескольких значений `qop` в [`urllib.request.AbstractDigestAuthHandler`](https://python-all.ru/3/library/urllib.request.html#urllib.request.AbstractDigestAuthHandler).
- [bpo-38712](https://python-all.ru/3/whatsnew/changelog.html): Добавлена Linux-специфичная функция [`signal.pidfd_send_signal()`](https://python-all.ru/3/library/signal.html#signal.pidfd_send_signal), которая позволяет отправлять сигнал процессу, идентифицированному файловым дескриптором, а не pid.
- [bpo-38348](https://python-all.ru/3/whatsnew/changelog.html): Добавлены параметры командной строки `-i` и `--indent` (уровень отступа), а также `--no-type-comments` (комментарии типов) в инструменте разбора ast.
- [bpo-37523](https://python-all.ru/3/whatsnew/changelog.html): Изменено `zipfile.ZipExtFile`: теперь возбуждается `ValueError` при попытке доступа к нижележащему файловому объекту после его закрытия. Это новое поведение согласуется с тем, как обрабатывается доступ к закрытым файлам в других частях Python.
- [bpo-38045](https://python-all.ru/3/whatsnew/changelog.html): Улучшена производительность `enum._decompose()` в [`enum`](https://python-all.ru/3/library/enum.html#module-enum). Патч от hongweipeng.
- [bpo-36820](https://python-all.ru/3/whatsnew/changelog.html): Разорван цикл, возникающий при сохранении исключения в socket.py, codeop.py и dyld.py, так как они удерживают не только исключение, но и пользовательские объекты через атрибут `__traceback__`. Патч от Mario Corchero.
- [bpo-36406](https://python-all.ru/3/whatsnew/changelog.html): Обработка пакетов пространства имён (namespace packages) в [`doctest`](https://python-all.ru/3/library/doctest.html#module-doctest). Патч от Karthikeyan Singaravelan.
- [bpo-34776](https://python-all.ru/3/whatsnew/changelog.html): Исправлены dataclasses для поддержки прямых ссылок (forward references) в аннотациях типов.
- [bpo-20928](https://python-all.ru/3/whatsnew/changelog.html): ElementTree поддерживает рекурсивную обработку XInclude. Патч от Stefan Behnel.
- [bpo-29636](https://python-all.ru/3/whatsnew/changelog.html): Добавлены опции пробелов для форматирования JSON с помощью CLI `json.tool`. Теперь поддерживаются следующие взаимоисключающие опции: `--indent` для установки уровня отступа в пробелах; `--tab` для отступов табуляцией; `--no-indent` для подавления переводов строк; и `--compact` для подавления всех пробелов. Поведение по умолчанию остаётся таким же, как в `--indent=4`.

### Документация

- [bpo-38928](https://python-all.ru/3/whatsnew/changelog.html): Исправлено, когда добавляются `upgrade_dependencies()` и `--upgrade-deps` в venv.
- [bpo-38899](https://python-all.ru/3/whatsnew/changelog.html): Обновлена документация: указано, что для активации виртуального окружения в fish следует использовать `source`, а не `.`, как было задокументировано на [https://fishshell.com/docs/current/cmds/source.html](https://python-all.ru/3/whatsnew/changelog.html).
- [bpo-22377](https://python-all.ru/3/whatsnew/changelog.html): Улучшена документация по значениям, которые [`datetime.datetime.strptime()`](https://python-all.ru/3/library/datetime.html#datetime.datetime.strptime) принимает для `%Z`. Патч от Karl Dubost.

### Тесты

- [bpo-38546](https://python-all.ru/3/whatsnew/changelog.html): Исправлен test\_ressources\_gced\_in\_workers() из test\_concurrent\_futures: явная остановка менеджера для предотвращения утечки дочернего процесса, работающего в фоне после завершения теста.
- [bpo-38546](https://python-all.ru/3/whatsnew/changelog.html): Тесты multiprocessing и concurrent.futures теперь останавливают процесс resource tracker при завершении тестов.
- [bpo-38614](https://python-all.ru/3/whatsnew/changelog.html): Замена жестко заданных констант таймаута в тестах на новые константы [`test.support`](https://python-all.ru/3/library/test.html#module-test.support): [`LOOPBACK_TIMEOUT`](https://python-all.ru/3/library/test.html#test.support.LOOPBACK_TIMEOUT), [`INTERNET_TIMEOUT`](https://python-all.ru/3/library/test.html#test.support.INTERNET_TIMEOUT), [`SHORT_TIMEOUT`](https://python-all.ru/3/library/test.html#test.support.SHORT_TIMEOUT) и [`LONG_TIMEOUT`](https://python-all.ru/3/library/test.html#test.support.LONG_TIMEOUT). Теперь стало проще настраивать эти четыре константы таймаутов сразу для всех тестов, а не править каждый тестовый файл по отдельности.
- [bpo-38547](https://python-all.ru/3/whatsnew/changelog.html): Исправлен test\_pty: если процесс является лидером сессии, закрытие мастер-файлового дескриптора вызывает сигнал SIGHUP; теперь при запуске тестов просто игнорируется SIGHUP.
- [bpo-38992](https://python-all.ru/3/whatsnew/changelog.html): Исправлен тест для [`math.fsum()`](https://python-all.ru/3/library/math.html#math.fsum), который падал из-за свертки констант.
- [bpo-38991](https://python-all.ru/3/whatsnew/changelog.html): Функции [`test.support`](https://python-all.ru/3/library/test.html#module-test.support): `run_python_until_end()`, `assert_python_ok()` и `assert_python_failure()` больше не удаляют пробелы из stderr. Удалена функция `test.support.strip_python_stderr()`.
- [bpo-38965](https://python-all.ru/3/whatsnew/changelog.html): Исправлен test\_faulthandler на GCC 10. Использование ключевого слова “volatile” в `faulthandler._stack_overflow()` для предотвращения оптимизации хвостовых вызовов на любом компиляторе, вместо использования специфичных для компилятора прагм.
- [bpo-38875](https://python-all.ru/3/whatsnew/changelog.html): test\_capi: тесты trashcan теперь требуют ресурс “cpu”.
- [bpo-38841](https://python-all.ru/3/whatsnew/changelog.html): Пропуск asyncio test\_create\_datagram\_endpoint\_existing\_sock\_unix на платформах, где отсутствует рабочая bind() для именованных сокетов Unix domain.
- [bpo-38692](https://python-all.ru/3/whatsnew/changelog.html): Пропуск теста test\_posix.test\_pidfd\_open(), если `os.pidfd_open()` завершается ошибкой с [`PermissionError`](https://python-all.ru/3/library/exceptions.html#PermissionError). Такая ситуация может возникнуть в Linux-песочнице, использующей белый список системных вызовов, который пока не разрешает системный вызов `pidfd_open()`.
- [bpo-38839](https://python-all.ru/3/whatsnew/changelog.html): Исправлены некоторые неиспользуемые функции в тестах. Патч от Adam Johnson.
- [bpo-38669](https://python-all.ru/3/whatsnew/changelog.html): Возбуждается [`TypeError`](https://python-all.ru/3/library/exceptions.html#TypeError) при передаче target в виде строки с [`unittest.mock.patch.object()`](https://python-all.ru/3/library/unittest.mock.html#unittest.mock.patch.object).
- [bpo-37957](https://python-all.ru/3/whatsnew/changelog.html): test.regrtest теперь может принимать список шаблонов тестов для игнорирования (с помощью аргумента -i/–ignore) или файл со списком шаблонов для игнорирования (с помощью аргумента –ignore-file). Патч от Pablo Galindo.

### Сборка

- [bpo-37404](https://python-all.ru/3/whatsnew/changelog.html): [`asyncio`](https://python-all.ru/3/library/asyncio.html#module-asyncio) теперь возбуждает [`TypeError`](https://python-all.ru/3/library/exceptions.html#TypeError) при вызове несовместимых методов с сокетом [`ssl.SSLSocket`](https://python-all.ru/3/library/ssl.html#ssl.SSLSocket). Патч от Ido Michael.
- [bpo-36500](https://python-all.ru/3/whatsnew/changelog.html): Добавлен опциональный проект “regen” в решение Visual Studio, который будет перегенерировать все грамматики, токены и коды операций.

### Windows

- [bpo-39007](https://python-all.ru/3/whatsnew/changelog.html): Добавлены события аудита в функции в [`winreg`](https://python-all.ru/3/library/winreg.html#module-winreg).
- [bpo-33125](https://python-all.ru/3/whatsnew/changelog.html): Добавлена поддержка сборки и выпуска пакетов Windows ARM64.

### macOS

- [bpo-37931](https://python-all.ru/3/whatsnew/changelog.html): Исправлен сбой в динамических сборках на OSX, возникавший при повторной инициализации модуля posix после Py\_Finalize, если окружение изменилось с момента предыдущего `import posix`. Патч от Benoît Hudson.

### IDLE

- [bpo-38944](https://python-all.ru/3/whatsnew/changelog.html): Клавиша Escape теперь закрывает окна автодополнения IDLE. Патч от Johnny Najera.
- [bpo-38943](https://python-all.ru/3/whatsnew/changelog.html): Исправлена проблема, когда окна автодополнения IDLE не всегда появлялись на некоторых системах. Патч от Johnny Najera.
- [bpo-38862](https://python-all.ru/3/whatsnew/changelog.html): Пункт «Strip Trailing Whitespace» в меню Format теперь удаляет лишние пустые строки в конце файлов, не являющихся shell-файлами.
- [bpo-38636](https://python-all.ru/3/whatsnew/changelog.html): Исправлены переключение табуляции и ширина отступа файла в меню Format IDLE. Эти функции (сочетания клавиш Alt-T и Alt-U по умолчанию) были ошибочно отключены в версиях 3.7.5 и 3.8.0.

### C API

- [bpo-38896](https://python-all.ru/3/whatsnew/changelog.html): Удалена функция `PyUnicode_ClearFreeList()`: список свободных объектов Unicode был удалён в Python 3.3.
- [bpo-37340](https://python-all.ru/3/whatsnew/changelog.html): Удалены функции `PyMethod_ClearFreeList()` и `PyCFunction_ClearFreeList()`: списки свободных объектов связанных методов были удалены.
- [bpo-38835](https://python-all.ru/3/whatsnew/changelog.html): Exclude `PyFPE_START_PROTECT()` and `PyFPE_END_PROTECT()` macros of `pyfpe.h` from `Py_LIMITED_API` (stable API).

## Python 3.9.0 alpha 1

*Дата выпуска: 2019-11-19*

### Безопасность

- [bpo-38722](https://python-all.ru/3/whatsnew/changelog.html): [`runpy`](https://python-all.ru/3/library/runpy.html#module-runpy) теперь использует [`io.open_code()`](https://python-all.ru/3/library/io.html#io.open_code) для открытия файлов с кодом. Патч от Jason Killen.
- [bpo-38622](https://python-all.ru/3/whatsnew/changelog.html): Добавлены дополнительные события аудита для модуля [`ctypes`](https://python-all.ru/3/library/ctypes.html#module-ctypes).
- [bpo-38418](https://python-all.ru/3/whatsnew/changelog.html): Исправлено событие аудита для [`os.system()`](https://python-all.ru/3/library/os.html#os.system): теперь оно называется `os.system`.
- [bpo-38243](https://python-all.ru/3/whatsnew/changelog.html): Экранирование заголовка сервера [`xmlrpc.server.DocXMLRPCServer`](https://python-all.ru/3/library/xmlrpc.server.html#xmlrpc.server.DocXMLRPCServer) при отображении страницы документа в формате HTML. (Предоставлено Donghee Na в [bpo-38243](https://python-all.ru/3/whatsnew/changelog.html).)
- [bpo-38174](https://python-all.ru/3/whatsnew/changelog.html): Обновление встроенной библиотеки expat до версии 2.2.8, что устраняет [**CVE-2019-15903**](https://python-all.ru/3/whatsnew/changelog.html).
- [bpo-37764](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ситуация, когда email.\_header\_value\_parser.get\_unstructured входила в бесконечный цикл в двух случаях: когда заголовок письма не содержит завершающего пробела, и когда он содержит некорректное закодированное слово. Патч от Ashwin Ramaswami.
- [bpo-37461](https://python-all.ru/3/whatsnew/changelog.html): Исправлен бесконечный цикл при разборе специально сформированных заголовков писем. Патч от Abhilash Raj.
- [bpo-37363](https://python-all.ru/3/whatsnew/changelog.html): Добавлены события аудита для набора поддерживаемых команд run (см. [Командная строка и окружение](https://python-all.ru/3/using/cmdline.html#using-on-general)).
- [bpo-37463](https://python-all.ru/3/whatsnew/changelog.html): ssl.match\_hostname() больше не принимает IPv4-адреса с дополнительным текстом после адреса и только в четырёхточечной записи без завершающих пробелов. Некоторые реализации inet\_aton() игнорируют пробелы и все данные после пробела, например, '127.0.0.1 whatever'.
- [bpo-37363](https://python-all.ru/3/whatsnew/changelog.html): Добавлены события аудита для [`ensurepip`](https://python-all.ru/3/library/ensurepip.html#module-ensurepip), [`ftplib`](https://python-all.ru/3/library/ftplib.html#module-ftplib), [`glob`](https://python-all.ru/3/library/glob.html#module-glob), [`imaplib`](https://python-all.ru/3/library/imaplib.html#module-imaplib), `nntplib`, [`pdb`](https://python-all.ru/3/library/pdb.html#module-pdb), [`poplib`](https://python-all.ru/3/library/poplib.html#module-poplib), [`shutil`](https://python-all.ru/3/library/shutil.html#module-shutil), [`smtplib`](https://python-all.ru/3/library/smtplib.html#module-smtplib), [`sqlite3`](https://python-all.ru/3/library/sqlite3.html#module-sqlite3), [`subprocess`](https://python-all.ru/3/library/subprocess.html#module-subprocess), `telnetlib`, [`tempfile`](https://python-all.ru/3/library/tempfile.html#module-tempfile) и [`webbrowser`](https://python-all.ru/3/library/webbrowser.html#module-webbrowser), а также для [`os.listdir()`](https://python-all.ru/3/library/os.html#os.listdir), [`os.scandir()`](https://python-all.ru/3/library/os.html#os.scandir) и [`breakpoint()`](https://python-all.ru/3/library/functions.html#breakpoint).
- [bpo-37364](https://python-all.ru/3/whatsnew/changelog.html): [`io.open_code()`](https://python-all.ru/3/library/io.html#io.open_code) теперь используется при чтении файлов `.pth`.
- [bpo-34631](https://python-all.ru/3/whatsnew/changelog.html): Обновлён OpenSSL до версии 1.1.1c в установщике Windows.
- [bpo-34155](https://python-all.ru/3/whatsnew/changelog.html): Исправлен разбор некорректных адресов электронной почты с более чем одним `@` (например, a@b@c.com.) – теперь часть до второго `@` не возвращается как корректный адрес. Патч от maxking и jpic.

### Ядро и встроенные модули

- [bpo-38631](https://python-all.ru/3/whatsnew/changelog.html): Вызов `Py_FatalError()` заменён на обычное исключение [`RuntimeError`](https://python-all.ru/3/library/exceptions.html#RuntimeError) в `float.__getformat__()`.
- [bpo-38639](https://python-all.ru/3/whatsnew/changelog.html): Оптимизированы [`math.floor()`](https://python-all.ru/3/library/math.html#math.floor), [`math.ceil()`](https://python-all.ru/3/library/math.html#math.ceil) и [`math.trunc()`](https://python-all.ru/3/library/math.html#math.trunc) для чисел с плавающей запятой.
- [bpo-38640](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка в компиляторе, которая приводила к возникновению исключения при наличии операторов break и continue внутри циклов while с условием, всегда равным False. Патч от Pablo Galindo.
- [bpo-38613](https://python-all.ru/3/whatsnew/changelog.html): Оптимизированы некоторые операции над множествами (например, `|`, `^` и `-`) для `dict_keys`. `d.keys() | other` был медленнее, чем `set(d) | other`, но теперь их производительность почти сравнялась.
- [bpo-28029](https://python-all.ru/3/whatsnew/changelog.html): `"".replace("", s, n)` теперь возвращает `s` вместо пустой строки для всех ненулевых `n`. Аналогичные изменения внесены для объектов [`bytes`](https://python-all.ru/3/library/stdtypes.html#bytes) и [`bytearray`](https://python-all.ru/3/library/stdtypes.html#bytearray).
- [bpo-38535](https://python-all.ru/3/whatsnew/changelog.html): Исправлены номера строк и смещения столбцов для узлов AST, соответствующих вызовам без аргументов в декораторах.
- [bpo-38525](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка сегментации при использовании обратных итераторов пустых объектов `dict`. Патч от Donghee Na и Inada Naoki.
- [bpo-38465](https://python-all.ru/3/whatsnew/changelog.html): Объекты [`bytearray`](https://python-all.ru/3/library/stdtypes.html#bytearray), [`array`](https://python-all.ru/3/library/array.html#array.array) и [`mmap`](https://python-all.ru/3/library/mmap.html#mmap.mmap) теперь позволяют экспортировать более `2**31` буферов одновременно.
- [bpo-38469](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка, из-за которой область видимости именованных выражений неправильно определялась при наличии ключевого слова *global*. Патч от Pablo Galindo.
- [bpo-38437](https://python-all.ru/3/whatsnew/changelog.html): Активирован макрос `GC_DEBUG` для отладочных сборок интерпретатора (когда установлен `Py_DEBUG`). Патч от Pablo Galindo.
- [bpo-38379](https://python-all.ru/3/whatsnew/changelog.html): Если при сборке мусора некоторые объекты воскресают (становятся достижимыми извне изолированных циклов после выполнения финализаторов), теперь не блокируется сборка всех объектов, которые по-прежнему недоступны. Патч от Pablo Galindo и Tim Peters.
- [bpo-38379](https://python-all.ru/3/whatsnew/changelog.html): Когда циклический сборщик мусора (gc) запускает финализаторы, которые воскрешают недостижимые объекты, текущий проход gc завершается, не собирая циклический мусор. Однако статистика, сообщаемая `collect()` и `get_stats()`, утверждала, что весь найденный циклический мусор был собран, а воскрешённые объекты были собраны. Статистика изменена: теперь сообщается, что ничего не было собрано.
- [bpo-38392](https://python-all.ru/3/whatsnew/changelog.html): В отладочном режиме [`PyObject_GC_Track()`](https://python-all.ru/3/c-api/gcsupport.html#c.PyObject_GC_Track) теперь вызывает `tp_traverse()` типа объекта, чтобы убедиться в корректности объекта: проверяется, что объекты, посещённые `tp_traverse()`, корректны.
- [bpo-38210](https://python-all.ru/3/whatsnew/changelog.html): Удалены ненужные операции пересечения и обновления множества в dictview с пустым множеством. (Предложено Donghee Na в [bpo-38210](https://python-all.ru/3/whatsnew/changelog.html).)
- [bpo-38402](https://python-all.ru/3/whatsnew/changelog.html): Проверяется ошибка от системной `crypt` или `crypt_r`.
- [bpo-37474](https://python-all.ru/3/whatsnew/changelog.html): На FreeBSD Python больше не вызывает `fedisableexcept()` при запуске для управления режимом управления числами с плавающей запятой. Этот вызов стал бесполезным начиная с FreeBSD 6: он стал режимом по умолчанию.
- [bpo-38006](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка, связанная с взаимодействием слабых ссылок и циклического сборщика мусора. Необходимо очищать любые слабые ссылки в мусоре, чтобы предотвратить выполнение их колбэков и возникновение аварийного завершения.
- [bpo-38317](https://python-all.ru/3/whatsnew/changelog.html): Исправлен приоритет опций предупреждений: `PyConfig.warnoptions` имеет наивысший приоритет, как указано в [**PEP 587**](https://python-all.ru/3/whatsnew/changelog.html).
- [bpo-38310](https://python-all.ru/3/whatsnew/changelog.html): Предсказание пар опкодов `BUILD_MAP_UNPACK_WITH_CALL` → `CALL_FUNCTION_EX` в главном цикле интерпретатора. Патч от Brandt Bucher.
- [bpo-36871](https://python-all.ru/3/whatsnew/changelog.html): Улучшена обработка ошибок для методов assert\_has\_calls и assert\_has\_awaits в моках. Исправлена ошибка, из-за которой любые ошибки, возникающие при привязке ожидаемых вызовов к спецификации мока, молча проглатывались, что приводило к вводящему в заблуждение выводу ошибок.
- [bpo-11410](https://python-all.ru/3/whatsnew/changelog.html): Улучшен контроль видимости символов за счёт использования атрибутов видимости, доступных в gcc \>= 4.0, единообразно на POSIX и Windows. Файлы сборки POSIX обновлены для компиляции с -fvisibility=hidden, что минимизирует экспортируемые символы.
- [bpo-38219](https://python-all.ru/3/whatsnew/changelog.html): Оптимизированы конструктор [`dict`](https://python-all.ru/3/library/stdtypes.html#dict) и метод [`update()`](https://python-all.ru/3/library/stdtypes.html#dict.update) для случая, когда аргументом является dict.
- [bpo-38236](https://python-all.ru/3/whatsnew/changelog.html): Python теперь выводит конфигурацию путей, если не удаётся импортировать кодеки Python для кодировок файловой системы и stdio.
- [bpo-38013](https://python-all.ru/3/whatsnew/changelog.html): Разрешён вызов `async_generator_athrow().throw(...)` даже для незапущенного асинхронного генератора-помощника. Это исправляет надоедливое предупреждение в конце вызова [`asyncio.run()`](https://python-all.ru/3/library/asyncio-runner.html#asyncio.run).
- [bpo-38124](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка «off-by-one» в PyState\_AddModule, которая могла приводить к обращению к памяти за пределами выделенной области.
- [bpo-38116](https://python-all.ru/3/whatsnew/changelog.html): Модуль select теперь соответствует PEP-384 и больше не имеет статического состояния.
- [bpo-38113](https://python-all.ru/3/whatsnew/changelog.html): Модуль ast обновлён до PEP-384, удалены все статические элементы.
- [bpo-38076](https://python-all.ru/3/whatsnew/changelog.html): Модуль struct теперь совместим с PEP-384.
- [bpo-38075](https://python-all.ru/3/whatsnew/changelog.html): Модуль random теперь совместим с PEP-384.
- [bpo-38074](https://python-all.ru/3/whatsnew/changelog.html): Модуль zlib сделан совместимым с PEP-384.
- [bpo-38073](https://python-all.ru/3/whatsnew/changelog.html): Модуль-расширение pwd сделан совместимым с PEP-384.
- [bpo-38072](https://python-all.ru/3/whatsnew/changelog.html): Модуль grp сделан совместимым с PEP-384.
- [bpo-38069](https://python-all.ru/3/whatsnew/changelog.html): Модуль \_posixsubprocess сделан совместимым с PEP-384.
- [bpo-38071](https://python-all.ru/3/whatsnew/changelog.html): Модуль-расширение termios сделан совместимым с PEP-384.
- [bpo-38005](https://python-all.ru/3/whatsnew/changelog.html): Исправлено сравнение и создание InterpreterID и ChannelID.
- [bpo-36946](https://python-all.ru/3/whatsnew/changelog.html): Исправлено возможное переполнение знакового целого при обработке срезов. Патч от hongweipeng.
- [bpo-37994](https://python-all.ru/3/whatsnew/changelog.html): Исправлено замалчивание произвольных ошибок при неудачном поиске атрибута в нескольких местах. Должно замалчиваться только AttributeError.
- [bpo-8425](https://python-all.ru/3/whatsnew/changelog.html): Оптимизирована операция set.difference\_update для случая, когда другое множество значительно больше базового. (Предложено Evgeny Kapun, код предоставлен Michele Orrù).
- [bpo-37966](https://python-all.ru/3/whatsnew/changelog.html): Реализация [`is_normalized()`](https://python-all.ru/3/library/unicodedata.html#unicodedata.is_normalized) была значительно ускорена для строк, которые не нормализованы, за счёт применения полного алгоритма быстрой проверки нормализации из стандарта Unicode.
- [bpo-37947](https://python-all.ru/3/whatsnew/changelog.html): Корректно настроен уровень рекурсии в генерации symtable для именованных выражений. Патч от Pablo Galindo.
- [bpo-37812](https://python-all.ru/3/whatsnew/changelog.html): Макрос `CHECK_SMALL_INT`, используемый внутри `Object/longobject.c`, был заменён явным `return` в каждом месте вызова.
- [bpo-37751](https://python-all.ru/3/whatsnew/changelog.html): Исправлена [`codecs.lookup()`](https://python-all.ru/3/library/codecs.html#codecs.lookup) для нормализации имени кодировки так же, как это делает [`encodings.normalize_encoding()`](https://python-all.ru/3/library/codecs.html#encodings.normalize_encoding), за исключением того, что `codecs.lookup()` также преобразует имя в нижний регистр.
- [bpo-37830](https://python-all.ru/3/whatsnew/changelog.html): Исправлена компиляция [`break`](https://python-all.ru/3/reference/simple_stmts.html#break) и [`continue`](https://python-all.ru/3/reference/simple_stmts.html#continue) в блоке [`finally`](https://python-all.ru/3/reference/compound_stmts.html#finally), когда соответствующий блок [`try`](https://python-all.ru/3/reference/compound_stmts.html#try) содержит [`return`](https://python-all.ru/3/reference/simple_stmts.html#return) с неконстантным значением.
- [bpo-20490](https://python-all.ru/3/whatsnew/changelog.html): Улучшено сообщение об ошибке импорта для частично инициализированного модуля при циклических `from` импортах. – Патч от Anthony Sottile.
- [bpo-37840](https://python-all.ru/3/whatsnew/changelog.html): Исправлена обработка отрицательных индексов в [`sq_item`](https://python-all.ru/3/c-api/typeobj.html#c.PySequenceMethods.sq_item) для [`bytearray`](https://python-all.ru/3/library/stdtypes.html#bytearray). Патч от Sergey Fedoseev.
- [bpo-37802](https://python-all.ru/3/whatsnew/changelog.html): Незначительно улучшена производительность [`PyLong_FromUnsignedLong()`](https://python-all.ru/3/c-api/long.html#c.PyLong_FromUnsignedLong), [`PyLong_FromUnsignedLongLong()`](https://python-all.ru/3/c-api/long.html#c.PyLong_FromUnsignedLongLong) и [`PyLong_FromSize_t()`](https://python-all.ru/3/c-api/long.html#c.PyLong_FromSize_t). Патч от Sergey Fedoseev.
- [bpo-37409](https://python-all.ru/3/whatsnew/changelog.html): Обеспечено, что явные относительные импорты из интерактивных сессий и скриптов (не имеющих родительского пакета) всегда вызывают ImportError, а не рассматривают текущий модуль как пакет. Патч от Ben Lewis.
- [bpo-32912](https://python-all.ru/3/whatsnew/changelog.html): Отменено [bpo-32912](https://python-all.ru/3/whatsnew/changelog.html): генерация [`SyntaxWarning`](https://python-all.ru/3/library/exceptions.html#SyntaxWarning) вместо [`DeprecationWarning`](https://python-all.ru/3/library/exceptions.html#DeprecationWarning) для недопустимых escape-последовательностей в строковых и байтовых литералах.
- [bpo-37757](https://python-all.ru/3/whatsnew/changelog.html): [**PEP 572**](https://python-all.ru/3/whatsnew/changelog.html): Как описано в PEP, выражения присваивания теперь вызывают [`SyntaxError`](https://python-all.ru/3/library/exceptions.html#SyntaxError), когда их взаимодействие с областью видимости генераторных выражений приводит к неоднозначной области цели.

  Подкласс `TargetScopeError`, изначально предложенный в PEP, был удалён в пользу простого возбуждения обычных синтаксических ошибок для недопустимых случаев.
- [bpo-36279](https://python-all.ru/3/whatsnew/changelog.html): Исправлено потенциальное использование неинициализированной памяти в [`os.wait3()`](https://python-all.ru/3/library/os.html#os.wait3).
- [bpo-36311](https://python-all.ru/3/whatsnew/changelog.html): Декодирование bytes-объектов размером более 2 ГБ выполняется быстрее и больше не завершается ошибкой, когда многобайтовый символ пересекает границу чанка.
- [bpo-34880](https://python-all.ru/3/whatsnew/changelog.html): Оператор [`assert`](https://python-all.ru/3/reference/simple_stmts.html#assert) теперь работает корректно, если исключение [`AssertionError`](https://python-all.ru/3/library/exceptions.html#AssertionError) затеняется. Патч от Zackery Spytz.
- [bpo-37340](https://python-all.ru/3/whatsnew/changelog.html): Удалён кеш объектов (`free_list`) для связанных методов. Временные объекты связанных методов используются реже, чем раньше, благодаря опкоду `LOAD_METHOD` и C API `_PyObject_VectorcallMethod`.
- [bpo-37648](https://python-all.ru/3/whatsnew/changelog.html): Исправлена незначительная несогласованность в `list.__contains__()`, `tuple.__contains__()` и ещё нескольких местах. Теперь элемент коллекции всегда находится слева, а искомое значение – справа от `==`.
- [bpo-37444](https://python-all.ru/3/whatsnew/changelog.html): Обновлено различие в исключениях между `builtins.__import__()` и [`importlib.__import__()`](https://python-all.ru/3/library/importlib.html#importlib.__import__).
- [bpo-37619](https://python-all.ru/3/whatsnew/changelog.html): При добавлении дескриптора-обёртки из одного класса в другой (например, установка `__add__ = str.__add__` на подкласс `int`), теперь корректно возбуждается исключение при вызове оператора.
- [bpo-37593](https://python-all.ru/3/whatsnew/changelog.html): Поменяны местами параметры *posonlyargs* и *args* в конструкторе узлов `ast.parameters`.
- [bpo-37543](https://python-all.ru/3/whatsnew/changelog.html): Оптимизирован pymalloc для сборок без PGO.
- [bpo-37537](https://python-all.ru/3/whatsnew/changelog.html): Вычисление выделенных блоков pymalloc внутри \_Py\_GetAllocatedBlocks(). Это замедляет \_Py\_GetAllocatedBlocks(), но даёт небольшое ускорение \_PyObject\_Malloc() и \_PyObject\_Free().
- [bpo-37467](https://python-all.ru/3/whatsnew/changelog.html): Исправлены [`sys.excepthook()`](https://python-all.ru/3/library/sys.html#sys.excepthook) и `PyErr_Display()`, если имя файла является строкой байтов. Например, для исключения SyntaxError, где атрибут filename является строкой байтов.
- [bpo-37433](https://python-all.ru/3/whatsnew/changelog.html): Исправлено отображение индикатора `SyntaxError`, печатавшего слишком много пробелов для многострочных строк. – Патч от Anthony Sottile.
- [bpo-37417](https://python-all.ru/3/whatsnew/changelog.html): [`bytearray.extend()`](https://python-all.ru/3/library/stdtypes.html#bytearray.extend) теперь корректно обрабатывает ошибки, возникающие во время итерации. Патч от Brandt Bucher.
- [bpo-37414](https://python-all.ru/3/whatsnew/changelog.html): Незадокументированная функция `sys.callstats()` удалена. Начиная с Python 3.7 она была устаревшей и всегда возвращала `None`. Она требовала специальной опции сборки `CALL_PROFILE`, которая уже была удалена в Python 3.7.
- [bpo-37392](https://python-all.ru/3/whatsnew/changelog.html): Удалены функции `sys.getcheckinterval()` и `sys.setcheckinterval()`. Они были устаревшими начиная с Python 3.2. Вместо них используйте [`sys.getswitchinterval()`](https://python-all.ru/3/library/sys.html#sys.getswitchinterval) и [`sys.setswitchinterval()`](https://python-all.ru/3/library/sys.html#sys.setswitchinterval) . Также удалено поле `check_interval` структуры `PyInterpreterState`.
- [bpo-37388](https://python-all.ru/3/whatsnew/changelog.html): В режиме разработки и в отладочной сборке аргументы *encoding* и *errors* теперь проверяются при операциях кодирования и декодирования строк. Примеры: [`open()`](https://python-all.ru/3/library/functions.html#open), [`str.encode()`](https://python-all.ru/3/library/stdtypes.html#str.encode) и [`bytes.decode()`](https://python-all.ru/3/library/stdtypes.html#bytes.decode).

  По умолчанию для максимальной производительности аргумент *errors* проверяется только при первой ошибке кодирования/декодирования, а аргумент *encoding* иногда игнорируется для пустых строк.
- [bpo-37348](https://python-all.ru/3/whatsnew/changelog.html): Оптимизировано декодирование коротких ASCII-строк с помощью кодеков UTF-8 и ascii. `b"foo".decode()` выполняется примерно на 15% быстрее. Патч от Inada Naoki.
- [bpo-24214](https://python-all.ru/3/whatsnew/changelog.html): Улучшена поддержка обработчика ошибок surrogatepass в инкрементальных декодерах UTF-8 и UTF-16.
- [bpo-37330](https://python-all.ru/3/whatsnew/changelog.html): [`open()`](https://python-all.ru/3/library/functions.html#open), [`io.open()`](https://python-all.ru/3/library/io.html#io.open), [`codecs.open()`](https://python-all.ru/3/library/codecs.html#codecs.open) и [`fileinput.FileInput`](https://python-all.ru/3/library/fileinput.html#fileinput.FileInput) больше не принимают `'U'` («универсальный перевод строки») в режиме файла. Этот флаг был устаревшим начиная с Python 3.3.
- [bpo-35224](https://python-all.ru/3/whatsnew/changelog.html): Изменён порядок вычисления key: value в словарных генераторах, как предложено в PEP 572. То есть в `{k: v for ...}` выражение `k` будет вычисляться перед `v`.
- [bpo-37316](https://python-all.ru/3/whatsnew/changelog.html): Исправлен вызов [`PySys_Audit()`](https://python-all.ru/3/c-api/sys.html#c.PySys_Audit) в [`mmap.mmap`](https://python-all.ru/3/library/mmap.html#mmap.mmap).
- [bpo-37300](https://python-all.ru/3/whatsnew/changelog.html): Удалён ненужный Py\_XINCREF в classobject.c.
- [bpo-37269](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка в peephole-оптимизаторе, которая неправильно обрабатывала константные условия с бинарными операторами. Патч от Pablo Galindo.
- [bpo-20443](https://python-all.ru/3/whatsnew/changelog.html): Python теперь получает абсолютный путь к имени файла скрипта, указанному в командной строке (например, «python3 script.py»): атрибут \_\_file\_\_ модуля \_\_main\_\_ и sys.path\[0\] становятся абсолютными путями, а не относительными.
- [bpo-37257](https://python-all.ru/3/whatsnew/changelog.html): аллокатор мелких объектов Python (`obmalloc.c`) теперь позволяет оставлять (не более) одну пустую арену доступной для повторного использования, не возвращая её операционной системе. Это предотвращает пробуксовку в простых циклах, где арена могла создаваться и уничтожаться заново на каждой итерации.
- [bpo-37231](https://python-all.ru/3/whatsnew/changelog.html): диспетчеризация слотов типа к специальным методам (например, вызов `__mul__` при выполнении `x * y`) ускорена.
- [bpo-36974](https://python-all.ru/3/whatsnew/changelog.html): реализованы отдельные функции vectorcall для каждого соглашения о вызове встроенных функций и методов. Это повышает производительность вызовов.
- [bpo-37213](https://python-all.ru/3/whatsnew/changelog.html): корректная обработка отрицательных смещений строк в оптимизаторе peephole. Патч от Pablo Galindo.
- [bpo-37219](https://python-all.ru/3/whatsnew/changelog.html): удаление ошибочной оптимизации для пустых разностей множеств.
- [bpo-15913](https://python-all.ru/3/whatsnew/changelog.html): реализована функция [`PyBuffer_SizeFromFormat()`](https://python-all.ru/3/c-api/buffer.html#c.PyBuffer_SizeFromFormat) (ранее задокументированная, но не реализованная): вызов [`struct.calcsize()`](https://python-all.ru/3/library/struct.html#struct.calcsize). Патч от Joannah Nanjekye.
- [bpo-36922](https://python-all.ru/3/whatsnew/changelog.html): слотовые функции оптимизируют любой вызываемый объект с `Py_TPFLAGS_METHOD_DESCRIPTOR` вместо только экземпляров `function`.
- [bpo-36974](https://python-all.ru/3/whatsnew/changelog.html): слот `tp_vectorcall_offset` наследуется безусловно для поддержки `super().__call__()`, когда базовый класс использует vectorcall.
- [bpo-37160](https://python-all.ru/3/whatsnew/changelog.html): [`threading.get_native_id()`](https://python-all.ru/3/library/threading.html#threading.get_native_id) теперь также поддерживает NetBSD.
- [bpo-37077](https://python-all.ru/3/whatsnew/changelog.html): добавлена поддержка [`threading.get_native_id()`](https://python-all.ru/3/library/threading.html#threading.get_native_id) для AIX. Патч от M. Felt.
- [bpo-36781](https://python-all.ru/3/whatsnew/changelog.html): [`sum()`](https://python-all.ru/3/library/functions.html#sum) оптимизирован для логических значений.
- [bpo-34556](https://python-all.ru/3/whatsnew/changelog.html): добавлен `--upgrade-deps` в модуль venv. Патч от Cooper Ry Lees.
- [bpo-20523](https://python-all.ru/3/whatsnew/changelog.html): `pdb.Pdb` поддерживает ~/.pdbrc в Windows 7. Патч от Tim Hopper и Dan Lidral-Porter.
- [bpo-35551](https://python-all.ru/3/whatsnew/changelog.html): обновлены кодировки: - удалена кодировка «tis260», бывшая псевдонимом несуществующего кодека «tactis». - добавлена «mac\_centeuro» как псевдоним кодировки mac\_latin2.
- [bpo-19072](https://python-all.ru/3/whatsnew/changelog.html): декоратор [`classmethod`](https://python-all.ru/3/library/functions.html#classmethod) теперь может оборачивать другие дескрипторы, например объекты property. Адаптировано из патча, написанного Graham Dumpleton.
- [bpo-27575](https://python-all.ru/3/whatsnew/changelog.html): повышение скорости пересечения dictview за счёт прямого использования логики пересечения множеств. Патч от David Su.
- [bpo-30773](https://python-all.ru/3/whatsnew/changelog.html): запрещён параллельный запуск aclose() / asend() / athrow(). Исправлено ag\_running для отражения фактического состояния выполнения AG.

### Библиотека

- [bpo-36589](https://python-all.ru/3/whatsnew/changelog.html): функция [`curses.update_lines_cols()`](https://python-all.ru/3/library/curses.html#curses.update_lines_cols) теперь возвращает `None` вместо `1` в случае успеха.
- [bpo-38807](https://python-all.ru/3/whatsnew/changelog.html): обновлены сообщения [`TypeError`](https://python-all.ru/3/library/exceptions.html#TypeError) для [`os.path.join()`](https://python-all.ru/3/library/os.path.html#os.path.join), чтобы включить объекты [`os.PathLike`](https://python-all.ru/3/library/os.html#os.PathLike) в качестве допустимых типов входных данных.
- [bpo-38724](https://python-all.ru/3/whatsnew/changelog.html): добавлен repr для объектов `subprocess.Popen`. Патч от Andrey Doroschenko.
- [bpo-38786](https://python-all.ru/3/whatsnew/changelog.html): pydoc теперь распознает и разбирает HTTPS URL. Патч от python273.
- [bpo-38785](https://python-all.ru/3/whatsnew/changelog.html): предотвращение аварийного завершения asyncio, если родительский `__init__` не вызывается из конструктора объекта, производного от `asyncio.Future`.
- [bpo-38723](https://python-all.ru/3/whatsnew/changelog.html): [`pdb`](https://python-all.ru/3/library/pdb.html#module-pdb) теперь использует [`io.open_code()`](https://python-all.ru/3/library/io.html#io.open_code) для запуска событий аудита.
- [bpo-27805](https://python-all.ru/3/whatsnew/changelog.html): разрешено открытие каналов и других непозиционируемых файлов в режиме добавления с помощью [`open()`](https://python-all.ru/3/library/functions.html#open).
- [bpo-38438](https://python-all.ru/3/whatsnew/changelog.html): упрощение сообщения об использовании [`argparse`](https://python-all.ru/3/library/argparse.html#module-argparse) для `nargs="*"`.
- [bpo-38761](https://python-all.ru/3/whatsnew/changelog.html): WeakSet теперь зарегистрирован как collections.abc.MutableSet.
- [bpo-38716](https://python-all.ru/3/whatsnew/changelog.html): logging: namer и rotator в RotatingHandler стали атрибутами уровня класса. Это предотвращает установку их в None в \_\_init\_\_, если подкласс определяет их одноимёнными методами.
- [bpo-38713](https://python-all.ru/3/whatsnew/changelog.html): добавлена константа [`os.P_PIDFD`](https://python-all.ru/3/library/os.html#os.P_PIDFD), которую можно передать в [`os.waitid()`](https://python-all.ru/3/library/os.html#os.waitid) для ожидания файлового дескриптора процесса Linux.
- [bpo-38692](https://python-all.ru/3/whatsnew/changelog.html): добавлен `asyncio.PidfdChildWatcher`, реализация наблюдателя за дочерними процессами для Linux, которая опрашивает файловые дескрипторы процессов.
- [bpo-38692](https://python-all.ru/3/whatsnew/changelog.html): системный вызов Linux `pidfd_open` доступен как [`os.pidfd_open()`](https://python-all.ru/3/library/os.html#os.pidfd_open).
- [bpo-38602](https://python-all.ru/3/whatsnew/changelog.html): добавлены константы `F_OFD_GETLK`, `F_OFD_SETLK` и `F_OFD_SETLKW` в модуль [`fcntl`](https://python-all.ru/3/library/fcntl.html#module-fcntl). Патч от Donghee Na.
- [bpo-38334](https://python-all.ru/3/whatsnew/changelog.html): Исправлён поиск назад на зашифрованном `zipfile.ZipExtFile`.
- [bpo-38312](https://python-all.ru/3/whatsnew/changelog.html): Добавлены функции [`curses.get_escdelay()`](https://python-all.ru/3/library/curses.html#curses.get_escdelay), [`curses.set_escdelay()`](https://python-all.ru/3/library/curses.html#curses.set_escdelay), [`curses.get_tabsize()`](https://python-all.ru/3/library/curses.html#curses.get_tabsize) и [`curses.set_tabsize()`](https://python-all.ru/3/library/curses.html#curses.set_tabsize) – от Anthony Sottile.
- [bpo-38586](https://python-all.ru/3/whatsnew/changelog.html): Теперь [`fileConfig()`](https://python-all.ru/3/library/logging.config.html#logging.config.fileConfig) правильно устанавливает .name загруженных обработчиков.
- [bpo-38565](https://python-all.ru/3/whatsnew/changelog.html): Добавлен новый метод cache\_parameters() для functools.lru\_cache(), чтобы лучше поддерживать упаковку (pickling).
- [bpo-34679](https://python-all.ru/3/whatsnew/changelog.html): asynci.ProactorEventLoop.close() теперь вызывает signal.set\_wakeup\_fd() только в главном потоке.
- [bpo-31202](https://python-all.ru/3/whatsnew/changelog.html): Регистр результата `pathlib.WindowsPath.glob()` теперь совпадает с регистром шаблона для литеральных частей.
- [bpo-36321](https://python-all.ru/3/whatsnew/changelog.html): Удалён неправильно написанный атрибут. В журнале изменений 3.8 было указано, что он будет удалён в 3.9.
- [bpo-38521](https://python-all.ru/3/whatsnew/changelog.html): Исправлено ошибочное сравнение на равенство в statistics.NormalDist().
- [bpo-38493](https://python-all.ru/3/whatsnew/changelog.html): Добавлены [`CLD_KILLED`](https://python-all.ru/3/library/os.html#os.CLD_KILLED) и [`CLD_STOPPED`](https://python-all.ru/3/library/os.html#os.CLD_STOPPED) для `si_code`. Патч от Donghee Na.
- [bpo-38478](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка в `inspect.signature.bind()`, из-за которой она завершалась с ошибкой при обработке именованного аргумента с тем же именем, что и позиционно-обязательный параметр. Патч от Pablo Galindo.
- [bpo-33604](https://python-all.ru/3/whatsnew/changelog.html): Исправлено `hmac.new` и `hmac.HMAC`, чтобы возбуждалось TypeError вместо ValueError, если параметр digestmod (теперь обязательный с 3.8) опущен. Также уточнена документация модуля hmac и докстринги.
- [bpo-38378](https://python-all.ru/3/whatsnew/changelog.html): Параметры *out* и *in* функции [`os.sendfile()`](https://python-all.ru/3/library/os.html#os.sendfile) были переименованы в *out\_fd* и *in\_fd*.
- [bpo-38417](https://python-all.ru/3/whatsnew/changelog.html): Добавлена поддержка установки umask в дочернем процессе в модуль subprocess на POSIX-системах.
- [bpo-38449](https://python-all.ru/3/whatsnew/changelog.html): Откат PR 15522, который внёс регрессию в [`mimetypes.guess_type()`](https://python-all.ru/3/library/mimetypes.html#mimetypes.guess_type) из-за некорректной обработки имён файлов как URL.
- [bpo-38431](https://python-all.ru/3/whatsnew/changelog.html): Исправлен метод `__repr__` для [`dataclasses.InitVar`](https://python-all.ru/3/library/dataclasses.html#dataclasses.InitVar), чтобы поддерживать объекты typing; патч от Samuel Colvin.
- [bpo-38109](https://python-all.ru/3/whatsnew/changelog.html): Добавлены недостающие значения [`stat.S_IFDOOR`](https://python-all.ru/3/library/stat.html#stat.S_IFDOOR), [`stat.S_IFPORT`](https://python-all.ru/3/library/stat.html#stat.S_IFPORT), [`stat.S_IFWHT`](https://python-all.ru/3/library/stat.html#stat.S_IFWHT), [`stat.S_ISDOOR()`](https://python-all.ru/3/library/stat.html#stat.S_ISDOOR), [`stat.S_ISPORT()`](https://python-all.ru/3/library/stat.html#stat.S_ISPORT) и [`stat.S_ISWHT()`](https://python-all.ru/3/library/stat.html#stat.S_ISWHT) в Python-реализацию [`stat`](https://python-all.ru/3/library/stat.html#module-stat).
- [bpo-38422](https://python-all.ru/3/whatsnew/changelog.html): Уточнены докстринги pathlib suffix(es).
- [bpo-38405](https://python-all.ru/3/whatsnew/changelog.html): Вложенные подклассы [`typing.NamedTuple`](https://python-all.ru/3/library/typing.html#typing.NamedTuple) теперь могут быть упакованы (pickleable).
- [bpo-38332](https://python-all.ru/3/whatsnew/changelog.html): Предотвращено распространение [`KeyError`](https://python-all.ru/3/library/exceptions.html#KeyError), возбуждаемого `_encoded_words.decode()` при передаче закодированного слова с недопустимой кодировкой типа содержимого, до самого `email.message.get()`.
- [bpo-38371](https://python-all.ru/3/whatsnew/changelog.html): Объявлен устаревшим метод `split()` в `_tkinter.TkappType` в пользу метода `splitlist()`, который обладает более согласованным и предсказуемым поведением.
- [bpo-38341](https://python-all.ru/3/whatsnew/changelog.html): Добавлен [`smtplib.SMTPNotSupportedError`](https://python-all.ru/3/library/smtplib.html#smtplib.SMTPNotSupportedError) в экспортируемые имена [`smtplib`](https://python-all.ru/3/library/smtplib.html#module-smtplib).
- [bpo-38319](https://python-all.ru/3/whatsnew/changelog.html): sendfile(), используемая в модулях socket и shutil, возбуждала OverflowError для файлов размером \>= 2GiB на 32-битных архитектурах. (патч от Giampaolo Rodola)
- [bpo-38242](https://python-all.ru/3/whatsnew/changelog.html): Откат нового API asyncio Streams
- [bpo-13153](https://python-all.ru/3/whatsnew/changelog.html): Теперь для преобразования между строками Python и объектами Tcl используется родная кодировка ОС. Это позволяет отображать, копировать и вставлять в буфер обмена эмодзи и другие символы вне BMP. Преобразование строк из Tcl в Python и обратно теперь никогда не завершается ошибкой (кроме MemoryError).
- [bpo-38019](https://python-all.ru/3/whatsnew/changelog.html): Корректная обработка приостановки/возобновления чтения закрытого asyncio unix-канала.
- [bpo-38163](https://python-all.ru/3/whatsnew/changelog.html): Дочерние mocks теперь определяют свой тип как синхронный или асинхронный: асинхронные дочерние mocks будут AsyncMocks, а синхронные дочерние mocks – MagicMock или Mock (в зависимости от типа родителя).
- [bpo-38161](https://python-all.ru/3/whatsnew/changelog.html): Удалён \_AwaitEvent из AsyncMock.
- [bpo-38216](https://python-all.ru/3/whatsnew/changelog.html): Редкому коду, который хочет отправлять недопустимые HTTP-запросы из библиотеки `http.client`, предоставлен способ делать это. Исправления для [bpo-30458](https://python-all.ru/3/whatsnew/changelog.html) привели к поломке некоторых проектов, которые полагались на эту возможность для тестирования собственного поведения при получении некорректных запросов.
- [bpo-28286](https://python-all.ru/3/whatsnew/changelog.html): Объявлено устаревшим неявное открытие [`GzipFile`](https://python-all.ru/3/library/gzip.html#gzip.GzipFile) для записи. Всегда указывайте аргумент *mode* для записи.
- [bpo-38108](https://python-all.ru/3/whatsnew/changelog.html): Любые синхронные магические методы у AsyncMock теперь возвращают MagicMock. Любые асинхронные магические методы у MagicMock теперь возвращают AsyncMock.
- [bpo-38265](https://python-all.ru/3/whatsnew/changelog.html): Обновлён параметр *length* функции [`os.pread()`](https://python-all.ru/3/library/os.html#os.pread), чтобы он принимал [`Py_ssize_t`](https://python-all.ru/3/c-api/intro.html#c.Py_ssize_t) вместо int.
- [bpo-38112](https://python-all.ru/3/whatsnew/changelog.html): [`compileall`](https://python-all.ru/3/library/compileall.html#module-compileall) имеет более высокий лимит рекурсии по умолчанию и новые аргументы командной строки для манипуляции путями, обработки символических ссылок и множественных уровней оптимизации.
- [bpo-38248](https://python-all.ru/3/whatsnew/changelog.html): asyncio: исправлена непоследовательная немедленная отмена задачи.
- [bpo-38237](https://python-all.ru/3/whatsnew/changelog.html): Аргументы встроенной функции pow стали более описательными. Теперь их также можно передавать как ключевые.
- [bpo-34002](https://python-all.ru/3/whatsnew/changelog.html): Повышена эффективность в некоторых частях пакета email за счёт замены while-pop на цикл for и использования isdisjoint вместо пересечений множеств.
- [bpo-38191](https://python-all.ru/3/whatsnew/changelog.html): Конструкторы типов [`NamedTuple`](https://python-all.ru/3/library/typing.html#typing.NamedTuple) и [`TypedDict`](https://python-all.ru/3/library/typing.html#typing.TypedDict) теперь принимают произвольные имена ключевых аргументов, включая «cls», «self», «typename», «\_typename», «fields» и «\_fields».
- [bpo-38155](https://python-all.ru/3/whatsnew/changelog.html): Добавлен `__all__` в [`datetime`](https://python-all.ru/3/library/datetime.html#module-datetime). Патч от Tahia Khan.
- [bpo-38185](https://python-all.ru/3/whatsnew/changelog.html): Исправлено сравнение строк без учёта регистра в индексации [`sqlite3.Row`](https://python-all.ru/3/library/sqlite3.html#sqlite3.Row).
- [bpo-38136](https://python-all.ru/3/whatsnew/changelog.html): Изменено: счётчик вызовов AsyncMock и счётчик ожиданий стали двумя разными счётчиками. Теперь счётчик ожиданий увеличивается только при ожидании корутины, а не при её вызове, и наоборот. Обновлена документация.
- [bpo-37828](https://python-all.ru/3/whatsnew/changelog.html): Исправлено имя по умолчанию для mock в исключениях [`unittest.mock.Mock.assert_called()`](https://python-all.ru/3/library/unittest.mock.html#unittest.mock.Mock.assert_called). Патч от Abraham Toriz Cruz.
- [bpo-38175](https://python-all.ru/3/whatsnew/changelog.html): Исправлена утечка памяти при сравнении объектов [`sqlite3.Row`](https://python-all.ru/3/library/sqlite3.html#sqlite3.Row).
- [bpo-33936](https://python-all.ru/3/whatsnew/changelog.html): \_hashlib больше не вызывает устаревшую функцию инициализации OpenSSL при использовании OpenSSL 1.1.0+.
- [bpo-34706](https://python-all.ru/3/whatsnew/changelog.html): Сохранение наследования в inspect.Signature.from\_callable.
- [bpo-38153](https://python-all.ru/3/whatsnew/changelog.html): Имена алгоритмов хеширования из OpenSSL теперь нормализованы в соответствии с соглашениями об именах Python. Например, OpenSSL использует sha3-512 вместо sha3\_512 или blake2b512 вместо blake2b.
- [bpo-38115](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка в dis.findlinestarts(), из-за которой возвращались неверные смещения байткода. Документировано, что co\_lnotab объекта кода может содержать неверные смещения байткода.
- [bpo-38148](https://python-all.ru/3/whatsnew/changelog.html): Добавлены слоты в транспортные классы [`asyncio`](https://python-all.ru/3/library/asyncio.html#module-asyncio), что может снизить использование памяти.
- [bpo-38142](https://python-all.ru/3/whatsnew/changelog.html): Модуль расширения \_hashlib, обёртка OpenSSL, теперь соответствует PEP-384.
- [bpo-9216](https://python-all.ru/3/whatsnew/changelog.html): Конструкторы hashlib теперь поддерживают флаг usedforsecurity, указывающий, что алгоритм хеширования не используется в контексте безопасности.
- [bpo-36991](https://python-all.ru/3/whatsnew/changelog.html): Исправлена потенциальная утечка неверного исключения AttributeError из ZipFile.extract() в некоторых ошибочных ситуациях с неподдерживаемым вводом.
- [bpo-38134](https://python-all.ru/3/whatsnew/changelog.html): Удалена устаревшая копия PBKDF2\_HMAC\_fast. Все поддерживаемые версии OpenSSL содержат быструю реализацию.
- [bpo-38132](https://python-all.ru/3/whatsnew/changelog.html): Обёртка hashlib для OpenSSL использует более простую реализацию. Несколько макросов и бесполезных кешей удалены. Имя хеша теперь берётся из EVP OpenSSL. Имя алгоритма остаётся прежним, за исключением того, что теперь оно всегда в нижнем регистре.
- [bpo-38008](https://python-all.ru/3/whatsnew/changelog.html): Исправлена проверка родительского класса в протоколах для корректного определения модуля, предоставляющего встроенный протокол, вместо предположения, что все они происходят из модуля [`collections.abc`](https://python-all.ru/3/library/collections.abc.html#module-collections.abc)
- [bpo-34037](https://python-all.ru/3/whatsnew/changelog.html): Для [`asyncio`](https://python-all.ru/3/library/asyncio.html#module-asyncio) добавлена новая корутина `loop.shutdown_default_executor()`. Новая корутина предоставляет API для планирования завершения работы исполнителя, которое дожидается завершения закрытия пула потоков. Кроме того, [`asyncio.run()`](https://python-all.ru/3/library/asyncio-runner.html#asyncio.run) обновлён для использования новой корутины. Патч от Kyle Stanley.
- [bpo-37405](https://python-all.ru/3/whatsnew/changelog.html): Исправлена регрессия в socket.getsockname() для сокетов семейства адресов AF\_CAN, не являющихся CAN\_ISOTP: теперь возвращается кортеж из одного элемента вместо строки.
- [bpo-38121](https://python-all.ru/3/whatsnew/changelog.html): Обновлены имена параметров функций в importlib.metadata в соответствии с изменениями в релизе 0.22 importlib\_metadata.
- [bpo-38110](https://python-all.ru/3/whatsnew/changelog.html): Реализация os.closewalk() теперь использует API libc fdwalk() на платформах, где оно доступно.
- [bpo-38093](https://python-all.ru/3/whatsnew/changelog.html): Исправлен AsyncMock, чтобы он не падал при использовании с AsyncContextManagers или AsyncIterators.
- [bpo-37488](https://python-all.ru/3/whatsnew/changelog.html): Добавлено предупреждение к `datetime.utctimetuple()`, `datetime.utcnow()` и `datetime.utcfromtimestamp()`.
- [bpo-35640](https://python-all.ru/3/whatsnew/changelog.html): Разрешена передача [объекта, подобного пути](https://python-all.ru/3/glossary.html#term-path-like-object) в качестве аргумента `directory` классу [`http.server.SimpleHTTPRequestHandler`](https://python-all.ru/3/library/http.server.html#http.server.SimpleHTTPRequestHandler). Патч от Géry Ogam.
- [bpo-38086](https://python-all.ru/3/whatsnew/changelog.html): Обновлён importlib.metadata в соответствии с изменениями из [importlib\_metadata 0.21](https://python-all.ru/3/whatsnew/changelog.html).
- [bpo-37251](https://python-all.ru/3/whatsnew/changelog.html): Удалена проверка `__code__` в AsyncMock, которая ошибочно оценивала спецификации функций как асинхронные объекты, но не оценивала классы с атрибутом `__await__`, но без атрибута `__code__` как асинхронные объекты.
- [bpo-38037](https://python-all.ru/3/whatsnew/changelog.html): Исправлены счётчики ссылок в модуле [`signal`](https://python-all.ru/3/library/signal.html#module-signal).
- [bpo-38066](https://python-all.ru/3/whatsnew/changelog.html): Скрыты внутренние методы asyncio.Stream: feed\_eof(), feed\_data(), set\_exception() и set\_transport().
- [bpo-38059](https://python-all.ru/3/whatsnew/changelog.html): inspect.py теперь использует sys.exit() вместо exit()
- [bpo-38049](https://python-all.ru/3/whatsnew/changelog.html): Добавлен интерфейс командной строки для модуля [`ast`](https://python-all.ru/3/library/ast.html#module-ast).
- [bpo-37953](https://python-all.ru/3/whatsnew/changelog.html): В [`typing`](https://python-all.ru/3/library/typing.html#module-typing) улучшены методы `__hash__` и `__eq__` для `ForwardReferences`.
- [bpo-38026](https://python-all.ru/3/whatsnew/changelog.html): Исправлено [`inspect.getattr_static()`](https://python-all.ru/3/library/inspect.html#inspect.getattr_static), использовавшее `isinstance`, хотя должно было избегать динамического поиска.
- [bpo-35923](https://python-all.ru/3/whatsnew/changelog.html): Обновлён [`importlib.machinery.BuiltinImporter`](https://python-all.ru/3/library/importlib.html#importlib.machinery.BuiltinImporter) для использования `loader._ORIGIN` вместо жёстко заданного значения. Исправление от Donghee Na.
- [bpo-38010](https://python-all.ru/3/whatsnew/changelog.html): В `importlib.metadata` произведена синхронизация с `importlib_metadata` 0.20, уточнено поведение `files()` и исправлена ошибка, при которой для `requires()` на `dist-info` возвращалось только одно требование.
- [bpo-38006](https://python-all.ru/3/whatsnew/changelog.html): weakref.WeakValueDictionary определяет локальную функцию remove(), используемую как колбэк для слабых ссылок. Эта функция создавалась с замыканием. Изменить реализацию, чтобы избежать замыкания.
- [bpo-37995](https://python-all.ru/3/whatsnew/changelog.html): Добавлена опция *indent* в [`ast.dump()`](https://python-all.ru/3/library/ast.html#ast.dump), позволяющая генерировать многострочный вывод с отступами.
- [bpo-34410](https://python-all.ru/3/whatsnew/changelog.html): Исправлен сбой в итераторе `tee()` при повторном входе. Теперь в этом случае возбуждается RuntimeError.
- [bpo-37140](https://python-all.ru/3/whatsnew/changelog.html): Исправление регрессии ctypes в Python 3.8. Когда ctypes.Structure передаётся копией в функцию, внутренние механизмы ctypes создавали временный объект, который приводил к вызову финализатора структуры (\_\_del\_\_) дважды. Семантика Python требует, чтобы финализатор вызывался ровно один раз. Исправлены внутренние механизмы ctypes, чтобы финализатор больше не вызывался дважды.
- [bpo-37587](https://python-all.ru/3/whatsnew/changelog.html): `_json.scanstring` теперь работает до 3 раз быстрее, когда в JSON-строке много символов, экранированных обратной косой чертой.
- [bpo-37834](https://python-all.ru/3/whatsnew/changelog.html): Предотвращение исключения shutil.rmtree при сборке в не-Windows системе без поддержки системного вызова fd, как в старых версиях macOS.
- [bpo-10978](https://python-all.ru/3/whatsnew/changelog.html): Семафоры и BoundedSemaphores теперь могут освобождать более одного ждущего потока за раз.
- [bpo-37972](https://python-all.ru/3/whatsnew/changelog.html): Подписки объектов `unittest.mock.call` теперь получают тот же механизм цепочек, что и любые другие пользовательские атрибуты, так что следующее использование больше не вызывает `TypeError`:

  `call().foo().__getitem__('bar')`

  Исправление от blhsing
- [bpo-37965](https://python-all.ru/3/whatsnew/changelog.html): Исправление предупреждения компилятора C, вызванного distutils.ccompiler.CCompiler.has\_function.
- [bpo-37964](https://python-all.ru/3/whatsnew/changelog.html): Добавлена команда `F_GETPATH` в [`fcntl`](https://python-all.ru/3/library/fcntl.html#module-fcntl).
- [bpo-37960](https://python-all.ru/3/whatsnew/changelog.html): `repr()` буферизованных и текстовых потоков теперь подавляет только ожидаемые исключения при получении значений атрибутов «name» и «mode».
- [bpo-37961](https://python-all.ru/3/whatsnew/changelog.html): Добавлено поле `total_nframe` в трассировки, собираемые модулем tracemalloc. Это поле указывает исходное количество кадров до его усечения.
- [bpo-37951](https://python-all.ru/3/whatsnew/changelog.html): Большинство возможностей модуля подпроцесса теперь снова работают в субинтерпретаторах. Только *preexec\_fn* ограничена в субинтерпретаторах.
- [bpo-36205](https://python-all.ru/3/whatsnew/changelog.html): Исправление реализации rusage в time.process\_time() для корректного отображения суммы системного и пользовательского времени ЦП.
- [bpo-37950](https://python-all.ru/3/whatsnew/changelog.html): Исправлен [`ast.dump()`](https://python-all.ru/3/library/ast.html#ast.dump) при вызове с неполностью инициализированным узлом.
- [bpo-34679](https://python-all.ru/3/whatsnew/changelog.html): Восстановлена возможность создания циклов событий Windows IOCP из неосновного потока.
- [bpo-36917](https://python-all.ru/3/whatsnew/changelog.html): Добавлена реализация по умолчанию метода [`ast.NodeVisitor.visit_Constant()`](https://python-all.ru/3/library/ast.html#ast.NodeVisitor.visit_Constant), которая выдаёт предупреждение об устаревании и вызывает соответствующие методы `visit_Num()`, `visit_Str()` и т. д.
- [bpo-37798](https://python-all.ru/3/whatsnew/changelog.html): Обновлён test\_statistics.py для проверки, что модуль statistics хорошо работает как в реализации на C, так и на Python. Исправление от Donghee Na
- [bpo-26589](https://python-all.ru/3/whatsnew/changelog.html): Добавлен новый код состояния в модуль http: 451 UNAVAILABLE\_FOR\_LEGAL\_REASONS
- [bpo-37915](https://python-all.ru/3/whatsnew/changelog.html): Исправлено segmentation fault, возникавшее при сравнении экземпляров объектов `datetime.timezone` и `datetime.tzinfo`. Исправление от Pablo Galindo.
- [bpo-32554](https://python-all.ru/3/whatsnew/changelog.html): Устарело поведение random.seed(), вызывающее хеш для произвольных типов.
- [bpo-9938](https://python-all.ru/3/whatsnew/changelog.html): Добавлен необязательный именованный аргумент `exit_on_error` для `ArgumentParser`.
- [bpo-37851](https://python-all.ru/3/whatsnew/changelog.html): Модуль [`faulthandler`](https://python-all.ru/3/library/faulthandler.html#module-faulthandler) больше не выделяет свой альтернативный стек при запуске Python. Теперь стек выделяется только при первом использовании faulthandler.
- [bpo-32793](https://python-all.ru/3/whatsnew/changelog.html): Исправлена дублированная отладочная информация при вызове [`smtplib.SMTP.connect()`](https://python-all.ru/3/library/smtplib.html#smtplib.SMTP.connect).
- [bpo-37885](https://python-all.ru/3/whatsnew/changelog.html): venv: не генерировать предупреждение о неопределённой переменной при деактивации.
- [bpo-37868](https://python-all.ru/3/whatsnew/changelog.html): Исправлен dataclasses.is\_dataclass при передаче экземпляра, который никогда не вызывает AttributeError в \_\_getattr\_\_. То есть объекта, который возвращает что-то для \_\_dataclass\_fields\_\_, даже если это не dataclass.
- [bpo-37811](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка, из-за которой функция `socket` модуля `socket.connect(address)` не могла установить соединение при прерывании системного вызова. Проблема наблюдалась на всех ОС, где системный вызов `poll(2)` может принимать только неотрицательные целые числа и -1 в качестве значения таймаута.
- [bpo-37863](https://python-all.ru/3/whatsnew/changelog.html): Оптимизации для Fraction.\_\_hash\_\_, предложенные Тимом Питерсом.
- [bpo-21131](https://python-all.ru/3/whatsnew/changelog.html): Исправлен стек `faulthandler.register(chain=True)`. Модуль faulthandler теперь выделяет отдельный стек размером `SIGSTKSZ*2` байт, вместо всего `SIGSTKSZ` байт. Вызов предыдущего обработчика сигналов внутри обработчика faulthandler потребляет более `SIGSTKSZ` байт стековой памяти на некоторых платформах.
- [bpo-37798](https://python-all.ru/3/whatsnew/changelog.html): Добавлен быстрый путь на C для statistics.NormalDist.inv\_cdf(). Исправление от Donghee Na.
- [bpo-37804](https://python-all.ru/3/whatsnew/changelog.html): Удалён устаревший метод `threading.Thread.isAlive()`. Исправление от Donghee Na.
- [bpo-37819](https://python-all.ru/3/whatsnew/changelog.html): Добавлен метод Fraction.as\_integer\_ratio() для соответствия аналогичным методам в bool, int, float и decimal.
- [bpo-14465](https://python-all.ru/3/whatsnew/changelog.html): Добавлена функция xml.etree.ElementTree.indent() для красивой печати XML-деревьев. Автор – Stefan Behnel.
- [bpo-37810](https://python-all.ru/3/whatsnew/changelog.html): Исправлено отображение подсказки [`difflib`](https://python-all.ru/3/library/difflib.html#module-difflib) `?` в выводе diff при работе с табуляцией. Исправление от Anthony Sottile.
- [bpo-37772](https://python-all.ru/3/whatsnew/changelog.html): В `zipfile.Path` при добавлении неявных каталогов теперь гарантируется, что родительские каталоги добавляются, а дубликаты исключаются.
- [bpo-18578](https://python-all.ru/3/whatsnew/changelog.html): `test.bytecode_helper` переименован и задокументирован как `test.support.bytecode_helper`. Исправление от Joannah Nanjekye.
- [bpo-37785](https://python-all.ru/3/whatsnew/changelog.html): Исправлены предупреждения xgettext в [`argparse`](https://python-all.ru/3/library/argparse.html#module-argparse).
- [bpo-34488](https://python-all.ru/3/whatsnew/changelog.html): Метод `writelines()` из [`io.BytesIO`](https://python-all.ru/3/library/io.html#io.BytesIO) теперь работает немного быстрее при передаче множества коротких строк. Исправление от Sergey Fedoseev.
- [bpo-37449](https://python-all.ru/3/whatsnew/changelog.html): `ensurepip` теперь использует `importlib.resources.read_binary()` для чтения данных вместо `pkgutil.get_data()`. Исправление от Joannah Nanjekye.
- [bpo-28292](https://python-all.ru/3/whatsnew/changelog.html): Вспомогательные функции calendar.py помечены как приватные. Это соответствует рекомендации PEP 8 по соблюдению стилевых соглашений в модуле и устраняет известный случай путаницы у пользователей.
- [bpo-18049](https://python-all.ru/3/whatsnew/changelog.html): Добавлено определение THREAD\_STACK\_SIZE для AIX в Python/thread\_pthread.h. Размер стека потока по умолчанию приводил к сбоям при стандартном ограничении рекурсии. Исправление от M Felt.
- [bpo-37742](https://python-all.ru/3/whatsnew/changelog.html): API logging.getLogger() теперь возвращает корневой логгер при передаче имени ‘root’, тогда как ранее возвращался не-корневой логгер с именем ‘root’. Это может повлиять на случаи, когда пользовательский код явно запрашивает не-корневой логгер с именем ‘root’ или создаёт логгер через logging.getLogger(\_\_name\_\_) в каком-то модуле верхнего уровня с именем ‘root.py’.
- [bpo-37738](https://python-all.ru/3/whatsnew/changelog.html): Исправлена реализация curses `addch(str, color_pair)`: теперь передаётся цветовая пара в `setcchar()` вместо постоянной передачи 0 в качестве цветовой пары.
- [bpo-37723](https://python-all.ru/3/whatsnew/changelog.html): Исправлено снижение производительности при разборе регулярных выражений с огромными наборами символов. Исправление от Yann Vaginay.
- [bpo-35943](https://python-all.ru/3/whatsnew/changelog.html): Функция [`PyImport_GetModule()`](https://python-all.ru/3/c-api/import.html#c.PyImport_GetModule) теперь гарантирует, что любой возвращаемый ею модуль полностью инициализирован. Исправление от Joannah Nanjekye.
- [bpo-32178](https://python-all.ru/3/whatsnew/changelog.html): Исправлен IndexError в пакете [`email`](https://python-all.ru/3/library/email.html#module-email) при попытке разобрать некорректные поля адреса, начинающиеся с `:`.
- [bpo-37268](https://python-all.ru/3/whatsnew/changelog.html): Модуль `parser` устарел и будет удалён в будущих версиях Python.
- [bpo-11953](https://python-all.ru/3/whatsnew/changelog.html): Дополнение кодов ошибок WSA\* в [`socket`](https://python-all.ru/3/library/socket.html#module-socket).
- [bpo-37685](https://python-all.ru/3/whatsnew/changelog.html): Исправлены сравнения [`datetime.timedelta`](https://python-all.ru/3/library/datetime.html#datetime.timedelta) и [`datetime.timezone`](https://python-all.ru/3/library/datetime.html#datetime.timezone).
- [bpo-37697](https://python-all.ru/3/whatsnew/changelog.html): `importlib.metadata` синхронизирован с [importlib\_metadata 0.19](https://python-all.ru/3/whatsnew/changelog.html), улучшена обработка файлов EGG-INFO и исправлен сбой, когда имена точек входа содержали двоеточия.
- [bpo-37695](https://python-all.ru/3/whatsnew/changelog.html): Исправлено сообщение об ошибке [`curses.unget_wch()`](https://python-all.ru/3/library/curses.html#curses.unget_wch). Исправление от Anthony Sottile.
- [bpo-37689](https://python-all.ru/3/whatsnew/changelog.html): Добавлен `is_relative_to()` в `PurePath` для определения, является ли один путь относительным по отношению к другому.
- [bpo-29553](https://python-all.ru/3/whatsnew/changelog.html): Исправлен [`argparse.ArgumentParser.format_usage()`](https://python-all.ru/3/library/argparse.html#argparse.ArgumentParser.format_usage) для взаимоисключающих групп. Исправление от Andrew Nester.
- [bpo-37691](https://python-all.ru/3/whatsnew/changelog.html): Функция math.dist() теперь принимает координаты как последовательности (или итерабельные объекты), а не только кортежи.
- [bpo-37685](https://python-all.ru/3/whatsnew/changelog.html): Исправлены реализации `__eq__`, `__lt__` и т.д. в некоторых классах. Теперь они возвращают [`NotImplemented`](https://python-all.ru/3/library/constants.html#NotImplemented) для неподдерживаемого типа другого операнда. Это позволяет другому операнду сыграть свою роль (например, сравнение на равенство с [`ANY`](https://python-all.ru/3/library/unittest.mock.html#unittest.mock.ANY) вернёт `True`).
- [bpo-37354](https://python-all.ru/3/whatsnew/changelog.html): Сценарий Activate.ps1 Powershell сделан статическим, чтобы можно было его подписать.
- [bpo-37664](https://python-all.ru/3/whatsnew/changelog.html): Обновлены wheels, поставляемые с ensurepip (pip 19.2.3 и setuptools 41.2.0)
- [bpo-37663](https://python-all.ru/3/whatsnew/changelog.html): Обеспечена согласованность сценариев активации оболочки venv за счёт повсеместного использования \_\_VENV\_PROMPT\_\_.
- [bpo-37642](https://python-all.ru/3/whatsnew/changelog.html): Allowed the pure Python implementation of [`datetime.timezone`](https://python-all.ru/3/library/datetime.html#datetime.timezone) to represent sub-minute offsets close to minimum and maximum boundaries, specifically in the ranges (23:59, 24:00) and (-23:59, 24:00). Patch by Ngalim Siregar
- [bpo-36161](https://python-all.ru/3/whatsnew/changelog.html): In [`posix`](https://python-all.ru/3/library/posix.html#module-posix), use `ttyname_r` instead of `ttyname` for thread safety.
- [bpo-36324](https://python-all.ru/3/whatsnew/changelog.html): Make internal attributes for statistics.NormalDist() private.
- [bpo-37555](https://python-all.ru/3/whatsnew/changelog.html): Fix `NonCallableMock._call_matcher` returning tuple instead of `_Call` object when `self._spec_signature` exists. Patch by Elizabeth Uselton
- [bpo-29446](https://python-all.ru/3/whatsnew/changelog.html): Make `from tkinter import *` import only the expected objects.
- [bpo-16970](https://python-all.ru/3/whatsnew/changelog.html): Adding a value error when an invalid value in passed to nargs Patch by Robert Leenders
- [bpo-34443](https://python-all.ru/3/whatsnew/changelog.html): Exceptions from [`enum`](https://python-all.ru/3/library/enum.html#module-enum) now use the `__qualname` of the enum class in the exception message instead of the `__name__`.
- [bpo-37491](https://python-all.ru/3/whatsnew/changelog.html): Fix `IndexError` when parsing email headers with unexpectedly ending bare-quoted string value. Patch by Abhilash Raj.
- [bpo-37587](https://python-all.ru/3/whatsnew/changelog.html): Make json.loads faster for long strings. (Patch by Marco Paolini)
- [bpo-18378](https://python-all.ru/3/whatsnew/changelog.html): Recognize “UTF-8” as a valid value for LC\_CTYPE in locale.\_parse\_localename.
- [bpo-37579](https://python-all.ru/3/whatsnew/changelog.html): Return [`NotImplemented`](https://python-all.ru/3/library/constants.html#NotImplemented) in Python implementation of `__eq__` for [`timedelta`](https://python-all.ru/3/library/datetime.html#datetime.timedelta) and [`time`](https://python-all.ru/3/library/datetime.html#datetime.time) when the other object being compared is not of the same type to match C implementation. Patch by Karthikeyan Singaravelan.
- [bpo-21478](https://python-all.ru/3/whatsnew/changelog.html): Record calls to parent when autospecced object is attached to a mock using `unittest.mock.attach_mock()`. Patch by Karthikeyan Singaravelan.
- [bpo-37531](https://python-all.ru/3/whatsnew/changelog.html): “python3 -m test -jN –timeout=TIMEOUT” now kills a worker process if it runs longer than *TIMEOUT* seconds.
- [bpo-37482](https://python-all.ru/3/whatsnew/changelog.html): Fix serialization of display name in originator or destination address fields with both encoded words and special chars.
- [bpo-36993](https://python-all.ru/3/whatsnew/changelog.html): Improve error reporting for corrupt zip files with bad zip64 extra data. Patch by Daniel Hillier.
- [bpo-37502](https://python-all.ru/3/whatsnew/changelog.html): pickle.loads() no longer raises TypeError when the buffers argument is set to None
- [bpo-37520](https://python-all.ru/3/whatsnew/changelog.html): Correct behavior for zipfile.Path.parent when the path object identifies a subdirectory.
- [bpo-18374](https://python-all.ru/3/whatsnew/changelog.html): Fix the `.col_offset` attribute of nested [`ast.BinOp`](https://python-all.ru/3/library/ast.html#ast.BinOp) instances which had a too large value in some situations.
- [bpo-37424](https://python-all.ru/3/whatsnew/changelog.html): Fixes a possible hang when using a timeout on `subprocess.run()` while capturing output. If the child process spawned its own children or otherwise connected its stdout or stderr handles with another process, we could hang after the timeout was reached and our child was killed when attempting to read final output from the pipes.
- [bpo-37421](https://python-all.ru/3/whatsnew/changelog.html): Fix `multiprocessing.util.get_temp_dir()` finalizer: clear also the ‘tempdir’ configuration of the current process, so next call to `get_temp_dir()` will create a new temporary directory, rather than reusing the removed temporary directory.
- [bpo-37481](https://python-all.ru/3/whatsnew/changelog.html): The distutils `bdist_wininst` command is deprecated in Python 3.8, use `bdist_wheel` (wheel packages) instead.
- [bpo-37479](https://python-all.ru/3/whatsnew/changelog.html): When `Enum.__str__` is overridden in a derived class, the override will be used by `Enum.__format__` regardless of whether mixin classes are present.
- [bpo-37440](https://python-all.ru/3/whatsnew/changelog.html): http.client now enables TLS 1.3 post-handshake authentication for default context or if a cert\_file is passed to HTTPSConnection.
- [bpo-37437](https://python-all.ru/3/whatsnew/changelog.html): Update vendorized expat version to 2.2.7.
- [bpo-37428](https://python-all.ru/3/whatsnew/changelog.html): SSLContext.post\_handshake\_auth = True no longer sets SSL\_VERIFY\_POST\_HANDSHAKE verify flag for client connections. Although the option is documented as ignored for clients, OpenSSL implicitly enables cert chain validation when the flag is set.
- [bpo-37420](https://python-all.ru/3/whatsnew/changelog.html): [`os.sched_setaffinity()`](https://python-all.ru/3/library/os.html#os.sched_setaffinity) now correctly handles errors that arise during iteration over its `mask` argument. Patch by Brandt Bucher.
- [bpo-37412](https://python-all.ru/3/whatsnew/changelog.html): The [`os.getcwdb()`](https://python-all.ru/3/library/os.html#os.getcwdb) function now uses the UTF-8 encoding on Windows, rather than the ANSI code page: see [**PEP 529**](https://python-all.ru/3/whatsnew/changelog.html) for the rationale. The function is no longer deprecated on Windows.
- [bpo-37406](https://python-all.ru/3/whatsnew/changelog.html): The sqlite3 module now raises TypeError, rather than ValueError, if operation argument type is not str: execute(), executemany() and calling a connection.
- [bpo-29412](https://python-all.ru/3/whatsnew/changelog.html): Fix IndexError in parsing a header value ending unexpectedly. Patch by Abhilash Raj.
- [bpo-36546](https://python-all.ru/3/whatsnew/changelog.html): The *dist* argument for statistics.quantiles() is now positional only. The current name doesn’t reflect that the argument can be either a dataset or a distribution. Marking the parameter as positional avoids confusion and makes it possible to change the name later.
- [bpo-37394](https://python-all.ru/3/whatsnew/changelog.html): Fix a bug that was causing the [`queue`](https://python-all.ru/3/library/queue.html#module-queue) module to fail if the accelerator module was not available. Patch by Pablo Galindo.
- [bpo-37376](https://python-all.ru/3/whatsnew/changelog.html): [`pprint`](https://python-all.ru/3/library/pprint.html#module-pprint) now has support for [`types.SimpleNamespace`](https://python-all.ru/3/library/types.html#types.SimpleNamespace). Patch by Carl Bordum Hansen.
- [bpo-26967](https://python-all.ru/3/whatsnew/changelog.html): [`ArgumentParser`](https://python-all.ru/3/library/argparse.html#argparse.ArgumentParser) с `allow_abbrev=False` больше не отключает группировку коротких флагов, таких как `-vv`, а только отключает сокращение длинных флагов, как и описано в документации. Исправление от Zac Hatfield-Dodds.
- [bpo-37212](https://python-all.ru/3/whatsnew/changelog.html): [`unittest.mock.call()`](https://python-all.ru/3/library/unittest.mock.html#unittest.mock.call) теперь сохраняет порядок именованных аргументов в выводе repr. Исправление от Karthikeyan Singaravelan.
- [bpo-37372](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка при распаковке объектов datetime.time из Python 2 с секундами \>=24. Исправление от Justin Blanchard.
- [bpo-37345](https://python-all.ru/3/whatsnew/changelog.html): Добавлена официальная поддержка сокетов UDPLITE. Поддержка существовала и раньше, но теперь её легче обнаружить с помощью `hasattr(socket, 'IPPROTO_UDPLITE')`, и для каждого из необходимых значений определены константы: `socket.IPPROTO_UDPLITE`, `UDPLITE_SEND_CSCOV` и `UDPLITE_RECV_CSCOV`. Исправление от Gabe Appleton.
- [bpo-37358](https://python-all.ru/3/whatsnew/changelog.html): Оптимизирован `functools.partial` за счёт использования vectorcall.
- [bpo-37347](https://python-all.ru/3/whatsnew/changelog.html): Методы [`sqlite3.Connection.create_aggregate()`](https://python-all.ru/3/library/sqlite3.html#sqlite3.Connection.create_aggregate), [`sqlite3.Connection.create_function()`](https://python-all.ru/3/library/sqlite3.html#sqlite3.Connection.create_function), [`sqlite3.Connection.set_authorizer()`](https://python-all.ru/3/library/sqlite3.html#sqlite3.Connection.set_authorizer), [`sqlite3.Connection.set_progress_handler()`](https://python-all.ru/3/library/sqlite3.html#sqlite3.Connection.set_progress_handler) [`sqlite3.Connection.set_trace_callback()`](https://python-all.ru/3/library/sqlite3.html#sqlite3.Connection.set_trace_callback) приводят к ошибкам сегментации, если некоторые из этих методов вызываются дважды с равным, но не идентичным объектом. Теперь колбэки сохраняются более аккуратно. Исправление от Aleksandr Balezin.
- [bpo-37163](https://python-all.ru/3/whatsnew/changelog.html): Аргумент *obj* функции [`dataclasses.replace()`](https://python-all.ru/3/library/dataclasses.html#dataclasses.replace) теперь является только позиционным.
- [bpo-37085](https://python-all.ru/3/whatsnew/changelog.html): Добавлены опциональные константы Broadcast Manager для Linux SocketCAN, используемые в качестве флагов для настройки поведения BCM, в модуль socket. Исправление от Karl Ding.
- [bpo-37328](https://python-all.ru/3/whatsnew/changelog.html): `HTMLParser.unescape` удалён. Он был недокументированным и устаревшим с Python 3.4.
- [bpo-37305](https://python-all.ru/3/whatsnew/changelog.html): Добавлено .webmanifest -\> application/manifest+json в список распознаваемых типов файлов и заголовков типа содержимого.
- [bpo-37320](https://python-all.ru/3/whatsnew/changelog.html): Псевдонимы `aifc.openfp()` для `aifc.open()`, `sunau.openfp()` для `sunau.open()` и `wave.openfp()` для `wave.open()` были удалены. Они были устаревшими с Python 3.7.
- [bpo-37315](https://python-all.ru/3/whatsnew/changelog.html): Устарел приём чисел с плавающей запятой с целочисленным значением (например, `5.0`) в [`math.factorial()`](https://python-all.ru/3/library/math.html#math.factorial).
- [bpo-37312](https://python-all.ru/3/whatsnew/changelog.html): Модули `_dummy_thread` и `dummy_threading` были удалены. Эти модули были устаревшими с Python 3.7, который требует поддержки потоков.
- [bpo-33972](https://python-all.ru/3/whatsnew/changelog.html): Письмо с одной частью, но с типом содержимого, установленным в `multipart/*`, больше не вызывает AttributeError.
- [bpo-37280](https://python-all.ru/3/whatsnew/changelog.html): Использовать пул потоков для чтения из файла в запасном режиме sendfile.
- [bpo-37279](https://python-all.ru/3/whatsnew/changelog.html): Исправлена поддержка asyncio sendfile, когда sendfile отправляет лишние данные в запасном режиме.
- [bpo-19865](https://python-all.ru/3/whatsnew/changelog.html): [`ctypes.create_unicode_buffer()`](https://python-all.ru/3/library/ctypes.html#ctypes.create_unicode_buffer) теперь также поддерживает символы вне BMP на платформах с 16-битным `wchar_t` (например, Windows и AIX).
- [bpo-37266](https://python-all.ru/3/whatsnew/changelog.html): В подынтерпретаторе порождение потока-демона теперь вызывает исключение. Потоки-демоны никогда не поддерживались в подынтерпретаторах. Ранее финализация подынтерпретатора завершалась фатальной ошибкой Python, если поток-демон всё ещё выполнялся.
- [bpo-37210](https://python-all.ru/3/whatsnew/changelog.html): Разрешить чистой реализации на Python [`pickle`](https://python-all.ru/3/library/pickle.html#module-pickle) работать даже когда модуль C `_pickle` недоступен.
- [bpo-21872](https://python-all.ru/3/whatsnew/changelog.html): Исправлен [`lzma`](https://python-all.ru/3/library/lzma.html#module-lzma): модуль распаковывает данные не полностью. При распаковке файла формата FORMAT\_ALONE, в котором отсутствует маркер конца, иногда не выводится от одного до десятков байт. Исправление от Ma Lin.
- [bpo-35922](https://python-all.ru/3/whatsnew/changelog.html): Исправлены `RobotFileParser.crawl_delay()` и `RobotFileParser.request_rate()`, чтобы они возвращали `None` вместо вызова [`AttributeError`](https://python-all.ru/3/library/exceptions.html#AttributeError), когда в файле robots.txt не определено соответствующее правило. Исправление от Rémi Lapeyre.
- [bpo-35766](https://python-all.ru/3/whatsnew/changelog.html): Изменён формат feature\_version на кортеж (major, minor).
- [bpo-36607](https://python-all.ru/3/whatsnew/changelog.html): Устранено [`RuntimeError`](https://python-all.ru/3/library/exceptions.html#RuntimeError), вызываемое [`asyncio.all_tasks()`](https://python-all.ru/3/library/asyncio-task.html#asyncio.all_tasks), если внутреннее слабое множество задач изменяется другим потоком во время итерации.
- [bpo-18748](https://python-all.ru/3/whatsnew/changelog.html): Деструктор `_pyio.IOBase` теперь ничего не делает, если получение атрибута `closed` завершается неудачей, чтобы лучше имитировать финализатор `_io.IOBase`.
- [bpo-36402](https://python-all.ru/3/whatsnew/changelog.html): Исправлено состояние гонки при завершении Python во время ожидания потоков. Ожидание теперь продолжается до удаления состояния потока Python всех не-демонических потоков (join всех не-демонических потоков), а не просто до завершения не-демонических потоков Python.
- [bpo-37206](https://python-all.ru/3/whatsnew/changelog.html): Значения по умолчанию, которые не могут быть представлены как объекты Python, больше не представляются некорректно как `None` в сигнатурах функций.
- [bpo-37111](https://python-all.ru/3/whatsnew/changelog.html): Добавлены именованные параметры `encoding` и `errors` в `logging.basicConfig`.
- [bpo-12144](https://python-all.ru/3/whatsnew/changelog.html): Обеспечена обработка кук с атрибутом `expires` в `CookieJar.make_cookies()`.
- [bpo-34886](https://python-all.ru/3/whatsnew/changelog.html): Исправлено непреднамеренное ValueError от [`subprocess.run()`](https://python-all.ru/3/library/subprocess.html#subprocess.run) при проверке конфликтующих аргументов *input* и *stdin* или *capture\_output* и *stdout* или *stderr*, когда они были явно указаны, но со значениями `None` внутри переданного словаря `**kwargs`, а не переданы напрямую по имени. Исправление подготовлено Rémi Lapeyre.
- [bpo-37173](https://python-all.ru/3/whatsnew/changelog.html): Сообщение об исключении для `inspect.getfile()` теперь корректно сообщает переданный класс, а не модуль builtins.
- [bpo-37178](https://python-all.ru/3/whatsnew/changelog.html): Добавлена форма math.perm() с одним аргументом, которая означает то же, что и math.factorial().
- [bpo-37178](https://python-all.ru/3/whatsnew/changelog.html): Для math.perm(n, k) параметр k по умолчанию равен n, что даёт тот же результат, что и factorial.
- [bpo-37165](https://python-all.ru/3/whatsnew/changelog.html): Функция \_collections.\_count\_elements переведена на использование Argument Clinic.
- [bpo-34767](https://python-all.ru/3/whatsnew/changelog.html): Не всегда создавать [`collections.deque`](https://python-all.ru/3/library/collections.html#collections.deque) в [`asyncio.Lock`](https://python-all.ru/3/library/asyncio-sync.html#asyncio.Lock).
- [bpo-37158](https://python-all.ru/3/whatsnew/changelog.html): Ускорена statistics.fmean() за счёт перехода от функции к генератору.
- [bpo-34282](https://python-all.ru/3/whatsnew/changelog.html): Удалён метод `Enum._convert`, устаревший в 3.8.
- [bpo-37150](https://python-all.ru/3/whatsnew/changelog.html): `argparse._ActionsContainer.add_argument` теперь выбрасывает ошибку, если случайно передать объект класса FileType вместо экземпляра FileType в качестве аргумента `type`.
- [bpo-28724](https://python-all.ru/3/whatsnew/changelog.html): В модуль socket добавлены методы [`socket.send_fds()`](https://python-all.ru/3/library/socket.html#socket.send_fds) и `socket.recv.fds()`. Предложено Joannah Nanjekye, Shinya Okano и Victor Stinner.
- [bpo-35621](https://python-all.ru/3/whatsnew/changelog.html): Поддержка запуска подпроцессов asyncio при выполнении цикла событий в потоке на UNIX.
- [bpo-36520](https://python-all.ru/3/whatsnew/changelog.html): Длинные заголовки email с символами UTF-8 теперь правильно кодируются при переносе. Патч от Jeffrey Kintscher.
- [bpo-30835](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка в разборе email, когда сообщение с недопустимыми байтами в content-transfer-encoding многокомпонентного сообщения могло вызывать AttributeError. Патч от Andrew Donnellan.
- [bpo-31163](https://python-all.ru/3/whatsnew/changelog.html): Методы rename и replace экземпляра pathlib.Path теперь возвращают новый экземпляр Path.
- [bpo-25068](https://python-all.ru/3/whatsnew/changelog.html): [`urllib.request.ProxyHandler`](https://python-all.ru/3/library/urllib.request.html#urllib.request.ProxyHandler) теперь приводит к нижнему регистру ключи переданного словаря.
- [bpo-26185](https://python-all.ru/3/whatsnew/changelog.html): Исправлен [`repr()`](https://python-all.ru/3/library/functions.html#repr) для пустого объекта `ZipInfo`. Патч от Mickaël Schoentgen.
- [bpo-21315](https://python-all.ru/3/whatsnew/changelog.html): Заголовки email, содержащие слова, закодированные в RFC2047, разбираются, несмотря на отсутствие пробелов, и регистрируется дефект. Также отсутствие завершающего пробела после закодированных слов теперь регистрируется как дефект.
- [bpo-31904](https://python-all.ru/3/whatsnew/changelog.html): Портирование test\_datetime на VxWorks: пропускать тесты zoneinfo на VxWorks.
- [bpo-35805](https://python-all.ru/3/whatsnew/changelog.html): Добавлен парсер для заголовка Message-ID, и он добавлен в стандартный HeaderRegistry. Это должно предотвратить перенос Message-ID с использованием слов, закодированных по RFC 2048.
- [bpo-36871](https://python-all.ru/3/whatsnew/changelog.html): Обеспечено использование сигнатуры метода вместо сигнатуры конструктора класса при проверке mock-объекта на вызовы методов. Патч от Karthikeyan Singaravelan.
- [bpo-35070](https://python-all.ru/3/whatsnew/changelog.html): posix.getgrouplist() теперь работает корректно, когда пользователь принадлежит к NGROUPS\_MAX дополнительным группам. Патч от Jeffrey Kintscher.
- [bpo-31783](https://python-all.ru/3/whatsnew/changelog.html): Исправлено состояние гонки в ThreadPoolExecutor, когда рабочие потоки создаются во время завершения интерпретатора.
- [bpo-36582](https://python-all.ru/3/whatsnew/changelog.html): Исправлен `UserString.encode()` для корректного возврата `bytes` вместо экземпляра `UserString`.
- [bpo-32424](https://python-all.ru/3/whatsnew/changelog.html): Объявлен устаревшим xml.etree.ElementTree.Element.copy() в пользу copy.copy().

  Патч от Gordon P. Hemsley
- [bpo-36564](https://python-all.ru/3/whatsnew/changelog.html): Исправлен бесконечный цикл в логике переноса заголовков email, который возникал, когда max\_line\_length политики email была недостаточной для включения необходимой разметки и значений в сообщении. Патч от Paul Ganssle.
- [bpo-36543](https://python-all.ru/3/whatsnew/changelog.html): Удалены методы Element.getchildren(), Element.getiterator() и ElementTree.getiterator(), а также модуль xml.etree.cElementTree.
- [bpo-36409](https://python-all.ru/3/whatsnew/changelog.html): Удалён старый API plistlib, объявленный устаревшим в Python 3.4.
- [bpo-36302](https://python-all.ru/3/whatsnew/changelog.html): distutils сортирует списки исходных файлов, чтобы файлы .so расширений собирались более воспроизводимо по умолчанию.
- [bpo-36250](https://python-all.ru/3/whatsnew/changelog.html): Игнорировать `ValueError` из `signal` с `interaction` в не основном потоке.
- [bpo-36046](https://python-all.ru/3/whatsnew/changelog.html): Добавлены параметры `user`, `group` и `extra_groups` в конструктор subprocess.Popen. Патч от Patrick McLean.
- [bpo-32627](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка компиляции при включении конфликтующих заголовков `_uuid`.
- [bpo-35800](https://python-all.ru/3/whatsnew/changelog.html): Объявлен устаревшим `smtpd.MailmanProxy` в преддверии будущего удаления.
- [bpo-35168](https://python-all.ru/3/whatsnew/changelog.html): [`shlex.shlex.punctuation_chars`](https://python-all.ru/3/library/shlex.html#shlex.shlex.punctuation_chars) теперь является свойством только для чтения.
- [bpo-8538](https://python-all.ru/3/whatsnew/changelog.html): Добавлена поддержка булевых действий, таких как `--foo` и `--no-foo`, в argparse. Патч предоставлен Rémi Lapeyre.
- [bpo-20504](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка в модуле `cgi`, когда запрос multipart/form-data не содержит заголовка `Content-Length`.
- [bpo-25988](https://python-all.ru/3/whatsnew/changelog.html): Абстрактные базовые классы в [`collections.abc`](https://python-all.ru/3/library/collections.abc.html#module-collections.abc) больше не предоставляются в обычном модуле [`collections`](https://python-all.ru/3/library/collections.html#module-collections).
- [bpo-11122](https://python-all.ru/3/whatsnew/changelog.html): Distutils больше не будет проверять наличие rpmbuild только в указанных путях.
- [bpo-34775](https://python-all.ru/3/whatsnew/changelog.html): Обработка операции деления в PurePath теперь возвращает NotImplemented вместо возбуждения TypeError, если передан объект, не являющийся экземпляром str или PurePath. Исправление от Roger Aiudi.
- [bpo-34749](https://python-all.ru/3/whatsnew/changelog.html): [`binascii.a2b_base64()`](https://python-all.ru/3/library/binascii.html#binascii.a2b_base64) теперь работает до 2 раз быстрее. Исправление от Sergey Fedoseev.
- [bpo-34519](https://python-all.ru/3/whatsnew/changelog.html): Добавлены дополнительные псевдонимы для HP Roman 8. Исправление от Michael Osipov.
- [bpo-28009](https://python-all.ru/3/whatsnew/changelog.html): Исправлена функция uuid.getnode() на платформах с ‘.’ в качестве разделителя MAC-адресов, а также исправлен формат MAC-адреса, в котором пропускается ведущий 0. В настоящее время AIX – единственная известная платформа с такими настройками. Исправление от Michael Felt.
- [bpo-30618](https://python-all.ru/3/whatsnew/changelog.html): Добавлен [`readlink()`](https://python-all.ru/3/library/pathlib.html#pathlib.Path.readlink). Исправление от Girts Folkmanis.
- [bpo-32498](https://python-all.ru/3/whatsnew/changelog.html): [`urllib.parse.unquote()`](https://python-all.ru/3/library/urllib.parse.html#urllib.parse.unquote) теперь принимает байты в дополнение к строкам. Исправление от Stein Karlsen.
- [bpo-33348](https://python-all.ru/3/whatsnew/changelog.html): lib2to3 теперь распознаёт выражения после `*` и `**`, как в `f(*[] or [])`.
- [bpo-32689](https://python-all.ru/3/whatsnew/changelog.html): Обновлена функция [`shutil.move()`](https://python-all.ru/3/library/shutil.html#shutil.move), чтобы разрешить использование объектов Path в качестве аргумента source. Исправление от Emily Morehouse и Maxwell “5.13b” McKinnon.
- [bpo-32820](https://python-all.ru/3/whatsnew/changelog.html): Добавлен `__format__` в классы IPv4 и IPv6. Всегда выводит строку, дополненную нулями. Поддерживает модификаторы b/x/n (bin/hex/native format). Нативный формат для IPv4 – bin, для IPv6 – hex. Также поддерживаются модификаторы ‘#’ и ‘\_’.
- [bpo-27657](https://python-all.ru/3/whatsnew/changelog.html): Исправлен urllib.parse.urlparse() при числовых путях. Строка вида “path:80” больше не разбирается как путь, а как схема (“path”) и путь (“80”).
- [bpo-4963](https://python-all.ru/3/whatsnew/changelog.html): Исправлено недетерминированное поведение при сопоставлении расширений mimetypes и повторной инициализации модуля.

### Документация

- [bpo-21767](https://python-all.ru/3/whatsnew/changelog.html): Явно упоминается поддержка abc в functools.singledispatch
- [bpo-38816](https://python-all.ru/3/whatsnew/changelog.html): Предоставляет больше сведений о взаимодействии между `fork()` и средой выполнения CPython, сосредоточившись только на C-API. Это включает предостережения о том, где `fork()` должна и не должна вызываться.
- [bpo-38351](https://python-all.ru/3/whatsnew/changelog.html): Модернизированы примеры [`email`](https://python-all.ru/3/library/email.html#module-email) с %-форматирования на f-строки.
- [bpo-38778](https://python-all.ru/3/whatsnew/changelog.html): Документирован факт, что [`RuntimeError`](https://python-all.ru/3/library/exceptions.html#RuntimeError) возбуждается, если [`os.fork()`](https://python-all.ru/3/library/os.html#os.fork) вызван в подынтерпретаторе.
- [bpo-38592](https://python-all.ru/3/whatsnew/changelog.html): Добавлен бразильский португальский в переключатель языков на сайте документации Python.
- [bpo-38294](https://python-all.ru/3/whatsnew/changelog.html): Добавлен список символов, которые больше не экранируются, в документацию re.escape
- [bpo-38053](https://python-all.ru/3/whatsnew/changelog.html): Обновлена документация plistlib
- [bpo-26868](https://python-all.ru/3/whatsnew/changelog.html): Исправлен пример использования [`PyModule_AddObject()`](https://python-all.ru/3/c-api/module.html#c.PyModule_AddObject) для корректной обработки ошибок.
- [bpo-36797](https://python-all.ru/3/whatsnew/changelog.html): Исправлена битая ссылка в API Reference distutils.
- [bpo-37977](https://python-all.ru/3/whatsnew/changelog.html): Более строгое и чёткое предупреждение о небезопасности pickle
- [bpo-37979](https://python-all.ru/3/whatsnew/changelog.html): Добавлена ссылка на dateutil.parser.isoparse в документацию datetime.fromisoformat. Исправление от Paul Ganssle
- [bpo-12707](https://python-all.ru/3/whatsnew/changelog.html): Объявлены устаревшими методы info(), geturl(), getcode() в пользу свойств headers, url и status соответственно для HTTPResponse и addinfourl. Также объявлен устаревшим атрибут code в addinfourl в пользу атрибута status. Исправление от Ashwin Ramaswami
- [bpo-37937](https://python-all.ru/3/whatsnew/changelog.html): Упоминание `frame.f_trace` в документации [`sys.settrace()`](https://python-all.ru/3/library/sys.html#sys.settrace).
- [bpo-37878](https://python-all.ru/3/whatsnew/changelog.html): Сделать [`PyThreadState_DeleteCurrent()`](https://python-all.ru/3/c-api/threads.html#c.PyThreadState_DeleteCurrent) внутренним.
- [bpo-37759](https://python-all.ru/3/whatsnew/changelog.html): Начальные правки в Whatsnew 3.8
- [bpo-37726](https://python-all.ru/3/whatsnew/changelog.html): Прекращение рекомендации getopt в руководстве по разбору аргументов командной строки и продвижение argparse.
- [bpo-32910](https://python-all.ru/3/whatsnew/changelog.html): Удалено зависящее от реализации поведение работы Deactivate в venv.
- [bpo-37256](https://python-all.ru/3/whatsnew/changelog.html): Исправлена формулировка аргументов для `Request` в [`urllib.request`](https://python-all.ru/3/library/urllib.request.html#module-urllib.request)
- [bpo-37284](https://python-all.ru/3/whatsnew/changelog.html): Добавлена краткая заметка о том, что любые новые обязательные атрибуты `sys.implementation` должны проходить процесс PEP.
- [bpo-30088](https://python-all.ru/3/whatsnew/changelog.html): Документировано, что конструктор [`mailbox.Maildir`](https://python-all.ru/3/library/mailbox.html#mailbox.Maildir) не пытается проверять корректность структуры каталогов maildir. Патч от Святослава Сидоренко.
- [bpo-37521](https://python-all.ru/3/whatsnew/changelog.html): Исправлены примеры `importlib`: теперь вновь созданные модули добавляются в sys.modules через importlib.util.module\_from\_spec() сразу, а не после вызова loader.exec\_module().

  Спасибо Benjamin Mintz за обнаружение ошибки.
- [bpo-37456](https://python-all.ru/3/whatsnew/changelog.html): Слеш (‘/’) теперь часть синтаксиса.
- [bpo-37487](https://python-all.ru/3/whatsnew/changelog.html): Исправлено описание индекса в PyList\_GetItem: теперь включает 0.
- [bpo-37149](https://python-all.ru/3/whatsnew/changelog.html): Заменена битая ссылка на справочник по Tkinter 8.5 от Джона Шипмана (New Mexico Tech) на ссылку на копию на archive.org.
- [bpo-37478](https://python-all.ru/3/whatsnew/changelog.html): В описание os.chdir() добавлены возможные исключения.
- [bpo-34903](https://python-all.ru/3/whatsnew/changelog.html): Документировано, что в [`datetime.datetime.strptime()`](https://python-all.ru/3/library/datetime.html#datetime.datetime.strptime) ведущий ноль в некоторых двузначных форматах является необязательным. Патч от Майка Глина.
- [bpo-36260](https://python-all.ru/3/whatsnew/changelog.html): Добавлены подводные камни распаковки в документацию модуля zipfile.
- [bpo-37004](https://python-all.ru/3/whatsnew/changelog.html): В документацию difflib добавлено примечание с явным предупреждением, что результаты метода ratio из SequenceMatcher могут зависеть от порядка входных строк.
- [bpo-36960](https://python-all.ru/3/whatsnew/changelog.html): Переработана структура документации [`datetime`](https://python-all.ru/3/library/datetime.html#module-datetime) для повышения удобства использования и читаемости. Патч от Брэда Соломона.
- [bpo-36487](https://python-all.ru/3/whatsnew/changelog.html): В документации C-API уточнено, что такое «главный» интерпретатор.
- [bpo-23460](https://python-all.ru/3/whatsnew/changelog.html): Документация по форматированию десятичных строк с использованием спецификатора `:g` обновлена: указан корректный порог перехода к экспоненциальной нотации. Оригинальный патч предоставлен Tuomas Suutari.
- [bpo-35803](https://python-all.ru/3/whatsnew/changelog.html): Документировано и протестировано, что функции `tempfile` могут принимать [объект, подобный пути](https://python-all.ru/3/glossary.html#term-path-like-object) в качестве аргумента `dir`. Патч от Энтони Соттила.
- [bpo-33944](https://python-all.ru/3/whatsnew/changelog.html): Добавлено примечание о предполагаемом использовании кода в .pth файлах.
- [bpo-34293](https://python-all.ru/3/whatsnew/changelog.html): Исправлен Doc/Makefile в части переменной окружения PAPER и сборки PDF
- [bpo-25237](https://python-all.ru/3/whatsnew/changelog.html): Добавлена документация для модулей tkinter

### Тесты

- [bpo-38614](https://python-all.ru/3/whatsnew/changelog.html): Исправлен test\_communicate() в test\_asyncio.test\_subprocess: используется `support.LONG_TIMEOUT` (5 минут) вместо 1 минуты.
- [bpo-38614](https://python-all.ru/3/whatsnew/changelog.html): Добавлены константы таймаута в [`test.support`](https://python-all.ru/3/library/test.html#module-test.support): [`LOOPBACK_TIMEOUT`](https://python-all.ru/3/library/test.html#test.support.LOOPBACK_TIMEOUT), [`INTERNET_TIMEOUT`](https://python-all.ru/3/library/test.html#test.support.INTERNET_TIMEOUT), [`SHORT_TIMEOUT`](https://python-all.ru/3/library/test.html#test.support.SHORT_TIMEOUT) и [`LONG_TIMEOUT`](https://python-all.ru/3/library/test.html#test.support.LONG_TIMEOUT).
- [bpo-38502](https://python-all.ru/3/whatsnew/changelog.html): test.regrtest теперь использует группы процессов в режиме multiprocessing (опция командной строки -jN), если группы процессов доступны: если доступны функции [`os.setsid()`](https://python-all.ru/3/library/os.html#os.setsid) и [`os.killpg()`](https://python-all.ru/3/library/os.html#os.killpg).
- [bpo-35998](https://python-all.ru/3/whatsnew/changelog.html): Исправлено состояние гонки в test\_asyncio.test\_start\_tls\_server\_1(). Ранее существовало состояние гонки между функцией test main(), которая заменяет протокол, и протоколом тестового ServerProto, который отправляет ANSWER после получения HELLO. Теперь только функция test main() отвечает за отправку данных, ServerProto больше не отправляет данные.
- [bpo-38470](https://python-all.ru/3/whatsnew/changelog.html): Исправлен `test_compileall.test_compile_dir_maxlevels()` в Windows без поддержки длинных путей: теперь создаётся только 3 подкаталога вместо от 20 до 100.
- [bpo-37531](https://python-all.ru/3/whatsnew/changelog.html): При таймауте regrtest больше не пытается снова вызвать `popen.communicate()`: он может зависнуть до завершения всех дочерних процессов, использующих каналы stdout и stderr. Теперь рабочий процесс убивается, а его вывод игнорируется. Также изменён таймаут faulthandler главного процесса с 1 минуты на 5 минут для самых медленных сборочных ферм Python.
- [bpo-38239](https://python-all.ru/3/whatsnew/changelog.html): Исправлен test\_gdb для сборок с Link Time Optimization (LTO).
- [bpo-38275](https://python-all.ru/3/whatsnew/changelog.html): test\_ssl теперь лучше обрабатывает отключённые версии TLS/SSL. Криптополитика OpenSSL и настройки времени выполнения распознаются, тесты для отключённых версий пропускаются. Тесты также принимают больше значений TLS minimum\_versions для платформ, которые переопределяют настройки OpenSSL по умолчанию на более строгие.
- [bpo-38271](https://python-all.ru/3/whatsnew/changelog.html): Приватные ключи для test\_ssl были зашифрованы с помощью 3DES в традиционном формате PKCS#5. 3DES и алгоритм дайджеста PKCS#5 блокируются некоторыми строгими криптополитиками. Теперь используется формат PKCS#8 с шифрованием AES256.
- [bpo-38270](https://python-all.ru/3/whatsnew/changelog.html): В test.support добавлена вспомогательная функция для проверки доступности функции хеширования. Несколько тестов переписаны, чтобы избегать MD5 и вместо него использовать SHA256. Другие тесты помечены как использующие MD5 и пропускаются, если MD5 отключён.
- [bpo-37123](https://python-all.ru/3/whatsnew/changelog.html): Многопроцессный тест test\_mymanager() теперь также ожидает -SIGTERM, а не только код возврата 0. BaseManager.\_finalize\_manager() отправляет SIGTERM процессу-менеджеру, если его остановка занимает более 1 секунды, что происходит на медленных сборочных фермах.
- [bpo-38212](https://python-all.ru/3/whatsnew/changelog.html): Многопроцессные тесты: увеличен таймаут test\_queue\_feeder\_donot\_stop\_onexc() с 1 до 60 секунд.
- [bpo-38117](https://python-all.ru/3/whatsnew/changelog.html): Тестирование с OpenSSL 1.1.1d
- [bpo-38018](https://python-all.ru/3/whatsnew/changelog.html): Повышено покрытие кода для multiprocessing.shared\_memory.
- [bpo-37805](https://python-all.ru/3/whatsnew/changelog.html): Добавлены тесты для json.dump(…, skipkeys=True). Патч от Donghee Na.
- [bpo-37531](https://python-all.ru/3/whatsnew/changelog.html): Улучшен тайм-аут многопроцессного regrtest: теперь при завершении рабочего процесса выводится сообщение, перехватываются исключения popen.kill() и popen.wait(), устанавливается тайм-аут на второй вызов popen.communicate().
- [bpo-37876](https://python-all.ru/3/whatsnew/changelog.html): Добавлены тесты для кодека ROT-13.
- [bpo-36833](https://python-all.ru/3/whatsnew/changelog.html): Добавлены тесты для макросов `PyDateTime_xxx_GET_xxx()` из C API модуля [`datetime`](https://python-all.ru/3/library/datetime.html#module-datetime). Патч от Joannah Nanjekye.
- [bpo-37558](https://python-all.ru/3/whatsnew/changelog.html): Исправлена обработка имени test\_shared\_memory\_cleaned\_after\_process\_termination
- [bpo-37526](https://python-all.ru/3/whatsnew/changelog.html): Добавлен `test.support.catch_threading_exception()`: контекстный менеджер, перехватывающий исключение [`threading.Thread`](https://python-all.ru/3/library/threading.html#threading.Thread) с помощью [`threading.excepthook()`](https://python-all.ru/3/library/threading.html#threading.excepthook).
- [bpo-37421](https://python-all.ru/3/whatsnew/changelog.html): test\_concurrent\_futures теперь явно останавливает экземпляр ForkServer, если он запущен.
- [bpo-37421](https://python-all.ru/3/whatsnew/changelog.html): Тесты multiprocessing теперь останавливают экземпляр ForkServer, если он запущен: закрывают файловый дескриптор «alive», чтобы сервер остановился, а затем удаляют его UNIX-адрес.
- [bpo-37421](https://python-all.ru/3/whatsnew/changelog.html): test\_distutils.test\_build\_ext() теперь может удалять временную директорию в Windows: не импортировать только что собранное C-расширение («xx») в текущем процессе, а тестировать его в отдельном процессе.
- [bpo-37421](https://python-all.ru/3/whatsnew/changelog.html): test\_concurrent\_futures теперь очищает multiprocessing, чтобы немедленно удалить временные директории, созданные multiprocessing.util.get\_temp\_dir().
- [bpo-37421](https://python-all.ru/3/whatsnew/changelog.html): test\_winconsoleio больше не допускает утечки временного файла: использует tempfile.TemporaryFile() для его удаления после завершения теста.
- [bpo-37421](https://python-all.ru/3/whatsnew/changelog.html): Тесты multiprocessing теперь явно вызывают `_run_finalizers()` для немедленного удаления временных директорий, созданных тестами.
- [bpo-37421](https://python-all.ru/3/whatsnew/changelog.html): Тесты urllib.request теперь вызывают [`urlcleanup()`](https://python-all.ru/3/library/urllib.request.html#urllib.request.urlcleanup) для удаления временных файлов, созданных тестами `urlretrieve()`, и для очистки глобальной переменной `_opener`, установленной `urlopen()` и функциями, косвенно вызывающими `urlopen()`.
- [bpo-37472](https://python-all.ru/3/whatsnew/changelog.html): Удалён `Lib/test/outstanding_bugs.py`.
- [bpo-37199](https://python-all.ru/3/whatsnew/changelog.html): Исправлены ошибки тестов, когда IPv6 недоступен или отключён.
- [bpo-19696](https://python-all.ru/3/whatsnew/changelog.html): Заменён устаревший метод «random.choose» на «random.choice» в «test\_pkg\_import.py».
- [bpo-37335](https://python-all.ru/3/whatsnew/changelog.html): Удалён более не нужный код из тестов приведения локали c locale
- [bpo-37421](https://python-all.ru/3/whatsnew/changelog.html): Исправлен test\_shutil: больше нет утечки временных файлов.
- [bpo-37411](https://python-all.ru/3/whatsnew/changelog.html): Исправлен test\_wsgiref.testEnviron(): больше не зависит от переменных окружения (не падает, если переменная «X» установлена).
- [bpo-37400](https://python-all.ru/3/whatsnew/changelog.html): Исправлен test\_os.test\_chown(): теперь для получения групп используется os.getgroups(), а не grp.getgrall(). Также тест переименован в test\_chown\_gid().
- [bpo-37359](https://python-all.ru/3/whatsnew/changelog.html): Добавлена опция –cleanup в python3 -m test для удаления каталогов `test_python_*` предыдущих неудачных заданий. Добавлена цель «make cleantest» для запуска `python3 -m test --cleanup`.
- [bpo-37362](https://python-all.ru/3/whatsnew/changelog.html): test\_gdb больше не завершается ошибкой, если получает «неожиданное» сообщение в stderr: теперь он игнорирует stderr. Цель test\_gdb – проверить, что команды python-gdb.py работают как ожидается, а не тестировать gdb.
- [bpo-35998](https://python-all.ru/3/whatsnew/changelog.html): Избежать TimeoutError в test\_asyncio: test\_start\_tls\_server\_1()
- [bpo-37278](https://python-all.ru/3/whatsnew/changelog.html): Исправлен test\_asyncio ProactorLoopCtrlC: теперь поток присоединяется, чтобы предотвратить утечку работающего потока и ссылки.
- [bpo-37261](https://python-all.ru/3/whatsnew/changelog.html): Исправлен [`test.support.catch_unraisable_exception()`](https://python-all.ru/3/library/test.html#test.support.catch_unraisable_exception): его метод \_\_exit\_\_() теперь игнорирует неперехватываемое исключение, возникающее при очистке его атрибута `unraisable`.
- [bpo-37069](https://python-all.ru/3/whatsnew/changelog.html): regrtest теперь использует [`sys.unraisablehook()`](https://python-all.ru/3/library/sys.html#sys.unraisablehook) для пометки теста как «среда изменена» (ENV\_CHANGED), если тот порождает «невыбрасываемое исключение». Кроме того, regrtest в этом случае логирует предупреждение.

  Используйте `python3 -m test --fail-env-changed` для перехвата неперехватываемых исключений в тестах.
- [bpo-37252](https://python-all.ru/3/whatsnew/changelog.html): Исправлены утверждения в тестах `test_close` и `test_events_mask_overflow` devpoll.
- [bpo-37169](https://python-all.ru/3/whatsnew/changelog.html): Переписаны модульные тесты `_PyObject_IsFreed()`.
- [bpo-37153](https://python-all.ru/3/whatsnew/changelog.html): `test_venv.test_multiprocessing()` теперь явно вызывает `pool.terminate()` для ожидания завершения пула.
- [bpo-34001](https://python-all.ru/3/whatsnew/changelog.html): Обеспечено прохождение тестов test\_ssl с LibreSSL. LibreSSL обрабатывает минимальную и максимальную версию TLS иначе, чем OpenSSL.
- [bpo-36919](https://python-all.ru/3/whatsnew/changelog.html): Сделать реализацию `test_source_encoding.test_issue2301` независимой. Теперь тест будет работать и для CPython, и для IronPython.
- [bpo-30202](https://python-all.ru/3/whatsnew/changelog.html): Обновить `test.test_importlib.test_abc` для тестирования `find_spec()`.
- [bpo-28009](https://python-all.ru/3/whatsnew/changelog.html): Изменить логику test\_uuid для проверки, доступна ли программа И может ли она использоваться для получения MACADDR как основы для UUID. Патч от M. Felt.
- [bpo-34596](https://python-all.ru/3/whatsnew/changelog.html): Использовать причину по умолчанию, когда [`unittest.skip()`](https://python-all.ru/3/library/unittest.html#unittest.skip) не вызывается. Патч от Naitree Zhu.

### Сборка

- [bpo-38809](https://python-all.ru/3/whatsnew/changelog.html): В Windows сборочные скрипты теперь распознают и используют python.exe из активного виртуального окружения.
- [bpo-38684](https://python-all.ru/3/whatsnew/changelog.html): Исправить сборку \_hashlib, когда Blake2 отключён, но OpenSSL его поддерживает.
- [bpo-38468](https://python-all.ru/3/whatsnew/changelog.html): Misc/python-config.in теперь использует `getvar()` для всех ещё существующих вызовов `sysconfig.get_config_var()`. Патч от Joannah Nanjekye.
- [bpo-37415](https://python-all.ru/3/whatsnew/changelog.html): Исправить проверку заголовка stdatomic.h для компилятора ICC: в реализации ICC отсутствует тип atomic\_uintptr\_t, необходимый Python.
- [bpo-38301](https://python-all.ru/3/whatsnew/changelog.html): В семействе Solaris необходимо убедиться, что используется `-D_REENTRANT`. Патч от Jesús Cea Avión.
- [bpo-36002](https://python-all.ru/3/whatsnew/changelog.html): Находить двоичные файлы `llvm-profdata` и `llvm-ar` с помощью `AC_PATH_TOOL`, а не `AC_PATH_TARGET_TOOL`.
- [bpo-37936](https://python-all.ru/3/whatsnew/changelog.html): Файл `.gitignore` теперь систематически сохраняет «rooted» с незавершающей косой черты все правила, которые должны применяться к файлам в определённом месте репозитория. Ранее, когда нужный файл для игнорирования оказывался в корне репозитория, мы чаще всего случайно также игнорировали файлы и каталоги с тем же именем в любом месте дерева.
- [bpo-37760](https://python-all.ru/3/whatsnew/changelog.html): Скрипт `Tools/unicode/makeunicodedata.py`, используемый для преобразования информации из Unicode Character Database в сгенерированный код и данные, используемые методами [`str`](https://python-all.ru/3/library/stdtypes.html#str) и модулем [`unicodedata`](https://python-all.ru/3/library/unicodedata.html#module-unicodedata), теперь обрабатывает данные каждого символа как `dataclass` с именованными атрибутами, а не как список из 18 полей различной длины.
- [bpo-37936](https://python-all.ru/3/whatsnew/changelog.html): Файл `.gitignore` больше не применяется к файлам, которые на самом деле отслеживаются в Git-репозитории. Патч от Greg Price.
- [bpo-37725](https://python-all.ru/3/whatsnew/changelog.html): Изменить цель «clean» в makefile, чтобы она также очищала данные профильной оптимизации (PGO). Ранее пришлось бы использовать «make clean» и «make profile-removal» или «make clobber».
- [bpo-37707](https://python-all.ru/3/whatsnew/changelog.html): Пометить некоторые отдельные тесты для пропуска при использовании –pgo. Отмеченные тесты значительно увеличивают время задачи PGO и, вероятно, не помогают улучшить оптимизацию конечного исполняемого файла.
- [bpo-36044](https://python-all.ru/3/whatsnew/changelog.html): Уменьшить количество модульных тестов, запускаемых для задачи генерации PGO. Это ускоряет задачу примерно в 15 раз. Запуск полного набора модульных тестов медленный. Это изменение может привести к чуть менее оптимизированной сборке, поскольку будет выполняться не так много ветвей кода. Если вы готовы ждать гораздо более медленную сборку, прежнее поведение можно восстановить с помощью ‘./configure \[..\] PROFILE\_TASK=”-m test –pgo-extended”’. Мы не даём гарантий, какой набор задач PGO даёт более быструю сборку. Пользователи, которым это важно, должны запускать свои собственные релевантные бенчмарки, так как результаты могут зависеть от окружения, нагрузки и цепочки инструментов компилятора.
- [bpo-37468](https://python-all.ru/3/whatsnew/changelog.html): `make install` больше не устанавливает файлы `wininst-*.exe`, используемые distutils bdist\_wininst: bdist\_wininst работает только в Windows.
- [bpo-37189](https://python-all.ru/3/whatsnew/changelog.html): Многие функции `PyRun_XXX()`, такие как [`PyRun_String()`](https://python-all.ru/3/c-api/veryhigh.html#c.PyRun_String), больше не экспортировались в `libpython38.dll` по ошибке. Снова экспортировать их, чтобы восстановить совместимость ABI.
- [bpo-25361](https://python-all.ru/3/whatsnew/changelog.html): Включает использование инструкций SSE2 в 32-разрядной сборке Windows.
- [bpo-36210](https://python-all.ru/3/whatsnew/changelog.html): Обновить обнаружение необязательных модулей расширения для AIX. ossaudiodev и spwd не применимы для AIX и больше не сообщаются как отсутствующие. Сторонняя упаковка ncurses (с поддержкой ASIS) конфликтует с официально поддерживаемой библиотекой curses AIX, поэтому настраивать AIX на использование libcurses.a. Однако пропускать попытку сборки \_curses\_panel.

  патч от M Felt

### Windows

- [bpo-38589](https://python-all.ru/3/whatsnew/changelog.html): Исправляет ярлык HTML Help, когда Windows установлен не на диск C
- [bpo-38453](https://python-all.ru/3/whatsnew/changelog.html): Обеспечить правильное разрешение относительных путей в ntpath.realpath().
- [bpo-38519](https://python-all.ru/3/whatsnew/changelog.html): Восстанавливает внутренние заголовки C, отсутствовавшие в пакетах nuget.org и Microsoft Store.
- [bpo-38492](https://python-all.ru/3/whatsnew/changelog.html): Удалить зависимость `pythonw.exe` от Microsoft C++ runtime.
- [bpo-38344](https://python-all.ru/3/whatsnew/changelog.html): Исправить сообщение об ошибке в activate.bat
- [bpo-38359](https://python-all.ru/3/whatsnew/changelog.html): Обеспечивает чтение правильного ключа реестра загрузчиком `pyw.exe`.
- [bpo-38355](https://python-all.ru/3/whatsnew/changelog.html): Исправляет `ntpath.realpath`, завершающийся ошибкой на `sys.executable`.
- [bpo-38117](https://python-all.ru/3/whatsnew/changelog.html): Обновить встроенную OpenSSL до версии 1.1.1d
- [bpo-38092](https://python-all.ru/3/whatsnew/changelog.html): Снизить накладные расходы при использовании multiprocessing в виртуальном окружении Windows.
- [bpo-38133](https://python-all.ru/3/whatsnew/changelog.html): Разрешить программе запуска py.exe находить установки из Microsoft Store и улучшить отображение активных виртуальных окружений.
- [bpo-38114](https://python-all.ru/3/whatsnew/changelog.html): `pip.ini` больше не включается в пакет Nuget.
- [bpo-32592](https://python-all.ru/3/whatsnew/changelog.html): Установить Windows 8 в качестве минимально необходимой версии для поддержки API
- [bpo-36634](https://python-all.ru/3/whatsnew/changelog.html): [`os.cpu_count()`](https://python-all.ru/3/library/os.html#os.cpu_count) теперь возвращает активные процессоры, а не максимальное количество процессоров.
- [bpo-36634](https://python-all.ru/3/whatsnew/changelog.html): venv activate.bat теперь работает, когда существующие переменные содержат символы двойных кавычек.
- [bpo-38081](https://python-all.ru/3/whatsnew/changelog.html): Предотвращение ошибки при вызове [`os.path.realpath()`](https://python-all.ru/3/library/os.path.html#os.path.realpath) на `'NUL'`.
- [bpo-38087](https://python-all.ru/3/whatsnew/changelog.html): Исправление чувствительности к регистру в test\_pathlib и test\_ntpath.
- [bpo-38088](https://python-all.ru/3/whatsnew/changelog.html): Исправляет проблему, когда distutils не находит vcruntime140.dll при установленном только наборе инструментов v142.
- [bpo-37283](https://python-all.ru/3/whatsnew/changelog.html): Обеспечить переопределение ранее обнаруженных состояний в установщике Windows с помощью параметров командной строки и unattend.xml.
- [bpo-38030](https://python-all.ru/3/whatsnew/changelog.html): Исправляет ошибку [`os.stat()`](https://python-all.ru/3/library/os.html#os.stat) для блочных устройств в Windows
- [bpo-38020](https://python-all.ru/3/whatsnew/changelog.html): Исправляет потенциальный сбой при вызове [`os.readlink()`](https://python-all.ru/3/library/os.html#os.readlink) (или косвенно через [`realpath()`](https://python-all.ru/3/library/os.path.html#os.path.realpath)) для файла, который не является поддерживаемой ссылкой.
- [bpo-37705](https://python-all.ru/3/whatsnew/changelog.html): Улучшение реализации `winerror_to_errno()`.
- [bpo-37549](https://python-all.ru/3/whatsnew/changelog.html): [`os.dup()`](https://python-all.ru/3/library/os.html#os.dup) больше не завершается ошибкой для стандартных потоков в Windows 7.
- [bpo-1311](https://python-all.ru/3/whatsnew/changelog.html): Файл `nul` в Windows теперь возвращает True из [`exists()`](https://python-all.ru/3/library/os.path.html#os.path.exists) и корректный результат из [`os.stat()`](https://python-all.ru/3/library/os.html#os.stat) при установленном `S_IFCHR`.
- [bpo-9949](https://python-all.ru/3/whatsnew/changelog.html): Включение поддержки перехода по символическим ссылкам в `os.realpath()`.
- [bpo-37834](https://python-all.ru/3/whatsnew/changelog.html): Обрабатывать в [`os.lstat()`](https://python-all.ru/3/library/os.html#os.lstat) все точки повторной обработки суррогата имени в Windows, а другие точки повторной обработки – как обычные файлы в [`os.stat()`](https://python-all.ru/3/library/os.html#os.stat).
- [bpo-36266](https://python-all.ru/3/whatsnew/changelog.html): Добавить имя модуля в форматированное сообщение об ошибке при сбое загрузки DLL во время импорта модуля в `_PyImport_FindSharedFuncptrWindows()`. Исправление от Srinivas Nyayapati.
- [bpo-25172](https://python-all.ru/3/whatsnew/changelog.html): Попытка импортировать модуль `crypt` в Windows приведет к [`ImportError`](https://python-all.ru/3/library/exceptions.html#ImportError) с сообщением о том, что этот модуль не поддерживается в Windows. На других платформах, если нижележащий модуль `_crypt` недоступен, ImportError будет содержать сообщение с описанием проблемы.
- [bpo-37778](https://python-all.ru/3/whatsnew/changelog.html): Исправляет значки, используемые для ассоциации файлов с пакетом Microsoft Store.
- [bpo-37734](https://python-all.ru/3/whatsnew/changelog.html): Исправление использования значений реестра для запуска Python из приложения Microsoft Store.
- [bpo-37702](https://python-all.ru/3/whatsnew/changelog.html): Исправление утечки памяти в Windows при создании объекта SSLContext или запуске `urllib.request.urlopen('https://...')`.
- [bpo-37672](https://python-all.ru/3/whatsnew/changelog.html): Переключить pip в пакете Windows Store на использование встроенного `pip.ini` вместо переменной `PIP_USER`.
- [bpo-10945](https://python-all.ru/3/whatsnew/changelog.html): Официальное прекращение поддержки создания установщиков bdist\_wininst в системах, отличных от Windows.
- [bpo-37445](https://python-all.ru/3/whatsnew/changelog.html): Включить флаг `FORMAT_MESSAGE_IGNORE_INSERTS` в вызовы `FormatMessageW()`.
- [bpo-37369](https://python-all.ru/3/whatsnew/changelog.html): Исправляет путь для [`sys.executable`](https://python-all.ru/3/library/sys.html#sys.executable) при запуске из Microsoft Store.
- [bpo-37380](https://python-all.ru/3/whatsnew/changelog.html): Не собирать незавершенные процессы с помощью `subprocess._active` в Windows для последующей очистки. Исправление от Ruslan Kuprieiev.
- [bpo-37351](https://python-all.ru/3/whatsnew/changelog.html): Удаляет libpython38.a из стандартного дистрибутива Windows.
- [bpo-35360](https://python-all.ru/3/whatsnew/changelog.html): Обновление сборок Windows для использования SQLite 3.28.0.
- [bpo-37267](https://python-all.ru/3/whatsnew/changelog.html): В Windows [`os.dup()`](https://python-all.ru/3/library/os.html#os.dup) больше не создает наследуемый файловый дескриптор при обработке символьного файла.
- [bpo-36779](https://python-all.ru/3/whatsnew/changelog.html): Обеспечить корректность `time.tzname` в Windows, когда активная кодовая страница установлена в CP\_UTF7 или CP\_UTF8.
- [bpo-32587](https://python-all.ru/3/whatsnew/changelog.html): Обеспечить поддержку строк нулевой длины в [`winreg.REG_MULTI_SZ`](https://python-all.ru/3/library/winreg.html#winreg.REG_MULTI_SZ).
- [bpo-28269](https://python-all.ru/3/whatsnew/changelog.html): Заменить использование `strcasecmp()` для системной функции `_stricmp()`. Исправление от Minmin Gong.
- [bpo-36590](https://python-all.ru/3/whatsnew/changelog.html): Добавлена встроенная поддержка Bluetooth RFCOMM в модуль socket.

### macOS

- [bpo-38117](https://python-all.ru/3/whatsnew/changelog.html): Обновлена OpenSSL до версии 1.1.1d в установщике macOS.
- [bpo-38089](https://python-all.ru/3/whatsnew/changelog.html): Переведено Azure Pipelines на последние версии виртуальных машин и тесты macOS сделаны необязательными.
- [bpo-18049](https://python-all.ru/3/whatsnew/changelog.html): Увеличен размер стека по умолчанию для потоков с 5 МБ до 16 МБ на macOS для соответствия размеру стека главного потока. Это предотвращает сбои при глубокой рекурсии в потоках.
- [bpo-34602](https://python-all.ru/3/whatsnew/changelog.html): Устранены сбои тестового набора на macOS за счет прекращения вызова resource.setrlimit для увеличения лимита размера стека процесса во время выполнения. Изменение во время выполнения больше не требуется, так как интерпретатор теперь собирается с большим размером стека по умолчанию.
- [bpo-35360](https://python-all.ru/3/whatsnew/changelog.html): Обновлен установщик macOS для использования SQLite 3.28.0.
- [bpo-34631](https://python-all.ru/3/whatsnew/changelog.html): Обновлена OpenSSL до версии 1.1.1c в установщике macOS.

### IDLE

- [bpo-26353](https://python-all.ru/3/whatsnew/changelog.html): Прекращено добавление символа новой строки при сохранении окна оболочки IDLE.
- [bpo-4630](https://python-all.ru/3/whatsnew/changelog.html): Добавлена опция для переключения мигания курсора IDLE в окнах оболочки, редактора и вывода. См. Настройки, Общие, Параметры окна, Мигание курсора. Патч от Закери Спайтца.
- [bpo-38598](https://python-all.ru/3/whatsnew/changelog.html): Не пытаться компилировать окна оболочки или вывода IDLE
- [bpo-36698](https://python-all.ru/3/whatsnew/changelog.html): IDLE больше не завершается с ошибкой при записи не кодируемых символов в stderr. Теперь он экранирует их обратной косой чертой, как обычный интерпретатор Python. Добавлено поле `errors` в стандартные потоки.
- [bpo-35379](https://python-all.ru/3/whatsnew/changelog.html): При выходе из IDLE перехватывать любое AttributeError. Одно возникает, когда EditorWindow.close вызывается дважды. Вывод трассировки при запуске IDLE из терминала бесполезен и раздражает.
- [bpo-38183](https://python-all.ru/3/whatsnew/changelog.html): Во избежание проблем test\_idle игнорирует пользовательский каталог конфигурации. Он больше не пытается создать или получить доступ к .idlerc или любым файлам внутри. Пользователи должны запускать IDLE, чтобы выявить проблемы с сохранением настроек.
- [bpo-38077](https://python-all.ru/3/whatsnew/changelog.html): IDLE больше не добавляет ‘argv’ в пространство имен пользователя при его инициализации. Эта ошибка затрагивала только версии 3.7.4 и 3.8.0b2–3.8.0b4.
- [bpo-38041](https://python-all.ru/3/whatsnew/changelog.html): Строки перезапуска оболочки теперь заполняют ширину окна, всегда начинаются с ‘=’ и избегают ненужного переноса. Строка всё же будет переноситься, если включённое имя файла слишком длинное относительно ширины.
- [bpo-35771](https://python-all.ru/3/whatsnew/changelog.html): Во избежание редких ложных сбоев test\_idle на медленных машинах увеличено значение `hover_delay` в test\_tooltip.
- [bpo-37824](https://python-all.ru/3/whatsnew/changelog.html): Корректная обработка предупреждений пользовательского ввода в оболочке IDLE. Прекращено превращение SyntaxWarnings в SyntaxErrors.
- [bpo-37929](https://python-all.ru/3/whatsnew/changelog.html): Диалоговое окно настроек IDLE теперь корректно закрывается, когда нет окна оболочки.
- [bpo-37902](https://python-all.ru/3/whatsnew/changelog.html): Добавлена прокрутка колёсиком мыши для обозревателей модулей, путей и стека IDLE. Патч от Джорджа Чжана.
- [bpo-37849](https://python-all.ru/3/whatsnew/changelog.html): Исправлено отображение списка завершений слишком высоко или низко при показе над текущей строкой.
- [bpo-36419](https://python-all.ru/3/whatsnew/changelog.html): Рефакторинг автодополнения IDLE и улучшение тестирования.
- [bpo-37748](https://python-all.ru/3/whatsnew/changelog.html): Изменён порядок в меню Run. Самый популярный пункт, Run Module, помещён вверх.
- [bpo-37692](https://python-all.ru/3/whatsnew/changelog.html): Улучшен образец конфигурации подсветки с примером взаимодействия с оболочкой и улучшенными метками для элементов оболочки.
- [bpo-37628](https://python-all.ru/3/whatsnew/changelog.html): Диалоговое окно настроек больше не расширяется при изменении размера шрифта.
- [bpo-37627](https://python-all.ru/3/whatsnew/changelog.html): Диалоговое окно настройки запуска инициализируется последними введёнными аргументами командной строки. Пользователь может при необходимости отредактировать их перед отправкой.
- [bpo-33610](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка, когда контекст кода не показывал правильный контекст при первом включении.
- [bpo-37530](https://python-all.ru/3/whatsnew/changelog.html): Оптимизирован контекст кода для уменьшения ненужной фоновой активности. Изменения шрифта и подсветки теперь происходят одновременно с изменениями текста, а не после случайной задержки.
- [bpo-27452](https://python-all.ru/3/whatsnew/changelog.html): Очистка `config.py` путём встраивания `RemoveFile` и упрощения обработки `file` в `CreateConfigHandlers`.
- [bpo-37325](https://python-all.ru/3/whatsnew/changelog.html): Исправлен порядок обхода фокуса вкладок для диалоговых окон справки и настраиваемого запуска.
- [bpo-37321](https://python-all.ru/3/whatsnew/changelog.html): Оба сообщения об ошибке подключения подпроцесса теперь ссылаются на раздел «Ошибка запуска» документации IDLE.
- [bpo-17535](https://python-all.ru/3/whatsnew/changelog.html): Добавлена опциональная нумерация строк для окон редактора IDLE. Окна открываются без номеров строк, если не указано иное на вкладке General диалога настроек.
- [bpo-26806](https://python-all.ru/3/whatsnew/changelog.html): Чтобы компенсировать кадры стека, добавленные IDLE, и избежать возможных проблем с низкими лимитами рекурсии, к лимитам в процессе выполнения пользовательского кода добавляется 30. При выводе лимитов рекурсии 30 вычитается, чтобы это добавление было в основном незаметным.
- [bpo-37177](https://python-all.ru/3/whatsnew/changelog.html): Диалоги поиска теперь правильно прикрепляются к своему главному окну, чтобы они вели себя как остальные диалоги и не прятались за своим главным окном.
- [bpo-37039](https://python-all.ru/3/whatsnew/changelog.html): Настройка «Zoom Height» под отдельные экраны путем временного разворачивания окна при первом использовании на конкретном экране. Изменение настроек экрана может сделать сохраненную высоту недействительной. Пока окно развернуто, «Zoom Height» не действует.
- [bpo-35763](https://python-all.ru/3/whatsnew/changelog.html): Напоминание в подсказке вызова о том, что ‘/’ означает позиционный параметр, сделано менее заметным: оно добавляется только при наличии места на первой строке.
- [bpo-5680](https://python-all.ru/3/whatsnew/changelog.html): Добавлен пункт «Run… Customized» в меню Run для запуска модуля с настраиваемыми параметрами. Любые введенные «аргументы командной строки» добавляются в sys.argv. Можно отключить обычный перезапуск главного модуля оболочки.
- [bpo-36390](https://python-all.ru/3/whatsnew/changelog.html): Функции меню Format собраны в format.py. Объединены paragraph.py, rstrip.py и методы форматирования из editor.py.

### Tools/Demos

- [bpo-38118](https://python-all.ru/3/whatsnew/changelog.html): Файл подавления Valgrind обновлен, чтобы игнорировать ложное срабатывание в [`PyUnicode_Decode()`](https://python-all.ru/3/c-api/unicode.html#c.PyUnicode_Decode) при использовании встроенного strcmp() из GCC.
- [bpo-38347](https://python-all.ru/3/whatsnew/changelog.html): pathfix.py: при рекурсивной обработке все файлы, оканчивающиеся на ‘.py’, считаются скриптами Python.
- [bpo-37803](https://python-all.ru/3/whatsnew/changelog.html): Длинные опции `--help` и `--version` pdb теперь работают.
- [bpo-37942](https://python-all.ru/3/whatsnew/changelog.html): Улучшен конвертер ArgumentClinic для чисел с плавающей запятой.
- [bpo-37704](https://python-all.ru/3/whatsnew/changelog.html): Удалено `Tools/scripts/h2py.py`: используйте cffi для доступа к C API в Python.
- [bpo-37675](https://python-all.ru/3/whatsnew/changelog.html): 2to3 теперь работает при запуске из zip-архива стандартной библиотеки.
- [bpo-37034](https://python-all.ru/3/whatsnew/changelog.html): Argument Clinic теперь использует имя аргумента при ошибках с аргументом только по ключевому слову вместо его позиции. Исправление предоставлено Rémi Lapeyre.
- [bpo-37064](https://python-all.ru/3/whatsnew/changelog.html): Добавлена опция -k в скрипт pathscript.py: сохранение флагов shebang. Добавлена опция -a в скрипт pathscript.py: добавление флагов.

### C API

- [bpo-37633](https://python-all.ru/3/whatsnew/changelog.html): Повторный экспорт некоторых оберток совместимости функций для макросов в `pythonrun.h`.
- [bpo-38644](https://python-all.ru/3/whatsnew/changelog.html): Предоставлены [`Py_EnterRecursiveCall()`](https://python-all.ru/3/c-api/exceptions.html#c.Py_EnterRecursiveCall) и [`Py_LeaveRecursiveCall()`](https://python-all.ru/3/c-api/exceptions.html#c.Py_LeaveRecursiveCall) как обычные функции для ограниченного API. Ранее они были определены как макросы, но эти макросы не работали с ограниченным API, который не может получить доступ к полю `PyThreadState.recursion_depth`. Удалено `_Py_CheckRecursionLimit` из стабильного ABI.
- [bpo-38650](https://python-all.ru/3/whatsnew/changelog.html): Глобальная переменная [`PyStructSequence_UnnamedField`](https://python-all.ru/3/c-api/tuple.html#c.PyStructSequence_UnnamedField) теперь является константой и ссылается на константную строку.
- [bpo-38540](https://python-all.ru/3/whatsnew/changelog.html): Исправлена возможная утечка в [`PyArg_Parse()`](https://python-all.ru/3/c-api/arg.html#c.PyArg_Parse) и аналогичных функциях для единиц форматирования `"es#"` и `"et#"`, когда макрос `PY_SSIZE_T_CLEAN` не определен.
- [bpo-38395](https://python-all.ru/3/whatsnew/changelog.html): Исправлен сбой в объектах [`weakref.proxy`](https://python-all.ru/3/library/weakref.html#weakref.proxy) из-за неверного управления временем жизни при вызове некоторых связанных методов, которые могут удалить последнюю ссылку на объект, на который ссылается прокси. Исправление предоставлено Pablo Galindo.
- [bpo-36389](https://python-all.ru/3/whatsnew/changelog.html): Функция `_PyObject_CheckConsistency()` теперь также доступна в релизном режиме. Например, ее можно использовать для отладки сбоя в функции `visit_decref()` сборщика мусора.
- [bpo-38266](https://python-all.ru/3/whatsnew/changelog.html): Отменено удаление PyThreadState\_DeleteCurrent() с документацией.
- [bpo-38303](https://python-all.ru/3/whatsnew/changelog.html): Модуль расширения audioop обновлен для использования стабильного ABI (PEP-384). Исправление предоставлено Tyler Kieft.
- [bpo-38234](https://python-all.ru/3/whatsnew/changelog.html): `Py_SetPath()` теперь устанавливает [`sys.executable`](https://python-all.ru/3/library/sys.html#sys.executable) в полный путь программы ([`Py_GetProgramFullPath()`](https://python-all.ru/3/c-api/interp-lifecycle.html#c.Py_GetProgramFullPath)) вместо имени программы ([`Py_GetProgramName()`](https://python-all.ru/3/c-api/interp-lifecycle.html#c.Py_GetProgramName)).
- [bpo-38234](https://python-all.ru/3/whatsnew/changelog.html): Python игнорировал аргументы, переданные в `Py_SetPath()`, `Py_SetPythonHome()` и `Py_SetProgramName()`: исправлена инициализация Python для использования указанных аргументов.
- [bpo-38205](https://python-all.ru/3/whatsnew/changelog.html): Макрос [`Py_UNREACHABLE()`](https://python-all.ru/3/c-api/intro.html#c.Py_UNREACHABLE) теперь вызывает [`Py_FatalError()`](https://python-all.ru/3/c-api/sys.html#c.Py_FatalError).
- [bpo-38140](https://python-all.ru/3/whatsnew/changelog.html): Смещения dict и weakref сделаны непрозрачными для C heap-типов путем передачи смещений через PyMemberDef
- [bpo-15088](https://python-all.ru/3/whatsnew/changelog.html): Функция C `PyGen_NeedsFinalizing` была удалена. Она не была документирована, протестирована или использована где-либо в CPython после реализации [**PEP 442**](https://python-all.ru/3/whatsnew/changelog.html). Исправление предоставлено Joannah Nanjekye. (Исправление предоставлено Joannah Nanjekye)
- [bpo-36763](https://python-all.ru/3/whatsnew/changelog.html): Опции, добавленные `PySys_AddXOption()`, теперь обрабатываются так же, как и `PyConfig.xoptions` и опции командной строки `-X`.
- [bpo-37926](https://python-all.ru/3/whatsnew/changelog.html): Исправлен сбой в `PySys_SetArgvEx(0, NULL, 0)`.
- [bpo-37879](https://python-all.ru/3/whatsnew/changelog.html): Исправлена функция subtype\_dealloc: теперь подавляется уменьшение счётчика ссылок на тип, когда базовый тип является C-типом кучи.
- [bpo-37645](https://python-all.ru/3/whatsnew/changelog.html): Добавлена функция `_PyObject_FunctionStr()` для получения удобочитаемого строкового представления объекта, подобного функции. Патч от Jeroen Demeyer.
- [bpo-29548](https://python-all.ru/3/whatsnew/changelog.html): Функции `PyEval_CallObject`, `PyEval_CallFunction`, `PyEval_CallMethod` и `PyEval_CallObjectWithKeywords` устарели. Вместо них используйте [`PyObject_Call()`](https://python-all.ru/3/c-api/call.html#c.PyObject_Call) и её варианты.
- [bpo-37151](https://python-all.ru/3/whatsnew/changelog.html): `PyCFunction_Call` теперь является устаревшим псевдонимом для [`PyObject_Call()`](https://python-all.ru/3/c-api/call.html#c.PyObject_Call).
- [bpo-37540](https://python-all.ru/3/whatsnew/changelog.html): Протокол vectorcall теперь требует, чтобы вызывающая сторона передавала только строки в качестве имён ключевых аргументов.
- [bpo-37207](https://python-all.ru/3/whatsnew/changelog.html): Протокол vectorcall теперь включён для объектов `type`: установите `tp_vectorcall` в функцию vectorcall, которая будет использоваться вместо `tp_new` и `tp_init` при вызове самого класса.
- [bpo-21120](https://python-all.ru/3/whatsnew/changelog.html): Исключены Python-ast.h, ast.h и asdl.h из ограниченного API.
- [bpo-37483](https://python-all.ru/3/whatsnew/changelog.html): Добавлена новая функция `_PyObject_CallOneArg` для вызова объекта с одним позиционным аргументом.
- [bpo-36763](https://python-all.ru/3/whatsnew/changelog.html): Добавлена функция [`PyConfig_SetWideStringList()`](https://python-all.ru/3/c-api/init_config.html#c.PyConfig_SetWideStringList).
- [bpo-37337](https://python-all.ru/3/whatsnew/changelog.html): Добавлены быстрые функции для вызова методов: `_PyObject_VectorcallMethod()`, `_PyObject_CallMethodNoArgs()` и `_PyObject_CallMethodOneArg()`.
- [bpo-28805](https://python-all.ru/3/whatsnew/changelog.html): Соглашение о вызове [`METH_FASTCALL`](https://python-all.ru/3/c-api/structures.html#c.METH_FASTCALL) теперь задокументировано.
- [bpo-37221](https://python-all.ru/3/whatsnew/changelog.html): Новая функция `PyCode_NewWithPosOnlyArgs()` позволяет создавать объекты кода, как `PyCode_New()`, но с дополнительным параметром *posonlyargcount* для указания количества позиционных аргументов.
- [bpo-37215](https://python-all.ru/3/whatsnew/changelog.html): Исправлена проблема dtrace, возникшая в [bpo-36842](https://python-all.ru/3/whatsnew/changelog.html).
- [bpo-37194](https://python-all.ru/3/whatsnew/changelog.html): Добавлена новая публичная функция [`PyObject_CallNoArgs()`](https://python-all.ru/3/c-api/call.html#c.PyObject_CallNoArgs) в C API: вызов вызываемого объекта Python без аргументов. Это самый эффективный способ вызова колбэка без аргументов. Например, на x86-64 `PyObject_CallFunctionObjArgs(func, NULL)` выделяет 960 байт в стеке на каждый вызов, тогда как `PyObject_CallNoArgs(func)` выделяет только 624 байта.
- [bpo-37170](https://python-all.ru/3/whatsnew/changelog.html): Исправлено приведение типов при ошибке в [`PyLong_AsUnsignedLongLongMask()`](https://python-all.ru/3/c-api/long.html#c.PyLong_AsUnsignedLongLongMask).
- [bpo-35381](https://python-all.ru/3/whatsnew/changelog.html): Статически выделенные типы `DirEntryType` и `ScandirIteratorType` из posixmodule.c преобразованы в типы, выделяемые в куче.
- [bpo-34331](https://python-all.ru/3/whatsnew/changelog.html): В сообщении об ошибке при создании экземпляра абстрактного класса с непереопределёнными абстрактными методами теперь используется существительное в единственном/множественном числе.

## Python 3.8.0 beta 1

*Дата выпуска: 2019-06-04*

### Безопасность

- [bpo-35907](https://python-all.ru/3/whatsnew/changelog.html): [**CVE 2019-9948**](https://python-all.ru/3/whatsnew/changelog.html): предотвращение чтения файлов путём запрета схем URL `local-file://` и `local_file://` в `URLopener().open()` и `URLopener().retrieve()` из [`urllib.request`](https://python-all.ru/3/library/urllib.request.html#module-urllib.request).
- [bpo-33529](https://python-all.ru/3/whatsnew/changelog.html): Предотвращение бесконечного цикла в функции fold, используемой при кодировании заголовков электронных писем, когда в заголовке слишком много не-ASCII символов.
- [bpo-33164](https://python-all.ru/3/whatsnew/changelog.html): Обновлена реализация blake2, которая использует безопасную реализацию memset, предоставляемую платформой.

### Ядро и встроенные объекты

- [bpo-35814](https://python-all.ru/3/whatsnew/changelog.html): Разрешена распаковка в правой части аннотированных присваиваний. В частности, теперь допускается `t: Tuple[int, ...] = x, y, *z`.
- [bpo-37126](https://python-all.ru/3/whatsnew/changelog.html): Все объекты structseq теперь отслеживаются сборщиком мусора. Патч от Pablo Galindo.
- [bpo-37122](https://python-all.ru/3/whatsnew/changelog.html): Атрибут *co\_argcount* объектов кода теперь представляет общее количество позиционных аргументов (включая аргументы, доступные только по позиции). Значение *co\_posonlyargcount* можно использовать для определения, какие аргументы являются только позиционными, а разница (*co\_argcount* - *co\_posonlyargcount*) – количество аргументов, которые могут быть как позиционными, так и ключевыми. Патч от Pablo Galindo.
- [bpo-20092](https://python-all.ru/3/whatsnew/changelog.html): Конструкторы [`int`](https://python-all.ru/3/library/functions.html#int), [`float`](https://python-all.ru/3/library/functions.html#float) и [`complex`](https://python-all.ru/3/library/functions.html#complex) теперь будут использовать специальный метод [`__index__()`](https://python-all.ru/3/reference/datamodel.html#object.__index__), если он доступен, а соответствующий метод [`__int__()`](https://python-all.ru/3/reference/datamodel.html#object.__int__), [`__float__()`](https://python-all.ru/3/reference/datamodel.html#object.__float__) или [`__complex__()`](https://python-all.ru/3/reference/datamodel.html#object.__complex__) недоступен.
- [bpo-37087](https://python-all.ru/3/whatsnew/changelog.html): Добавлена поддержка нативного идентификатора потока (TID) в OpenBSD.
- [bpo-26219](https://python-all.ru/3/whatsnew/changelog.html): Реализован механизм кэширования для каждой операции (opcode), и инструкция `LOAD_GLOBAL` использует его. `LOAD_GLOBAL` теперь работает примерно на 40% быстрее. Вклад от Yury Selivanov и Inada Naoki.
- [bpo-37072](https://python-all.ru/3/whatsnew/changelog.html): Исправлен сбой в PyAST\_FromNodeObject(), когда flags равен NULL.
- [bpo-37029](https://python-all.ru/3/whatsnew/changelog.html): Освобождение большого количества мелких объектов могло занимать время, квадратично зависящее от количества арен, из-за линейного поиска для поддержания списка используемых арен `obmalloc.c` в отсортированном порядке по количеству свободных пулов памяти. Теперь это делается без поиска, и наихудшее время стало линейно от количества арен. Для программ, где это заметно (обычно с более чем 100 тысячами одновременно живых мелких объектов), это может значительно сократить время, необходимое для освобождения их памяти.
- [bpo-26423](https://python-all.ru/3/whatsnew/changelog.html): Исправлено возможное переполнение в `wrap_lenfunc()` при `sizeof(long) < sizeof(Py_ssize_t)` (например, 64-разрядная Windows).
- [bpo-37050](https://python-all.ru/3/whatsnew/changelog.html): Улучшено AST для отладочных f-строк, использующих ‘=’ для вывода исходного текста вычисляемого выражения. Удалён expr\_text из узла FormattedValue; вместо него теперь используется узел Constant string (возможно, объединённый с соседними константными выражениями внутри f-строки).
- [bpo-22385](https://python-all.ru/3/whatsnew/changelog.html): Методы `bytes.hex`, `bytearray.hex` и `memoryview.hex`, а также функции `binascii.hexlify` и `b2a_hex` теперь поддерживают необязательный разделитель между шестнадцатеричными байтами. Эта функциональность вдохновлена реализацией hexlify в MicroPython.
- [bpo-26836](https://python-all.ru/3/whatsnew/changelog.html): Добавлен [`os.memfd_create()`](https://python-all.ru/3/library/os.html#os.memfd_create).
- [bpo-37032](https://python-all.ru/3/whatsnew/changelog.html): Добавлен новый метод `replace()` к типу code ([`types.CodeType`](https://python-all.ru/3/library/types.html#types.CodeType)).
- [bpo-37007](https://python-all.ru/3/whatsnew/changelog.html): Реализованы [`socket.if_nameindex()`](https://python-all.ru/3/library/socket.html#socket.if_nameindex), [`socket.if_nametoindex()`](https://python-all.ru/3/library/socket.html#socket.if_nametoindex) и [`socket.if_indextoname()`](https://python-all.ru/3/library/socket.html#socket.if_indextoname) в Windows.
- [bpo-36829](https://python-all.ru/3/whatsnew/changelog.html): [`PyErr_WriteUnraisable()`](https://python-all.ru/3/c-api/exceptions.html#c.PyErr_WriteUnraisable) теперь создаёт объект traceback, если текущего traceback нет. Кроме того, вызывает [`PyErr_NormalizeException()`](https://python-all.ru/3/c-api/exceptions.html#c.PyErr_NormalizeException) и [`PyException_SetTraceback()`](https://python-all.ru/3/c-api/exceptions.html#c.PyException_SetTraceback) для нормализации значения исключения. Любые ошибки игнорируются.
- [bpo-36878](https://python-all.ru/3/whatsnew/changelog.html): Текст после `# type: ignore` принимается, только если первый символ является ASCII. Это позволяет запретить такие вещи, как `# type: ignoreé`.
- [bpo-36878](https://python-all.ru/3/whatsnew/changelog.html): Текст, идущий после комментария `# type: ignore`, сохраняется в AST. Например, type ignore вида `# type: ignore[E1000]` будет иметь строку `"[E1000]"`, сохранённую в его узле AST.
- [bpo-2180](https://python-all.ru/3/whatsnew/changelog.html): Продолжение строки в EOF теперь считается `SyntaxError` (автор: Энтони Соттиле).
- [bpo-36907](https://python-all.ru/3/whatsnew/changelog.html): Исправлен сбой при вызове C-функции со словарём ключевых аргументов (`f(**kwargs)`) и изменении словаря `kwargs` во время выполнения этой функции.
- [bpo-36946](https://python-all.ru/3/whatsnew/changelog.html): Исправлено возможное переполнение знакового целого при обработке срезов.
- [bpo-36826](https://python-all.ru/3/whatsnew/changelog.html): Добавлена поддержка типа NamedExpression в ast\_unparse.c
- [bpo-1875](https://python-all.ru/3/whatsnew/changelog.html): [`SyntaxError`](https://python-all.ru/3/library/exceptions.html#SyntaxError) теперь возбуждается, если блок кода, который будет оптимизирован (например, условия, которые всегда ложны), содержит синтаксические ошибки. Патч от Пабло Галиндо.
- [bpo-36027](https://python-all.ru/3/whatsnew/changelog.html): Разрешено вычисление обратных по модулю с помощью трёхаргументного `pow`: второй аргумент теперь может быть отрицательным в случае, когда первый и третий аргументы взаимно просты.
- [bpo-36861](https://python-all.ru/3/whatsnew/changelog.html): Обновлена база данных Unicode до версии 12.1.0.
- [bpo-28866](https://python-all.ru/3/whatsnew/changelog.html): Избегайте кэширования атрибутов классов, тип которых определяет mro(), чтобы избежать сложной проблемы инвалидации кэша.
- [bpo-36851](https://python-all.ru/3/whatsnew/changelog.html): Стек `FrameType` теперь корректно очищается, если выполнение завершается return, и стек не пуст.
- [bpo-34616](https://python-all.ru/3/whatsnew/changelog.html): Встроенные функции `compile()` теперь поддерживают флаг `ast.PyCF_ALLOW_TOP_LEVEL_AWAIT`, который позволяет компилировать источники, содержащие `await`, `async with` или `async for` на верхнем уровне. Это полезно для выполнения асинхронного кода из уже асинхронной функции; например, в пользовательской REPL.
- [bpo-36842](https://python-all.ru/3/whatsnew/changelog.html): Реализован PEP 578: добавлены sys.audit, io.open\_code и связанные API.
- [bpo-27639](https://python-all.ru/3/whatsnew/changelog.html): Исправлен возвращаемый тип для операций срезов UserList. Патч от Майкла Блэйхая, Эрика Сервантеса и vaultah.
- [bpo-36737](https://python-all.ru/3/whatsnew/changelog.html): Перенесено PyRuntimeState.warnings в состояние каждого интерпретатора (через «состояние модуля»).
- [bpo-36793](https://python-all.ru/3/whatsnew/changelog.html): Удалены реализации `__str__` из встроенных типов [`bool`](https://python-all.ru/3/library/functions.html#bool), [`int`](https://python-all.ru/3/library/functions.html#int), [`float`](https://python-all.ru/3/library/functions.html#float), [`complex`](https://python-all.ru/3/library/functions.html#complex) и нескольких классов стандартной библиотеки. Теперь они наследуют `__str__()` от [`object`](https://python-all.ru/3/library/functions.html#object).
- [bpo-36817](https://python-all.ru/3/whatsnew/changelog.html): Добавлена функция `=` для f-строк отладки. Она может предшествовать `!s`, `!r` или `!a`. Результат – текст выражения, затем знак равенства, затем repr значения выражения. Так, `f'{3*9+15=}'` будет равно строке `'3*9+15=42'`. Если `=` указан, то по умолчанию используется преобразование `!r`, за исключением случая, когда задан спецификатор формата. В этом случае поведение форматирования не меняется и используется \_\_format\_\_.
- [bpo-24048](https://python-all.ru/3/whatsnew/changelog.html): Сохранять текущее исключение во время `remove_module()` в import.c.
- [bpo-27987](https://python-all.ru/3/whatsnew/changelog.html): pymalloc теперь возвращает блоки памяти, выровненные по 16 байт (вместо 8 байт) на 64-битных платформах, чтобы соответствовать ABI x86-64. Современные компиляторы чаще предполагают такое выравнивание. Патч от Инада Наоки.
- [bpo-36601](https://python-all.ru/3/whatsnew/changelog.html): Давно потерявшая смысл проверка на `getpid() == main_pid` была удалена из внутреннего C-обработчика сигналов Python.
- [bpo-36594](https://python-all.ru/3/whatsnew/changelog.html): Исправлено некорректное использование `%p` в строках форматирования. Патч от Закери Спайца.
- [bpo-36045](https://python-all.ru/3/whatsnew/changelog.html): `builtins.help()` теперь добавляет префикс `async` для асинхронных функций.
- [bpo-36084](https://python-all.ru/3/whatsnew/changelog.html): Добавлен нативный идентификатор потока (TID) в объекты threading.Thread (поддерживаемые платформы: Windows, FreeBSD, Linux, macOS).
- [bpo-36035](https://python-all.ru/3/whatsnew/changelog.html): Добавлено исправление для битых символических ссылок в сочетании с pathlib.
- [bpo-35983](https://python-all.ru/3/whatsnew/changelog.html): Добавлены новые макросы trashcan для обработки двойного освобождения, которое могло произойти, когда `tp_dealloc` подкласса вызывает `tp_dealloc` базового класса, а базовый класс использует механизм trashcan. Патч от Йеруна Демейера.
- [bpo-20602](https://python-all.ru/3/whatsnew/changelog.html): не очищать [`sys.flags`](https://python-all.ru/3/library/sys.html#sys.flags) и [`sys.float_info`](https://python-all.ru/3/library/sys.html#sys.float_info) при завершении работы. Исправление от Zackery Spytz.
- [bpo-26826](https://python-all.ru/3/whatsnew/changelog.html): Предоставить `copy_file_range()` как низкоуровневый API в модуле [`os`](https://python-all.ru/3/library/os.html#module-os).
- [bpo-32388](https://python-all.ru/3/whatsnew/changelog.html): Убрать требование двоичной совместимости между версиями в tp\_flags.
- [bpo-31862](https://python-all.ru/3/whatsnew/changelog.html): Перенести binascii на многофазную инициализацию PEP 489. Исправление от Marcel Plch.

### Библиотека

- [bpo-37128](https://python-all.ru/3/whatsnew/changelog.html): Добавлен [`math.perm()`](https://python-all.ru/3/library/math.html#math.perm).
- [bpo-37120](https://python-all.ru/3/whatsnew/changelog.html): Добавить SSLContext.num\_tickets для управления количеством сессионных билетов TLSv1.3.
- [bpo-12202](https://python-all.ru/3/whatsnew/changelog.html): Исправить обработку ошибок в `msilib.SummaryInformation.GetProperty()`. Исправление от Zackery Spytz.
- [bpo-26835](https://python-all.ru/3/whatsnew/changelog.html): Модуль fcntl теперь содержит константы для запечатывания memfd (файловых дескрипторов памяти).
- [bpo-29262](https://python-all.ru/3/whatsnew/changelog.html): Добавить вспомогательные функции интроспекции `get_origin()` и `get_args()` в модуль `typing`.
- [bpo-12639](https://python-all.ru/3/whatsnew/changelog.html): `msilib.Directory.start_component()` больше не завершается ошибкой, если *keyfile* не является `None`.
- [bpo-36999](https://python-all.ru/3/whatsnew/changelog.html): Добавить метод `asyncio.Task.get_coro()` для публичного доступа к объекту корутины задачи.
- [bpo-35246](https://python-all.ru/3/whatsnew/changelog.html): Сделать [`asyncio.create_subprocess_exec()`](https://python-all.ru/3/library/asyncio-subprocess.html#asyncio.create_subprocess_exec) принимающим аргументы, подобные пути (path-like).
- [bpo-35279](https://python-all.ru/3/whatsnew/changelog.html): Изменить значение по умолчанию *max\_workers* для `ThreadPoolExecutor` с `cpu_count() * 5` на `min(32, cpu_count() + 4)`. Предыдущее значение было неоправданно большим на многоядерных машинах.
- [bpo-37076](https://python-all.ru/3/whatsnew/changelog.html): [`_thread.start_new_thread()`](https://python-all.ru/3/library/_thread.html#thread.start_new_thread) теперь записывает в журнал необработанное исключение, возбуждённое функцией с помощью [`sys.unraisablehook()`](https://python-all.ru/3/library/sys.html#sys.unraisablehook), а не [`sys.excepthook()`](https://python-all.ru/3/library/sys.html#sys.excepthook), чтобы хук получал доступ к функции, которая возбудила исключение.
- [bpo-33725](https://python-all.ru/3/whatsnew/changelog.html): На macOS модуль [`multiprocessing`](https://python-all.ru/3/library/multiprocessing.html#module-multiprocessing) теперь использует метод запуска *spawn* по умолчанию.
- [bpo-37054](https://python-all.ru/3/whatsnew/changelog.html): Исправить деструктор `_pyio.BytesIO` и `_pyio.TextIOWrapper`: инициализировать их атрибут `_buffer` как можно раньше (в теле класса), поскольку он используется `__del__()`, который вызывает `close()`.
- [bpo-37058](https://python-all.ru/3/whatsnew/changelog.html): PEP 544: Добавить `Protocol` и `@runtime_checkable` в модуль `typing`.
- [bpo-36933](https://python-all.ru/3/whatsnew/changelog.html): Функции `sys.set_coroutine_wrapper` и `sys.get_coroutine_wrapper`, которые были объявлены устаревшими и отмечены к удалению в версии 3.8, удалены.
- [bpo-37047](https://python-all.ru/3/whatsnew/changelog.html): Обрабатывать позднее связывание и доступ к атрибутам в настройке [`unittest.mock.AsyncMock`](https://python-all.ru/3/library/unittest.mock.html#unittest.mock.AsyncMock) для autospeccing. Документировать недавно реализованные асинхронные методы в [`unittest.mock.MagicMock`](https://python-all.ru/3/library/unittest.mock.html#unittest.mock.MagicMock).
- [bpo-37049](https://python-all.ru/3/whatsnew/changelog.html): PEP 589: Добавить `TypedDict` в модуль `typing`.
- [bpo-37046](https://python-all.ru/3/whatsnew/changelog.html): PEP 586: Добавить `Literal` в модуль `typing`.
- [bpo-37045](https://python-all.ru/3/whatsnew/changelog.html): PEP 591: Добавить квалификатор `Final` и декоратор `@final` в модуль `typing`.
- [bpo-37035](https://python-all.ru/3/whatsnew/changelog.html): Не записывать в журнал исключения на основе OSError, если в транспорте asyncio произошла фатальная ошибка. Удалённый узел может возбудить почти любое OSError, пользователь не может избежать этих исключений, исправляя свой код. Ошибки по-прежнему передаются в пользовательский код, просто их запись в журнал бессмысленна и засоряет журналы asyncio.
- [bpo-37001](https://python-all.ru/3/whatsnew/changelog.html): [`symtable.symtable()`](https://python-all.ru/3/library/symtable.html#symtable.symtable) теперь принимает те же типы входных данных для исходного кода, что и встроенная функция [`compile()`](https://python-all.ru/3/library/functions.html#compile). Исправление от Dino Viehland.
- [bpo-37028](https://python-all.ru/3/whatsnew/changelog.html): Реализовать REPL asyncio
- [bpo-37027](https://python-all.ru/3/whatsnew/changelog.html): Возвращать безопасный для использования объект-прокси сокета из transport.get\_extra\_info('socket')
- [bpo-32528](https://python-all.ru/3/whatsnew/changelog.html): Сделать asyncio.CancelledError исключением BaseException.

  Это устранит распространённую ошибку многих пользователей asyncio: конструкция except Exception (перехват исключения), нарушающая отмену задач.

  В дополнение к этому изменению, мы прекращаем наследование asyncio.TimeoutError и asyncio.InvalidStateError от их аналогов из concurrent.futures.\*. Нет смысла в том, чтобы эти исключения имели общую цепочку наследования.
- [bpo-1230540](https://python-all.ru/3/whatsnew/changelog.html): Добавить новую функцию [`threading.excepthook()`](https://python-all.ru/3/library/threading.html#threading.excepthook), которая обрабатывает необработанное исключение [`threading.Thread.run()`](https://python-all.ru/3/library/threading.html#threading.Thread.run). Её можно переопределить, чтобы управлять обработкой необработанных исключений `threading.Thread.run()`.
- [bpo-36996](https://python-all.ru/3/whatsnew/changelog.html): Обрабатывать [`unittest.mock.patch()`](https://python-all.ru/3/library/unittest.mock.html#unittest.mock.patch), используемый как декоратор для асинхронных функций.
- [bpo-37008](https://python-all.ru/3/whatsnew/changelog.html): Добавлена поддержка вызова [`next()`](https://python-all.ru/3/library/functions.html#next) с макетом (mock), полученным из [`unittest.mock.mock_open()`](https://python-all.ru/3/library/unittest.mock.html#unittest.mock.mock_open)
- [bpo-27737](https://python-all.ru/3/whatsnew/changelog.html): Разрешена кодировка заголовка, состоящего только из пробелов, в `email.header`. Автор: Batuhan Taskaya
- [bpo-36969](https://python-all.ru/3/whatsnew/changelog.html): Команда PDB `args` теперь отображает только позиционные аргументы. Исправление предоставлено Rémi Lapeyre.
- [bpo-36969](https://python-all.ru/3/whatsnew/changelog.html): Команда PDB `args` теперь отображает только именованные аргументы. Исправление предоставлено Rémi Lapeyre.
- [bpo-36983](https://python-all.ru/3/whatsnew/changelog.html): Добавлены недостающие имена в `typing.__all__`: `ChainMap`, `ForwardRef`, `OrderedDict`. Автор: Anthony Sottile.
- [bpo-36972](https://python-all.ru/3/whatsnew/changelog.html): Добавлен протокол SupportsIndex в модуль typing, чтобы проверка типов могла определять классы, которые можно передавать в `hex()`, `oct()` и `bin()`.
- [bpo-32972](https://python-all.ru/3/whatsnew/changelog.html): Реализован `unittest.IsolatedAsyncioTestCase` для упрощения тестирования кода на asyncio.
- [bpo-36952](https://python-all.ru/3/whatsnew/changelog.html): Из [`fileinput.input()`](https://python-all.ru/3/library/fileinput.html#fileinput.input) и [`fileinput.FileInput`](https://python-all.ru/3/library/fileinput.html#fileinput.FileInput) удалён аргумент **bufsize** (был устаревшим и игнорировался с Python 3.6), в результате чего аргументы **mode** и **openhook** стали только ключевыми.
- [bpo-36952](https://python-all.ru/3/whatsnew/changelog.html): Начиная с Python 3.3 импорт ABC из [`collections`](https://python-all.ru/3/library/collections.html#module-collections) устарел, импорт следует выполнять из [`collections.abc`](https://python-all.ru/3/library/collections.abc.html#module-collections.abc). Возможность импорта из `collections` планировалось удалить в 3.8, но отложили до 3.9; документация и `DeprecationWarning` уточнены.
- [bpo-36949](https://python-all.ru/3/whatsnew/changelog.html): Реализован \_\_repr\_\_ для объектов WeakSet.
- [bpo-36948](https://python-all.ru/3/whatsnew/changelog.html): Исправлен [`NameError`](https://python-all.ru/3/library/exceptions.html#NameError) в `urllib.request.URLopener.retrieve()`. Исправление от Karthikeyan Singaravelan.
- [bpo-33524](https://python-all.ru/3/whatsnew/changelog.html): Исправлена переноска заголовка email, когда max\_line\_length равен 0 или None и заголовок содержит не-ASCII символы. Предоставлено Licht Takeuchi (@Licht-T).
- [bpo-24564](https://python-all.ru/3/whatsnew/changelog.html): [`shutil.copystat()`](https://python-all.ru/3/library/shutil.html#shutil.copystat) теперь игнорирует [`errno.EINVAL`](https://python-all.ru/3/library/errno.html#errno.EINVAL) на [`os.setxattr()`](https://python-all.ru/3/library/os.html#os.setxattr), которые могут возникать при копировании файлов в файловых системах без поддержки расширенных атрибутов.

  Оригинальное исправление от Giampaolo Rodola, обновлено Ying Wang.
- [bpo-36888](https://python-all.ru/3/whatsnew/changelog.html): Дочерние процессы Python теперь могут получать статус своего родительского процесса с помощью multiprocessing.process.parent\_process
- [bpo-36921](https://python-all.ru/3/whatsnew/changelog.html): `@coroutine` объявлен устаревшим в пользу `async def`.
- [bpo-25652](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка в `__rmod__` модуля `UserString`. Автор: Batuhan Taskaya.
- [bpo-36916](https://python-all.ru/3/whatsnew/changelog.html): Удалено сообщение о необработанном исключении в задаче, когда writer.write() используется без await, а writer.drain() завершается с исключением.
- [bpo-36889](https://python-all.ru/3/whatsnew/changelog.html): Представлен класс `asyncio.Stream`, объединяющий функциональность [`asyncio.StreamReader`](https://python-all.ru/3/library/asyncio-stream.html#asyncio.StreamReader) и [`asyncio.StreamWriter`](https://python-all.ru/3/library/asyncio-stream.html#asyncio.StreamWriter). `asyncio.Stream` может работать в режимах только чтение, только запись и чтение-запись. Добавлены фабрики `asyncio.connect()`, `asyncio.connect_unix()`, `asyncio.connect_read_pipe()` и `asyncio.connect_write_pipe()` для открытия соединений `asyncio.Stream`. Добавлены `asyncio.StreamServer` и `UnixStreamServer` для обслуживания серверов с помощью asyncio.Stream API. Изменены [`asyncio.create_subprocess_shell()`](https://python-all.ru/3/library/asyncio-subprocess.html#asyncio.create_subprocess_shell) и [`asyncio.create_subprocess_exec()`](https://python-all.ru/3/library/asyncio-subprocess.html#asyncio.create_subprocess_exec), чтобы использовать `asyncio.Stream` вместо устаревших `StreamReader` и `StreamWriter`. Объявлены устаревшими `asyncio.StreamReader` и `asyncio.StreamWriter`. Устарело использование закрытых классов, например `asyncio.FlowControlMixing` и `asyncio.StreamReaderProtocol`, вне пакета asyncio.
- [bpo-36845](https://python-all.ru/3/whatsnew/changelog.html): Добавлена проверка целочисленных префиксов при создании IP-сетей и интерфейсов в модуле ipaddress.
- [bpo-23378](https://python-all.ru/3/whatsnew/changelog.html): Добавлено действие extend в argparse.
- [bpo-36867](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка, из-за которой экземпляр SharedMemoryManager и его родительский процесс использовали два отдельных процесса resource\_tracker.
- [bpo-23896](https://python-all.ru/3/whatsnew/changelog.html): Добавлена грамматика в lib2to3.pygram, в которой exec представлен как функция, а не как оператор.
- [bpo-36895](https://python-all.ru/3/whatsnew/changelog.html): Функция `time.clock()` была объявлена устаревшей в 3.3 в пользу `time.perf_counter()` и помечена для удаления в 3.8; теперь она удалена.
- [bpo-35545](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка asyncio, отбрасывающая зоны IPv6 при внутреннем разрешении имен хостов.
- [bpo-36887](https://python-all.ru/3/whatsnew/changelog.html): Добавлена новая функция [`math.isqrt()`](https://python-all.ru/3/library/math.html#math.isqrt) для вычисления целочисленных квадратных корней.
- [bpo-34632](https://python-all.ru/3/whatsnew/changelog.html): Представлен модуль `importlib.metadata` с (предварительной) поддержкой чтения метаданных из сторонних пакетов.
- [bpo-36878](https://python-all.ru/3/whatsnew/changelog.html): При использовании `type_comments=True` в `ast.parse` теперь `# type: ignore`, за которым следует небуквенно-цифровой символ и затем произвольный текст, считается игнорированием типа, вместо требования только пробелов или другого комментария. Это допускает такие конструкции, как `# type: ignore[E1000]`.
- [bpo-36778](https://python-all.ru/3/whatsnew/changelog.html): Кодировка `cp65001` (кодовая страница Windows 65001) становится псевдонимом кодировки `utf_8`.
- [bpo-36867](https://python-all.ru/3/whatsnew/changelog.html): Модуль multiprocessing.resource\_tracker заменяет multiprocessing.semaphore\_tracker. Помимо семафоров, resource\_tracker также отслеживает сегменты shared\_memory.
- [bpo-30262](https://python-all.ru/3/whatsnew/changelog.html): Объекты `Cache` и `Statement` из модуля [`sqlite3`](https://python-all.ru/3/library/sqlite3.html#module-sqlite3) не предоставляются пользователю. Исправление от Aviv Palivoda.
- [bpo-24538](https://python-all.ru/3/whatsnew/changelog.html): В `shutil.copystat()` сначала копируются расширенные атрибуты файла, а затем права доступа, поскольку расширенные атрибуты можно установить только на целевой файл, пока он доступен для записи.
- [bpo-36829](https://python-all.ru/3/whatsnew/changelog.html): добавлена новая функция [`sys.unraisablehook()`](https://python-all.ru/3/library/sys.html#sys.unraisablehook), которую можно переопределить для управления поведением при «невыбрасываемых исключениях». Она вызывается, когда возникло исключение, но у Python нет возможности его обработать. Например, при возникновении исключения в деструкторе или во время сборки мусора ([`gc.collect()`](https://python-all.ru/3/library/gc.html#gc.collect)).
- [bpo-36832](https://python-all.ru/3/whatsnew/changelog.html): представлена `zipfile.Path` – совместимая с pathlib обёртка для навигации по zip-файлам.
- [bpo-36814](https://python-all.ru/3/whatsnew/changelog.html): исправлена ошибка, из-за которой os.posix\_spawnp() некорректно вызывала TypeError, когда file\_actions равно None.
- [bpo-33110](https://python-all.ru/3/whatsnew/changelog.html): корректная обработка исключений, возникающих в функциях, добавленных через add\_done\_callback модуля concurrent.futures, когда Future уже завершён.
- [bpo-26903](https://python-all.ru/3/whatsnew/changelog.html): ограничение `max_workers` в `ProcessPoolExecutor` до 61 для обхода ограничения WaitForMultipleObjects.
- [bpo-36813](https://python-all.ru/3/whatsnew/changelog.html): исправлен [`QueueListener`](https://python-all.ru/3/library/logging.handlers.html#logging.handlers.QueueListener): теперь он вызывает `queue.task_done()` при остановке. Патч от Bar Harel.
- [bpo-36806](https://python-all.ru/3/whatsnew/changelog.html): запрещено создание объектов потоков asyncio, таких как StreamReader, StreamWriter, процесс и их протоколов, за пределами пакета asyncio.
- [bpo-36802](https://python-all.ru/3/whatsnew/changelog.html): добавлены как синхронные, так и асинхронные вызовы для StreamWriter.write() и StreamWriter.close()
- [bpo-36801](https://python-all.ru/3/whatsnew/changelog.html): корректная обработка закрытия SSL-соединения при вызове asyncio StreamWriter.drain().
- [bpo-36785](https://python-all.ru/3/whatsnew/changelog.html): реализация PEP 574 (протокол pickle 5 с внешними буферами).
- [bpo-36772](https://python-all.ru/3/whatsnew/changelog.html): functools.lru\_cache() теперь можно использовать как обычный декоратор, а не только как функцию, возвращающую декоратор.
- [bpo-6584](https://python-all.ru/3/whatsnew/changelog.html): добавлено исключение [`BadGzipFile`](https://python-all.ru/3/library/gzip.html#gzip.BadGzipFile) в модуль [`gzip`](https://python-all.ru/3/library/gzip.html#module-gzip).
- [bpo-36748](https://python-all.ru/3/whatsnew/changelog.html): оптимизирована буферизация записи в реализации `TextIOWrapper` на C. Запись строки ASCII в `TextIOWrapper` с кодировками ascii, latin1 или utf-8 ускорена примерно на 20%. Патч от Inada Naoki.
- [bpo-8138](https://python-all.ru/3/whatsnew/changelog.html): не помечать `wsgiref.simple_server.SimpleServer` как многопоточный, так как `wsgiref.simple_server.WSGIServer` однопоточный.
- [bpo-22640](https://python-all.ru/3/whatsnew/changelog.html): [`py_compile.compile()`](https://python-all.ru/3/library/py_compile.html#py_compile.compile) теперь поддерживает тихий режим. Патч от Joannah Nanjekye.
- [bpo-29183](https://python-all.ru/3/whatsnew/changelog.html): исправлены двойные исключения в [`wsgiref.handlers.BaseHandler`](https://python-all.ru/3/library/wsgiref.html#wsgiref.handlers.BaseHandler) – метод `close()` вызывается только при отсутствии исключения.
- [bpo-36548](https://python-all.ru/3/whatsnew/changelog.html): улучшено представление (repr) флагов регулярных выражений.
- [bpo-36542](https://python-all.ru/3/whatsnew/changelog.html): сигнатуру функций Python теперь можно переопределять, указав атрибут `__text_signature__`.
- [bpo-36533](https://python-all.ru/3/whatsnew/changelog.html): блокировки logging.Handler переинициализируются в порождённых дочерних процессах вместо попытки захватить их все в родителе перед порождением, чтобы потом освободить в дочернем процессе. Шаблон захват/освобождение приводил к взаимоблокировкам в коде, где реализованы цепочки обработчиков логирования, зависящих друг от друга, так как порядок захвата блокировок не гарантирован.
- [bpo-35252](https://python-all.ru/3/whatsnew/changelog.html): выбрасывается TypeError вместо AssertionError при использовании недопустимой аннотации типа с singledispatch.
- [bpo-35900](https://python-all.ru/3/whatsnew/changelog.html): методы reduction теперь могут возвращать кортеж из 6 элементов, где шестой элемент указывает пользовательский метод установки состояния, который вызывается вместо обычного метода `__setstate__`.
- [bpo-35900](https://python-all.ru/3/whatsnew/changelog.html): включена регистрация пользовательских колбэков reduction для функций и классов в \_pickle.c через новый атрибут Pickler `reducer_override`
- [bpo-36368](https://python-all.ru/3/whatsnew/changelog.html): исправлена ошибка, приводившая к аварийному завершению экземпляров SharedMemoryManager в интерактивных сессиях после отправки ctrl-c (KeyboardInterrupt)
- [bpo-31904](https://python-all.ru/3/whatsnew/changelog.html): исправлена ошибка mmap для VxWorks
- [bpo-27497](https://python-all.ru/3/whatsnew/changelog.html): [`csv.DictWriter.writeheader()`](https://python-all.ru/3/library/csv.html#csv.DictWriter.writeheader) теперь возвращает значение, возвращаемое нижележащим методом `csv.Writer.writerow()`. Патч предоставлен Ashish Nitin Patil.
- [bpo-36239](https://python-all.ru/3/whatsnew/changelog.html): при разборе .mo-файлов теперь игнорируются комментарии, начинающиеся и заканчивающиеся на #-#-#-#-#.
- [bpo-26707](https://python-all.ru/3/whatsnew/changelog.html): plistlib теперь может читать и записывать бинарные plist-файлы, созданные как KeyedArchive. В частности, plistlib обрабатывает токены 0x80 как объекты UID.
- [bpo-31904](https://python-all.ru/3/whatsnew/changelog.html): добавлена поддержка модуля posix для VxWorks.
- [bpo-35125](https://python-all.ru/3/whatsnew/changelog.html): Asyncio: удаление внутреннего колбэка при внешней отмене в shield
- [bpo-35721](https://python-all.ru/3/whatsnew/changelog.html): исправлена утечка файловых дескрипторов в `asyncio.SelectorEventLoop.subprocess_exec()`, если `Popen` завершается неудачей и вызывается с `stdin=subprocess.PIPE`. Патч от Niklas Fiekas.
- [bpo-31855](https://python-all.ru/3/whatsnew/changelog.html): результаты [`unittest.mock.mock_open()`](https://python-all.ru/3/library/unittest.mock.html#unittest.mock.mock_open) теперь учитывают аргумент read(\[size\]). Патч предоставлен Rémi Lapeyre.
- [bpo-35431](https://python-all.ru/3/whatsnew/changelog.html): реализована [`math.comb()`](https://python-all.ru/3/library/math.html#math.comb), возвращающая биномиальный коэффициент – число способов выбрать k элементов из n без повторений и без учёта порядка. Патч от Yash Aggarwal и Keller Fuchs.
- [bpo-26660](https://python-all.ru/3/whatsnew/changelog.html): Исправлены ошибки прав доступа при очистке [`TemporaryDirectory`](https://python-all.ru/3/library/tempfile.html#tempfile.TemporaryDirectory). Ранее `TemporaryDirectory.cleanup()` завершался ошибкой, если внутри временной директории создавались файлы или каталоги, недоступные для записи или поиска.
- [bpo-34271](https://python-all.ru/3/whatsnew/changelog.html): Добавлены средства отладки в модуль ssl. Теперь можно выгружать ключевые материалы и трассировать протокол TLS. Контексты по умолчанию и из стандартной библиотеки также поддерживают переменную окружения SSLKEYLOGFILE.
- [bpo-26467](https://python-all.ru/3/whatsnew/changelog.html): Добавлен AsyncMock для поддержки мокирования корутин asyncio с помощью unittest. Патч от Лизы Роуч (Lisa Roach).
- [bpo-33569](https://python-all.ru/3/whatsnew/changelog.html): dataclasses.InitVar: теперь доступен тип, используемый для создания переменной инициализации.
- [bpo-34424](https://python-all.ru/3/whatsnew/changelog.html): Исправлена сериализация сообщений, содержащих закодированные строки, когда policy.linesep установлен в строку из нескольких символов. Патч от Йенса Трёгера (Jens Troeger).
- [bpo-34303](https://python-all.ru/3/whatsnew/changelog.html): Производительность [`functools.reduce()`](https://python-all.ru/3/library/functools.html#functools.reduce) немного улучшена. Патч от Сергея Федосеева.
- [bpo-33361](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка в [`codecs.StreamRecoder`](https://python-all.ru/3/library/codecs.html#codecs.StreamRecoder), когда позиционирование могло оставить старые данные в буфере и нарушить последующие вызовы чтения. Патч от Аммара Аскара (Ammar Askar).
- [bpo-22454](https://python-all.ru/3/whatsnew/changelog.html): Модуль [`shlex`](https://python-all.ru/3/library/shlex.html#module-shlex) теперь предоставляет [`shlex.join()`](https://python-all.ru/3/library/shlex.html#shlex.join) – обратную операцию к [`shlex.split()`](https://python-all.ru/3/library/shlex.html#shlex.split). Патч от Бо Бейлса (Bo Bayles).
- [bpo-31922](https://python-all.ru/3/whatsnew/changelog.html): `asyncio.AbstractEventLoop.create_datagram_endpoint()`: не подключать UDP-сокет, если разрешена широковещательная передача. Это позволяет получать ответы после UDP-широковещания.
- [bpo-24882](https://python-all.ru/3/whatsnew/changelog.html): Изменено поведение ThreadPoolExecutor: теперь сначала используются существующие простаивающие потоки, прежде чем создавать новые.
- [bpo-31961](https://python-all.ru/3/whatsnew/changelog.html): Добавлена поддержка байтовых строк и объектов, подобных пути (path-like), в [`subprocess.Popen()`](https://python-all.ru/3/library/subprocess.html#subprocess.Popen) на Windows. Параметр *args* теперь принимает [объект, подобный пути](https://python-all.ru/3/glossary.html#term-path-like-object), если *shell* равно `False`, а также последовательность, содержащую байты и path-like объекты. Параметр *executable* теперь принимает байты и объект, подобный пути. Параметр *cwd* теперь принимает байтовый объект. Основано на патче Андерса Лорентсена (Anders Lorentsen).
- [bpo-33123](https://python-all.ru/3/whatsnew/changelog.html): [`pathlib.Path.unlink`](https://python-all.ru/3/library/pathlib.html#pathlib.Path.unlink) теперь принимает параметр *missing\_ok*, чтобы избежать возникновения [`FileNotFoundError`](https://python-all.ru/3/library/exceptions.html#FileNotFoundError). Патч от Роберта Бухгольца (Robert Buchholz).
- [bpo-32941](https://python-all.ru/3/whatsnew/changelog.html): Объекты [`mmap.mmap`](https://python-all.ru/3/library/mmap.html#mmap.mmap) теперь могут вызывать системный вызов madvise() (через [`mmap.mmap.madvise()`](https://python-all.ru/3/library/mmap.html#mmap.mmap.madvise)).
- [bpo-22102](https://python-all.ru/3/whatsnew/changelog.html): Добавлена поддержка ZIP-файлов с номером диска, установленным в 0. Такие файлы часто создаются встроенными инструментами Windows при использовании расширения ZIP64. Патч от Франциско Фачиони (Francisco Facioni).
- [bpo-32515](https://python-all.ru/3/whatsnew/changelog.html): trace.py теперь может запускать модули через python3 -m trace -t –module module\_name
- [bpo-32299](https://python-all.ru/3/whatsnew/changelog.html): Изменено поведение [`unittest.mock.patch.dict()`](https://python-all.ru/3/library/unittest.mock.html#unittest.mock.patch.dict): теперь возвращает изменённый словарь при использовании в качестве менеджера контекста. Патч от Вадима Цандера (Vadim Tsander).
- [bpo-27141](https://python-all.ru/3/whatsnew/changelog.html): Добавлен `__copy__()` в `collections.UserList` и `collections.UserDict` для правильной реализации поверхностного копирования объектов. Патч от Бара Хареля (Bar Harel).
- [bpo-31829](https://python-all.ru/3/whatsnew/changelog.html): `\r`, `\0` и `\x1a` (конец файла в Windows) теперь экранируются в объектах pickle протокола 0 для строк Юникода. Это позволяет загружать их без потерь из файлов, открытых в текстовом режиме в Python 2.
- [bpo-23395](https://python-all.ru/3/whatsnew/changelog.html): `_thread.interrupt_main()` теперь не устанавливает статус ошибки Python, если сигнал `SIGINT` игнорируется или не обрабатывается Python.

### Документация

- [bpo-36896](https://python-all.ru/3/whatsnew/changelog.html): Уточнено, что некоторые типы имеют нестабильную сигнатуру конструктора между версиями Python.
- [bpo-36686](https://python-all.ru/3/whatsnew/changelog.html): Улучшена документация аргументов stdin, stdout и stderr функции `asyncio.subprocess_exec`: указано, какие значения поддерживаются. Также отмечено, что декодирование как текст не поддерживается.

  Добавлено несколько тестов для проверки работоспособности различных значений, передаваемых аргументам std\*.
- [bpo-36984](https://python-all.ru/3/whatsnew/changelog.html): Улучшены ссылки на версии добавления в модуле `typing`. Автор: Anthony Sottile.
- [bpo-36868](https://python-all.ru/3/whatsnew/changelog.html): В разделе «Что нового» теперь упоминается SSLContext.hostname\_checks\_common\_name вместо SSLContext.host\_flags.
- [bpo-35924](https://python-all.ru/3/whatsnew/changelog.html): Добавлено примечание в документацию `curses.addstr()`, предупреждающее, что многострочные строки могут вызывать ошибку сегментации из-за ошибки в ncurses.
- [bpo-36783](https://python-all.ru/3/whatsnew/changelog.html): Добавлена документация C API для Time\_FromTimeAndFold и PyDateTime\_FromDateAndTimeAndFold в соответствии с PEP 495. Патч от Эдисона Абахурире (Edison Abahurire).
- [bpo-36797](https://python-all.ru/3/whatsnew/changelog.html): Большая часть устаревшей документации distutils была либо удалена, либо более явно помечена как временно сохранённая, пока документация setuptools не покроет эти темы самостоятельно.
- [bpo-22865](https://python-all.ru/3/whatsnew/changelog.html): Добавлены подробности в документацию функции `pty.spawn`.
- [bpo-35397](https://python-all.ru/3/whatsnew/changelog.html): Удалено устаревание и документирована функция urllib.parse.unwrap(). Патч предоставлен Rémi Lapeyre.
- [bpo-32995](https://python-all.ru/3/whatsnew/changelog.html): Добавлена переменная контекста в глоссарий.
- [bpo-33519](https://python-all.ru/3/whatsnew/changelog.html): Уточнено, что `copy()` не является частью абстрактного базового класса `MutableSequence`.
- [bpo-33482](https://python-all.ru/3/whatsnew/changelog.html): Сделать `codecs.StreamRecoder.writelines` принимающим список байтов.
- [bpo-25735](https://python-all.ru/3/whatsnew/changelog.html): Добавлена документация для func factorial, указывающая, что она возвращает целые числа.
- [bpo-20285](https://python-all.ru/3/whatsnew/changelog.html): Расширить object.\_\_doc\_\_ (докстринг) для большей ясности. Изменить pydoc.py, чтобы help(object) перечислял методы объекта (для других классов help опускает методы базового класса object.)

### Тесты

- [bpo-37069](https://python-all.ru/3/whatsnew/changelog.html): Изменить test\_coroutines, test\_cprofile, test\_generators, test\_raise, test\_ssl и test\_yield\_from для использования [`test.support.catch_unraisable_exception()`](https://python-all.ru/3/library/test.html#test.support.catch_unraisable_exception) вместо [`test.support.captured_stderr()`](https://python-all.ru/3/library/test.html#test.support.captured_stderr).
- [bpo-37098](https://python-all.ru/3/whatsnew/changelog.html): Исправить test\_memfd\_create на старых ядрах Linux.
- [bpo-37081](https://python-all.ru/3/whatsnew/changelog.html): Тестирование с OpenSSL 1.1.1c
- [bpo-36829](https://python-all.ru/3/whatsnew/changelog.html): Добавить [`test.support.catch_unraisable_exception()`](https://python-all.ru/3/library/test.html#test.support.catch_unraisable_exception): менеджер контекста, перехватывающий неподнимаемые исключения с помощью [`sys.unraisablehook()`](https://python-all.ru/3/library/sys.html#sys.unraisablehook).
- [bpo-36915](https://python-all.ru/3/whatsnew/changelog.html): Основной процесс regrtest теперь всегда удаляет все временные каталоги рабочих процессов, даже если они аварийно завершаются или убиваются по KeyboardInterrupt (CTRL+c).
- [bpo-36719](https://python-all.ru/3/whatsnew/changelog.html): "python3 -m test -jN …" теперь продолжает выполнение следующих тестов при аварийном завершении рабочего процесса (состояние CHILD\_ERROR). Ранее набор тестов останавливался немедленно. Используйте --failfast для остановки при первой ошибке.
- [bpo-36816](https://python-all.ru/3/whatsnew/changelog.html): Обновить Lib/test/selfsigned\_pythontestdotnet.pem в соответствии с новым TLS-сертификатом self-signed.pythontest.net.
- [bpo-35925](https://python-all.ru/3/whatsnew/changelog.html): Пропускать сетевые тесты httplib и nntplib, если они иначе завершатся ошибкой из-за современной ОС или дистрибутива с политикой OpenSSL по умолчанию, отклоняющей подключения к серверам со слабыми сертификатами.
- [bpo-36782](https://python-all.ru/3/whatsnew/changelog.html): Добавить тесты для нескольких функций C API в модуле [`datetime`](https://python-all.ru/3/library/datetime.html#module-datetime). Патч от Edison Abahurire.
- [bpo-36342](https://python-all.ru/3/whatsnew/changelog.html): Исправить test\_multiprocessing в test\_venv, если на платформе отсутствует работоспособный sem\_open.

### Сборка

- [bpo-36721](https://python-all.ru/3/whatsnew/changelog.html): Чтобы встроить Python в приложение, необходимо передать новую опцию `--embed` в `python3-config --libs --embed` для получения `-lpython3.8` (линковка приложения с libpython). Для поддержки обеих версий 3.8 и старше попробуйте сначала `python3-config --libs --embed` и откатитесь к `python3-config --libs` (без `--embed`), если предыдущая команда не удалась.

  Add a pkg-config `python-3.8-embed` module to embed Python into an application: `pkg-config python-3.8-embed --libs` includes `-lpython3.8`. To support both 3.8 and older, try `pkg-config python-X.Y-embed --libs` first and fallback to `pkg-config python-X.Y --libs` (without `--embed`) if the previous command fails (replace `X.Y` with the Python version).

  On the other hand, `pkg-config python3.8 --libs` no longer contains `-lpython3.8`. C extensions must not be linked to libpython (except on Android, case handled by the script); this change is backward incompatible on purpose.
- [bpo-36786](https://python-all.ru/3/whatsnew/changelog.html): "make install" теперь запускает compileall параллельно.

### Windows

- [bpo-36965](https://python-all.ru/3/whatsnew/changelog.html): Включение STATUS\_CONTROL\_C\_EXIT без зависимости от компилятора MSC.
- [bpo-35926](https://python-all.ru/3/whatsnew/changelog.html): Обновление до OpenSSL 1.1.1b для Windows.
- [bpo-29883](https://python-all.ru/3/whatsnew/changelog.html): Добавить поддержку Windows для UDP-транспортов в Proactor Event Loop. Патч от Adam Meily.
- [bpo-33407](https://python-all.ru/3/whatsnew/changelog.html): Макрос [`Py_DEPRECATED()`](https://python-all.ru/3/c-api/intro.html#c.Py_DEPRECATED) реализован для MSVC.

### macOS

- [bpo-36231](https://python-all.ru/3/whatsnew/changelog.html): Поддержка сборки Python на macOS без установленного /usr/include. Начиная с macOS 10.14, системные заголовочные файлы доступны только в SDK, предоставляемом либо Command Line Tools, либо приложением Xcode.

### IDLE

- [bpo-35610](https://python-all.ru/3/whatsnew/changelog.html): Заменить теперь избыточный .context\_use\_ps1 на .prompt\_last\_line. Это завершает изменение, начатое в [bpo-31858](https://python-all.ru/3/whatsnew/changelog.html).
- [bpo-37038](https://python-all.ru/3/whatsnew/changelog.html): Сделать idlelib.run запускаемым; добавить тестовое условие.
- [bpo-36958](https://python-all.ru/3/whatsnew/changelog.html): Печатать любой аргумент, отличный от None или int, переданный в SystemExit или sys.exit().
- [bpo-36807](https://python-all.ru/3/whatsnew/changelog.html): При сохранении файла вызывать os.fsync(), чтобы данные сбрасывались на, например, USB-накопитель.
- [bpo-32411](https://python-all.ru/3/whatsnew/changelog.html): В browser.py удалить лишнюю сортировку по номеру строки, так как словарь создавался в порядке номеров строк.

### Tools/Demos

- [bpo-37053](https://python-all.ru/3/whatsnew/changelog.html): Правильно обрабатывает строки вида u»bar» в Tools/parser/unparse.py. Исправление от Chih-Hsuan Yen.

### C API

- [bpo-36763](https://python-all.ru/3/whatsnew/changelog.html): Реализована [**PEP 587**](https://python-all.ru/3/whatsnew/changelog.html) «Python Initialization Configuration».
- [bpo-36379](https://python-all.ru/3/whatsnew/changelog.html): Исправлены падения при попытке использовать параметр *modulo*, когда `__ipow__` реализован на C.
- [bpo-37107](https://python-all.ru/3/whatsnew/changelog.html): Обновлены [`PyObject_CallMethodObjArgs()`](https://python-all.ru/3/c-api/call.html#c.PyObject_CallMethodObjArgs) и `_PyObject_CallMethodIdObjArgs` для использования `_PyObject_GetMethod`, чтобы избежать создания объекта связанного метода во многих случаях. Исправление от Michael J. Sullivan.
- [bpo-36974](https://python-all.ru/3/whatsnew/changelog.html): Реализован [**PEP 590**](https://python-all.ru/3/whatsnew/changelog.html): Vectorcall – быстрый протокол вызова для CPython. Это новый протокол для оптимизации вызовов пользовательских вызываемых объектов.
- [bpo-36763](https://python-all.ru/3/whatsnew/changelog.html): `Py_Main()` теперь возвращает код выхода вместо вызова `Py_Exit(exitcode)` при вызове `PyErr_Print()`, если текущий тип исключения – `SystemExit`.
- [bpo-36922](https://python-all.ru/3/whatsnew/changelog.html): Добавлен новый флаг типа `Py_TPFLAGS_METHOD_DESCRIPTOR` для объектов, ведущих себя как несвязанные методы. Это объекты, поддерживающие оптимизацию, предоставляемую опкодами `LOAD_METHOD`/`CALL_METHOD`. См. PEP 590.
- [bpo-36728](https://python-all.ru/3/whatsnew/changelog.html): Функция `PyEval_ReInitThreads()` удалена из C API. Её не следует вызывать явно: используйте [`PyOS_AfterFork_Child()`](https://python-all.ru/3/c-api/sys.html#c.PyOS_AfterFork_Child).

## Python 3.8.0 alpha 4

*Дата выпуска: 2019-05-06*

### Безопасность

- [bpo-36742](https://python-all.ru/3/whatsnew/changelog.html): Исправлена некорректная обработка символов предварительной нормализации в urlsplit().
- [bpo-30458](https://python-all.ru/3/whatsnew/changelog.html): Устранена уязвимость [**CVE 2019-9740**](https://python-all.ru/3/whatsnew/changelog.html): запрещено пропускать URL-пути со встроенными пробельными или управляющими символами в нижележащий http-запрос клиента. Такие потенциально вредоносные URL с внедрением заголовков теперь вызывают исключение http.client.InvalidURL.
- [bpo-35755](https://python-all.ru/3/whatsnew/changelog.html): [`shutil.which()`](https://python-all.ru/3/library/shutil.html#shutil.which) теперь использует `os.confstr("CS_PATH")`, если доступно и если переменная окружения `PATH` не установлена. Также удален текущий каталог из `posixpath.defpath`. В Unix `shutil.which()` и модуль [`subprocess`](https://python-all.ru/3/library/subprocess.html#module-subprocess) больше не ищут исполняемый файл в текущем каталоге, если переменная окружения `PATH` не установлена.

### Ядро и встроенные модули

- [bpo-36722](https://python-all.ru/3/whatsnew/changelog.html): В отладочной сборке import теперь также ищет C-расширения, скомпилированные в режиме выпуска, и C-расширения, скомпилированные со стабильным ABI.
- [bpo-32849](https://python-all.ru/3/whatsnew/changelog.html): Исправлен код инициализации Python на FreeBSD для правильного определения недопустимости дескриптора файла stdin (fd 0).
- [bpo-36623](https://python-all.ru/3/whatsnew/changelog.html): Удалены заголовки парсера и связанные объявления функций, у которых отсутствуют реализации после удаления pgen.
- [bpo-20180](https://python-all.ru/3/whatsnew/changelog.html): `dict.pop()` теперь работает до 33% быстрее благодаря Argument Clinic. Исправление от Inada Naoki.
- [bpo-36611](https://python-all.ru/3/whatsnew/changelog.html): Отладочные распределители памяти: отключено поле serialno по умолчанию в отладочных перехватчиках распределителей памяти Python для уменьшения потребления памяти на 5%. Включите [`tracemalloc`](https://python-all.ru/3/library/tracemalloc.html#module-tracemalloc), чтобы получить трассировку места выделения блока памяти при регистрации фатальной ошибки памяти, чтобы решить, где поставить точку останова. Скомпилируйте Python с определённым `PYMEM_DEBUG_SERIALNO`, чтобы вернуть поле.
- [bpo-36588](https://python-all.ru/3/whatsnew/changelog.html): На AIX [`sys.platform`](https://python-all.ru/3/library/sys.html#sys.platform) больше не содержит основной версии. Всегда возвращает `'aix'`, вместо `'aix3'` .. `'aix7'`. Поскольку старые версии Python включают номер версии, рекомендуется всегда использовать `sys.platform.startswith('aix')`. Предложено M. Felt.
- [bpo-36549](https://python-all.ru/3/whatsnew/changelog.html): Изменён str.capitalize: теперь для первого символа используется заглавная буква в стиле titlecase вместо верхнего регистра.
- [bpo-36540](https://python-all.ru/3/whatsnew/changelog.html): Реализован [**PEP 570**](https://python-all.ru/3/whatsnew/changelog.html) (только позиционные параметры Python). Исправление от Pablo Galindo.
- [bpo-36475](https://python-all.ru/3/whatsnew/changelog.html): `PyEval_AcquireLock()` и `PyEval_AcquireThread()` теперь завершают текущий поток, если вызваны во время финализации интерпретатора, что делает их согласованными с [`PyEval_RestoreThread()`](https://python-all.ru/3/c-api/threads.html#c.PyEval_RestoreThread), [`Py_END_ALLOW_THREADS()`](https://python-all.ru/3/c-api/threads.html#c.Py_END_ALLOW_THREADS) и [`PyGILState_Ensure()`](https://python-all.ru/3/c-api/threads.html#c.PyGILState_Ensure).
- [bpo-36504](https://python-all.ru/3/whatsnew/changelog.html): Исправлено переполнение знакового целого в \_ctypes.c’s `PyCArrayType_new()`.
- [bpo-20844](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка: выполнение скрипта с encoding cookie и LF-окончаниями строк может завершаться неудачей в Windows.
- [bpo-24214](https://python-all.ru/3/whatsnew/changelog.html): Исправлена поддержка обработчика ошибок surrogatepass в инкрементальном декодере UTF-8.
- [bpo-36452](https://python-all.ru/3/whatsnew/changelog.html): Изменение ключей `dict` во время итерации самого словаря, `keys()`, `values()` или `items()` теперь будет обнаруживаться в некоторых крайних случаях, когда ключи удаляются/добавляются таким образом, что количество ключей не меняется. Исключение `RuntimeError` будет возбуждено после `len(dict)` итераций. Предложено Thomas Perl.
- [bpo-36459](https://python-all.ru/3/whatsnew/changelog.html): Исправлено возможное двойное `PyMem_FREE()` из-за tokenizer.c’s `tok_nextc()`.
- [bpo-36433](https://python-all.ru/3/whatsnew/changelog.html): Исправлено сообщение TypeError в classmethoddescr\_call.
- [bpo-36430](https://python-all.ru/3/whatsnew/changelog.html): Исправлена возможная утечка ссылок в [`itertools.count()`](https://python-all.ru/3/library/itertools.html#itertools.count).
- [bpo-36440](https://python-all.ru/3/whatsnew/changelog.html): В сообщения `ParserError` добавлены имена узлов вместо числовых идентификаторов. Патч от A. Skrobov.
- [bpo-36143](https://python-all.ru/3/whatsnew/changelog.html): Перегенерирован [`keyword`](https://python-all.ru/3/library/keyword.html#module-keyword) из файлов Grammar и Tokens с помощью pgen. Патч от Pablo Galindo.
- [bpo-18372](https://python-all.ru/3/whatsnew/changelog.html): Добавлены недостающие вызовы [`PyObject_GC_Track()`](https://python-all.ru/3/c-api/gcsupport.html#c.PyObject_GC_Track) в модуле [`pickle`](https://python-all.ru/3/library/pickle.html#module-pickle). Патч от Zackery Spytz.

### Библиотека

- [bpo-35952](https://python-all.ru/3/whatsnew/changelog.html): Исправлена работа pythoninfo при отсутствии компилятора.
- [bpo-28238](https://python-all.ru/3/whatsnew/changelog.html): Методы `.find*()` модуля xml.etree.ElementTree теперь могут выполнять поиск по шаблонам, таким как `{*}tag` и `{ns}*`, которые соответствуют тегу в любом пространстве имён или всем тегам в пространстве имён. Патч от Stefan Behnel.
- [bpo-26978](https://python-all.ru/3/whatsnew/changelog.html): Теперь реализован `pathlib.path.link_to()`. Он создаёт жёсткую ссылку, указывающую на путь.
- [bpo-1613500](https://python-all.ru/3/whatsnew/changelog.html): Теперь [`fileinput.FileInput`](https://python-all.ru/3/library/fileinput.html#fileinput.FileInput) использует режим входного файла для корректной установки режима выходного файла (ранее было жёстко задано `'w'`), когда в его конструктор передаётся `inplace=True`.
- [bpo-36734](https://python-all.ru/3/whatsnew/changelog.html): Исправлена компиляция `faulthandler.c` на HP-UX. Инициализация `stack_t current_stack` нулём с помощью `memset()`.
- [bpo-13611](https://python-all.ru/3/whatsnew/changelog.html): Пакеты xml.etree.ElementTree получили поддержку сериализации C14N 2.0. Патч от Stefan Behnel.
- [bpo-36669](https://python-all.ru/3/whatsnew/changelog.html): Добавлена поддержка оператора матричного умножения в weakref.proxy, которой не хватало.
- [bpo-36676](https://python-all.ru/3/whatsnew/changelog.html): XMLParser() в xml.etree.ElementTree предоставляет контекст префиксов пространств имён цели парсера, если она определяет методы колбэков "start\_ns()" и/или "end\_ns()". Патч от Stefan Behnel.
- [bpo-36673](https://python-all.ru/3/whatsnew/changelog.html): TreeBuilder и XMLPullParser в xml.etree.ElementTree получили поддержку разбора комментариев и инструкций обработки. Патч от Stefan Behnel.
- [bpo-36650](https://python-all.ru/3/whatsnew/changelog.html): C-версия functools.lru\_cache() считала вызовы с пустым словарём `**kwargs` отличными от вызовов без ключевых слов вообще. Это не приводило к неверному результату, но вызывало неожиданный промах кеша.
- [bpo-28552](https://python-all.ru/3/whatsnew/changelog.html): Исправлен `distutils.sysconfig`, если [`sys.executable`](https://python-all.ru/3/library/sys.html#sys.executable) равно `None` или пустой строке: используйте [`os.getcwd()`](https://python-all.ru/3/library/os.html#os.getcwd) для инициализации `project_base`. Также исправлена команда сборки distutils: не используйте `sys.executable`, если он равен `None` или пустой строке.
- [bpo-35755](https://python-all.ru/3/whatsnew/changelog.html): [`shutil.which()`](https://python-all.ru/3/library/shutil.html#shutil.which) и `distutils.spawn.find_executable` теперь используют `os.confstr("CS_PATH")`, если он доступен, вместо [`os.defpath`](https://python-all.ru/3/library/os.html#os.defpath), если переменная окружения `PATH` не установлена. Кроме того, не используйте `os.confstr("CS_PATH")` и `os.defpath`, если переменная окружения `PATH` установлена в пустую строку.
- [bpo-25430](https://python-all.ru/3/whatsnew/changelog.html): Повышение производительности `IPNetwork.__contains__()`
- [bpo-30485](https://python-all.ru/3/whatsnew/changelog.html): Выражения путей в xml.etree.ElementTree теперь могут избегать явных префиксов пространств имён для тегов (или нотации "{namespace}tag") путём передачи пространства имён по умолчанию с пустым строковым префиксом.
- [bpo-36613](https://python-all.ru/3/whatsnew/changelog.html): Исправлено, что [`asyncio`](https://python-all.ru/3/library/asyncio.html#module-asyncio).wait() не удаляет колбэк при исключении.
- [bpo-36598](https://python-all.ru/3/whatsnew/changelog.html): Исправлена проверка `isinstance` для Mock-объектов со спецификацией при выполнении кода под трассировкой. Патч от Karthikeyan Singaravelan.
- [bpo-18748](https://python-all.ru/3/whatsnew/changelog.html): В режиме разработки ([`-X`](https://python-all.ru/3/using/cmdline.html#cmdoption-X) `dev`) и в отладочной сборке деструктор [`io.IOBase`](https://python-all.ru/3/library/io.html#io.IOBase) теперь регистрирует исключения `close()`. В релизной сборке эти исключения по умолчанию не выводятся.
- [bpo-36575](https://python-all.ru/3/whatsnew/changelog.html): Модуль `_lsprof` теперь по умолчанию использует внутренний таймер, совпадающий с `time.perf_counter()`. Ранее на Unix использовался `gettimeofday(2)`. Новый таймер имеет лучшее разрешение на большинстве платформ Unix, и временные показатели больше не подвержены влиянию обновлений системных часов, так как `perf_counter()` является монотонным. Патч от Inada Naoki.
- [bpo-33461](https://python-all.ru/3/whatsnew/changelog.html): `json.loads` теперь выводит `DeprecationWarning` при указании опции `encoding`. Патч от Matthias Bussonnier.
- [bpo-36559](https://python-all.ru/3/whatsnew/changelog.html): Модуль random теперь предпочитает компактный внутренний модуль \_sha512 вместо hashlib для seed(version=2) для оптимизации времени импорта.
- [bpo-17561](https://python-all.ru/3/whatsnew/changelog.html): Установлено backlog=None по умолчанию для socket.create\_server.
- [bpo-34373](https://python-all.ru/3/whatsnew/changelog.html): Исправлена обработка ошибок [`time.mktime()`](https://python-all.ru/3/library/time.html#time.mktime) на AIX для года до 1970.
- [bpo-36232](https://python-all.ru/3/whatsnew/changelog.html): Улучшено сообщение об ошибке при попытке открыть существующую базу данных DBM, которая на самом деле не существует. Патч от Marco Rougeth.
- [bpo-36546](https://python-all.ru/3/whatsnew/changelog.html): Добавлена функция statistics.quantiles().
- [bpo-36050](https://python-all.ru/3/whatsnew/changelog.html): Оптимизирован `http.client.HTTPResponse.read()` для большого ответа. Патч от Inada Naoki.
- [bpo-36522](https://python-all.ru/3/whatsnew/changelog.html): Если *debuglevel* установлен \>0 в [`http.client`](https://python-all.ru/3/library/http.client.html#module-http.client), выводятся все значения для заголовков с несколькими значениями для одного и того же имени заголовка. Патч от Matt Houglum.
- [bpo-36492](https://python-all.ru/3/whatsnew/changelog.html): Устарела передача обязательных аргументов, таких как *func*, в качестве именованных аргументов в функциях, которые должны принимать произвольные именованные аргументы и передавать их другой функции. Произвольные именованные аргументы (даже с именами "self" и "func") теперь можно передавать этим функциям, если обязательные аргументы переданы как позиционные.
- [bpo-27181](https://python-all.ru/3/whatsnew/changelog.html): Добавлена статистическая функция geometric\_mean().
- [bpo-30427](https://python-all.ru/3/whatsnew/changelog.html): `os.path.normcase()` использует `os.fspath()` для проверки типа своего аргумента. Избыточные проверки удалены из реализаций `posixpath.normcase()` и `ntpath.normcase()`. Исправление от Wolfgang Maier.
- [bpo-36385](https://python-all.ru/3/whatsnew/changelog.html): Прекращено отклонение октетов IPv4 из-за неоднозначности восьмеричной записи. Начальные нули игнорируются и больше не считаются указанием на восьмеричные октеты. Октеты всегда являются десятичными числами. Октеты по-прежнему должны содержать не более трёх цифр, включая начальные нули.
- [bpo-36434](https://python-all.ru/3/whatsnew/changelog.html): Ошибки при записи в ZIP-файл больше не препятствуют его корректному закрытию.
- [bpo-36407](https://python-all.ru/3/whatsnew/changelog.html): Исправлено неправильное форматирование отступа при записи секции CDATA в xml.dom.minidom. Исправление от Владимира Сурьянинова.
- [bpo-36326](https://python-all.ru/3/whatsnew/changelog.html): inspect.getdoc() теперь может находить докстринги для объектов-членов, когда \_\_slots\_\_ является словарём.
- [bpo-36366](https://python-all.ru/3/whatsnew/changelog.html): Вызов `stop()` на незапущенном или остановленном объекте [`unittest.mock.patch()`](https://python-all.ru/3/library/unittest.mock.html#unittest.mock.patch) теперь будет возвращать `None` вместо выбрасывания [`RuntimeError`](https://python-all.ru/3/library/exceptions.html#RuntimeError), что делает метод идемпотентным. Исправление от Karthikeyan Singaravelan.
- [bpo-36348](https://python-all.ru/3/whatsnew/changelog.html): Метод `imap.IMAP4.logout()` больше не игнорирует молча произвольные исключения.
- [bpo-31904](https://python-all.ru/3/whatsnew/changelog.html): Добавлена поддержка модуля time и исправлены сбои test\_time для VxWorks.
- [bpo-36227](https://python-all.ru/3/whatsnew/changelog.html): Добавлена поддержка именованных аргументов `default_namespace` и `xml_declaration` в функциях `ElementTree.tostring()` и `ElementTree.tostringlist()`.
- [bpo-36004](https://python-all.ru/3/whatsnew/changelog.html): Добавлены новые альтернативные конструкторы [`datetime.date.fromisocalendar()`](https://python-all.ru/3/library/datetime.html#datetime.date.fromisocalendar) и [`datetime.datetime.fromisocalendar()`](https://python-all.ru/3/library/datetime.html#datetime.datetime.fromisocalendar), которые создают объекты date из года по ISO, номера недели и дня недели; они являются обратными по отношению к методу `isocalendar` каждого класса. Исправление от Paul Ganssle.
- [bpo-35936](https://python-all.ru/3/whatsnew/changelog.html): [`modulefinder`](https://python-all.ru/3/library/modulefinder.html#module-modulefinder) больше не зависит от устаревшего модуля [`imp`](https://python-all.ru/3/library/imp.html#module-imp), а инициализатор для [`modulefinder.ModuleFinder`](https://python-all.ru/3/library/modulefinder.html#modulefinder.ModuleFinder) теперь имеет неизменяемые аргументы по умолчанию. Исправление от Brandt Bucher.
- [bpo-35376](https://python-all.ru/3/whatsnew/changelog.html): [`modulefinder`](https://python-all.ru/3/library/modulefinder.html#module-modulefinder) корректно обрабатывает модули, имеющие то же имя, что и некорректный пакет. Исправление от Brandt Bucher.
- [bpo-17396](https://python-all.ru/3/whatsnew/changelog.html): [`modulefinder`](https://python-all.ru/3/library/modulefinder.html#module-modulefinder) больше не завершается аварийно при обнаружении синтаксических ошибок в следующих импортах. Исправление от Brandt Bucher.
- [bpo-35934](https://python-all.ru/3/whatsnew/changelog.html): Добавлены вспомогательные функции [`create_server()`](https://python-all.ru/3/library/socket.html#socket.create_server) и [`has_dualstack_ipv6()`](https://python-all.ru/3/library/socket.html#socket.has_dualstack_ipv6) для автоматизации необходимых задач, обычно связанных с созданием серверного сокета, включая принятие как IPv4, так и IPv6 соединений на одном сокете. (Предложено Giampaolo Rodola в [bpo-17561](https://python-all.ru/3/whatsnew/changelog.html).)
- [bpo-23078](https://python-all.ru/3/whatsnew/changelog.html): Добавлена поддержка [`classmethod()`](https://python-all.ru/3/library/functions.html#classmethod) и [`staticmethod()`](https://python-all.ru/3/library/functions.html#staticmethod) в [`unittest.mock.create_autospec()`](https://python-all.ru/3/library/unittest.mock.html#unittest.mock.create_autospec). Первоначальное исправление от Felipe Ochoa.
- [bpo-35416](https://python-all.ru/3/whatsnew/changelog.html): Исправлены потенциальные предупреждения о ресурсах в distutils. Исправление от Mickaël Schoentgen.
- [bpo-25451](https://python-all.ru/3/whatsnew/changelog.html): Добавлены методы прозрачности в [`tkinter.PhotoImage`](https://python-all.ru/3/library/tkinter.html#tkinter.PhotoImage). Исправление от Zackery Spytz.
- [bpo-35082](https://python-all.ru/3/whatsnew/changelog.html): Не возвращать удалённые атрибуты при вызове dir на [`unittest.mock.Mock`](https://python-all.ru/3/library/unittest.mock.html#unittest.mock.Mock).
- [bpo-34547](https://python-all.ru/3/whatsnew/changelog.html): [`wsgiref.handlers.BaseHandler`](https://python-all.ru/3/library/wsgiref.html#wsgiref.handlers.BaseHandler) теперь корректно обрабатывает внезапные разрывы соединений клиентов. Исправление от Petter Strandmark.
- [bpo-31658](https://python-all.ru/3/whatsnew/changelog.html): [`xml.sax.parse()`](https://python-all.ru/3/library/xml.sax.html#xml.sax.parse) теперь поддерживает [путеподобные объекты](https://python-all.ru/3/glossary.html#term-path-like-object). Исправление от Mickaël Schoentgen.
- [bpo-34139](https://python-all.ru/3/whatsnew/changelog.html): Удалять устаревший unix-датаграммный сокет перед привязкой
- [bpo-33530](https://python-all.ru/3/whatsnew/changelog.html): Реализована технология Happy Eyeballs в `asyncio.create_connection()`. Добавлены два новых аргумента, *happy\_eyeballs\_delay* и *interleave*, для настройки поведения Happy Eyeballs.
- [bpo-33291](https://python-all.ru/3/whatsnew/changelog.html): Не выбрасывать AttributeError при вызове функций inspect isgeneratorfunction, iscoroutinefunction, isasyncgenfunction для метода, созданного из произвольного вызываемого объекта. Вместо этого возвращать False.
- [bpo-31310](https://python-all.ru/3/whatsnew/changelog.html): Исправлен multiprocessing.semaphore\_tracker, чтобы он повторно использовался дочерними процессами
- [bpo-31292](https://python-all.ru/3/whatsnew/changelog.html): Исправлен `setup.py check --restructuredtext` для файлов, содержащих директивы `include`.

### Документация

- [bpo-36625](https://python-all.ru/3/whatsnew/changelog.html): Удалены устаревшие комментарии из докстрингов в fractions.Fraction
- [bpo-30840](https://python-all.ru/3/whatsnew/changelog.html): Документированы относительные импорты
- [bpo-36523](https://python-all.ru/3/whatsnew/changelog.html): Добавлен докстринг для io.IOBase.writelines().
- [bpo-36425](https://python-all.ru/3/whatsnew/changelog.html): Новый перевод документации: [упрощённый китайский](https://python-all.ru/3/whatsnew/changelog.html).
- [bpo-36345](https://python-all.ru/3/whatsnew/changelog.html): Устранено дублирование кода из `Tools/scripts/serve.py` при использовании директивы `literalinclude` для базового веб-сервера на основе wsgiref в документации [`wsgiref`](https://python-all.ru/3/library/wsgiref.html#module-wsgiref). Предложено Stéphane Wirtel.
- [bpo-36345](https://python-all.ru/3/whatsnew/changelog.html): Использование кода скрипта `Tools/scripts/serve.py` в качестве примера в документации [`wsgiref`](https://python-all.ru/3/library/wsgiref.html#module-wsgiref). Вклад от Stéphane Wirtel.
- [bpo-36157](https://python-all.ru/3/whatsnew/changelog.html): Добавлена документация для PyInterpreterState\_Main().
- [bpo-33043](https://python-all.ru/3/whatsnew/changelog.html): Обновляет страницу docs.python.org добавлением ссылки «Contributing to Docs» в конце страницы (между «Reporting Bugs» и «About Documentation»). Обновляет страницу «Found a Bug» дополнительными ссылками и информацией в разделе Documentation Bugs.
- [bpo-35581](https://python-all.ru/3/whatsnew/changelog.html): @typing.type\_check\_only теперь позволяет заглушкам типов помечать функции и классы, недоступные во время выполнения.
- [bpo-33832](https://python-all.ru/3/whatsnew/changelog.html): Добавлена запись в глоссарий для «магического метода».
- [bpo-32913](https://python-all.ru/3/whatsnew/changelog.html): Добавлен пример re.Match.groupdict в regex HOWTO.

### Тесты

- [bpo-36719](https://python-all.ru/3/whatsnew/changelog.html): regrtest теперь всегда обнаруживает несобираемые объекты. Ранее проверка включалась только с помощью `--findleaks`. Теперь проверка также работает с `-jN/--multiprocess N`. `--findleaks` становится устаревшим псевдонимом для `--fail-env-changed`.
- [bpo-36725](https://python-all.ru/3/whatsnew/changelog.html): При использовании режима multiprocessing (-jN) regrtest теперь лучше сообщает об ошибках при сбое рабочего процесса и немедленно завершается при сбое рабочего потока или при прерывании.
- [bpo-36454](https://python-all.ru/3/whatsnew/changelog.html): Изменён test\_time.test\_monotonic() так, чтобы проверялась только нижняя граница прошедшего времени после команды sleep, а не верхняя. Это предотвращает лишние сбои тестов на медленных сборочных ботах. Исправление от Victor Stinner.
- [bpo-32424](https://python-all.ru/3/whatsnew/changelog.html): Улучшено тестовое покрытие для xml.etree.ElementTree. Исправление от Gordon P. Hemsley.
- [bpo-32424](https://python-all.ru/3/whatsnew/changelog.html): Исправлена опечатка в тесте test\_cyclic\_gc() для xml.etree.ElementTree. Исправление от Gordon P. Hemsley.
- [bpo-36635](https://python-all.ru/3/whatsnew/changelog.html): Добавлен новый модуль `_testinternalcapi` для тестирования внутреннего C API.
- [bpo-36629](https://python-all.ru/3/whatsnew/changelog.html): Исправлено `test_imap4_host_default_value()` из `test_imaplib`: теперь также перехватывается ошибка [`errno.ENETUNREACH`](https://python-all.ru/3/library/errno.html#errno.ENETUNREACH).
- [bpo-36611](https://python-all.ru/3/whatsnew/changelog.html): Исправлено `test_sys.test_getallocatedblocks()`, когда [`tracemalloc`](https://python-all.ru/3/library/tracemalloc.html#module-tracemalloc) включён.
- [bpo-36560](https://python-all.ru/3/whatsnew/changelog.html): Исправлена охота за утечками ссылок в regrtest: теперь также вычисляются дельты (счётчика ссылок, выделенных блоков памяти, количества файловых дескрипторов) во время прогрева, чтобы гарантировать, что всё инициализировано перед началом охоты за утечками ссылок.
- [bpo-36565](https://python-all.ru/3/whatsnew/changelog.html): Исправлена охота за ссылками (`python3 -m test -R 3:3`), когда в Python нет встроенного модуля abc.
- [bpo-31904](https://python-all.ru/3/whatsnew/changelog.html): Перенесён test\_resource на VxWorks: пропущены тестовые случаи, устанавливающие RLIMIT\_FSIZE и RLIMIT\_CPU.
- [bpo-31904](https://python-all.ru/3/whatsnew/changelog.html): Исправлен test\_tabnanny на VxWorks: скорректировано сообщение об ошибке ENOENT.
- [bpo-36436](https://python-all.ru/3/whatsnew/changelog.html): Исправлено `_testcapi.pymem_buffer_overflow()`: обработка сбоя выделения памяти.
- [bpo-31904](https://python-all.ru/3/whatsnew/changelog.html): Исправлен test\_utf8\_mode на VxWorks: Python всегда использует UTF-8 на VxWorks.
- [bpo-36341](https://python-all.ru/3/whatsnew/changelog.html): Исправлены тесты, которые могут завершаться с PermissionError при вызове bind() на сокетах AF\_UNIX.

### Сборка

- [bpo-36747](https://python-all.ru/3/whatsnew/changelog.html): Удалена устаревшая цель Makefile scriptsinstall.
- [bpo-21536](https://python-all.ru/3/whatsnew/changelog.html): В Unix расширения C больше не линкуются с libpython, кроме Android и Cygwin.

  Теперь стало возможным для статически слинкованного Python загружать расширение C, собранное с использованием Python в виде разделяемой библиотеки.

  Когда Python встраивается, `libpython` не должен загружаться с `RTLD_LOCAL`, а вместо этого с `RTLD_GLOBAL`. Ранее при использовании `RTLD_LOCAL` уже было невозможно загрузить расширения C, которые не были слинкованы с `libpython`, такие как расширения C стандартной библиотеки, собранные разделом `*shared*` файла `Modules/Setup`.

  distutils, python-config и python-config.py были изменены.
- [bpo-36707](https://python-all.ru/3/whatsnew/changelog.html): `./configure --with-pymalloc` больше не добавляет флаг `m` в SOABI (sys.implementation.cache\_tag). Включение или отключение pymalloc не влияет на ABI.
- [bpo-36635](https://python-all.ru/3/whatsnew/changelog.html): Изменены макросы `PyAPI_FUNC(type)`, `PyAPI_DATA(type)` и `PyMODINIT_FUNC` из `pyport.h`, когда определён `Py_BUILD_CORE_MODULE`. Определение `Py_BUILD_CORE_MODULE` теперь должно использоваться для сборки расширения C в виде динамической библиотеки, обращающейся к внутренностям Python: экспортировать функцию `PyInit_xxx()` в экспортируемых DLL на Windows.
- [bpo-31904](https://python-all.ru/3/whatsnew/changelog.html): Не собирать расширение `_crypt` на VxWorks.
- [bpo-36618](https://python-all.ru/3/whatsnew/changelog.html): Добавлен `-fmax-type-align=8` в CFLAGS при обнаружении компилятора clang. Аллокатор памяти pymalloc выравнивает память по 8 байтам. На x86-64 clang по умолчанию ожидает выравнивание по 16 байтам и поэтому использует инструкцию MOVAPS, что может привести к segmentation fault. Указание clang, что Python ограничен выравниванием по 8 байтам, заставляет использовать инструкцию MOVUPS вместо неё: медленнее, но не вызывает SIGSEGV, если память не выравнена по 16 байтам. К сожалению, флаг должен быть добавлен в `CFLAGS`, а не только в `CFLAGS_NODIST`, поскольку сторонние расширения C могут иметь ту же проблему.
- [bpo-36605](https://python-all.ru/3/whatsnew/changelog.html): `make tags` и `make TAGS` теперь также разбирают `Modules/_io/*.c` и `Modules/_io/*.h`.
- [bpo-36465](https://python-all.ru/3/whatsnew/changelog.html): Релизные сборки и отладочные сборки теперь ABI-совместимы: определение макроса `Py_DEBUG` больше не подразумевает макрос `Py_TRACE_REFS`, который вносил единственную несовместимость ABI. Макрос `Py_TRACE_REFS`, добавляющий функцию [`sys.getobjects()`](https://python-all.ru/3/library/sys.html#sys.getobjects) и переменную окружения [`PYTHONDUMPREFS`](https://python-all.ru/3/using/cmdline.html#envvar-PYTHONDUMPREFS), теперь можно задать с помощью новой опции сборки `./configure --with-trace-refs`.
- [bpo-36577](https://python-all.ru/3/whatsnew/changelog.html): setup.py теперь снова корректно сообщает об отсутствующих заголовках и библиотеках OpenSSL.
- [bpo-36544](https://python-all.ru/3/whatsnew/changelog.html): Исправлена регрессия, внесённая при рефакторинге setup.py в [bpo-36146](https://python-all.ru/3/whatsnew/changelog.html).
- [bpo-36508](https://python-all.ru/3/whatsnew/changelog.html): `python-config --ldflags` больше не включает флаги переменной `LINKFORSHARED`. Переменная `LINKFORSHARED` должна использоваться только для сборки исполняемых файлов.
- [bpo-36503](https://python-all.ru/3/whatsnew/changelog.html): Удалены ссылки на “aix3” и “aix4”. Патч от M. Felt.

### Windows

- [bpo-35920](https://python-all.ru/3/whatsnew/changelog.html): Добавлены функции platform.win32\_edition() и platform.win32\_is\_iot(). Добавлена поддержка кросс-компиляции пакетов для Windows ARM32. Пропускаются тесты, которые не должны работать на Windows IoT Core ARM32.
- [bpo-36649](https://python-all.ru/3/whatsnew/changelog.html): Удалены завершающие пробелы в ключах реестра при установке через Магазин.
- [bpo-34144](https://python-all.ru/3/whatsnew/changelog.html): Исправлен activate.bat: теперь корректно обновляет кодовую страницу, если chcp.com возвращает точки в выводе. Патч от Lorenz Mende.
- [bpo-36509](https://python-all.ru/3/whatsnew/changelog.html): Добавлен макет preset-iot для контейнеров Windows IoT ARM. Этот макет не содержит компонентов пользовательского интерфейса, таких как tkinter или IDLE. Также он не содержит файлов для поддержки сборки на целевой платформе, так как сборки Windows ARM32 должны выполняться кросс-компиляцией с использованием MSVC.
- [bpo-35941](https://python-all.ru/3/whatsnew/changelog.html): Функция enum\_certificates модуля ssl теперь возвращает сертификаты из всех доступных хранилищ сертификатов Windows в одном запросе, а не только сертификаты из общесистемного хранилища сертификатов. Это включает сертификаты из следующих хранилищ сертификатов: локальная машина, локальная машина (предприятие), локальная машина (групповая политика), текущий пользователь, текущий пользователь (групповая политика), службы, пользователи. Функция ssl.enum\_crls() изменена аналогичным образом: теперь она возвращает все списки отзыва сертификатов из хранилищ списков отзыва сертификатов Windows.
- [bpo-36441](https://python-all.ru/3/whatsnew/changelog.html): Исправлено создание venv при установленных отладочных сборках.
- [bpo-36085](https://python-all.ru/3/whatsnew/changelog.html): Улучшено разрешение DLL в Windows за счёт использования безопасных путей поиска DLL и добавления [`os.add_dll_directory()`](https://python-all.ru/3/library/os.html#os.add_dll_directory).
- [bpo-36010](https://python-all.ru/3/whatsnew/changelog.html): Добавлен модуль стандартной библиотеки venv в дистрибутив nuget для Windows.
- [bpo-29515](https://python-all.ru/3/whatsnew/changelog.html): Добавлены следующие константы модуля socket в 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](https://python-all.ru/3/whatsnew/changelog.html): Добавлена текущая версия libffi в cpython-source-deps. Изменён модуль \_ctypes для использования текущей версии libffi в Windows.
- [bpo-34060](https://python-all.ru/3/whatsnew/changelog.html): Добавлена информация о загрузке системы при запуске набора тестов в Windows. Патч от Ammar Askar. Основано на предыдущей работе Jeremy Kloth.
- [bpo-31512](https://python-all.ru/3/whatsnew/changelog.html): С обновлением Windows 10 Creators Update пользователи без прав администратора теперь могут создавать символьные ссылки, если на компьютере включён режим разработчика.

### macOS

- [bpo-34602](https://python-all.ru/3/whatsnew/changelog.html): Устранены сбои при установке ограничения стека macOS с помощью resource.setrlimit. Отменяется более раннее исправление для [bpo-18075](https://python-all.ru/3/whatsnew/changelog.html), которое принудительно задавало нестандартный размер стека при сборке исполняемого файла интерпретатора на macOS.

### IDLE

- [bpo-36429](https://python-all.ru/3/whatsnew/changelog.html): Исправлен запуск IDLE с pyshell. Добавлен псевдоним idlelib.pyshell в начале; удалён псевдоним pyshell в конце. Удалена устаревшая команда \_\_name\_\_==’\_\_main\_\_’.

### Tools/Demos

- [bpo-14546](https://python-all.ru/3/whatsnew/changelog.html): Исправлена обработка аргументов в Tools/scripts/lll.py.

### C API

- [bpo-36763](https://python-all.ru/3/whatsnew/changelog.html): Исправлена утечка памяти в `Py_SetStandardStreamEncoding()`: освобождается память, если функция вызывается дважды.
- [bpo-36641](https://python-all.ru/3/whatsnew/changelog.html): [PyDoc\_VAR](https://python-all.ru/3/c-api/intro.html#c.PyDoc_VAR)(name) и [PyDoc\_STRVAR](https://python-all.ru/3/c-api/intro.html#c.PyDoc_STRVAR)(name, str) теперь создают `static const char name[]` вместо `static char name[]`. Патч от Inada Naoki.
- [bpo-36389](https://python-all.ru/3/whatsnew/changelog.html): Изменены значения внутренних констант `CLEANBYTE`, `DEADDYTE` и `FORBIDDENBYTE`, используемых отладочными хуками в распределителях памяти Python (функция [`PyMem_SetupDebugHooks()`](https://python-all.ru/3/c-api/memory.html#c.PyMem_SetupDebugHooks)). Байтовые последовательности `0xCB`, `0xDB` и `0xFB` заменены на `0xCD`, `0xDD` и `0xFD`, чтобы использовать те же значения, что и отладочные `malloc()` и `free()` CRT Windows.
- [bpo-36443](https://python-all.ru/3/whatsnew/changelog.html): Начиная с Python 3.7.0, вызов [`Py_DecodeLocale()`](https://python-all.ru/3/c-api/sys.html#c.Py_DecodeLocale) перед [`Py_Initialize()`](https://python-all.ru/3/c-api/interp-lifecycle.html#c.Py_Initialize) приводит к кракозябрам (mojibake), если принудительно изменена локаль `LC_CTYPE` и/или включён режим UTF-8 в конфигурации пользователя. Принудительное изменение LC\_CTYPE и режим UTF-8 теперь по умолчанию отключены для исправления проблемы с кракозябрами. Теперь их нужно включать явно (opt-in) с помощью нового API `_Py_PreInitialize()` с параметром `_PyPreConfig`.
- [bpo-36025](https://python-all.ru/3/whatsnew/changelog.html): Исправлено случайное изменение в datetime C API, при котором аргументы функции [`PyDate_FromTimestamp()`](https://python-all.ru/3/c-api/datetime.html#c.PyDate_FromTimestamp) ошибочно интерпретировались как одна временная метка, а не как кортеж аргументов, что приводило к тому, что существующий код начинал выбрасывать [`TypeError`](https://python-all.ru/3/library/exceptions.html#TypeError). Это обратно несовместимое изменение присутствовало только в альфа-выпусках Python 3.8. Патч от Paul Ganssle.
- [bpo-35810](https://python-all.ru/3/whatsnew/changelog.html): Изменено `PyObject_Init` для корректного увеличения счётчика ссылок объектов типов, размещённых в куче. Также исправлены счётчики ссылок размещённых в куче типов, которые либо делали это вручную, либо не уменьшали счётчик ссылок типа в tp\_dealloc.

## Python 3.8.0 alpha 3

*Дата выпуска: 2019-03-25*

### Безопасность

- [bpo-36216](https://python-all.ru/3/whatsnew/changelog.html): Изменяет urlsplit() так, что при наличии в URL символов, которые при IDNA-кодировании (нормализация NFKC) разлагаются на символы, влияющие на разбор URL, возникает ValueError.
- [bpo-35121](https://python-all.ru/3/whatsnew/changelog.html): Не отправлять куки домена A без атрибута Domain в домен B, когда домен A является суффиксом домена B, при использовании cookiejar с политикой [`http.cookiejar.DefaultCookiePolicy`](https://python-all.ru/3/library/http.cookiejar.html#http.cookiejar.DefaultCookiePolicy). Исправление от Karthikeyan Singaravelan.

### Ядро и встроенные функции

- [bpo-36421](https://python-all.ru/3/whatsnew/changelog.html): Исправлена возможная двойная декреф в `PyCArrayType_new()` из \_ctypes.c.
- [bpo-36412](https://python-all.ru/3/whatsnew/changelog.html): Исправлена возможная аварийная остановка при создании нового словаря.
- [bpo-36398](https://python-all.ru/3/whatsnew/changelog.html): Исправлена возможная аварийная остановка в `structseq_repr()`.
- [bpo-36256](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка в parsermodule при разборе состояния в ДКА, имеющего две или более дуги с метками одного типа. Исправление от Pablo Galindo.
- [bpo-36365](https://python-all.ru/3/whatsnew/changelog.html): repr(structseq) больше не ограничено 512 байтами.
- [bpo-36374](https://python-all.ru/3/whatsnew/changelog.html): Исправлена возможная ошибка разыменования нулевого указателя в `merge_consts_recursive()`. Исправление от Zackery Spytz.
- [bpo-36236](https://python-all.ru/3/whatsnew/changelog.html): При инициализации Python текущий каталог больше не добавляется в начало [`sys.path`](https://python-all.ru/3/library/sys.html#sys.path), если он был удалён.
- [bpo-36352](https://python-all.ru/3/whatsnew/changelog.html): Инициализация Python теперь завершается с ошибкой, а не молча обрезает пути, если путь слишком длинный.
- [bpo-36301](https://python-all.ru/3/whatsnew/changelog.html): Инициализация Python теперь завершается ошибкой, если при запуске не удаётся декодировать конфигурационный файл `pybuilddir.txt`.
- [bpo-36333](https://python-all.ru/3/whatsnew/changelog.html): Исправлена утечка в \_PyRuntimeState\_Fini. Предоставлено Stéphane Wirtel.
- [bpo-36332](https://python-all.ru/3/whatsnew/changelog.html): Встроенная функция [`compile()`](https://python-all.ru/3/library/functions.html#compile) теперь может обрабатывать объекты AST, содержащие выражения присваивания. Исправление от Pablo Galindo.
- [bpo-36282](https://python-all.ru/3/whatsnew/changelog.html): Улучшено сообщение об ошибке при слишком большом количестве позиционных аргументов в некоторых встроенных функциях.
- [bpo-30040](https://python-all.ru/3/whatsnew/changelog.html): Новый пустой словарь теперь использует меньше памяти. Ранее он занимал больше памяти, чем пустой словарь, созданный с помощью `dict.clear()`. Создание и удаление пустого словаря выполняется примерно в 2 раза быстрее. Исправление от Inada Naoki.
- [bpo-36262](https://python-all.ru/3/whatsnew/changelog.html): Исправлена маловероятная утечка памяти при преобразовании строки в число с плавающей запятой в функции `_Py_dg_strtod()`, используемой в `float(str)`, `complex(str)`, [`pickle.load()`](https://python-all.ru/3/library/pickle.html#pickle.load), [`marshal.load()`](https://python-all.ru/3/library/marshal.html#marshal.load) и т. д.
- [bpo-36252](https://python-all.ru/3/whatsnew/changelog.html): Обновлены базы данных Unicode до версии 12.0.0.
- [bpo-36218](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка сегментации, возникающая при сортировке списка разнородных значений. Исправление предоставлено Rémi Lapeyre и Elliot Gorokhovsky.
- [bpo-36188](https://python-all.ru/3/whatsnew/changelog.html): Убраны остатки обработки несвязанных методов Python 2 в объектах методов и документации. Исправление от Martijn Pieters.
- [bpo-36124](https://python-all.ru/3/whatsnew/changelog.html): Добавлен новый словарь, специфичный для интерпретатора, и предоставлен доступ к нему в C-API через PyInterpreterState\_GetDict(). Это аналогично PyThreadState\_GetDict(). Однако модули расширения должны продолжать использовать PyModule\_GetState() для своего внутреннего состояния, специфичного для интерпретатора.
- [bpo-35975](https://python-all.ru/3/whatsnew/changelog.html): Добавлен флаг `feature_version` в `ast.parse()` (документировано) и `compile()` (скрыто), позволяющий настраивать парсер для поддержки более старых версий грамматики. В частности, если `feature_version` равно 5 или 6, восстанавливаются хаки для ключевых слов `async` и `await` из PEP 492. (Для 7 и выше эти слова безусловно обрабатываются как ключевые, но они по-прежнему остаются специальными токенами, а не токенами `NAME`, которые распознаёт драйвер парсера.)
- [bpo-31904](https://python-all.ru/3/whatsnew/changelog.html): Использовать UTF-8 в качестве системной кодировки на VxWorks.
- [bpo-36048](https://python-all.ru/3/whatsnew/changelog.html): Специальный метод [`__index__()`](https://python-all.ru/3/reference/datamodel.html#object.__index__) будет использоваться вместо [`__int__()`](https://python-all.ru/3/reference/datamodel.html#object.__int__) для неявного преобразования чисел Python в целые числа C. Использование метода `__int__()` в неявных преобразованиях признано устаревшим.
- [bpo-35808](https://python-all.ru/3/whatsnew/changelog.html): Прекращено использование pgen; для генерации парсера теперь используется модифицированная версия pgen2. Исправление от Pablo Galindo.

### Библиотека

- [bpo-36401](https://python-all.ru/3/whatsnew/changelog.html): Документация классов, создаваемая pydoc, теперь содержит отдельный раздел для свойств, доступных только для чтения.
- [bpo-36320](https://python-all.ru/3/whatsnew/changelog.html): Класс typing.NamedTuple() объявил устаревшим атрибут \_field\_types в пользу атрибута \_\_annotations\_\_, который содержит ту же информацию. Кроме того, оба атрибута были преобразованы из OrderedDict в обычный dict.
- [bpo-34745](https://python-all.ru/3/whatsnew/changelog.html): Исправлены [`asyncio`](https://python-all.ru/3/library/asyncio.html#module-asyncio) проблемы с памятью в ssl, вызванные циклическими ссылками.
- [bpo-36324](https://python-all.ru/3/whatsnew/changelog.html): Добавлен метод в statistics.NormalDist для вычисления обратной кумулятивной функции нормального распределения.
- [bpo-36321](https://python-all.ru/3/whatsnew/changelog.html): collections.namedtuple() содержал опечатку в имени атрибута. Для согласованности с typing.NamedTuple имя атрибута должно было быть «\_field\_defaults» вместо «\_fields\_defaults». Для обратной совместимости теперь создаются оба варианта. Вариант с опечаткой может быть удалён в будущем.
- [bpo-36297](https://python-all.ru/3/whatsnew/changelog.html): Кодек «unicode\_internal» удалён. Он был помечен как устаревший начиная с Python 3.3. Патч от Inada Naoki.
- [bpo-36298](https://python-all.ru/3/whatsnew/changelog.html): В pyclbr теперь вызывается ModuleNotFoundError, если модуль не найден. Спасибо «mental» за сообщение об ошибке.
- [bpo-36268](https://python-all.ru/3/whatsnew/changelog.html): Формат по умолчанию для записи tar-архивов с помощью [`tarfile`](https://python-all.ru/3/library/tarfile.html#module-tarfile) изменён на современный стандарт POSIX.1-2001 pax вместо вендорского GNU. Сообщение от C.A.M. Gerlach.
- [bpo-36285](https://python-all.ru/3/whatsnew/changelog.html): Исправлены целочисленные переполнения в модуле array. Патч от Stephan Hohe.
- [bpo-31904](https://python-all.ru/3/whatsnew/changelog.html): Добавлена поддержка модулем \_signal для VxWorks.
- [bpo-36272](https://python-all.ru/3/whatsnew/changelog.html): [`logging`](https://python-all.ru/3/library/logging.html#module-logging) больше не игнорирует молча RecursionError. Патч предоставлен Rémi Lapeyre.
- [bpo-36280](https://python-all.ru/3/whatsnew/changelog.html): Добавлено поле kind в ast.Constant. Оно равно 'u', если литерал имеет префикс 'u' (то есть литерал Unicode в стиле Python 2), иначе None.
- [bpo-35931](https://python-all.ru/3/whatsnew/changelog.html): Команда [`pdb`](https://python-all.ru/3/library/pdb.html#module-pdb) `debug` теперь корректно обрабатывает все исключения.
- [bpo-36251](https://python-all.ru/3/whatsnew/changelog.html): Исправлены строки форматирования, используемые для представлений stderrprinter и re.Match. Патч от Stephan Hohe.
- [bpo-36235](https://python-all.ru/3/whatsnew/changelog.html): Исправлена `CFLAGS` в `customize_compiler()` модуля `distutils.sysconfig`: если определена переменная окружения `CFLAGS`, переменная `CFLAGS` больше не переопределяется переменной `OPT`. Начальный патч написал David Malcolm.
- [bpo-35807](https://python-all.ru/3/whatsnew/changelog.html): Обновлён ensurepip для установки pip 19.0.3 и setuptools 40.8.0.
- [bpo-36139](https://python-all.ru/3/whatsnew/changelog.html): Освобождение GIL при закрытии объектов [`mmap`](https://python-all.ru/3/library/mmap.html#mmap.mmap).
- [bpo-36179](https://python-all.ru/3/whatsnew/changelog.html): Исправлены две маловероятные утечки ссылок в \_hashopenssl. Утечки происходят только в ситуациях нехватки памяти.
- [bpo-36169](https://python-all.ru/3/whatsnew/changelog.html): Добавлен метод overlap() в statistics.NormalDist. Вычисляет коэффициент перекрытия для двух нормальных распределений.
- [bpo-36103](https://python-all.ru/3/whatsnew/changelog.html): Размер буфера по умолчанию, используемый `shutil.copyfileobj()`, изменён с 16 КБ на 64 КБ на платформах, отличных от Windows, для снижения накладных расходов на системные вызовы. Сообщение от Inada Naoki.
- [bpo-36130](https://python-all.ru/3/whatsnew/changelog.html): Исправлена `pdb` с `skip=...` при входе во фрейм без глобальной переменной `__name__`. Патч от Anthony Sottile.
- [bpo-35652](https://python-all.ru/3/whatsnew/changelog.html): shutil.copytree(copy\_function=…) ошибочно передавал DirEntry вместо строки пути.
- [bpo-35178](https://python-all.ru/3/whatsnew/changelog.html): Обеспечено, чтобы пользовательская функция [`warnings.formatwarning()`](https://python-all.ru/3/library/warnings.html#warnings.formatwarning) могла получать `line` в качестве позиционного аргумента. Основано на патче Tashrif Billah.
- [bpo-36106](https://python-all.ru/3/whatsnew/changelog.html): Устранено потенциальное совпадение имён с sinpi() из libm. Патч от Dmitrii Pasechnik.
- [bpo-36091](https://python-all.ru/3/whatsnew/changelog.html): Очистка ссылок на асинхронный генератор в Lib/types. Патч от Henry Chen.
- [bpo-36043](https://python-all.ru/3/whatsnew/changelog.html): `FileCookieJar` supports [path-like object](https://python-all.ru/3/glossary.html#term-path-like-object). Contributed by Stéphane Wirtel
- [bpo-35899](https://python-all.ru/3/whatsnew/changelog.html): Enum исправлен для корректной обработки пустых строк и строк с нелатинскими символами (например, 'α', 'א') без аварийного завершения. Оригинальный патч предоставлен Maxwell. Помощь: Stéphane Wirtel.
- [bpo-21269](https://python-all.ru/3/whatsnew/changelog.html): Добавлены свойства `args` и `kwargs` к объектам вызовов mock. Сообщение от Kumar Akshay.
- [bpo-30670](https://python-all.ru/3/whatsnew/changelog.html): В `pprint.pp` добавлена возможность красивой печати объектов, ключи словарей сортируются по порядку вставки по умолчанию. Параметр *sort\_dicts* добавлен в `pprint.pprint`, `pprint.pformat` и `pprint.PrettyPrinter`. Сообщение от Rémi Lapeyre.
- [bpo-35843](https://python-all.ru/3/whatsnew/changelog.html): Реализован `__getitem__` для `_NamespacePath`. Патч от Anthony Sottile.
- [bpo-35802](https://python-all.ru/3/whatsnew/changelog.html): Очищен код, проверявший наличие `os.stat` / `os.lstat` / `os.chmod`, которые присутствуют всегда. Патч от Anthony Sottile.
- [bpo-35715](https://python-all.ru/3/whatsnew/changelog.html): Освобождается возвращаемое значение ProcessPoolExecutor.\_process\_worker после того, как оно больше не нужно, для освобождения памяти.
- [bpo-35493](https://python-all.ru/3/whatsnew/changelog.html): Используется [`multiprocessing.connection.wait()`](https://python-all.ru/3/library/multiprocessing.html#multiprocessing.connection.wait) вместо опроса каждые 0,2 секунды для обновлений рабочих процессов в `multiprocessing.Pool`. Патч от Pablo Galindo.
- [bpo-35661](https://python-all.ru/3/whatsnew/changelog.html): Приглашение venv сохраняется в pyvenv.cfg.
- [bpo-35121](https://python-all.ru/3/whatsnew/changelog.html): Куки не устанавливаются для запроса, когда путь запроса является префиксом атрибута пути куки, но не заканчивается символом «/». Патч от Karthikeyan Singaravelan.
- [bpo-21478](https://python-all.ru/3/whatsnew/changelog.html): Вызовы дочерней функции, созданной с помощью [`unittest.mock.create_autospec()`](https://python-all.ru/3/library/unittest.mock.html#unittest.mock.create_autospec), должны доходить до родительской. Патч от Картикеяна Сингаравелана.
- [bpo-35198](https://python-all.ru/3/whatsnew/changelog.html): Исправление компиляции расширения C++ на AIX.

### Документация

- [bpo-36329](https://python-all.ru/3/whatsnew/changelog.html): Объявление пути к двоичному файлу Python для использования `Tools/scripts/serve.py` при выполнении `make -C Doc/ serve`. Автор: Стефан Виртель.
- [bpo-36138](https://python-all.ru/3/whatsnew/changelog.html): Улучшена документация по преобразованию datetime.timedelta в скаляры.
- [bpo-21314](https://python-all.ru/3/whatsnew/changelog.html): Добавлен новый раздел в «Основные возможности языка» в FAQ по программированию, в котором объясняется использование косой черты (/) в сигнатуре функции. Патч от Лисандра Николау.

### Тесты

- [bpo-36234](https://python-all.ru/3/whatsnew/changelog.html): test\_posix.PosixUidGidTests: добавлены тесты для недопустимых типов uid/gid (str). Первоначальный патч написан Дэвидом Малкольмом.
- [bpo-29571](https://python-all.ru/3/whatsnew/changelog.html): Исправление `test_re.test_locale_flag()`: используйте `locale.getpreferredencoding()` вместо `locale.getlocale()` для получения кодировки локали. В некоторых локалях `locale.getlocale()` возвращает неверную кодировку.
- [bpo-36123](https://python-all.ru/3/whatsnew/changelog.html): Исправлено состояние гонки в test\_socket.

### Сборка

- [bpo-36356](https://python-all.ru/3/whatsnew/changelog.html): Исправлены утечки, которые приводили к сбою сборки при настройке с санитайзером адресов.
- [bpo-36146](https://python-all.ru/3/whatsnew/changelog.html): Добавлена константа `TEST_EXTENSIONS` в `setup.py`, чтобы разрешить не собирать тестовые расширения, такие как `_testcapi`.
- [bpo-36146](https://python-all.ru/3/whatsnew/changelog.html): Исправлен setup.py на macOS: добавлять `/usr/include/ffi` только в include-каталоги \_ctypes, а не для всех расширений.
- [bpo-31904](https://python-all.ru/3/whatsnew/changelog.html): Включена возможность кросс-сборки для ОСРВ VxWorks.

### Windows

- [bpo-36312](https://python-all.ru/3/whatsnew/changelog.html): Исправлены декодеры для следующих кодовых страниц: 50220, 50221, 50222, 50225, 50227, 50229, 57002–57011, 65000 и 42.
- [bpo-36264](https://python-all.ru/3/whatsnew/changelog.html): Не учитывать POSIX `HOME` в `os.path.expanduser` в Windows. Патч от Энтони Соттила.
- [bpo-24643](https://python-all.ru/3/whatsnew/changelog.html): Исправление коллизий имён из-за `#define timezone _timezone` в PC/pyconfig.h.

### IDLE

- [bpo-36405](https://python-all.ru/3/whatsnew/changelog.html): Использование распаковки словарей в idlelib.
- [bpo-36396](https://python-all.ru/3/whatsnew/changelog.html): Удалён параметр fgBg у idlelib.config.GetHighlight(). Этот параметр использовался всего дважды и менял тип возвращаемого значения.
- [bpo-36176](https://python-all.ru/3/whatsnew/changelog.html): Исправлены цвета всплывающих подсказок автодополнения и вызовов в IDLE. Предотвращены конфликты с тёмными темами Linux (а также немного затемнён фон подсказок вызовов).
- [bpo-23205](https://python-all.ru/3/whatsnew/changelog.html): Для модуля grep добавлены тесты для findfiles, выполнено преобразование findfiles в функцию уровня модуля и переработка findfiles для использования os.walk.
- [bpo-23216](https://python-all.ru/3/whatsnew/changelog.html): Добавлены строки документации в модули поиска IDLE.
- [bpo-36152](https://python-all.ru/3/whatsnew/changelog.html): Удалены colorizer.ColorDelegator.close\_when\_done и соответствующий аргумент .close(). В IDLE оба всегда были None или False с 2007 года.
- [bpo-32129](https://python-all.ru/3/whatsnew/changelog.html): Устранение размытости значка приложения IDLE в macOS с Tk 8.6. Патч от Кевина Уолцера.
- [bpo-36096](https://python-all.ru/3/whatsnew/changelog.html): Переработка переменных класса в переменные экземпляра в colorizer.
- [bpo-30348](https://python-all.ru/3/whatsnew/changelog.html): Увеличение покрытия тестами idlelib.autocomplete на 30%. Патч от Луи Лу.

### Инструменты/Демо

- [bpo-35132](https://python-all.ru/3/whatsnew/changelog.html): Исправлены команды py-list и py-bt в python-gdb.py в gdb7.
- [bpo-32217](https://python-all.ru/3/whatsnew/changelog.html): Исправление сценария заморозки в Windows.

### C API

- [bpo-36381](https://python-all.ru/3/whatsnew/changelog.html): Возбуждается `DeprecationWarning` при использовании форматов '#' для построения или разбора значений без `PY_SSIZE_T_CLEAN`.
- [bpo-36142](https://python-all.ru/3/whatsnew/changelog.html): Весь заголовочный файл coreconfig.h теперь исключён из Py\_LIMITED\_API. Определения функций перемещены в новый внутренний заголовочный файл pycore\_coreconfig.h.

## Python 3.8.0 alpha 2

*Дата выпуска: 2019-02-25*

### Ядро и встроенные объекты

- [bpo-36052](https://python-all.ru/3/whatsnew/changelog.html): Возбуждается [`SyntaxError`](https://python-all.ru/3/library/exceptions.html#SyntaxError) при присваивании значения `__debug__` с помощью оператора присваивания. Авторы: Stéphane Wirtel и Pablo Galindo.
- [bpo-36012](https://python-all.ru/3/whatsnew/changelog.html): Удвоена скорость записи переменных класса. При обновлении атрибута, не являющегося dunder, происходил ненужный вызов update slots.
- [bpo-35942](https://python-all.ru/3/whatsnew/changelog.html): Сообщение об ошибке, выдаваемое при возврате недопустимых типов из `__fspath__` в интерфейсах, допускающих передачу объектов [`PathLike`](https://python-all.ru/3/library/os.html#os.PathLike), улучшено и теперь объясняет источник ошибки.
- [bpo-36016](https://python-all.ru/3/whatsnew/changelog.html): `gc.get_objects` теперь может получать необязательный параметр, указывающий поколение, из которого нужно получить объекты. Патч от Pablo Galindo.
- [bpo-1054041](https://python-all.ru/3/whatsnew/changelog.html): Когда главный интерпретатор завершается из-за необработанного KeyboardInterrupt, процесс теперь завершается способом, позволяющим родительскому процессу обнаружить, что SIGINT или ^C прервали процесс. Это позволяет оболочкам и пакетным сценариям понять, что пользователь попросил их остановиться.
- [bpo-35992](https://python-all.ru/3/whatsnew/changelog.html): Исправлена проблема, когда `__class_getitem__()` не вызывался для класса с пользовательским неиндексируемым метаклассом.
- [bpo-35993](https://python-all.ru/3/whatsnew/changelog.html): Исправлен сбой при fork с использованием под-интерпретаторов. Автор: Stéphane Wirtel
- [bpo-35991](https://python-all.ru/3/whatsnew/changelog.html): Исправлена потенциальная двойная очистка памяти в Modules/\_randommodule.c.
- [bpo-35961](https://python-all.ru/3/whatsnew/changelog.html): Исправлен сбой в slice\_richcompare(): теперь используются сильные ссылки (strong references) вместо похищенных ссылок (stolen references) для двух временных внутренних кортежей.
- [bpo-35911](https://python-all.ru/3/whatsnew/changelog.html): Добавлен метод `cell.__new__` для создания объектов cell, а тип `cell` теперь доступен в `Lib/types.py` под именем CellType. Патч от Pierre Glaser.
- [bpo-12822](https://python-all.ru/3/whatsnew/changelog.html): Использовать монотонные часы для `pthread_cond_timedwait`, когда доступны `pthread_condattr_setclock` и `CLOCK_MONOTONIC`.
- [bpo-15248](https://python-all.ru/3/whatsnew/changelog.html): Компилятор теперь выводит синтаксические предупреждения в случае, когда запятая, вероятно, пропущена перед кортежем или списком.
- [bpo-35886](https://python-all.ru/3/whatsnew/changelog.html): Реализация PyInterpreterState перемещена во внутренние заголовочные файлы (защищённые Py\_BUILD\_CORE).
- [bpo-31506](https://python-all.ru/3/whatsnew/changelog.html): Уточнены сообщения об ошибках, когда `object.__new__` и `object.__init__` получают более одного аргумента. Автор: Sanyam Khurana.
- [bpo-35724](https://python-all.ru/3/whatsnew/changelog.html): Обработка сигналов теперь гарантированно происходит относительно главного интерпретатора.
- [bpo-33608](https://python-all.ru/3/whatsnew/changelog.html): Добавлена новая внутренняя функция \_Py\_AddPendingCall(), которая работает относительно указанного интерпретатора. Это позволяет использовать существующую реализацию для запроса другому интерпретатору выполнить работу, которая не может быть выполнена в текущем интерпретаторе, например, уменьшить счётчик ссылок объекта, принадлежащего другому интерпретатору. Существующая Py\_AddPendingCall() работает только относительно главного интерпретатора.
- [bpo-33989](https://python-all.ru/3/whatsnew/changelog.html): Исправлен возможный сбой в [`list.sort()`](https://python-all.ru/3/library/stdtypes.html#list.sort) при сортировке объектов с `ob_type->tp_richcompare == NULL`. Патч от Zackery Spytz.

### Библиотека

- [bpo-35512](https://python-all.ru/3/whatsnew/changelog.html): [`unittest.mock.patch.dict()`](https://python-all.ru/3/library/unittest.mock.html#unittest.mock.patch.dict), используемый как декоратор со строковой целью, разрешает цель во время вызова функции, а не во время создания декоратора. Патч от Karthikeyan Singaravelan.
- [bpo-36018](https://python-all.ru/3/whatsnew/changelog.html): Добавлен statistics.NormalDist – инструмент для создания и манипуляции нормальными распределениями случайных величин. Предоставляет составной класс, который трактует среднее и стандартное отклонение измерительных данных как единую сущность.
- [bpo-35904](https://python-all.ru/3/whatsnew/changelog.html): Добавлена statistics.fmean() – более быстрый вариант функции mean() для чисел с плавающей точкой.
- [bpo-35918](https://python-all.ru/3/whatsnew/changelog.html): Удалён сломанный метод `has_key` из multiprocessing.managers.SyncManager.dict. Автор: Rémi Lapeyre.
- [bpo-18283](https://python-all.ru/3/whatsnew/changelog.html): Добавлена поддержка bytes для [`shutil.which()`](https://python-all.ru/3/library/shutil.html#shutil.which).
- [bpo-35960](https://python-all.ru/3/whatsnew/changelog.html): Исправлено [`dataclasses.field()`](https://python-all.ru/3/library/dataclasses.html#dataclasses.field), отбрасывающее пустые объекты отображения, переданные в качестве метаданных.
- [bpo-35500](https://python-all.ru/3/whatsnew/changelog.html): Ожидаемые и фактические параметры вызова теперь выводятся на отдельных строках в сообщениях об ошибках утверждений [`unittest.mock.Mock.assert_called_with()`](https://python-all.ru/3/library/unittest.mock.html#unittest.mock.Mock.assert_called_with). Автор: Susan Su.
- [bpo-35931](https://python-all.ru/3/whatsnew/changelog.html): Команда [`pdb`](https://python-all.ru/3/library/pdb.html#module-pdb) `debug` теперь корректно обрабатывает синтаксические ошибки.
- [bpo-24209](https://python-all.ru/3/whatsnew/changelog.html): В скрипте http.server используется getaddrinfo для привязки к предпочтительному адресу на основе параметра bind. Теперь привязка по умолчанию или привязка к имени может привести к привязке к IPv6 или двойному стеку в зависимости от окружения.
- [bpo-35321](https://python-all.ru/3/whatsnew/changelog.html): Установить `__spec__.origin` объекта `_frozen_importlib` в frozen, чтобы это соответствовало поведению `_frozen_importlib_external`. Исправление от Нины Захаренко.
- [bpo-35378](https://python-all.ru/3/whatsnew/changelog.html): Исправлена проблема со ссылками внутри `multiprocessing.Pool`, которая приводила к тому, что пул оставался активным после удаления без явного закрытия или завершения. Добавлена новая сильная ссылка на итераторы пула, чтобы время жизни пула было привязано к времени жизни его итераторов – пул не уничтожается, пока хотя бы один итератор ещё жив.
- [bpo-34294](https://python-all.ru/3/whatsnew/changelog.html): Модуль re: исправлена некорректная работа захватывающих групп в редких случаях. Функции [`re.search()`](https://python-all.ru/3/library/re.html#re.search), [`re.findall()`](https://python-all.ru/3/library/re.html#re.findall), [`re.sub()`](https://python-all.ru/3/library/re.html#re.sub) и другие, сканирующие строку в поиске совпадения, теперь сбрасывают захватывающие группы между попытками. Исправление от Ma Lin.
- [bpo-35615](https://python-all.ru/3/whatsnew/changelog.html): [`weakref`](https://python-all.ru/3/library/weakref.html#module-weakref): Исправлена ошибка RuntimeError при копировании WeakKeyDictionary или WeakValueDictionary, возникавшая из-за исчезновения некоторых ключей или значений во время итерации.
- [bpo-35606](https://python-all.ru/3/whatsnew/changelog.html): Добавлена функция [`math.prod()`](https://python-all.ru/3/library/math.html#math.prod) – аналог [`sum()`](https://python-all.ru/3/library/functions.html#sum), которая возвращает произведение начального значения (по умолчанию: 1) и элементов переданной последовательности чисел. Исправление от Pablo Galindo.
- [bpo-32417](https://python-all.ru/3/whatsnew/changelog.html): Выполнение арифметических операций между подклассами [`datetime.datetime`](https://python-all.ru/3/library/datetime.html#datetime.datetime) и [`datetime.timedelta`](https://python-all.ru/3/library/datetime.html#datetime.timedelta) теперь возвращает объект того же типа, что и подкласс `datetime.datetime`. В результате вызовы [`datetime.datetime.astimezone()`](https://python-all.ru/3/library/datetime.html#datetime.datetime.astimezone) и альтернативных конструкторов, таких как [`datetime.datetime.now()`](https://python-all.ru/3/library/datetime.html#datetime.datetime.now) и `datetime.fromtimestamp()`, с аргументом `tz` теперь *также* сохраняют свой подкласс.
- [bpo-35153](https://python-all.ru/3/whatsnew/changelog.html): Добавлен необязательный именованный параметр *headers* в функции [`xmlrpc.client.ServerProxy`](https://python-all.ru/3/library/xmlrpc.client.html#xmlrpc.client.ServerProxy), `xmlrpc.client.Transport` и `xmlrpc.client.SafeTransport`. Исправление от Cédric Krier.
- [bpo-34572](https://python-all.ru/3/whatsnew/changelog.html): Исправлена C-реализация pickle.loads для использования механизмов блокировок importlib, что позволяет избежать использования частично загруженных модулей. Исправление от Tim Burgess.

### Документация

- [bpo-36083](https://python-all.ru/3/whatsnew/changelog.html): Исправлено форматирование параметров –check-hash-based-pycs в разделе Synopsis справочной страницы.
- [bpo-36007](https://python-all.ru/3/whatsnew/changelog.html): Минимальная версия Sphinx увеличена до 1.8. Исправление от Anthony Sottile.
- [bpo-22062](https://python-all.ru/3/whatsnew/changelog.html): Обновлена документация и строки документации для pathlib. Исходное исправление от Mike Short.

### Тесты

- [bpo-27313](https://python-all.ru/3/whatsnew/changelog.html): Устранена ошибка test\_ttk\_guionly ComboboxTest при использовании macOS Cocoa Tk.
- [bpo-36019](https://python-all.ru/3/whatsnew/changelog.html): Добавлен test.support.TEST\_HTTP\_URL, и все ссылки на [http://www.example.com](https://python-all.ru/3/whatsnew/changelog.html) заменены этой новой константой. Автор: Stéphane Wirtel.
- [bpo-36037](https://python-all.ru/3/whatsnew/changelog.html): Исправлен test\_ssl для строгих конфигураций OpenSSL, таких как строгая криптополитика RHEL8. При необходимости используется более старая версия TLS в качестве минимальной версии TLS контекста SSL сервера, чтобы тестировать версию TLS ниже минимальной по умолчанию.
- [bpo-35798](https://python-all.ru/3/whatsnew/changelog.html): Добавлен `test.support.check_syntax_warning()`.
- [bpo-35505](https://python-all.ru/3/whatsnew/changelog.html): Сделать test\_imap4\_host\_default\_value независимым от того, запущен ли локальный IMAP-сервер.
- [bpo-35917](https://python-all.ru/3/whatsnew/changelog.html): multiprocessing: добавлены модульные тесты для классов SyncManager и SharedMemoryManager, а также всех разделяемых типов, которые они должны поддерживать. (исправление от Giampaolo Rodola)
- [bpo-35704](https://python-all.ru/3/whatsnew/changelog.html): Пропустить `test_shutil.test_unpack_archive_xztar`, чтобы предотвратить MemoryError на 32-битной AIX, когда значение MAXDATA меньше 0x20000000.

  Исправление от Michael Felt (aixtools)
- [bpo-34720](https://python-all.ru/3/whatsnew/changelog.html): Добавлено утверждение m\_state != NULL, имитирующее функции обхода GC, которые некорректно обрабатывают создание модуля, если состояние модуля ещё не создано.

### Windows

- [bpo-35976](https://python-all.ru/3/whatsnew/changelog.html): Добавлена поддержка сборки для ARM в файлы сборки Windows в PCBuild.
- [bpo-35692](https://python-all.ru/3/whatsnew/changelog.html): `pathlib` больше не вызывает исключение при проверке существования файлов и каталогов на дисках, которые не готовы.
- [bpo-35872](https://python-all.ru/3/whatsnew/changelog.html): При вызове venv в виртуальном окружении теперь используется базовый исполняемый файл Python.
- [bpo-35873](https://python-all.ru/3/whatsnew/changelog.html): Предотвращает наследование путей venv дочерними процессами.
- [bpo-35299](https://python-all.ru/3/whatsnew/changelog.html): Исправлено обнаружение исходного каталога в sysconfig и обработка pyconfig.h в distutils во время PGO-профилирования.

### IDLE

- [bpo-24310](https://python-all.ru/3/whatsnew/changelog.html): IDLE – документирование образца вкладки шрифтов в диалоге настроек.
- [bpo-35833](https://python-all.ru/3/whatsnew/changelog.html): Пересмотрена документация IDLE об управляющих кодах, отправляемых в Shell. Добавлен блок с примером кода.
- [bpo-35689](https://python-all.ru/3/whatsnew/changelog.html): Добавлены докстринги и юнит-тесты для colorizer.py.

## Python 3.8.0 alpha 1

*Дата выпуска: 2019-02-03*

### Безопасность

- [bpo-35746](https://python-all.ru/3/whatsnew/changelog.html): [**CVE 2019-5010**](https://python-all.ru/3/whatsnew/changelog.html): Исправлено разыменование нулевого указателя в модуле ssl. Парсер сертификатов некорректно обрабатывал точки распространения CRL с пустыми DP или URI. Вредоносный или ошибочный сертификат мог привести к segfault. Уязвимость (TALOS-2018-0758) сообщена Колином Ридом и Николасом Эде из Cisco.
- [bpo-34812](https://python-all.ru/3/whatsnew/changelog.html): Теперь опция командной строки [`-I`](https://python-all.ru/3/using/cmdline.html#cmdoption-I) (запуск Python в изолированном режиме) также копируется модулями [`multiprocessing`](https://python-all.ru/3/library/multiprocessing.html#module-multiprocessing) и `distutils` при порождении дочерних процессов. Ранее копировались только опции [`-E`](https://python-all.ru/3/using/cmdline.html#cmdoption-E) и [`-s`](https://python-all.ru/3/using/cmdline.html#cmdoption-s) (включаемые с помощью `-I`).
- [bpo-34791](https://python-all.ru/3/whatsnew/changelog.html): xml.sax и xml.dom.domreg больше не используют переменные окружения для переопределения реализаций парсеров, когда sys.flags.ignore\_environment установлен аргументами -E или -I.
- [bpo-17239](https://python-all.ru/3/whatsnew/changelog.html): Парсеры xml.sax и xml.dom.minidom больше не обрабатывают внешние сущности по умолчанию. Внешние объявления DTD и ENTITY больше не загружают файлы и не создают сетевые соединения.
- [bpo-34623](https://python-all.ru/3/whatsnew/changelog.html): [**CVE 2018-14647**](https://python-all.ru/3/whatsnew/changelog.html): C-ускоренный модуль \_elementtree теперь инициализирует соль хеш-рандомизации из \_Py\_HashSecret вместо CSPRNG по умолчанию из libexpat.
- [bpo-34405](https://python-all.ru/3/whatsnew/changelog.html): Обновлено до OpenSSL 1.1.0i для сборок Windows.
- [bpo-33871](https://python-all.ru/3/whatsnew/changelog.html): Исправлена отправка части файла в [`os.sendfile()`](https://python-all.ru/3/library/os.html#os.sendfile) на macOS. Использование аргумента *trailers* могло приводить к отправке большего количества байт из входного файла, чем было указано.
- [bpo-32533](https://python-all.ru/3/whatsnew/changelog.html): Исправлена потокобезопасность обработки ошибок в \_ssl.
- [bpo-33136](https://python-all.ru/3/whatsnew/changelog.html): Усиление модуля ssl против [**CVE 2018-8970**](https://python-all.ru/3/whatsnew/changelog.html) в LibreSSL. Функция X509\_VERIFY\_PARAM\_set1\_host() вызывается с явным namelen. Новый тест гарантирует, что нулевые байты не допускаются.
- [bpo-33001](https://python-all.ru/3/whatsnew/changelog.html): Минимальное исправление для предотвращения переполнения буфера в os.symlink в Windows
- [bpo-32981](https://python-all.ru/3/whatsnew/changelog.html): Регулярные выражения в difflib и poplib были уязвимы для катастрофического возврата. Эти регулярные выражения представляли потенциальные векторы DOS (REDOS). Они были переработаны. Это устраняет [**CVE 2018-1060**](https://python-all.ru/3/whatsnew/changelog.html) и [**CVE 2018-1061**](https://python-all.ru/3/whatsnew/changelog.html). Патч от Джейми Дэвиса.
- [bpo-28414](https://python-all.ru/3/whatsnew/changelog.html): Модуль ssl теперь позволяет пользователям выполнять собственное кодирование/декодирование IDN при использовании SNI.

### Ядро и встроенные модули

- [bpo-35877](https://python-all.ru/3/whatsnew/changelog.html): Сделаны круглые скобки необязательными для именованных выражений в операторе while. Патч от Картикейана Сингаравелана.
- [bpo-35814](https://python-all.ru/3/whatsnew/changelog.html): Разрешены такие же выражения в правой части в аннотированных присваиваниях, как и в обычных. В частности, теперь разрешено `x: Tuple[int, int] = 1, 2` (без круглых скобок справа).
- [bpo-35766](https://python-all.ru/3/whatsnew/changelog.html): Добавлена возможность разбора комментариев с типами PEP 484 в модуле ast. (По умолчанию выключено.) Это объединяет ключевую функциональность стороннего форка \[typed\_ast\]([https://github.com/python/typed\_ast](https://python-all.ru/3/whatsnew/changelog.html)).
- [bpo-35713](https://python-all.ru/3/whatsnew/changelog.html): Реорганизована инициализация Python для получения работающих исключений и sys.stderr раньше.
- [bpo-33416](https://python-all.ru/3/whatsnew/changelog.html): Добавлена информация о позиции конца строки и конца столбца в узлы AST Python. Это обратно несовместимое изменение на уровне C.
- [bpo-35720](https://python-all.ru/3/whatsnew/changelog.html): Исправлена небольшая утечка памяти в функции pymain\_parse\_cmdline\_impl в Modules/main.c
- [bpo-35634](https://python-all.ru/3/whatsnew/changelog.html): `func(**kwargs)` теперь будет вызывать ошибку, когда `kwargs` является отображением, содержащим несколько записей с одним и тем же ключом. Ошибка уже вызывалась, когда другие именованные аргументы передавались перед `**kwargs`, начиная с Python 3.6.
- [bpo-35623](https://python-all.ru/3/whatsnew/changelog.html): Исправлен сбой при сортировке очень длинных списков. Патч от Штефана Хохе.
- [bpo-35214](https://python-all.ru/3/whatsnew/changelog.html): Добавлена инструментация сборки Memory Sanitizer от clang для обхода ложных срабатываний от posix, socket, time, test\_io и test\_faulthandler.
- [bpo-35560](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка утверждения в [`format()`](https://python-all.ru/3/library/functions.html#format) в отладочной сборке при форматировании чисел с плавающей точкой с форматом “n”, заполнением нулями и малой шириной. Релизная сборка не затронута. Патч от Картикейана Сингаравелана.
- [bpo-35552](https://python-all.ru/3/whatsnew/changelog.html): Символы форматирования `%s` и `%V` в [`PyUnicode_FromFormat()`](https://python-all.ru/3/c-api/unicode.html#c.PyUnicode_FromFormat) и `%s` в [`PyBytes_FromFormat()`](https://python-all.ru/3/c-api/bytes.html#c.PyBytes_FromFormat) больше не читают память за пределами лимита, если указана *precision*.
- [bpo-35504](https://python-all.ru/3/whatsnew/changelog.html): Исправлены segfaults и [`SystemError`](https://python-all.ru/3/library/exceptions.html#SystemError) при удалении некоторых атрибутов. Патч от Закери Спайтца.
- [bpo-35504](https://python-all.ru/3/whatsnew/changelog.html): Исправлена SystemError при удалении атрибута characters\_written объекта OSError.
- [bpo-35494](https://python-all.ru/3/whatsnew/changelog.html): Улучшены сообщения об ошибках синтаксиса для несбалансированных скобок в f-строках.
- [bpo-35444](https://python-all.ru/3/whatsnew/changelog.html): Исправлена обработка ошибок в методах сериализации при неудачном поиске встроенной функции “getattr”. Ускорена сериализация итераторов.
- [bpo-35436](https://python-all.ru/3/whatsnew/changelog.html): Исправлены различные проблемы с обработкой ошибок выделения памяти. Патч от Zackery Spytz.
- [bpo-35423](https://python-all.ru/3/whatsnew/changelog.html): Триггер обработки сигналов в цикле вычислений отделён от механизма «отложенных вызовов». Семантических изменений нет, разница в производительности незначительна.
- [bpo-35357](https://python-all.ru/3/whatsnew/changelog.html): Имена внутренних атрибутов unittest.mock.\_Call и unittest.mock.MagicProxy (name, parent и from\_kall) теперь имеют префикс \_mock\_, чтобы избежать конфликтов с часто используемыми атрибутами объектов. Исправлена опечатка в имени тестовой функции.
- [bpo-35372](https://python-all.ru/3/whatsnew/changelog.html): Исправлен декодер кодовой страницы для входных данных длиной более 2 ГиБ, содержащих нераскодируемые байты.
- [bpo-35336](https://python-all.ru/3/whatsnew/changelog.html): Исправлена переменная окружения PYTHONCOERCECLOCALE=1: принудительное использование локали C выполняется только если LC\_CTYPE установлена в «C».
- [bpo-31241](https://python-all.ru/3/whatsnew/changelog.html): Атрибуты *lineno* и *col\_offset* узлов AST для списковых включений, генераторных выражений и кортежей теперь указывают на открывающую скобку (круглую или квадратную). Для кортежей без скобок они указывают на позицию первого элемента.
- [bpo-33954](https://python-all.ru/3/whatsnew/changelog.html): Для методов [`str.format()`](https://python-all.ru/3/library/stdtypes.html#str.format), `float.__format__()` и `complex.__format__()` исправлена обработка десятичного разделителя, не являющегося ASCII, при использовании форматировщика «n».
- [bpo-35269](https://python-all.ru/3/whatsnew/changelog.html): Исправлена возможная ошибка сегментации, связанная с только что созданной корутиной. Патч от Zackery Spytz.
- [bpo-35224](https://python-all.ru/3/whatsnew/changelog.html): Реализованы [**PEP 572**](https://python-all.ru/3/whatsnew/changelog.html) (выражения присваивания). Патч от Emily Morehouse.
- [bpo-32492](https://python-all.ru/3/whatsnew/changelog.html): Ускорен доступ к атрибуту `namedtuple()` в 1,6 раза за счёт использования быстрого пути на C для дескрипторов имён. Патч от Pablo Galindo.
- [bpo-35214](https://python-all.ru/3/whatsnew/changelog.html): Исправлен выход за границы памяти при разборе усечённой escape-последовательности Unicode в конце строки, например `'\N'`. Происходило чтение на один байт за пределами выделенной памяти.
- [bpo-35214](https://python-all.ru/3/whatsnew/changelog.html): В интерпретатор и модули расширения добавлены аннотации для корректной работы под Memory Sanitizer от clang. Добавлен новый флаг configure –with-memory-sanitizer, упрощающий сборку тестовых версий такого типа.
- [bpo-35193](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка на единицу в оптимизаторе байткода (peephole), из-за которой при удалении недостижимого кода могло происходить чтение байтов за границами массива. Эта ошибка присутствовала во всех версиях Python 3.6 и 3.7 до настоящего времени.
- [bpo-35169](https://python-all.ru/3/whatsnew/changelog.html): Улучшены сообщения об ошибках для запрещённых присваиваний.
- [bpo-34022](https://python-all.ru/3/whatsnew/changelog.html): Исправлена обработка файлов байткода на основе хэша в [`zipimport`](https://python-all.ru/3/library/zipimport.html#module-zipimport). Патч от Elvis Pranskevichus.
- [bpo-28401](https://python-all.ru/3/whatsnew/changelog.html): Отладочные сборки больше не будут пытаться импортировать модули расширения, собранные для ABI, так как они изначально были несовместимы. Патч от Stefano Rivera.
- [bpo-29341](https://python-all.ru/3/whatsnew/changelog.html): В докстрингах методов [`os`](https://python-all.ru/3/library/os.html#module-os) уточнено, что объекты, подобные пути, также принимаются в качестве входных параметров.
- [bpo-35050](https://python-all.ru/3/whatsnew/changelog.html): [`socket`](https://python-all.ru/3/library/socket.html#module-socket): Исправлена ошибка на единицу при проверке длины для `AF_ALG` имени и типа.
- [bpo-29743](https://python-all.ru/3/whatsnew/changelog.html): Возбуждается [`ValueError`](https://python-all.ru/3/library/exceptions.html#ValueError) вместо [`OverflowError`](https://python-all.ru/3/library/exceptions.html#OverflowError) в случае отрицательного `_length_` в подклассе [`ctypes.Array`](https://python-all.ru/3/library/ctypes.html#ctypes.Array). Также возбуждается [`TypeError`](https://python-all.ru/3/library/exceptions.html#TypeError) вместо [`AttributeError`](https://python-all.ru/3/library/exceptions.html#AttributeError) для нецелого `_length_`. Оригинальный патч от Oren Milman.
- [bpo-16806](https://python-all.ru/3/whatsnew/changelog.html): Исправлены `lineno` и `col_offset` для многострочных строковых токенов.
- [bpo-35029](https://python-all.ru/3/whatsnew/changelog.html): [`SyntaxWarning`](https://python-all.ru/3/library/exceptions.html#SyntaxWarning), возбуждаемое как исключение во время генерации кода, теперь заменяется на [`SyntaxError`](https://python-all.ru/3/library/exceptions.html#SyntaxError) для улучшения сообщения об ошибке.
- [bpo-34983](https://python-all.ru/3/whatsnew/changelog.html): Экспортирован [`symtable.Symbol.is_nonlocal()`](https://python-all.ru/3/library/symtable.html#symtable.Symbol.is_nonlocal) в модуле symtable. Патч от Pablo Galindo.
- [bpo-34974](https://python-all.ru/3/whatsnew/changelog.html): Конструкторы [`bytes`](https://python-all.ru/3/library/stdtypes.html#bytes) и [`bytearray`](https://python-all.ru/3/library/stdtypes.html#bytearray) больше не преобразуют неожиданные исключения (например, [`MemoryError`](https://python-all.ru/3/library/exceptions.html#MemoryError) и [`KeyboardInterrupt`](https://python-all.ru/3/library/exceptions.html#KeyboardInterrupt)) в [`TypeError`](https://python-all.ru/3/library/exceptions.html#TypeError).
- [bpo-34939](https://python-all.ru/3/whatsnew/changelog.html): Разрешены аннотированные имена в пространстве имён модуля, объявленные как global до аннотации. Патч от Pablo Galindo.
- [bpo-34973](https://python-all.ru/3/whatsnew/changelog.html): Исправлен сбой в [`bytes()`](https://python-all.ru/3/library/stdtypes.html#bytes), когда аргумент [`list`](https://python-all.ru/3/library/stdtypes.html#list) изменяется во время итерации.
- [bpo-34876](https://python-all.ru/3/whatsnew/changelog.html): Атрибуты *lineno* и *col\_offset* AST для декорированных функций и классов теперь указывают на позицию соответствующего `def`, `async def` и `class`, а не на позицию первого декоратора. Это улучшает корректность сообщений о строках при трассировке. Это единственный случай, когда позиция дочерних узлов AST может предшествовать позиции родительского узла.
- [bpo-34879](https://python-all.ru/3/whatsnew/changelog.html): Исправлено возможное разыменование нулевого указателя в bytesobject.c. Патч от Zackery Spytz.
- [bpo-34784](https://python-all.ru/3/whatsnew/changelog.html): Исправлена реализация PyStructSequence\_NewType для создания StructSequences, выделяемых в куче.
- [bpo-32912](https://python-all.ru/3/whatsnew/changelog.html): Для недопустимых escape-последовательностей в строковых и байтовых литералах теперь выдаётся [`SyntaxWarning`](https://python-all.ru/3/library/exceptions.html#SyntaxWarning) вместо [`DeprecationWarning`](https://python-all.ru/3/library/exceptions.html#DeprecationWarning).
- [bpo-34854](https://python-all.ru/3/whatsnew/changelog.html): Исправлен сбой при компиляции строковых аннотаций, содержащих lambda с аргументом, передаваемым только по ключевому слову и не имеющим значения по умолчанию.
- [bpo-34850](https://python-all.ru/3/whatsnew/changelog.html): Компилятор теперь выдаёт [`SyntaxWarning`](https://python-all.ru/3/library/exceptions.html#SyntaxWarning), когда проверки идентичности (`is` и `is not`) используются с определёнными типами литералов (например, строки, целые числа). В CPython они часто могут срабатывать случайно, но спецификация языка этого не гарантирует. Предупреждение советует пользователям использовать вместо этого проверки на равенство (`==` и `!=`).
- [bpo-34824](https://python-all.ru/3/whatsnew/changelog.html): Исправлено возможное разыменование нулевого указателя в Modules/\_ssl.c. Патч от Zackery Spytz.
- [bpo-30156](https://python-all.ru/3/whatsnew/changelog.html): Функция на C `property_descr_get()` использовала «кэшированный» кортеж для оптимизации вызовов функций. Но этот кортеж можно было обнаружить в режиме отладки с помощью [`sys.getobjects()`](https://python-all.ru/3/library/sys.html#sys.getobjects). Оптимизация удалена – она того не стоила и вызывала три разных аварийных завершения за последние годы.
- [bpo-34762](https://python-all.ru/3/whatsnew/changelog.html): Исправлен C API модуля contextvars: теперь используются указатели типа PyObject\*.
- [bpo-34751](https://python-all.ru/3/whatsnew/changelog.html): Хеш-функция для кортежей теперь основана на xxHash, что даёт лучшие результаты коллизий на (ранее) проблемных случаях. Кроме того, на 64-битных системах улучшены хеши кортежей в целом. Патч от Jeroen Demeyer со значительным вкладом от Tim Peters.
- [bpo-34735](https://python-all.ru/3/whatsnew/changelog.html): Исправлена утечка памяти в Modules/timemodule.c. Патч от Zackery Spytz.
- [bpo-34683](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка, из-за которой некоторые SyntaxError указывали на позиции со смещением на один символ.
- [bpo-34651](https://python-all.ru/3/whatsnew/changelog.html): Теперь только основной интерпретатор может создавать дочерние процессы (fork). Это исключает возможность воздействия на основной интерпретатор, что критично для работы среды выполнения.
- [bpo-34653](https://python-all.ru/3/whatsnew/changelog.html): Удалена неиспользуемая функция PyParser\_SimpleParseStringFilename.
- [bpo-32236](https://python-all.ru/3/whatsnew/changelog.html): Добавлено предупреждение о том, что построчная буферизация не поддерживается, если [`open()`](https://python-all.ru/3/library/functions.html#open) вызывается в двоичном режиме и задан `buffering=1`.
- [bpo-34641](https://python-all.ru/3/whatsnew/changelog.html): Дополнительно ограничен синтаксис левой части именованных аргументов в вызовах функций. В частности, теперь запрещено `f((keyword)=arg)`.
- [bpo-34637](https://python-all.ru/3/whatsnew/changelog.html): Аргумент *start* функции *sum()* теперь виден как именованный аргумент.
- [bpo-1621](https://python-all.ru/3/whatsnew/changelog.html): Больше не предполагается, что переполнение знаковых целых чисел ведёт себя определённым образом (неопределённое поведение C) при изменении размера хеш-таблицы множества.
- [bpo-34588](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка со смещением на один символ при обрезке рекурсивных вызовов в форматировании трассировки.
- [bpo-34485](https://python-all.ru/3/whatsnew/changelog.html): В Windows при запуске LC\_CTYPE теперь устанавливается в предпочитаемую пользователем локаль. Ранее LC\_CTYPE была равна «C» при запуске, но менялась при вызове setlocale(LC\_CTYPE, «») или setlocale(LC\_ALL, «»).
- [bpo-34485](https://python-all.ru/3/whatsnew/changelog.html): Стандартные потоки, такие как sys.stdout, теперь используют обработчик ошибок «surrogateescape» вместо «strict» в локали POSIX (когда локаль C не принудительно изменена и режим UTF-8 отключён).
- [bpo-34485](https://python-all.ru/3/whatsnew/changelog.html): Исправлен обработчик ошибок для стандартных потоков, таких как sys.stdout: теперь PYTHONIOENCODING=«:» игнорируется, а не устанавливает обработчик ошибок в «strict».
- [bpo-34485](https://python-all.ru/3/whatsnew/changelog.html): Python теперь получает кодировку локали с помощью кода на C для инициализации кодировки стандартных потоков, таких как sys.stdout. Кроме того, кодировка теперь инициализируется как имя кодека Python для получения нормализованного имени кодировки и обеспечения загрузки кодека. Это изменение позволяет избежать импорта модулей \_bootlocale и \_locale при запуске по умолчанию.
- [bpo-34527](https://python-all.ru/3/whatsnew/changelog.html): На FreeBSD функции Py\_DecodeLocale() и Py\_EncodeLocale() теперь также принудительно используют кодировку ASCII, если локаль LC\_CTYPE – «POSIX», а не только если локаль LC\_CTYPE – «C».
- [bpo-34527](https://python-all.ru/3/whatsnew/changelog.html): Режим UTF-8 теперь также включается локалью «POSIX», а не только локалью «C».
- [bpo-34403](https://python-all.ru/3/whatsnew/changelog.html): На HP-UX с локалью C или POSIX sys.getfilesystemencoding() теперь возвращает «ascii» вместо «roman8» (когда режим UTF-8 отключён и локаль C не принудительно изменена).
- [bpo-34523](https://python-all.ru/3/whatsnew/changelog.html): Кодировка файловой системы Python теперь считывается раньше, во время инициализации Python.
- [bpo-12458](https://python-all.ru/3/whatsnew/changelog.html): Трассировки теперь показывают правильный номер строки для подвыражений в многострочных выражениях. Для многострочных выражений теперь выводится номер первой строки, а не номер строки последнего подвыражения.
- [bpo-34408](https://python-all.ru/3/whatsnew/changelog.html): Предотвращены разыменование нулевого указателя и утечка ресурсов в `PyInterpreterState_New()`.
- [bpo-34400](https://python-all.ru/3/whatsnew/changelog.html): Исправлено неопределённое поведение в parsetok.c. Патч от Zackery Spytz.
- [bpo-33073](https://python-all.ru/3/whatsnew/changelog.html): Для целых чисел добавлен метод as\_integer\_ratio, чтобы сделать их более совместимыми с числами с плавающей точкой.
- [bpo-34377](https://python-all.ru/3/whatsnew/changelog.html): Обновлён список подавления valgrind: теперь используется `_PyObject_Free`/`_PyObject_Realloc` вместо `PyObject_Free`/`PyObject_Realloc`.
- [bpo-34353](https://python-all.ru/3/whatsnew/changelog.html): В реализацию `stat.filemode()` на Python добавлена опция «socket» для соответствия реализации на C.
- [bpo-34320](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка: `dict(od)` не копировал порядок итерации OrderedDict.
- [bpo-34113](https://python-all.ru/3/whatsnew/changelog.html): Исправлен сбой в отладочных сборках при отрицательных значениях корректировки стека опкодов. Патч от Constantin Petrisor.
- [bpo-34100](https://python-all.ru/3/whatsnew/changelog.html): Компилятор теперь рекурсивно объединяет константы в кортежах и замороженных множествах. Атрибуты кода, такие как `co_names`, также объединяются.
- [bpo-34151](https://python-all.ru/3/whatsnew/changelog.html): Незначительно улучшена производительность операций конкатенации, повторения и среза списков. Патч от Sergey Fedoseev.
- [bpo-34170](https://python-all.ru/3/whatsnew/changelog.html): -X dev: теперь можно переопределить распределитель памяти с помощью PYTHONMALLOC, даже если включён режим разработчика.
- [bpo-33237](https://python-all.ru/3/whatsnew/changelog.html): Улучшено сообщение [`AttributeError`](https://python-all.ru/3/library/exceptions.html#AttributeError) для частично инициализированного модуля.
- [bpo-34149](https://python-all.ru/3/whatsnew/changelog.html): Исправлено поведение функций min и max по умолчанию, когда key равен None.
- [bpo-34125](https://python-all.ru/3/whatsnew/changelog.html): Профилирование несвязанных встроенных методов теперь работает, когда указан `**kwargs`.
- [bpo-34141](https://python-all.ru/3/whatsnew/changelog.html): Оптимизирована сериализация (pickling) атомарных типов (None, bool, int, float, bytes, str).
- [bpo-34126](https://python-all.ru/3/whatsnew/changelog.html): Исправлены сбои при профилировании некоторых некорректных вызовов несвязанных методов. Патч от Jeroen Demeyer.
- [bpo-24618](https://python-all.ru/3/whatsnew/changelog.html): Исправлено чтение недопустимой памяти при создании объекта кода с слишком коротким кортежем varnames или слишком большим количеством аргументов.
- [bpo-34068](https://python-all.ru/3/whatsnew/changelog.html): В [`io.IOBase.close()`](https://python-all.ru/3/library/io.html#io.IOBase.close), обеспечить, чтобы атрибут [`closed`](https://python-all.ru/3/library/io.html#io.IOBase.closed) не устанавливался с живым исключением. Патч от Zackery Spytz и Serhiy Storchaka.
- [bpo-34087](https://python-all.ru/3/whatsnew/changelog.html): Исправлено переполнение буфера при преобразовании Unicode в числовые значения.
- [bpo-34080](https://python-all.ru/3/whatsnew/changelog.html): Исправлена утечка памяти в компиляторе при возникновении некоторых необычных ошибок во время токенизации.
- [bpo-34066](https://python-all.ru/3/whatsnew/changelog.html): Отключено прерывание по Ctrl-C между вызовом `open()` и входом в блок **with** в `with open()`.
- [bpo-34042](https://python-all.ru/3/whatsnew/changelog.html): Исправлено dict.copy() для поддержания корректного общего счётчика ссылок (как сообщается sys.gettotalrefcount()).
- [bpo-33418](https://python-all.ru/3/whatsnew/changelog.html): Исправлена потенциальная утечка памяти в объекте функции при создании цикла ссылок.
- [bpo-33985](https://python-all.ru/3/whatsnew/changelog.html): Реализован атрибут contextvars.ContextVar.name.
- [bpo-33956](https://python-all.ru/3/whatsnew/changelog.html): Обновлена включённая копия библиотеки Expat до версии 2.2.5.
- [bpo-24596](https://python-all.ru/3/whatsnew/changelog.html): Уменьшить счётчик ссылок объекта модуля в [`PyRun_SimpleFileExFlags()`](https://python-all.ru/3/c-api/veryhigh.html#c.PyRun_SimpleFileExFlags) перед вызовом [`PyErr_Print()`](https://python-all.ru/3/c-api/exceptions.html#c.PyErr_Print). Патч от Zackery Spytz.
- [bpo-33451](https://python-all.ru/3/whatsnew/changelog.html): Закрывать непосредственно выполняемые pyc-файлы перед вызовом `PyEval_EvalCode()`.
- [bpo-1617161](https://python-all.ru/3/whatsnew/changelog.html): Хэш экземпляров `BuiltinMethodType` (методов встроенных классов) теперь зависит от хэша идентичности *\_\_self\_\_* вместо его значения. Хэш и равенство экземпляров `ModuleType` и `MethodWrapperType` (методов пользовательских классов и некоторых методов встроенных классов, таких как `str.__add__`) теперь зависят от хэша и равенства идентичности *\_\_self\_\_* вместо его значения. Экземпляры `MethodWrapperType` больше не поддерживают упорядочивание.
- [bpo-33824](https://python-all.ru/3/whatsnew/changelog.html): Исправлено “LC\_ALL=C python3.7 -V”: корректно сбрасывать парсер командной строки при изменении кодировки после чтения конфигурации Python.
- [bpo-33803](https://python-all.ru/3/whatsnew/changelog.html): Исправлен сбой в hamt.c, вызванный включением отслеживания GC для объекта, у которого не все поля были установлены в NULL.
- [bpo-33738](https://python-all.ru/3/whatsnew/changelog.html): Исправлены семь несовместимостей макросов с Limited API, а макросы [`PyIter_Check()`](https://python-all.ru/3/c-api/iter.html#c.PyIter_Check), [`PyIndex_Check()`](https://python-all.ru/3/c-api/number.html#c.PyIndex_Check) и [`PyExceptionClass_Name()`](https://python-all.ru/3/c-api/exceptions.html#c.PyExceptionClass_Name) добавлены как функции. Добавлен скрипт для автоматической проверки макросов.
- [bpo-33786](https://python-all.ru/3/whatsnew/changelog.html): Исправлена обработка GeneratorExit в athrow() в асинхронных генераторах.
- [bpo-30167](https://python-all.ru/3/whatsnew/changelog.html): `PyRun_SimpleFileExFlags` удаляет `__cached__` из модуля в дополнение к `__file__`.
- [bpo-33706](https://python-all.ru/3/whatsnew/changelog.html): Исправлен сбой при инициализации Python во время разбора параметров командной строки. Спасибо Christoph Gohlke за сообщение об ошибке и исправление!
- [bpo-33597](https://python-all.ru/3/whatsnew/changelog.html): Уменьшен размер `PyGC_Head` с 3 слов до 2 слов.
- [bpo-30654](https://python-all.ru/3/whatsnew/changelog.html): Исправлен сброс обработчика SIGINT на SIG\_DFL при завершении интерпретатора, даже если ранее был установлен пользовательский обработчик. Патч от Philipp Kerling.
- [bpo-33622](https://python-all.ru/3/whatsnew/changelog.html): Исправлена утечка, когда сборщик мусора не может добавить объект с методом `__del__` или на который он ссылается, в список [`gc.garbage`](https://python-all.ru/3/library/gc.html#gc.garbage). [`PyGC_Collect()`](https://python-all.ru/3/c-api/gcsupport.html#c.PyGC_Collect) теперь можно вызывать, когда установлено исключение, и он его сохраняет.
- [bpo-33462](https://python-all.ru/3/whatsnew/changelog.html): Сделаны обращаемыми (reversible) dict и представления dict. Патч от Rémi Lapeyre.
- [bpo-23722](https://python-all.ru/3/whatsnew/changelog.html): Теперь возникает [`RuntimeError`](https://python-all.ru/3/library/exceptions.html#RuntimeError), когда пользовательский метакласс не предоставляет запись `__classcell__` в пространстве имён, переданном в `type.__new__`. В Python 3.6–3.7 выдавалось [`DeprecationWarning`](https://python-all.ru/3/library/exceptions.html#DeprecationWarning).
- [bpo-33499](https://python-all.ru/3/whatsnew/changelog.html): Добавлена переменная окружения [`PYTHONPYCACHEPREFIX`](https://python-all.ru/3/using/cmdline.html#envvar-PYTHONPYCACHEPREFIX) и параметр командной строки [`-X`](https://python-all.ru/3/using/cmdline.html#cmdoption-X) `pycache_prefix` для указания альтернативного корневого каталога для записи кэш-файлов байт-кода модулей.
- [bpo-25711](https://python-all.ru/3/whatsnew/changelog.html): Модуль [`zipimport`](https://python-all.ru/3/library/zipimport.html#module-zipimport) был переписан на чистом Python.
- [bpo-33509](https://python-all.ru/3/whatsnew/changelog.html): Исправлен параметр module\_globals в warnings.warn\_explicit(): не вызывает сбой, если module\_globals не является dict.
- [bpo-31849](https://python-all.ru/3/whatsnew/changelog.html): Исправлено предупреждение о сравнении signed/unsigned в pyhash.c.
- [bpo-33475](https://python-all.ru/3/whatsnew/changelog.html): Исправлены разные ошибки при преобразовании аннотаций в строки и оптимизированы скобки в строковом представлении.
- [bpo-20104](https://python-all.ru/3/whatsnew/changelog.html): Добавлена поддержка параметров `setpgroup`, `resetids`, `setsigmask`, `setsigdef` и `scheduler` функции `posix_spawn`. Патч от Pablo Galindo.
- [bpo-33391](https://python-all.ru/3/whatsnew/changelog.html): Исправлена утечка в set\_symmetric\_difference().
- [bpo-33363](https://python-all.ru/3/whatsnew/changelog.html): Вызывается SyntaxError для операторов `async with` и `async for` вне асинхронных функций.
- [bpo-28055](https://python-all.ru/3/whatsnew/changelog.html): Исправлено невыровненное обращение к памяти в siphash24(). Патч от Rolf Eike Beer.
- [bpo-33128](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка, из-за которой PathFinder появлялся дважды в sys.meta\_path. Патч от Pablo Galindo Salgado.
- [bpo-33331](https://python-all.ru/3/whatsnew/changelog.html): Модули, импортированные последними, теперь очищаются первыми при завершении интерпретатора.
- [bpo-33312](https://python-all.ru/3/whatsnew/changelog.html): Исправлены предупреждения clang ubsan (о неопределённом поведении) в dictobject.c за счёт корректировки объявления внутренней структуры \_dictkeysobject для разделяемых ключей.
- [bpo-33305](https://python-all.ru/3/whatsnew/changelog.html): Улучшены сообщения об ошибках синтаксиса для неверных числовых литералов.
- [bpo-33306](https://python-all.ru/3/whatsnew/changelog.html): Улучшены сообщения об ошибках синтаксиса для несбалансированных скобок.
- [bpo-33234](https://python-all.ru/3/whatsnew/changelog.html): Конструктор list теперь предварительно задаёт размер и не выделяет лишнюю память, когда известна длина входных данных.
- [bpo-33270](https://python-all.ru/3/whatsnew/changelog.html): Имена всех анонимных объектов кода теперь интернируются. Патч от Zackery Spytz.
- [bpo-30455](https://python-all.ru/3/whatsnew/changelog.html): Код на C и Python, а также документация, связанная с токенами, теперь генерируются из единого исходного файла `Grammar/Tokens`.
- [bpo-33176](https://python-all.ru/3/whatsnew/changelog.html): Добавлен метод `toreadonly()` для memoryviews.
- [bpo-33231](https://python-all.ru/3/whatsnew/changelog.html): Исправлена потенциальная утечка памяти в `normalizestring()`.
- [bpo-33205](https://python-all.ru/3/whatsnew/changelog.html): Изменена функция роста dict с `round_up_to_power_2(used*2+hashtable_size/2)` на `round_up_to_power_2(used*3)`. Ранее dict сжимался только когда `used == 0`. Теперь у dict больше шансов быть сжатым.
- [bpo-29922](https://python-all.ru/3/whatsnew/changelog.html): Улучшены сообщения об ошибках в ‘async with’, когда `__aenter__()` или `__aexit__()` возвращают неожидаемый объект.
- [bpo-33199](https://python-all.ru/3/whatsnew/changelog.html): Исправлено `ma_version_tag` в реализации dict, которое не инициализировано при копировании из словаря с разделяемыми ключами.
- [bpo-33053](https://python-all.ru/3/whatsnew/changelog.html): При использовании флага -m sys.path\[0\] теперь явно раскрывается как *исходный* рабочий каталог, а не оставляется пустым (что позволяло импортировать из текущего рабочего каталога на момент импорта).
- [bpo-33138](https://python-all.ru/3/whatsnew/changelog.html): Изменено стандартное сообщение об ошибке для типов, не подлежащих сериализации pickle и копированию. Теперь выводится «cannot pickle» вместо «can’t pickle» или «cannot serialize».
- [bpo-33018](https://python-all.ru/3/whatsnew/changelog.html): Повышена согласованность ошибок, вызываемых `issubclass()`, когда первым и вторым аргументами передаются не-класс и абстрактный базовый класс соответственно. Патч от Josh Bronson.
- [bpo-33083](https://python-all.ru/3/whatsnew/changelog.html): `math.factorial` больше не принимает аргументы, не являющиеся целочисленными. Патч от Pablo Galindo.
- [bpo-33041](https://python-all.ru/3/whatsnew/changelog.html): Добавлен новый опкод [`END_ASYNC_FOR`](https://python-all.ru/3/library/dis.html#opcode-END_ASYNC_FOR) и исправлены следующие проблемы:

  - Установка глобальной [`StopAsyncIteration`](https://python-all.ru/3/library/exceptions.html#StopAsyncIteration) больше не нарушает работу `async for` циклов.
  - Переход внутрь `async for` цикла теперь запрещён.
  - Выход из `async for` цикла больше не повреждает стек.
- [bpo-25750](https://python-all.ru/3/whatsnew/changelog.html): Исправлен редкий сбой Python из-за неправильного подсчёта ссылок в `type_getattro()`, если дескриптор удаляет себя из класса. Патч от Jeroen Demeyer.
- [bpo-33041](https://python-all.ru/3/whatsnew/changelog.html): Исправлена генерация байт-кода для «async for» со сложной целью. StopAsyncIteration, возникающий при присваивании или распаковке, теперь распространяется, а не останавливает итерацию.
- [bpo-33026](https://python-all.ru/3/whatsnew/changelog.html): Исправлен выход из блока «with» с помощью установки f\_lineno.
- [bpo-33005](https://python-all.ru/3/whatsnew/changelog.html): Исправлен сбой при fork при использовании пользовательского аллокатора памяти (например, переменная окружения PYTHONMALLOC). \_PyGILState\_Reinit() и \_PyInterpreterState\_Enable() теперь используют стандартный RAW аллокатор для выделения мьютекса нового интерпретатора при fork.
- [bpo-32911](https://python-all.ru/3/whatsnew/changelog.html): Из-за неожиданных проблем совместимости, обнаруженных во время бета-тестирования у downstream-разработчиков, отменён [bpo-29463](https://python-all.ru/3/whatsnew/changelog.html). Поле `docstring` удалено из узлов AST Module, ClassDef, FunctionDef и AsyncFunctionDef, добавленное в 3.7a1. Выражение с докстрингом возвращено в качестве первого оператора в их теле. Основано на патче от Inada Naoki.
- [bpo-17288](https://python-all.ru/3/whatsnew/changelog.html): Предотвращение переходов из событий трассировки ‘return’ и ‘исключение’.
- [bpo-32946](https://python-all.ru/3/whatsnew/changelog.html): Импорт имён из уже импортированного модуля с помощью «from … import …» теперь на 30% быстрее, если модуль не является пакетом.
- [bpo-32932](https://python-all.ru/3/whatsnew/changelog.html): Сделать сообщение об ошибке более информативным, когда в `__all__` есть нестроковые объекты.
- [bpo-32925](https://python-all.ru/3/whatsnew/changelog.html): Оптимизированы итерация и проверка вхождения для литеральных списков, состоящих из неконстантных элементов: `x in [a, b]` и `for x in [a, b]`. Случай со всеми константными элементами уже был оптимизирован.
- [bpo-32889](https://python-all.ru/3/whatsnew/changelog.html): Обновить список подавления Valgrind с учётом переименования `Py_ADDRESS_IN_RANG` в `address_in_range`.
- [bpo-32836](https://python-all.ru/3/whatsnew/changelog.html): Не использовать временные переменные в случаях списковых/словарных/множественных включений
- [bpo-31356](https://python-all.ru/3/whatsnew/changelog.html): Удалить новый API, добавленный в [bpo-31356](https://python-all.ru/3/whatsnew/changelog.html) (менеджер контекста gc.ensure\_disabled()).
- [bpo-32305](https://python-all.ru/3/whatsnew/changelog.html): Для пакетов пространства имён убедиться, что оба `__file__` и `__spec__.origin` установлены в None.
- [bpo-32303](https://python-all.ru/3/whatsnew/changelog.html): Убедиться, что `__spec__.loader` совпадает с `__loader__` для пакетов пространства имён.
- [bpo-32711](https://python-all.ru/3/whatsnew/changelog.html): Исправить предупреждающие сообщения для Python/ast\_unparse.c. Исправление от Stéphane Wirtel
- [bpo-32583](https://python-all.ru/3/whatsnew/changelog.html): Исправить возможное падение во встроенных декодерах Unicode, вызванное ошибками записи за границы при использовании пользовательских обработчиков ошибок декодирования.
- [bpo-32489](https://python-all.ru/3/whatsnew/changelog.html): Оператор [`continue`](https://python-all.ru/3/reference/simple_stmts.html#continue) теперь разрешён в предложении [`finally`](https://python-all.ru/3/reference/compound_stmts.html#finally).
- [bpo-17611](https://python-all.ru/3/whatsnew/changelog.html): Упрощён цикл интерпретатора за счёт переноса логики разворачивания стека блоков в компилятор. Теперь компилятор генерирует явные инструкции для настройки стека значений и вызова кода очистки для [`break`](https://python-all.ru/3/reference/simple_stmts.html#break), [`continue`](https://python-all.ru/3/reference/simple_stmts.html#continue) и [`return`](https://python-all.ru/3/reference/simple_stmts.html#return).

  Удалены коды операций `BREAK_LOOP`, `CONTINUE_LOOP`, `SETUP_LOOP` и `SETUP_EXCEPT`. Добавлены новые коды операций `ROT_FOUR`, `BEGIN_FINALLY` и `CALL_FINALLY` и `POP_FINALLY`. Изменено поведение `END_FINALLY` и `WITH_CLEANUP_START`.
- [bpo-32285](https://python-all.ru/3/whatsnew/changelog.html): Новая функция unicodedata.is\_normalized, которая проверяет, находится ли строка в определённой нормальной форме.
- [bpo-10544](https://python-all.ru/3/whatsnew/changelog.html): Выражения yield теперь запрещены в включениях и выражениях-генераторах, за исключением выражения для самого внешнего итерируемого объекта.
- [bpo-32117](https://python-all.ru/3/whatsnew/changelog.html): Распаковка итерируемых объектов теперь разрешена без скобок в операторах yield и return, например `yield 1, 2, 3, *rest`. Спасибо David Cuthbert за изменение и Jordan Chapman за добавленные тесты.
- [bpo-31902](https://python-all.ru/3/whatsnew/changelog.html): Исправить атрибут `col_offset` для узлов AST `ast.AsyncFor`, `ast.AsyncFunctionDef` и `ast.AsyncWith`. Ранее `col_offset` указывал на ключевое слово после `async`.
- [bpo-25862](https://python-all.ru/3/whatsnew/changelog.html): Исправить ошибки утверждений в методе `tell()` класса `io.TextIOWrapper`. Исправление от Zackery Spytz.
- [bpo-21983](https://python-all.ru/3/whatsnew/changelog.html): Исправить падение в `ctypes.cast()`, если аргумент type является структурированным типом данных ctypes. Исправление от Eryk Sun и Oren Milman.
- [bpo-31577](https://python-all.ru/3/whatsnew/changelog.html): Исправить падение в `os.utime()` в случае неверного аргумента ns. Исправление от Oren Milman.
- [bpo-29832](https://python-all.ru/3/whatsnew/changelog.html): Удалить ссылки на ‘getsockaddrarg’ из различных сообщений об ошибках сокетов. Исправление от Oren Milman.

### Библиотека

- [bpo-35845](https://python-all.ru/3/whatsnew/changelog.html): Добавить параметр ‘order’ в memoryview.tobytes().
- [bpo-35864](https://python-all.ru/3/whatsnew/changelog.html): Метод \_asdict() для collections.namedtuple теперь возвращает обычный dict вместо OrderedDict.
- [bpo-35537](https://python-all.ru/3/whatsnew/changelog.html): ExitStack теперь используется внутри subprocess.Popen для очистки файловых дескрипторов каналов. Поведение в нормальном режиме не изменилось. Но если закрытие одного дескриптора когда-либо вызовет исключение, остальные теперь будут закрыты, а не утекут. (исправление от Giampaolo Rodola)
- [bpo-35847](https://python-all.ru/3/whatsnew/changelog.html): RISC-V нуждался в CTYPES\_PASS\_BY\_REF\_HACK. Исправляет тест ctypes Structure test\_pass\_by\_value.
- [bpo-35813](https://python-all.ru/3/whatsnew/changelog.html): Подмодуль разделяемой памяти добавлен в multiprocessing, чтобы избежать необходимости сериализации между процессами
- [bpo-35780](https://python-all.ru/3/whatsnew/changelog.html): Исправить ошибки lru\_cache(), возникающие в рекурсивном, реентерабельном или многопоточном коде. Эти ошибки могли приводить к появлению orphan-ссылок и к тому, что кэш застревал в состоянии с количеством ссылок меньше заданного максимального. Исправить обработку отрицательного maxsize, который должен был трактоваться как ноль. Исправить ошибки переключения флага статуса «full». Исправить нарушение порядка ссылок при возникновении ошибок. Синхронизировать код на C и чистый Python для пути экономии пространства в функциях с одним позиционным аргументом. В этом распространённом случае накладные расходы на запись кэша lru сокращены почти вдвое. Исправить подсчёт промахов кэша. В ошибочных случаях счётчик промахов рассинхронизировался с фактическим количеством вызовов базовой пользовательской функции.
- [bpo-35537](https://python-all.ru/3/whatsnew/changelog.html): [`os.posix_spawn()`](https://python-all.ru/3/library/os.html#os.posix_spawn) и [`os.posix_spawnp()`](https://python-all.ru/3/library/os.html#os.posix_spawnp) теперь имеют параметр *setsid*.
- [bpo-23846](https://python-all.ru/3/whatsnew/changelog.html): [`asyncio.ProactorEventLoop`](https://python-all.ru/3/library/asyncio-eventloop.html#asyncio.ProactorEventLoop) теперь перехватывает и логирует ошибки отправки, когда self-pipe полон.
- [bpo-34323](https://python-all.ru/3/whatsnew/changelog.html): [`asyncio`](https://python-all.ru/3/library/asyncio.html#module-asyncio): Улучшить журнал `IocpProactor.close()`: подождать 1 секунду перед первой записью, затем записывать каждую секунду. Также записывать количество секунд с момента вызова `close()`.
- [bpo-35674](https://python-all.ru/3/whatsnew/changelog.html): Добавить новую функцию [`os.posix_spawnp()`](https://python-all.ru/3/library/os.html#os.posix_spawnp). Исправление от Joannah Nanjekye.
- [bpo-35733](https://python-all.ru/3/whatsnew/changelog.html): `ast.Constant(boolean)` больше не является экземпляром `ast.Num`. Исправление от Anthony Sottile.
- [bpo-35726](https://python-all.ru/3/whatsnew/changelog.html): QueueHandler.prepare() теперь создаёт копию записи перед изменением и постановкой её в очередь, чтобы не затрагивать другие обработчики в цепочке.
- [bpo-35719](https://python-all.ru/3/whatsnew/changelog.html): Увеличена скорость многоаргументных функций [`math`](https://python-all.ru/3/library/math.html#module-math) atan2(), copysign(), remainder() и hypot() в 1.3–2.5 раза.
- [bpo-35717](https://python-all.ru/3/whatsnew/changelog.html): Исправлено исключение KeyError, возникавшее при использовании перечислений и compile. Патч предоставлен Rémi Lapeyre.
- [bpo-35699](https://python-all.ru/3/whatsnew/changelog.html): Исправлено обнаружение Visual Studio Build Tools 2017 в distutils
- [bpo-32710](https://python-all.ru/3/whatsnew/changelog.html): Исправлена утечка памяти в asyncio ProactorEventLoop при сбое перекрывающейся операции.
- [bpo-35702](https://python-all.ru/3/whatsnew/changelog.html): Константа [`time.CLOCK_UPTIME_RAW`](https://python-all.ru/3/library/time.html#time.CLOCK_UPTIME_RAW) теперь доступна для macOS 10.12.
- [bpo-32710](https://python-all.ru/3/whatsnew/changelog.html): Исправлена утечка памяти в asyncio в ProactorEventLoop, когда `ReadFile()` или `WSASend()` перекрывающаяся операция немедленно завершается с ошибкой: освобождается внутренний буфер.
- [bpo-35682](https://python-all.ru/3/whatsnew/changelog.html): Исправлено `asyncio.ProactorEventLoop.sendfile()`: не предпринимать попыток установить результат внутреннего future, если он уже завершён.
- [bpo-35283](https://python-all.ru/3/whatsnew/changelog.html): Добавлено предупреждение об устаревании для метода `threading.Thread.isAlive()`. Патч от Donghee Na.
- [bpo-35664](https://python-all.ru/3/whatsnew/changelog.html): Повышена производительность operator.itemgetter() на 33% за счёт оптимизированной обработки аргументов и добавления быстрого пути для частого случая – одного неотрицательного целочисленного индекса в кортеже (что является типичным сценарием использования в стандартной библиотеке).
- [bpo-35643](https://python-all.ru/3/whatsnew/changelog.html): Исправлено SyntaxWarning: недопустимая управляющая последовательность в Modules/\_sha3/cleanup.py. Патч от Mickaël Schoentgen.
- [bpo-35619](https://python-all.ru/3/whatsnew/changelog.html): Улучшена поддержка пользовательских дескрипторов данных в [`help()`](https://python-all.ru/3/library/functions.html#help) и [`pydoc`](https://python-all.ru/3/library/pydoc.html#module-pydoc).
- [bpo-28503](https://python-all.ru/3/whatsnew/changelog.html): Модуль `crypt` теперь внутренне использует библиотечную функцию `crypt_r()` вместо `crypt()`, когда она доступна.
- [bpo-35614](https://python-all.ru/3/whatsnew/changelog.html): Исправлена работа help() для метаклассов. Патч от Sanyam Khurana.
- [bpo-35568](https://python-all.ru/3/whatsnew/changelog.html): Предоставлен `raise(signum)` как `raise_signal`
- [bpo-35588](https://python-all.ru/3/whatsnew/changelog.html): Операции целочисленного деления и взятия остатка, а также функция [`divmod()`](https://python-all.ru/3/library/functions.html#divmod) для типов [`fractions.Fraction`](https://python-all.ru/3/library/fractions.html#fractions.Fraction) выполняются в 2–4 раза быстрее. Патч от Stefan Behnel.
- [bpo-35585](https://python-all.ru/3/whatsnew/changelog.html): Ускорено построение перечислений по значению, например http.HTTPStatus(200).
- [bpo-30561](https://python-all.ru/3/whatsnew/changelog.html): random.gammavariate(1.0, beta) теперь вычисляет тот же результат, что и random.expovariate(1.0 / beta). Это синхронизирует два алгоритма и устраняет некоторые особенности старой реализации. Однако теперь генерируется другая последовательность случайных величин, чем раньше.
- [bpo-35537](https://python-all.ru/3/whatsnew/changelog.html): Модуль [`subprocess`](https://python-all.ru/3/library/subprocess.html#module-subprocess) теперь может использовать функцию [`os.posix_spawn()`](https://python-all.ru/3/library/os.html#os.posix_spawn) в некоторых случаях для повышения производительности.
- [bpo-35526](https://python-all.ru/3/whatsnew/changelog.html): Отсрочка «шутки» barry\_as\_FLUFL.mandatory до версии Python 4.0
- [bpo-35523](https://python-all.ru/3/whatsnew/changelog.html): Удалён обходной путь для колбэка [`ctypes`](https://python-all.ru/3/library/ctypes.html#module-ctypes): больше не создаётся колбэк при запуске. Предотвращается предупреждение SELinux о `import ctypes` и `import uuid`.
- [bpo-31784](https://python-all.ru/3/whatsnew/changelog.html): [`uuid.uuid1()`](https://python-all.ru/3/library/uuid.html#uuid.uuid1) теперь вызывает [`time.time_ns()`](https://python-all.ru/3/library/time.html#time.time_ns) вместо `int(time.time() * 1e9)`.
- [bpo-35513](https://python-all.ru/3/whatsnew/changelog.html): `TextTestRunner` из `unittest.runner` теперь использует [`time.perf_counter()`](https://python-all.ru/3/library/time.html#time.perf_counter) вместо [`time.time()`](https://python-all.ru/3/library/time.html#time.time) для измерения времени выполнения теста: `time.time()` может идти назад, тогда как `time.perf_counter()` является монотонным.
- [bpo-35502](https://python-all.ru/3/whatsnew/changelog.html): Исправлена утечка ссылок в [`xml.etree.ElementTree.TreeBuilder`](https://python-all.ru/3/library/xml.etree.elementtree.html#xml.etree.ElementTree.TreeBuilder) в случае незавершённого построения дерева (в частности, когда при разборе XML возникла ошибка).
- [bpo-35348](https://python-all.ru/3/whatsnew/changelog.html): Сделать разбор [`platform.architecture()`](https://python-all.ru/3/library/platform.html#platform.architecture) вывода команды `file` более надёжным: добавить опцию `-b` в команду `file`, чтобы опускать имя файла, принудительно использовать локаль C, а также искать шаблон «shared object».
- [bpo-35491](https://python-all.ru/3/whatsnew/changelog.html): [`multiprocessing`](https://python-all.ru/3/library/multiprocessing.html#module-multiprocessing): Добавлен `Pool.__repr__()` и улучшен `BaseProcess.__repr__()` (добавлены PID и PPID) для упрощения отладки. Значения констант состояния пула теперь строки, а не целые числа, например значение `RUN` становится `'RUN'` вместо `0`.
- [bpo-35477](https://python-all.ru/3/whatsnew/changelog.html): `multiprocessing.Pool.__enter__()` теперь завершается ошибкой, если пул не запущен: `with pool:` завершается ошибкой при повторном использовании.
- [bpo-31446](https://python-all.ru/3/whatsnew/changelog.html): Копировать командную строку, переданную в CreateProcessW, так как эта функция может изменить содержимое входного буфера.
- [bpo-35471](https://python-all.ru/3/whatsnew/changelog.html): Python 2.4 отказался от поддержки MacOS 9. Модуль macpath был помечен как устаревший в Python 3.7. Теперь модуль удалён.
- [bpo-23057](https://python-all.ru/3/whatsnew/changelog.html): Разблокировать цикл событий Proactor при получении прерывания с клавиатуры в Windows
- [bpo-35052](https://python-all.ru/3/whatsnew/changelog.html): Исправлен xml.dom.minidom cloneNode() для документа с сущностью: передавать корректные аргументы обработчику пользовательских данных сущности.
- [bpo-20239](https://python-all.ru/3/whatsnew/changelog.html): Разрешено повторное удаление присваивания атрибутов [`unittest.mock.Mock`](https://python-all.ru/3/library/unittest.mock.html#unittest.mock.Mock). Патч от Pablo Galindo.
- [bpo-17185](https://python-all.ru/3/whatsnew/changelog.html): Установка `__signature__` на mock для [`inspect`](https://python-all.ru/3/library/inspect.html#module-inspect) для получения сигнатуры. Исправление от Karthikeyan Singaravelan.
- [bpo-35445](https://python-all.ru/3/whatsnew/changelog.html): Ошибки памяти при создании posix.environ больше не игнорируются.
- [bpo-35415](https://python-all.ru/3/whatsnew/changelog.html): Проверка аргумента fileno= для socket.socket().
- [bpo-35424](https://python-all.ru/3/whatsnew/changelog.html): Деструктор `multiprocessing.Pool` теперь генерирует [`ResourceWarning`](https://python-all.ru/3/library/exceptions.html#ResourceWarning), если пул всё ещё работает.
- [bpo-35330](https://python-all.ru/3/whatsnew/changelog.html): Когда экземпляр `Mock` используется для обёртки объекта, если `side_effect` применяется в одном из моков его методов, не вызывать исходную реализацию и возвращать результат использования побочного эффекта так же, как это делается с return\_value.
- [bpo-35346](https://python-all.ru/3/whatsnew/changelog.html): Удалена поддержка Mac OS 9 и Rhapsody из модуля [`platform`](https://python-all.ru/3/library/platform.html#module-platform). Последний выпуск Rhapsody был в 2000 году. Mac OS 9 – в 2001.
- [bpo-10496](https://python-all.ru/3/whatsnew/changelog.html): `check_environ()` из `distutils.utils` теперь перехватывает [`KeyError`](https://python-all.ru/3/library/exceptions.html#KeyError) при вызове [`pwd.getpwuid()`](https://python-all.ru/3/library/pwd.html#pwd.getpwuid): не создавать переменную окружения `HOME` в этом случае.
- [bpo-10496](https://python-all.ru/3/whatsnew/changelog.html): `posixpath.expanduser()` теперь возвращает входной *путь* без изменений, если переменная окружения `HOME` не установлена и у текущего пользователя нет домашнего каталога (если идентификатор текущего пользователя отсутствует в базе данных паролей). Это изменение исправляет модуль [`site`](https://python-all.ru/3/library/site.html#module-site), если текущий пользователь отсутствует в базе данных паролей (если у пользователя нет домашнего каталога).
- [bpo-35389](https://python-all.ru/3/whatsnew/changelog.html): [`platform.libc_ver()`](https://python-all.ru/3/library/platform.html#platform.libc_ver) теперь использует `os.confstr('CS_GNU_LIBC_VERSION')`, если он доступен, и параметр *executable* не установлен.
- [bpo-35394](https://python-all.ru/3/whatsnew/changelog.html): Добавлены пустые слоты в абстрактные протоколы asyncio.
- [bpo-35310](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка в [`select.select()`](https://python-all.ru/3/library/select.html#select.select), когда в некоторых случаях последовательности файловых дескрипторов возвращались без изменений после прерывания сигналом, даже если файловые дескрипторы могли быть ещё не готовы. `select.select()` теперь всегда возвращает пустые списки, если произошёл тайм-аут. Исправление от Oran Avraham.
- [bpo-35380](https://python-all.ru/3/whatsnew/changelog.html): Включение TCP\_NODELAY в Windows для цикла событий asyncio proactor.
- [bpo-35341](https://python-all.ru/3/whatsnew/changelog.html): Добавлена обобщённая версия `collections.OrderedDict` в модуль `typing`. Исправление от Ismo Toijala.
- [bpo-35371](https://python-all.ru/3/whatsnew/changelog.html): Исправлена возможная аварийная остановка в `os.utime()` в Windows при передаче некорректных аргументов.
- [bpo-35346](https://python-all.ru/3/whatsnew/changelog.html): [`platform.uname()`](https://python-all.ru/3/library/platform.html#platform.uname) теперь перенаправляет `stderr` в [`os.devnull`](https://python-all.ru/3/library/os.html#os.devnull) при запуске внешних программ, таких как `cmd /c ver`.
- [bpo-35066](https://python-all.ru/3/whatsnew/changelog.html): Ранее вызов метода strftime() для объекта datetime с завершающим символом '%' в строке формата приводил к исключению. Однако это происходило только при использовании C-модуля datetime; реализация на Python не соответствовала такому поведению. Теперь datetime соответствует PEP-399 и не будет выбрасывать исключение на завершающий '%'.
- [bpo-35345](https://python-all.ru/3/whatsnew/changelog.html): Функция `platform.popen` удалена; она была устаревшей, начиная с Python 3.3: используйте [`os.popen()`](https://python-all.ru/3/library/os.html#os.popen) вместо неё.
- [bpo-35344](https://python-all.ru/3/whatsnew/changelog.html): На macOS [`platform.platform()`](https://python-all.ru/3/library/platform.html#platform.platform) теперь использует [`platform.mac_ver()`](https://python-all.ru/3/library/platform.html#platform.mac_ver), если он возвращает непустую строку релиза, для получения версии macOS, а не версии Darwin.
- [bpo-35312](https://python-all.ru/3/whatsnew/changelog.html): Сделать `lib2to3.pgen2.parse.ParseError` сериализуемым через pickle (round-trip). Исправление от Anthony Sottile.
- [bpo-35308](https://python-all.ru/3/whatsnew/changelog.html): Исправлена регрессия в `webbrowser`, когда браузеры по умолчанию могли получать приоритет перед браузерами из переменной окружения `BROWSER`.
- [bpo-24746](https://python-all.ru/3/whatsnew/changelog.html): Избегать удаления завершающих пробелов в fancy diff для doctest. Оригинальное исправление от R. David Murray и Jairo Trad. Улучшено Sanyam Khurana.
- [bpo-28604](https://python-all.ru/3/whatsnew/changelog.html): [`locale.localeconv()`](https://python-all.ru/3/library/locale.html#locale.localeconv) теперь временно устанавливает локаль `LC_CTYPE` в локаль `LC_MONETARY`, если две локали различаются и денежные строки не-ASCII. Это временное изменение влияет на другие потоки.
- [bpo-35277](https://python-all.ru/3/whatsnew/changelog.html): Обновлён ensurepip для установки pip 18.1 и setuptools 40.6.2.
- [bpo-24209](https://python-all.ru/3/whatsnew/changelog.html): Добавлена поддержка IPv6 при прямом вызове http.server.
- [bpo-35226](https://python-all.ru/3/whatsnew/changelog.html): Рекурсивно проверять аргументы при проверке равенства объектов [`unittest.mock.call`](https://python-all.ru/3/library/unittest.mock.html#unittest.mock.call) и добавить примечание, что отслеживание параметров, используемых для создания предков моков в `mock_calls`, невозможно.
- [bpo-29564](https://python-all.ru/3/whatsnew/changelog.html): Модуль warnings теперь предлагает включить tracemalloc, если указан источник, модуль tracemalloc доступен, но tracemalloc не отслеживает выделения памяти.
- [bpo-35189](https://python-all.ru/3/whatsnew/changelog.html): Изменены следующие функции fnctl для повторной попытки при прерывании сигналом (EINTR): flock, lockf, fnctl
- [bpo-30064](https://python-all.ru/3/whatsnew/changelog.html): Использовать add\_done\_callback() в sock\_\* API asyncio для отмены подписки читателя/писателя при отмене.
- [bpo-35186](https://python-all.ru/3/whatsnew/changelog.html): Удалён комментарий «built with», добавляемый при использовании `setup.py upload` с `bdist_rpm` или `bdist_dumb`.
- [bpo-35152](https://python-all.ru/3/whatsnew/changelog.html): Разрешена отправка более 2 ГБ за раз через соединение multiprocessing в системах, отличных от Windows.
- [bpo-35062](https://python-all.ru/3/whatsnew/changelog.html): Исправлено некорректное разбор аргумента *translate* у [`io.IncrementalNewlineDecoder`](https://python-all.ru/3/library/io.html#io.IncrementalNewlineDecoder).
- [bpo-35065](https://python-all.ru/3/whatsnew/changelog.html): Удалён `StreamReaderProtocol._untrack_reader`. Вызов `_untrack_reader` в настоящее время выполняется слишком рано, из-за чего протокол забывает о читателе до того, как `connection_lost` может запуститься и передать EOF читателю.
- [bpo-34160](https://python-all.ru/3/whatsnew/changelog.html): ElementTree и minidom теперь сохраняют порядок атрибутов, указанный пользователем.
- [bpo-35079](https://python-all.ru/3/whatsnew/changelog.html): Улучшена документация difflib.SequenceManager.get\_matching\_blocks: добавлено слово «non-overlapping» и изменён «!=» на «\<».
- [bpo-33710](https://python-all.ru/3/whatsnew/changelog.html): Устарели функции и методы `l*gettext()` в модуле [`gettext`](https://python-all.ru/3/library/gettext.html#module-gettext). Они возвращают закодированные байты вместо строк Unicode и являются артефактами времён Python 2. Также устарели функции и методы, связанные с установкой кодировки для функций и методов `l*gettext()`.
- [bpo-35017](https://python-all.ru/3/whatsnew/changelog.html): [`socketserver.BaseServer.serve_forever()`](https://python-all.ru/3/library/socketserver.html#socketserver.BaseServer.serve_forever) теперь завершается немедленно, если его метод [`shutdown()`](https://python-all.ru/3/library/socketserver.html#socketserver.BaseServer.shutdown) вызывается во время опроса новых событий.
- [bpo-35024](https://python-all.ru/3/whatsnew/changelog.html): `importlib` больше не регистрирует `wrote <bytecode path>` избыточно после того, как `(created|could not create) <bytecode path>` уже зарегистрирован. Патч от Quentin Agren.
- [bpo-35047](https://python-all.ru/3/whatsnew/changelog.html): `unittest.mock` теперь включает mock-вызовы в сообщения об исключениях, если `assert_not_called`, `assert_called_once` или `assert_called_once_with` завершается неудачей. Патч от Petter Strandmark.
- [bpo-31047](https://python-all.ru/3/whatsnew/changelog.html): Исправлена регрессия в `ntpath.abspath`, когда он не удалял конечный разделитель в Windows. Патч от Tim Graham.
- [bpo-35053](https://python-all.ru/3/whatsnew/changelog.html): tracemalloc теперь пытается обновить трассировку, когда объект повторно используется из «списка свободных» (оптимизация для более быстрого создания объектов, используемая, например, встроенным типом list).
- [bpo-31553](https://python-all.ru/3/whatsnew/changelog.html): Добавлена опция –json-lines в json.tool. Патч от hongweipeng.
- [bpo-34794](https://python-all.ru/3/whatsnew/changelog.html): Исправлена утечка в Tkinter при передаче Python-оболочки вокруг Tcl\_Obj обратно в Tcl/Tk.
- [bpo-34909](https://python-all.ru/3/whatsnew/changelog.html): Enum: исправлено наследование «внуков» при смешивании родителя с конкретными типами данных.
- [bpo-35022](https://python-all.ru/3/whatsnew/changelog.html): [`unittest.mock.MagicMock`](https://python-all.ru/3/library/unittest.mock.html#unittest.mock.MagicMock) теперь поддерживает метод `__fspath__` (из [`os.PathLike`](https://python-all.ru/3/library/os.html#os.PathLike)).
- [bpo-35008](https://python-all.ru/3/whatsnew/changelog.html): Исправлена утечка ссылок при вызове метода `__setstate__()` объекта [`xml.etree.ElementTree.Element`](https://python-all.ru/3/library/xml.etree.elementtree.html#xml.etree.ElementTree.Element) в C-реализации для уже инициализированного элемента.
- [bpo-23420](https://python-all.ru/3/whatsnew/changelog.html): Проверка значения параметра «-s» интерфейса командной строки cProfile. Патч от Robert Kuska.
- [bpo-33947](https://python-all.ru/3/whatsnew/changelog.html): датаклассы теперь обрабатывают рекурсивные вызовы repr без возникновения RecursionError.
- [bpo-34890](https://python-all.ru/3/whatsnew/changelog.html): Обеспечена работа [`inspect.iscoroutinefunction()`](https://python-all.ru/3/library/inspect.html#inspect.iscoroutinefunction), [`inspect.isgeneratorfunction()`](https://python-all.ru/3/library/inspect.html#inspect.isgeneratorfunction) и [`inspect.isasyncgenfunction()`](https://python-all.ru/3/library/inspect.html#inspect.isasyncgenfunction) с [`functools.partial()`](https://python-all.ru/3/library/functools.html#functools.partial). Патч от Pablo Galindo.
- [bpo-34521](https://python-all.ru/3/whatsnew/changelog.html): Для вычисления размера вспомогательных данных используется [`socket.CMSG_SPACE()`](https://python-all.ru/3/library/socket.html#socket.CMSG_SPACE) вместо [`socket.CMSG_LEN()`](https://python-all.ru/3/library/socket.html#socket.CMSG_LEN) в `multiprocessing.reduction.recvfds()`, так как [**RFC 3542**](https://python-all.ru/3/whatsnew/changelog.html) требует использования первого для переносимых приложений.
- [bpo-31522](https://python-all.ru/3/whatsnew/changelog.html): Параметр *from\_* функции `mailbox.mbox.get_string` теперь можно успешно установить в нестандартное значение.
- [bpo-34970](https://python-all.ru/3/whatsnew/changelog.html): Защита манипуляций со слабым множеством задач в `asyncio.all_tasks()`.
- [bpo-34969](https://python-all.ru/3/whatsnew/changelog.html): gzip: Добавлены параметры –fast, –best в интерфейс командной строки gzip; эти параметры будут использоваться для быстрого метода сжатия (quick) или наилучшего метода сжатия (медленнее, но файл меньше). Также изменён уровень сжатия по умолчанию на 6 (компромисс).
- [bpo-16965](https://python-all.ru/3/whatsnew/changelog.html): Фиксер 2to3 `execfile` теперь открывает файл с режимом `'rb'`. Патч от Zackery Spytz.
- [bpo-34966](https://python-all.ru/3/whatsnew/changelog.html): [`pydoc`](https://python-all.ru/3/library/pydoc.html#module-pydoc) теперь поддерживает псевдонимы не только для методов, определённых в конечном классе, но и для унаследованных методов. Строка документации не дублируется для псевдонимов.
- [bpo-34926](https://python-all.ru/3/whatsnew/changelog.html): [`mimetypes.MimeTypes.guess_type()`](https://python-all.ru/3/library/mimetypes.html#mimetypes.MimeTypes.guess_type) теперь принимает [объект, подобный пути](https://python-all.ru/3/glossary.html#term-path-like-object) в дополнение к строкам URL. Патч от Mayank Asthana.
- [bpo-23831](https://python-all.ru/3/whatsnew/changelog.html): Добавлен метод `moveto()` к виджету `tkinter.Canvas`. Патч от Juliette Monsel.
- [bpo-34941](https://python-all.ru/3/whatsnew/changelog.html): Методы `find()`, `findtext()` и `findall()` класса `Element` в модуле [`xml.etree.ElementTree`](https://python-all.ru/3/library/xml.etree.elementtree.html#module-xml.etree.ElementTree) теперь могут находить дочерние элементы, которые являются экземплярами подклассов `Element`.
- [bpo-32680](https://python-all.ru/3/whatsnew/changelog.html): Объекты [`smtplib.SMTP`](https://python-all.ru/3/library/smtplib.html#smtplib.SMTP) теперь всегда имеют атрибут `sock`.
- [bpo-34769](https://python-all.ru/3/whatsnew/changelog.html): Исправление для асинхронных генераторов, не выполняющих финализацию, когда цикл событий находится в режиме отладки, а сборщик мусора работает в другом потоке.
- [bpo-34936](https://python-all.ru/3/whatsnew/changelog.html): Исправлен `TclError` в `tkinter.Spinbox.selection_element()`. Патч от Juliette Monsel.
- [bpo-34829](https://python-all.ru/3/whatsnew/changelog.html): Добавлены методы `selection_from`, `selection_range`, `selection_present` и `selection_to` к виджету `tkinter.Spinbox` для согласованности с виджетом `tkinter.Entry`. Патч от Juliette Monsel.
- [bpo-34911](https://python-all.ru/3/whatsnew/changelog.html): Добавлен аргумент *secure\_protocols* в *http.cookiejar.DefaultCookiePolicy* для настройки протоколов и добавления поддержки по умолчанию для *wss*, защищённого протокола websocket.
- [bpo-34922](https://python-all.ru/3/whatsnew/changelog.html): Исправлено целочисленное переполнение в методах [`digest()`](https://python-all.ru/3/library/hashlib.html#hashlib.shake.digest) и [`hexdigest()`](https://python-all.ru/3/library/hashlib.html#hashlib.shake.hexdigest) для алгоритма SHAKE в модуле [`hashlib`](https://python-all.ru/3/library/hashlib.html#module-hashlib).
- [bpo-34925](https://python-all.ru/3/whatsnew/changelog.html): Ускорение разбора аргументов для функций в модуле bisect на 25%.
- [bpo-34900](https://python-all.ru/3/whatsnew/changelog.html): Исправлена [`unittest.TestCase.debug()`](https://python-all.ru/3/library/unittest.html#unittest.TestCase.debug) при использовании для вызова тестовых методов с подтестами. Исправление от Bruno Oliveira.
- [bpo-34844](https://python-all.ru/3/whatsnew/changelog.html): Улучшение logging.Formatter – гарантия соответствия стилей и fmt в logging.Formatter – добавлен метод validate в каждый класс стиля форматирования: StrFormatStyle, PercentStyle, StringTemplateStyle. – Этот метод вызывается в конструкторе класса logging.Formatter – также повторно возбуждается KeyError в методе format каждого класса стиля, чтобы было яснее, что это ошибка из-за неверных полей формата.
- [bpo-34897](https://python-all.ru/3/whatsnew/changelog.html): Изменена проверка test.support.missing\_compiler\_executable, чтобы пустое имя команды («») игнорировалось. Исправление от Michael Felt.
- [bpo-34871](https://python-all.ru/3/whatsnew/changelog.html): Исправлено загрязнение модуля inspect `sys.modules` при разборе `__text_signature__` вызываемого объекта.
- [bpo-34898](https://python-all.ru/3/whatsnew/changelog.html): Добавлен аргумент `mtime` к `gzip.compress` для воспроизводимого вывода. Исправление от Guo Ci Teo.
- [bpo-28441](https://python-all.ru/3/whatsnew/changelog.html): В Cygwin и MinGW теперь гарантируется, что `sys.executable` всегда включает полное имя файла в путь, включая суффикс `.exe` (если это не символическая ссылка).
- [bpo-34866](https://python-all.ru/3/whatsnew/changelog.html): Добавление `max_num_fields` в `cgi.FieldStorage` для усложнения DOS-атак путём ограничения количества объектов `MiniFieldStorage`, создаваемых `FieldStorage`.
- [bpo-34711](https://python-all.ru/3/whatsnew/changelog.html): http.server теперь гарантированно возвращает HTTPStatus.NOT\_FOUND, когда локальный путь заканчивается на «/» и не является каталогом, даже если базовая ОС (например, AIX) считает такие пути допустимыми ссылками на файлы. Исправление от Michael Felt.
- [bpo-34872](https://python-all.ru/3/whatsnew/changelog.html): Исправлена самоотмена в C-реализации asyncio.Task
- [bpo-34849](https://python-all.ru/3/whatsnew/changelog.html): Больше не логируется ожидание `selector.select` в итерации цикла asyncio. Ожидание – обычное дело для любой asyncio-программы, логирование его времени только засоряет логи, не предоставляя полезной информации.
- [bpo-34022](https://python-all.ru/3/whatsnew/changelog.html): Переменная окружения `SOURCE_DATE_EPOCH` больше не переопределяет значение аргумента *invalidation\_mode* для [`py_compile.compile()`](https://python-all.ru/3/library/py_compile.html#py_compile.compile), а вместо этого определяет его значение по умолчанию.
- [bpo-34819](https://python-all.ru/3/whatsnew/changelog.html): Используются монотонные часы для вычисления тайм-аутов в `Executor.map()` и `as_completed()`, чтобы предотвратить отклонение тайм-аутов при корректировке системных часов.
- [bpo-34758](https://python-all.ru/3/whatsnew/changelog.html): Добавлено .wasm -\> application/wasm в список распознаваемых типов файлов и заголовков content-type
- [bpo-34789](https://python-all.ru/3/whatsnew/changelog.html): [`xml.sax.make_parser()`](https://python-all.ru/3/library/xml.sax.html#xml.sax.make_parser) теперь принимает любой итерируемый объект в качестве аргумента *parser\_list*. Исправление от Andrés Delfino.
- [bpo-34334](https://python-all.ru/3/whatsnew/changelog.html): В `QueueHandler` очищается `exc_text` из `LogRecord`, чтобы предотвратить двойную запись traceback.
- [bpo-34687](https://python-all.ru/3/whatsnew/changelog.html): В Windows asyncio теперь по умолчанию использует ProactorEventLoop вместо SelectorEventLoop.
- [bpo-5950](https://python-all.ru/3/whatsnew/changelog.html): Поддержка чтения zip-файлов с комментариями архива в [`zipimport`](https://python-all.ru/3/library/zipimport.html#module-zipimport).
- [bpo-32892](https://python-all.ru/3/whatsnew/changelog.html): Парсер теперь представляет все константы как [`ast.Constant`](https://python-all.ru/3/library/ast.html#ast.Constant) вместо использования конкретных типов констант AST (`Num`, `Str`, `Bytes`, `NameConstant` и `Ellipsis`). Эти классы считаются устаревшими и будут удалены в будущих версиях Python.
- [bpo-34728](https://python-all.ru/3/whatsnew/changelog.html): Добавлено предупреждение об устаревании при использовании `loop` в методах: `asyncio.sleep`, `asyncio.wait` и `asyncio.wait_for`.
- [bpo-34738](https://python-all.ru/3/whatsnew/changelog.html): ZIP-файлы, созданные `distutils`, теперь будут включать записи для каталогов.
- [bpo-34659](https://python-all.ru/3/whatsnew/changelog.html): Добавлен необязательный аргумент *initial* в itertools.accumulate().
- [bpo-29577](https://python-all.ru/3/whatsnew/changelog.html): Поддержка нескольких примесных классов при создании перечислений.
- [bpo-34670](https://python-all.ru/3/whatsnew/changelog.html): Добавлены SSLContext.post\_handshake\_auth и SSLSocket.verify\_client\_post\_handshake для функции аутентификации после рукопожатия TLS 1.3.
- [bpo-32718](https://python-all.ru/3/whatsnew/changelog.html): Сценарий Activate.ps1 из venv работает с PowerShell Core 6.1 и теперь доступен во всех операционных системах.
- [bpo-31177](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка, препятствовавшая использованию [`reset_mock`](https://python-all.ru/3/library/unittest.mock.html#unittest.mock.Mock.reset_mock) на экземплярах mock с удалёнными атрибутами
- [bpo-34672](https://python-all.ru/3/whatsnew/changelog.html): Добавлен обходной путь, чтобы спецификатор `'Z'` [`time.strftime()`](https://python-all.ru/3/library/time.html#time.strftime) в библиотеке C musl мог работать в некоторых случаях.
- [bpo-34666](https://python-all.ru/3/whatsnew/changelog.html): Реализованы корутины `asyncio.StreamWriter.awrite` и `asyncio.StreamWriter.aclose()`. Эти методы необходимы для предоставления согласованного API потоков с включённым по умолчанию управлением потоком выполнения.
- [bpo-6721](https://python-all.ru/3/whatsnew/changelog.html): Захватывать часто используемые внутренние блокировки модуля logging при вызове fork(), чтобы избежать взаимоблокировок в дочернем процессе.
- [bpo-34658](https://python-all.ru/3/whatsnew/changelog.html): Исправлено редкое состояние необработанного исключения интерпретатора SystemError, возникавшее только при использовании подпроцесса с preexec\_fn, когда обработчик after\_parent был зарегистрирован через os.register\_at\_fork и системный вызов fork завершался ошибкой.
- [bpo-34652](https://python-all.ru/3/whatsnew/changelog.html): Гарантируется, что [`os.lchmod()`](https://python-all.ru/3/library/os.html#os.lchmod) никогда не определяется в Linux.
- [bpo-34638](https://python-all.ru/3/whatsnew/changelog.html): Хранить слабую ссылку на объект чтения потока, чтобы разорвать цикл сильных ссылок между читателем и протоколом. Это позволяет обнаружить и закрыть сокет, если поток удаляется (сборщиком мусора) без вызова `close()`.
- [bpo-34536](https://python-all.ru/3/whatsnew/changelog.html): `Enum._missing_`: возбуждать `ValueError`, если возвращено None, и `TypeError`, если возвращён не член.
- [bpo-34636](https://python-all.ru/3/whatsnew/changelog.html): Ускорено сканирование re для множества несовпадающих символов для \\s, \\w и \\d в байтовых объектах (микрооптимизация).
- [bpo-24412](https://python-all.ru/3/whatsnew/changelog.html): Добавлены [`addModuleCleanup()`](https://python-all.ru/3/library/unittest.html#unittest.addModuleCleanup) и [`addClassCleanup()`](https://python-all.ru/3/library/unittest.html#unittest.TestCase.addClassCleanup) в unittest для поддержки очистки для [`setUpModule()`](https://python-all.ru/3/library/unittest.html#unittest.setUpModule) и [`setUpClass()`](https://python-all.ru/3/library/unittest.html#unittest.TestCase.setUpClass). Патч от Lisa Roach.
- [bpo-34630](https://python-all.ru/3/whatsnew/changelog.html): Не логировать ошибки SSL-сертификатов в коде asyncio (логирование ошибок соединения уже пропускается).
- [bpo-32490](https://python-all.ru/3/whatsnew/changelog.html): Предотвращено дублирование имени файла в сообщениях исключения [`subprocess`](https://python-all.ru/3/library/subprocess.html#module-subprocess). Патч от Zackery Spytz.
- [bpo-34363](https://python-all.ru/3/whatsnew/changelog.html): dataclasses.asdict() и .astuple() теперь корректно обрабатывают именованные кортежи.
- [bpo-34625](https://python-all.ru/3/whatsnew/changelog.html): Обновлена версия вендоризированной библиотеки expat до 2.2.6.
- [bpo-32270](https://python-all.ru/3/whatsnew/changelog.html): Модуль подпроцесса больше не закрывает ошибочно перенаправленные файловые дескрипторы, даже если они были в pass\_fds, когда находились вне набора по умолчанию {0, 1, 2}.
- [bpo-34622](https://python-all.ru/3/whatsnew/changelog.html): Созданы отдельные классы исключений `asyncio.CancelledError`, `asyncio.InvalidStateError` и `asyncio.TimeoutError`. Они наследуются от соответствующих исключений из пакета `concurrent.futures`. Исключения `asyncio` вынесены в отдельный файл.
- [bpo-34610](https://python-all.ru/3/whatsnew/changelog.html): Исправлен итератор `multiprocessing.managers.DictProxy`.
- [bpo-34421](https://python-all.ru/3/whatsnew/changelog.html): Исправлено логирование distutils для не-ASCII строк. Это вызывало проблемы установки в Windows.
- [bpo-34604](https://python-all.ru/3/whatsnew/changelog.html): Исправлена возможная кракозябра в сообщении об ошибке `pwd.getpwnam` и `grp.getgrnam` при использовании строкового представления из-за невидимых символов или завершающих пробелов. Патч от William Grzybowski.
- [bpo-30977](https://python-all.ru/3/whatsnew/changelog.html): Изменено uuid.UUID, чтобы использовать `__slots__` для уменьшения потребления памяти. Основано на оригинальном патче от Wouter Bolsterlee.
- [bpo-34574](https://python-all.ru/3/whatsnew/changelog.html): Итераторы упорядоченного словаря больше не исчерпываются при сериализации pickle. Патч от Sergey Fedoseev.
- [bpo-8110](https://python-all.ru/3/whatsnew/changelog.html): Проведен рефакторинг [`subprocess`](https://python-all.ru/3/library/subprocess.html#module-subprocess) для проверки Windows-специфичных модулей вместо `sys.platform == 'win32'`.
- [bpo-34530](https://python-all.ru/3/whatsnew/changelog.html): `distutils.spawn.find_executable()` теперь использует [`os.defpath`](https://python-all.ru/3/library/os.html#os.defpath) как запасной вариант, если переменная окружения `PATH` не установлена.
- [bpo-34563](https://python-all.ru/3/whatsnew/changelog.html): В Windows исправлено multiprocessing.Connection для очень больших чтений: исправлены \_winapi.PeekNamedPipe() и \_winapi.ReadFile() для чтения больше INT\_MAX (обычно `2**31-1`).
- [bpo-34558](https://python-all.ru/3/whatsnew/changelog.html): Исправлена опечатка в Lib/ctypes/\_aix.py
- [bpo-34282](https://python-all.ru/3/whatsnew/changelog.html): Перемещён `Enum._convert` в `EnumMeta._convert_` и исправлено затенение элементов enum атрибутами родительского класса.
- [bpo-22872](https://python-all.ru/3/whatsnew/changelog.html): Теперь при закрытии очереди [`multiprocessing.Queue.put()`](https://python-all.ru/3/library/multiprocessing.html#multiprocessing.Queue.put) и [`multiprocessing.Queue.get()`](https://python-all.ru/3/library/multiprocessing.html#multiprocessing.Queue.get) генерируют [`ValueError`](https://python-all.ru/3/library/exceptions.html#ValueError) вместо [`AssertionError`](https://python-all.ru/3/library/exceptions.html#AssertionError) и [`OSError`](https://python-all.ru/3/library/exceptions.html#OSError) соответственно. Патч от Zackery Spytz.
- [bpo-34515](https://python-all.ru/3/whatsnew/changelog.html): Исправлен разбор не-ASCII идентификаторов в `lib2to3.pgen2.tokenize` ([**PEP 3131**](https://python-all.ru/3/whatsnew/changelog.html)).
- [bpo-13312](https://python-all.ru/3/whatsnew/changelog.html): Предотвращено возможное целочисленное переполнение в меньшую сторону (неопределённое поведение) в коде обработки года модуля time при передаче очень малого отрицательного значения года.
- [bpo-34472](https://python-all.ru/3/whatsnew/changelog.html): Улучшена совместимость для потоковых файлов в [`zipfile`](https://python-all.ru/3/library/zipfile.html#module-zipfile). Ранее не записывалась необязательная сигнатура и не поддерживались некоторые ZIP-приложения. Патч от Silas Sewell.
- [bpo-34454](https://python-all.ru/3/whatsnew/changelog.html): Исправлено падение методов .fromisoformat() типов datetime при передаче unicode с кодовыми точками, не кодируемыми в UTF-8. В частности, datetime.fromisoformat() теперь принимает суррогатные кодовые точки unicode, используемые как разделитель. Отчёт и тесты от Alexey Izbyshev, патч от Paul Ganssle.
- [bpo-6700](https://python-all.ru/3/whatsnew/changelog.html): Исправлен inspect.getsourcelines для фреймов и трассировок уровня модуля. Патч от Vladimir Matveev.
- [bpo-34171](https://python-all.ru/3/whatsnew/changelog.html): Запуск модуля [`trace`](https://python-all.ru/3/library/trace.html#module-trace) больше не создаёт файл `trace.cover`.
- [bpo-34441](https://python-all.ru/3/whatsnew/changelog.html): Исправлен сбой при передаче класса, производного от `ABC`, с недопустимым `__subclasses__` в качестве второго аргумента в [`issubclass()`](https://python-all.ru/3/library/functions.html#issubclass). Патч от Alexey Izbyshev.
- [bpo-34427](https://python-all.ru/3/whatsnew/changelog.html): Исправлен бесконечный цикл в `a.extend(a)` для подклассов `MutableSequence`.
- [bpo-34412](https://python-all.ru/3/whatsnew/changelog.html): Обеспечена работа [`signal.strsignal()`](https://python-all.ru/3/library/signal.html#signal.strsignal) на HP-UX. Патч от Michael Osipov.
- [bpo-20849](https://python-all.ru/3/whatsnew/changelog.html): shutil.copytree теперь принимает новый именованный аргумент `dirs_exist_ok`. Патч от Josh Bronson.
- [bpo-31715](https://python-all.ru/3/whatsnew/changelog.html): Расширение файла `.mjs` связано с MIME-типом `application/javascript`.
- [bpo-34384](https://python-all.ru/3/whatsnew/changelog.html): [`os.readlink()`](https://python-all.ru/3/library/os.html#os.readlink) теперь принимает [path-like](https://python-all.ru/3/glossary.html#term-path-like-object) и [`bytes`](https://python-all.ru/3/library/stdtypes.html#bytes) объекты в Windows.
- [bpo-22602](https://python-all.ru/3/whatsnew/changelog.html): Декодер UTF-7 теперь генерирует [`UnicodeDecodeError`](https://python-all.ru/3/library/exceptions.html#UnicodeDecodeError) для некорректных последовательностей, начинающихся с «+» (как указано в RFC 2152). Патч от Zackery Spytz.
- [bpo-2122](https://python-all.ru/3/whatsnew/changelog.html): Метод [`mmap.flush()`](https://python-all.ru/3/library/mmap.html#mmap.mmap.flush) теперь возвращает `None` в случае успеха и вызывает исключение при ошибке на всех платформах.
- [bpo-34341](https://python-all.ru/3/whatsnew/changelog.html): Добавление в ZIP-архив с расширением ZIP64 больше не увеличивает размер дополнительных полей существующих записей.
- [bpo-34333](https://python-all.ru/3/whatsnew/changelog.html): Исправлено %-форматирование в [`pathlib.PurePath.with_suffix()`](https://python-all.ru/3/library/pathlib.html#pathlib.PurePath.with_suffix) при форматировании сообщения об ошибке.
- [bpo-18540](https://python-all.ru/3/whatsnew/changelog.html): Классы [`imaplib.IMAP4`](https://python-all.ru/3/library/imaplib.html#imaplib.IMAP4) и [`imaplib.IMAP4_SSL`](https://python-all.ru/3/library/imaplib.html#imaplib.IMAP4_SSL) теперь правильно определяют IP-адрес локального хоста, когда используется значение по умолчанию параметра *host* (`''`).
- [bpo-26502](https://python-all.ru/3/whatsnew/changelog.html): Реализован метод `traceback.FrameSummary.__len__()` для сохранения совместимости со старым API кортежей.
- [bpo-34318](https://python-all.ru/3/whatsnew/changelog.html): [`assertRaises()`](https://python-all.ru/3/library/unittest.html#unittest.TestCase.assertRaises), [`assertRaisesRegex()`](https://python-all.ru/3/library/unittest.html#unittest.TestCase.assertRaisesRegex), [`assertWarns()`](https://python-all.ru/3/library/unittest.html#unittest.TestCase.assertWarns) и [`assertWarnsRegex()`](https://python-all.ru/3/library/unittest.html#unittest.TestCase.assertWarnsRegex) больше не считаются успешными, если переданный вызываемый объект равен None. Они больше не игнорируют неизвестные именованные аргументы в режиме менеджера контекста. Начиная с Python 3.5 в этих случаях выдавалось предупреждение DeprecationWarning.
- [bpo-9372](https://python-all.ru/3/whatsnew/changelog.html): Устарели методы [`__getitem__()`](https://python-all.ru/3/reference/datamodel.html#object.__getitem__) классов [`xml.dom.pulldom.DOMEventStream`](https://python-all.ru/3/library/xml.dom.pulldom.html#xml.dom.pulldom.DOMEventStream), [`wsgiref.util.FileWrapper`](https://python-all.ru/3/library/wsgiref.html#wsgiref.util.FileWrapper) и [`fileinput.FileInput`](https://python-all.ru/3/library/fileinput.html#fileinput.FileInput).
- [bpo-33613](https://python-all.ru/3/whatsnew/changelog.html): Исправлено состояние гонки в `multiprocessing.semaphore_tracker`, когда трекер получает SIGINT до того, как сможет зарегистрировать обработчики сигналов для его игнорирования.
- [bpo-34248](https://python-all.ru/3/whatsnew/changelog.html): Имя файла теперь сообщается в исключении, когда файл базы данных не может быть открыт с помощью [`dbm.gnu.open()`](https://python-all.ru/3/library/dbm.html#dbm.gnu.open) и [`dbm.ndbm.open()`](https://python-all.ru/3/library/dbm.html#dbm.ndbm.open) из-за ошибки, связанной с ОС. Патч от Zsolt Cserna.
- [bpo-33089](https://python-all.ru/3/whatsnew/changelog.html): Добавлена функция math.dist() для вычисления евклидова расстояния между двумя точками.
- [bpo-34246](https://python-all.ru/3/whatsnew/changelog.html): [`smtplib.SMTP.send_message()`](https://python-all.ru/3/library/smtplib.html#smtplib.SMTP.send_message) больше не изменяет содержимое аргумента *mail\_options*. Патч от Pablo S. Blum de Aguiar.
- [bpo-31047](https://python-all.ru/3/whatsnew/changelog.html): Исправлен `ntpath.abspath` для недопустимых путей в Windows. Патч от Franz Woellert.
- [bpo-32321](https://python-all.ru/3/whatsnew/changelog.html): Добавлена реализация на чистом Python для functools.reduce. Патч от Robert Wright.
- [bpo-34270](https://python-all.ru/3/whatsnew/changelog.html): Класс задачи asyncio по умолчанию теперь всегда имеет имя, которое можно получить или установить с помощью двух новых методов ([`get_name()`](https://python-all.ru/3/library/asyncio-task.html#asyncio.Task.get_name) и [`set_name()`](https://python-all.ru/3/library/asyncio-task.html#asyncio.Task.set_name)), и оно отображается в выводе [`repr()`](https://python-all.ru/3/library/functions.html#repr). Начальное имя также можно задать с помощью нового именованного аргумента `name` для [`asyncio.create_task()`](https://python-all.ru/3/library/asyncio-task.html#asyncio.create_task) или метода `create_task()` цикла событий. Если начальное имя не задано, реализация задачи по умолчанию генерирует имя вида `Task-1`, используя монотонный счётчик.
- [bpo-34263](https://python-all.ru/3/whatsnew/changelog.html): Цикл событий asyncio больше не будет передавать таймауты длиннее одного дня в epoll/select и т.д.
- [bpo-34035](https://python-all.ru/3/whatsnew/changelog.html): Исправлено несколько AttributeError в методах seek() модуля zipfile. Патч от Mickaël Schoentgen.
- [bpo-32215](https://python-all.ru/3/whatsnew/changelog.html): Исправлена регрессия производительности в [`sqlite3`](https://python-all.ru/3/library/sqlite3.html#module-sqlite3), когда оператор DML находился в другой строке, чем остальная часть SQL-запроса.
- [bpo-34075](https://python-all.ru/3/whatsnew/changelog.html): Устарела передача экземпляров, не являющихся ThreadPoolExecutor, в `AbstractEventLoop.set_default_executor()`.
- [bpo-34251](https://python-all.ru/3/whatsnew/changelog.html): Восстановлен `msilib.Win64` для сохранения обратной совместимости, поскольку он уже используется командой `distutils`' `bdist_msi`.
- [bpo-19891](https://python-all.ru/3/whatsnew/changelog.html): Игнорируются ошибки, вызванные отсутствующей или недоступной для записи домашней директорией при записи истории во время выхода из интерактивного сеанса. Патч от Anthony Sottile.
- [bpo-33089](https://python-all.ru/3/whatsnew/changelog.html): Улучшена math.hypot() для поддержки более двух измерений.
- [bpo-34228](https://python-all.ru/3/whatsnew/changelog.html): tracemalloc: переменная окружения PYTHONTRACEMALLOC=0 и опция командной строки -X tracemalloc=0 теперь позволяют явно отключить tracemalloc при запуске.
- [bpo-13041](https://python-all.ru/3/whatsnew/changelog.html): Используется [`shutil.get_terminal_size()`](https://python-all.ru/3/library/shutil.html#shutil.get_terminal_size) для правильного вычисления ширины терминала в классе `argparse.HelpFormatter`. Первоначальный патч от Zbyszek Jędrzejewski-Szmek.
- [bpo-34213](https://python-all.ru/3/whatsnew/changelog.html): Замороженные датаклассы теперь могут иметь поле с именем «object». Ранее это конфликтовало с внутренним использованием «object».
- [bpo-34052](https://python-all.ru/3/whatsnew/changelog.html): Методы [`sqlite3.Connection.create_aggregate()`](https://python-all.ru/3/library/sqlite3.html#sqlite3.Connection.create_aggregate), [`sqlite3.Connection.create_function()`](https://python-all.ru/3/library/sqlite3.html#sqlite3.Connection.create_function), [`sqlite3.Connection.set_authorizer()`](https://python-all.ru/3/library/sqlite3.html#sqlite3.Connection.set_authorizer), [`sqlite3.Connection.set_progress_handler()`](https://python-all.ru/3/library/sqlite3.html#sqlite3.Connection.set_progress_handler) вызывают TypeError, когда в качестве вызываемого объекта передаются нехешируемые объекты. Теперь эти методы не передают такие объекты в SQLite API. Предыдущее поведение могло приводить к ошибкам сегментации. Патч от Sergey Fedoseev.
- [bpo-34197](https://python-all.ru/3/whatsnew/changelog.html): Атрибуты *skipinitialspace*, *doublequote* и *strict* атрибута *dialect* модуля [`csv`](https://python-all.ru/3/library/csv.html#module-csv) теперь являются экземплярами [`bool`](https://python-all.ru/3/library/functions.html#bool) вместо целых чисел 0 или 1.
- [bpo-32788](https://python-all.ru/3/whatsnew/changelog.html): Ошибки, отличные от [`TypeError`](https://python-all.ru/3/library/exceptions.html#TypeError), возникающие в методах `__adapt__()` и `__conform__()` модуля [`sqlite3`](https://python-all.ru/3/library/sqlite3.html#module-sqlite3), теперь передаются пользователю.
- [bpo-21446](https://python-all.ru/3/whatsnew/changelog.html): Фиксер `reload` теперь использует [`importlib.reload()`](https://python-all.ru/3/library/importlib.html#importlib.reload) вместо устаревшего `imp.reload()`.
- [bpo-940286](https://python-all.ru/3/whatsnew/changelog.html): Метод `Helper.showtopic()` модуля pydoc теперь корректно выводит перекрёстные ссылки темы.
- [bpo-34164](https://python-all.ru/3/whatsnew/changelog.html): [`base64.b32decode()`](https://python-all.ru/3/library/base64.html#base64.b32decode) мог вызывать UnboundLocalError или OverflowError при неправильном дополнении. Теперь в этих случаях он всегда вызывает `base64.Error`.
- [bpo-33729](https://python-all.ru/3/whatsnew/changelog.html): Исправлены проблемы с разбором аргументов в [`hashlib`](https://python-all.ru/3/library/hashlib.html#module-hashlib).
- [bpo-34097](https://python-all.ru/3/whatsnew/changelog.html): ZipFile теперь может архивировать файлы старше 1980-01-01 и новее 2107-12-31 с помощью нового параметра `strict_timestamps` ценой установки временной метки на предельное значение.
- [bpo-34108](https://python-all.ru/3/whatsnew/changelog.html): Удалены лишние символы CR в модуле 2to3.
- [bpo-34070](https://python-all.ru/3/whatsnew/changelog.html): Теперь проверка на то, что дескриптор является tty, выполняется только при открытии файла с помощью `buffering=-1`.
- [bpo-27494](https://python-all.ru/3/whatsnew/changelog.html): Откат [bpo-27494](https://python-all.ru/3/whatsnew/changelog.html). Теперь 2to3 отклоняет завершающую запятую в выражениях-генераторах.
- [bpo-33967](https://python-all.ru/3/whatsnew/changelog.html): functools.singledispatch теперь возбуждает TypeError вместо IndexError, если не передано позиционных аргументов.
- [bpo-34041](https://python-all.ru/3/whatsnew/changelog.html): Добавлен параметр *deterministic* в метод [`sqlite3.Connection.create_function()`](https://python-all.ru/3/library/sqlite3.html#sqlite3.Connection.create_function). Исправление от Sergey Fedoseev.
- [bpo-34056](https://python-all.ru/3/whatsnew/changelog.html): Гарантируется, что загрузчик-прокладка, созданный `imp.load_module`, всегда возвращает байты из своей функции `get_data()`. Это исправляет использование `imp.load_module` с [**PEP 552**](https://python-all.ru/3/whatsnew/changelog.html) хеш-файлами .pyc.
- [bpo-34054](https://python-all.ru/3/whatsnew/changelog.html): Модуль multiprocessing теперь использует монотонные часы [`time.monotonic()`](https://python-all.ru/3/library/time.html#time.monotonic) вместо системных часов [`time.time()`](https://python-all.ru/3/library/time.html#time.time) для реализации тайм-аута.
- [bpo-34043](https://python-all.ru/3/whatsnew/changelog.html): Оптимизация производительности распаковки tarfile при использовании gzip – ускорение около 15%.
- [bpo-34044](https://python-all.ru/3/whatsnew/changelog.html): `subprocess.Popen` теперь копирует аргумент *startupinfo*, чтобы оставить его неизменным: изменения вносятся в копию, что позволяет использовать один и тот же объект `STARTUPINFO` несколько раз.
- [bpo-34010](https://python-all.ru/3/whatsnew/changelog.html): Исправлено падение производительности при чтении потоков с помощью tarfile. Буферизованное чтение теперь должно использовать список, а не добавлять данные в объект bytes.
- [bpo-34019](https://python-all.ru/3/whatsnew/changelog.html): webbrowser: исправлены аргументы, передаваемые браузеру Opera при открытии нового URL с помощью модуля `webbrowser`. Исправление от Bumsik Kim.
- [bpo-34003](https://python-all.ru/3/whatsnew/changelog.html): csv.DictReader теперь создаёт обычные словари, а не упорядоченные словари. Исправление от Michael Selik.
- [bpo-33978](https://python-all.ru/3/whatsnew/changelog.html): Перед переконфигурацией через fileConfig и dictConfig закрываются существующие обработчики логов. Исправление от Karthikeyan Singaravelan.
- [bpo-14117](https://python-all.ru/3/whatsnew/changelog.html): Небольшие доработки в turtledemo. Пример 'wikipedia' теперь называется 'rosette' и описывает то, что рисует. Вывод 'penrose' сокращён. Вывод '1024' из 'tree' удалён.
- [bpo-33974](https://python-all.ru/3/whatsnew/changelog.html): Fixed passing lists and tuples of strings containing special characters `"`, `\`, `{`, `}` and `\n` as options to [`ttk`](https://python-all.ru/3/library/tkinter.ttk.html#module-tkinter.ttk) widgets.
- [bpo-27500](https://python-all.ru/3/whatsnew/changelog.html): Исправлен getaddrinfo для корректного разрешения IPv6-адресов.
- [bpo-24567](https://python-all.ru/3/whatsnew/changelog.html): Улучшена random.choices() для обработки субнормальных весов на входе, которые иногда могли вызывать IndexError.
- [bpo-33871](https://python-all.ru/3/whatsnew/changelog.html): Исправлено целочисленное переполнение в [`os.readv()`](https://python-all.ru/3/library/os.html#os.readv), [`os.writev()`](https://python-all.ru/3/library/os.html#os.writev), [`os.preadv()`](https://python-all.ru/3/library/os.html#os.preadv) и [`os.pwritev()`](https://python-all.ru/3/library/os.html#os.pwritev), а также в [`os.sendfile()`](https://python-all.ru/3/library/os.html#os.sendfile) с аргументами *headers* или *trailers* (на ОС на базе BSD и macOS).
- [bpo-25007](https://python-all.ru/3/whatsnew/changelog.html): Добавлена поддержка [`copy.copy()`](https://python-all.ru/3/library/copy.html#copy.copy) и [`copy.deepcopy()`](https://python-all.ru/3/library/copy.html#copy.deepcopy) в компрессоры и декомпрессоры zlib. Исправление от Zackery Spytz.
- [bpo-33929](https://python-all.ru/3/whatsnew/changelog.html): multiprocessing: исправлено состояние гонки в Popen из multiprocessing.popen\_spawn\_win32. Теперь дочерний процесс дублирует конец канала для чтения вместо того, чтобы «похищать» его. Ранее дочерний процесс «похищал» этот конец канала, что приводило к утечке дескриптора, если дочерний процесс завершался до того, как успевал забрать дескриптор у родительского процесса.
- [bpo-33899](https://python-all.ru/3/whatsnew/changelog.html): Модуль tokenize теперь неявно генерирует NEWLINE, если входные данные не содержат завершающего перевода строки. Такое поведение теперь соответствует тому, что делает C-токенизатор внутри. Вклад – Ammar Askar.
- [bpo-33897](https://python-all.ru/3/whatsnew/changelog.html): Добавлен аргумент ‘force’ в logging.basicConfig().
- [bpo-33695](https://python-all.ru/3/whatsnew/changelog.html): [`shutil.copytree()`](https://python-all.ru/3/library/shutil.html#shutil.copytree) использует функцию [`os.scandir()`](https://python-all.ru/3/library/os.html#os.scandir), и все функции копирования, зависящие от неё, используют кешированные значения [`os.stat()`](https://python-all.ru/3/library/os.html#os.stat). Ускорение копирования каталога с 8000 файлами составляет около +9% на Linux, +20% на Windows и +30% на сетевой папке SMB в Windows. Также количество системных вызовов `os.stat()` уменьшено на 38%, что делает `shutil.copytree()` особенно быстрее на сетевых файловых системах. (Вклад – Giampaolo Rodola’ в [bpo-33695](https://python-all.ru/3/whatsnew/changelog.html).)
- [bpo-33916](https://python-all.ru/3/whatsnew/changelog.html): bz2 и lzma: при повторном вызове Decompressor.\_\_init\_\_() освобождается старая блокировка, чтобы избежать утечки памяти.
- [bpo-32568](https://python-all.ru/3/whatsnew/changelog.html): Привести select.epoll() и его документацию к единообразию в отношении *sizehint* и *flags*.
- [bpo-33833](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка в asyncio, из-за которой ProactorSocketTransport записывал AssertionError в лог при принудительном закрытии во время записи.
- [bpo-33663](https://python-all.ru/3/whatsnew/changelog.html): Преобразование длины содержимого в строку перед помещением в заголовок.
- [bpo-33721](https://python-all.ru/3/whatsnew/changelog.html): Функции [`os.path`](https://python-all.ru/3/library/os.path.html#module-os.path), возвращающие логический результат, такие как [`exists()`](https://python-all.ru/3/library/os.path.html#os.path.exists), [`lexists()`](https://python-all.ru/3/library/os.path.html#os.path.lexists), [`isdir()`](https://python-all.ru/3/library/os.path.html#os.path.isdir), [`isfile()`](https://python-all.ru/3/library/os.path.html#os.path.isfile), [`islink()`](https://python-all.ru/3/library/os.path.html#os.path.islink) и [`ismount()`](https://python-all.ru/3/library/os.path.html#os.path.ismount), а также методы [`pathlib.Path`](https://python-all.ru/3/library/pathlib.html#pathlib.Path), возвращающие логический результат, такие как [`exists()`](https://python-all.ru/3/library/pathlib.html#pathlib.Path.exists), [`is_dir()`](https://python-all.ru/3/library/pathlib.html#pathlib.Path.is_dir), [`is_file()`](https://python-all.ru/3/library/pathlib.html#pathlib.Path.is_file), [`is_mount()`](https://python-all.ru/3/library/pathlib.html#pathlib.Path.is_mount), [`is_symlink()`](https://python-all.ru/3/library/pathlib.html#pathlib.Path.is_symlink), [`is_block_device()`](https://python-all.ru/3/library/pathlib.html#pathlib.Path.is_block_device), [`is_char_device()`](https://python-all.ru/3/library/pathlib.html#pathlib.Path.is_char_device), [`is_fifo()`](https://python-all.ru/3/library/pathlib.html#pathlib.Path.is_fifo), [`is_socket()`](https://python-all.ru/3/library/pathlib.html#pathlib.Path.is_socket), теперь возвращают `False` вместо возбуждения [`ValueError`](https://python-all.ru/3/library/exceptions.html#ValueError) или его подклассов [`UnicodeEncodeError`](https://python-all.ru/3/library/exceptions.html#UnicodeEncodeError) и [`UnicodeDecodeError`](https://python-all.ru/3/library/exceptions.html#UnicodeDecodeError) для путей, содержащих символы или байты, непредставимые на уровне ОС.
- [bpo-26544](https://python-all.ru/3/whatsnew/changelog.html): Исправлена реализация [`platform.libc_ver()`](https://python-all.ru/3/library/platform.html#platform.libc_ver). Она почти всегда возвращала версию '2.9' для glibc.
- [bpo-33843](https://python-all.ru/3/whatsnew/changelog.html): Удалены устаревшие `cgi.escape`, `cgi.parse_qs` и `cgi.parse_qsl`.
- [bpo-33842](https://python-all.ru/3/whatsnew/changelog.html): Удалён `tarfile.filemode`, который устарел с Python 3.3.
- [bpo-30167](https://python-all.ru/3/whatsnew/changelog.html): Предотвращение исключения site.main() при установленном PYTHONSTARTUP. Исправление от Steve Weber.
- [bpo-33805](https://python-all.ru/3/whatsnew/changelog.html): Улучшено сообщение об ошибке в dataclasses.replace(), когда InitVar не указан.
- [bpo-33687](https://python-all.ru/3/whatsnew/changelog.html): Исправлен вызов `os.chmod()` для `uu.decode()`, если задан или декодирован режим. Патч от Timo Furrer.
- [bpo-33812](https://python-all.ru/3/whatsnew/changelog.html): Экземпляр datetime d с не-None tzinfo, но при этом d.tzinfo.utcoffset(d) возвращает None, теперь считается наивным методом astimezone().
- [bpo-32108](https://python-all.ru/3/whatsnew/changelog.html): В configparser больше не очищается секция при присваивании её самой себе.
- [bpo-27397](https://python-all.ru/3/whatsnew/changelog.html): Модуль email теперь корректно обрабатывает строки base64 некорректной длины.
- [bpo-33578](https://python-all.ru/3/whatsnew/changelog.html): Реализованы методы состояния многобайтового кодировщика/декодировщика.
- [bpo-30805](https://python-all.ru/3/whatsnew/changelog.html): Устранено состояние гонки при отладочном логировании.
- [bpo-33476](https://python-all.ru/3/whatsnew/changelog.html): Исправлен \_header\_value\_parser.py, когда в группе адресов отсутствует завершающая точка с запятой. Вклад Enrique Perez-Terron.
- [bpo-33694](https://python-all.ru/3/whatsnew/changelog.html): asyncio: Исправлено состояние гонки, вызывавшее потерю данных при pause\_reading()/resume\_reading() в ProactorEventLoop.
- [bpo-32493](https://python-all.ru/3/whatsnew/changelog.html): Исправлен тест на доступность `uuid_enc_be` в `configure.ac`. Патч от Michael Felt.
- [bpo-33792](https://python-all.ru/3/whatsnew/changelog.html): Добавлены asyncio.WindowsSelectorEventLoopPolicy и asyncio.WindowsProactorEventLoopPolicy.
- [bpo-33274](https://python-all.ru/3/whatsnew/changelog.html): Спецификация W3C DOM Level 1 определяет возвращаемое значение Element.removeAttributeNode() как «Узел Attr, который был удалён». xml.dom.minidom теперь соответствует этому требованию.
- [bpo-33778](https://python-all.ru/3/whatsnew/changelog.html): Обновлена база данных `unicodedata` до версии Unicode 11.0.0.
- [bpo-33165](https://python-all.ru/3/whatsnew/changelog.html): Добавлен параметр stacklevel в вызовы логирования для поддержки функций-обёрток и вспомогательных функций для API логирования.
- [bpo-33770](https://python-all.ru/3/whatsnew/changelog.html): Улучшено сообщение об исключении base64 для входных данных некорректной длины.
- [bpo-33769](https://python-all.ru/3/whatsnew/changelog.html): asyncio/start\_tls: Исправлено сообщение об ошибке; отмена колбэков в случае необработанной ошибки; пометка SSLTransport как закрытого при прерывании.
- [bpo-33767](https://python-all.ru/3/whatsnew/changelog.html): Операции конкатенации (`+`) и повторения (`*`) теперь вызывают [`TypeError`](https://python-all.ru/3/library/exceptions.html#TypeError) вместо [`SystemError`](https://python-all.ru/3/library/exceptions.html#SystemError) при выполнении над объектами [`mmap.mmap`](https://python-all.ru/3/library/mmap.html#mmap.mmap). Патч от Zackery Spytz.
- [bpo-33734](https://python-all.ru/3/whatsnew/changelog.html): asyncio/ssl: Исправлен AttributeError, увеличен таймаут рукопожатия по умолчанию.
- [bpo-31014](https://python-all.ru/3/whatsnew/changelog.html): Исправлено создание контроллера для [`webbrowser`](https://python-all.ru/3/library/webbrowser.html#module-webbrowser), когда пользователь указывает путь к записи в переменной окружения BROWSER. Основано на патче от John Still.
- [bpo-2504](https://python-all.ru/3/whatsnew/changelog.html): Добавлены gettext.pgettext() и варианты.
- [bpo-33197](https://python-all.ru/3/whatsnew/changelog.html): Добавлено свойство description для \_ParameterKind.
- [bpo-32751](https://python-all.ru/3/whatsnew/changelog.html): При отмене задачи по таймауту [`asyncio.wait_for()`](https://python-all.ru/3/library/asyncio-task.html#asyncio.wait_for) теперь будет ждать завершения отмены.
- [bpo-32684](https://python-all.ru/3/whatsnew/changelog.html): Исправлена функция gather для распространения собственной отмены даже при return\_exceptions.
- [bpo-33654](https://python-all.ru/3/whatsnew/changelog.html): Поддержка переключения типа протокола в SSLTransport.set\_protocol().
- [bpo-33674](https://python-all.ru/3/whatsnew/changelog.html): Приостановка транспорта как можно раньше для дальнейшего снижения риска вызова data\_received() до connection\_made().
- [bpo-33671](https://python-all.ru/3/whatsnew/changelog.html): [`shutil.copyfile()`](https://python-all.ru/3/library/shutil.html#shutil.copyfile), [`shutil.copy()`](https://python-all.ru/3/library/shutil.html#shutil.copy), [`shutil.copy2()`](https://python-all.ru/3/library/shutil.html#shutil.copy2), [`shutil.copytree()`](https://python-all.ru/3/library/shutil.html#shutil.copytree) и [`shutil.move()`](https://python-all.ru/3/library/shutil.html#shutil.move) теперь используют платформенно-зависимые быстрые системные вызовы копирования на Linux и macOS для более эффективного копирования файлов. На Windows `shutil.copyfile()` использует больший размер буфера по умолчанию (1 МиБ вместо 16 КиБ) и применяется вариант [`shutil.copyfileobj()`](https://python-all.ru/3/library/shutil.html#shutil.copyfileobj) на основе [`memoryview()`](https://python-all.ru/3/library/stdtypes.html#memoryview). Прирост скорости копирования файла размером 512 МиБ составляет около +26% на Linux, +50% на macOS и +40% на Windows. Кроме того, потребляется гораздо меньше циклов CPU. (Вклад Giampaolo Rodola в [bpo-25427](https://python-all.ru/3/whatsnew/changelog.html).)
- [bpo-33674](https://python-all.ru/3/whatsnew/changelog.html): Исправлено состояние гонки в SSLProtocol.connection\_made() в asyncio.sslproto: рукопожатие начинается немедленно вместо использования call\_soon(). Ранее data\_received() могла быть вызвана до начала рукопожатия, что приводило к зависанию или сбою рукопожатия.
- [bpo-31647](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка, при которой вызов write\_eof() на \_SelectorSocketTransport после его закрытия вызывал AttributeError.
- [bpo-32610](https://python-all.ru/3/whatsnew/changelog.html): Исправлено asyncio.all\_tasks() для возврата только ожидающих задач.
- [bpo-32410](https://python-all.ru/3/whatsnew/changelog.html): Избежание блокировки на файловом вводе-выводе в запасном коде sendfile.
- [bpo-33469](https://python-all.ru/3/whatsnew/changelog.html): Исправлен RuntimeError после закрытия цикла, который использовал run\_in\_executor.
- [bpo-33672](https://python-all.ru/3/whatsnew/changelog.html): Исправлен сбой Task.\_\_repr\_\_ с некорректными корутинами Cython.
- [bpo-33654](https://python-all.ru/3/whatsnew/changelog.html): Исправлена работа transport.set\_protocol() для поддержки переключения между asyncio.Protocol и asyncio.BufferedProtocol. Исправлена loop.start\_tls() для работы с asyncio.BufferedProtocol.
- [bpo-33652](https://python-all.ru/3/whatsnew/changelog.html): Сериализация переменных типов и индексированных обобщений теперь устойчива к будущим изменениям и совместима со старыми версиями Python.
- [bpo-32493](https://python-all.ru/3/whatsnew/changelog.html): Исправлена [`uuid.uuid1()`](https://python-all.ru/3/library/uuid.html#uuid.uuid1) во FreeBSD.
- [bpo-33238](https://python-all.ru/3/whatsnew/changelog.html): Добавлен `InvalidStateError` к [`concurrent.futures`](https://python-all.ru/3/library/concurrent.futures.html#module-concurrent.futures). `Future.set_result` и `Future.set_exception` теперь вызывают `InvalidStateError`, если future не находятся в состоянии ожидания или выполнения. Исправление от Jason Haydaman.
- [bpo-33618](https://python-all.ru/3/whatsnew/changelog.html): Завершена реализация и документация предварительной и экспериментальной поддержки TLS 1.3 с OpenSSL 1.1.1.
- [bpo-33625](https://python-all.ru/3/whatsnew/changelog.html): Освобождается GIL при `grp.getgrnam`, `grp.getgrgid`, `pwd.getpwnam` и `pwd.getpwuid`, если доступны реентерабельные версии этих функций. Исправление от William Grzybowski.
- [bpo-33623](https://python-all.ru/3/whatsnew/changelog.html): Исправлена возможная ошибка SIGSGV при создании asyncio.Future в \_\_del\_\_.
- [bpo-11874](https://python-all.ru/3/whatsnew/changelog.html): Используется более качественное регулярное выражение при разбиении строки использования на части, поддерживающие перенос. Предотвращает ложные ошибки утверждения для пользовательских строк metavar.
- [bpo-30877](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка в реализации JSON-декодера на Python, из-за которой кеш разобранных строк не очищался после завершения декодирования. Основано на исправлении от c-fos.
- [bpo-33604](https://python-all.ru/3/whatsnew/changelog.html): Удалён HMAC по умолчанию на md5, помеченный к удалению в 3.8 (изначально планировалось в 3.6, перенесено на 3.8 в PR 7062).
- [bpo-33582](https://python-all.ru/3/whatsnew/changelog.html): Добавлено предупреждение об устаревании для inspect.formatargspec.
- [bpo-21145](https://python-all.ru/3/whatsnew/changelog.html): Добавлен декоратор `functools.cached_property` для вычисляемых свойств, кешируемых на время жизни экземпляра.
- [bpo-33570](https://python-all.ru/3/whatsnew/changelog.html): Изменены настройки наборов шифров TLS 1.3 для совместимости с OpenSSL 1.1.1-pre6 и новее. В OpenSSL 1.1.1 шифры TLS 1.3 будут включены по умолчанию.
- [bpo-28556](https://python-all.ru/3/whatsnew/changelog.html): Аргументы `typing.Union` больше не упрощаются. Теперь `Union[Manager, Employee]` не упрощается до `Employee` во время выполнения. Ранее такое упрощение приводило к нескольким ошибкам и ограничивало возможности интроспекции.
- [bpo-12486](https://python-all.ru/3/whatsnew/changelog.html): [`tokenize.generate_tokens()`](https://python-all.ru/3/library/tokenize.html#tokenize.generate_tokens) теперь документирован как публичный API для токенизации строк в Юникоде. Ранее он присутствовал, но не был документирован.
- [bpo-33540](https://python-all.ru/3/whatsnew/changelog.html): Добавлен новый атрибут класса `block_on_close` для классов `ForkingMixIn` и `ThreadingMixIn` из [`socketserver`](https://python-all.ru/3/library/socketserver.html#module-socketserver).
- [bpo-33548](https://python-all.ru/3/whatsnew/changelog.html): tempfile.\_candidate\_tempdir\_list должен учитывать стандартные расположения TEMP.
- [bpo-33109](https://python-all.ru/3/whatsnew/changelog.html): Подпарсеры argparse снова не являются обязательными по умолчанию – отменено изменение поведения, введённое [bpo-26510](https://python-all.ru/3/whatsnew/changelog.html) в 3.7.0a2.
- [bpo-33541](https://python-all.ru/3/whatsnew/changelog.html): Удалён неиспользуемый закрытый метод `_strptime.LocaleTime.__pad` (он же `_LocaleTime__pad`).
- [bpo-33536](https://python-all.ru/3/whatsnew/changelog.html): dataclasses.make\_dataclass теперь проверяет некорректные имена полей и дублирующиеся поля. Также добавлена проверка недопустимых спецификаций полей.
- [bpo-33542](https://python-all.ru/3/whatsnew/changelog.html): Запрещено `uuid.get_node` использовать DUID вместо MAC в Windows. Исправление от Zvi Effron.
- [bpo-26819](https://python-all.ru/3/whatsnew/changelog.html): Исправлено состояние гонки с `ReadTransport.resume_reading` в цикле событий proactor в Windows.
- Исправлена ошибка в `typing.get_type_hints()`, когда ClassVar передавалась как строковая опережающая ссылка.
- [bpo-33516](https://python-all.ru/3/whatsnew/changelog.html): [`unittest.mock.MagicMock`](https://python-all.ru/3/library/unittest.mock.html#unittest.mock.MagicMock) теперь поддерживает магический метод `__round__`.
- [bpo-28612](https://python-all.ru/3/whatsnew/changelog.html): Добавлена поддержка карт сайтов для `RobotFileParser` в urllib в виде [`RobotFileParser.site_maps()`](https://python-all.ru/3/library/urllib.robotparser.html#urllib.robotparser.RobotFileParser.site_maps). Исправление от Lady Red, основано на исправлении от Peter Wirtz.
- [bpo-28167](https://python-all.ru/3/whatsnew/changelog.html): Удалена platform.linux\_distribution, устаревшая с версии 3.5.
- [bpo-33504](https://python-all.ru/3/whatsnew/changelog.html): Изменена реализация словаря по умолчанию для [`configparser`](https://python-all.ru/3/library/configparser.html#module-configparser) с [`collections.OrderedDict`](https://python-all.ru/3/library/collections.html#collections.OrderedDict) на стандартный тип [`dict`](https://python-all.ru/3/library/stdtypes.html#dict).
- [bpo-33505](https://python-all.ru/3/whatsnew/changelog.html): Оптимизирован asyncio.ensure\_future() за счёт переупорядочивания проверок if: скорость повышена в 1.17 раза.
- [bpo-33497](https://python-all.ru/3/whatsnew/changelog.html): Добавлен параметр errors в cgi.parse\_multipart, а кодировка в FieldStorage теперь использует заданный параметр errors (необходимо для Twisted). Исправление от Amber Brown.
- [bpo-29235](https://python-all.ru/3/whatsnew/changelog.html): Класс `cProfile.Profile` теперь можно использовать как контекстный менеджер. Исправление от Scott Sanderson.
- [bpo-33495](https://python-all.ru/3/whatsnew/changelog.html): Изменено представление dataclasses.Fields: теперь используется repr каждого из его членов вместо str. Это делает более ясным, что именно представляет каждое поле. Особенно это касается члена 'type'.
- [bpo-26103](https://python-all.ru/3/whatsnew/changelog.html): Исправлено `inspect.isdatadescriptor`: теперь ищет `__set__` или `__delete__`. Исправление от Aaron Hall.
- [bpo-29209](https://python-all.ru/3/whatsnew/changelog.html): Удалён метод `doctype()` и параметр *html* конструктора [`XMLParser`](https://python-all.ru/3/library/xml.etree.elementtree.html#xml.etree.ElementTree.XMLParser). Метод `doctype()`, определённый в подклассе, больше не будет вызываться. Устаревшие методы `getchildren()` и `getiterator()` в модуле [`ElementTree`](https://python-all.ru/3/library/xml.etree.elementtree.html#module-xml.etree.ElementTree) теперь вызывают [`DeprecationWarning`](https://python-all.ru/3/library/exceptions.html#DeprecationWarning) вместо [`PendingDeprecationWarning`](https://python-all.ru/3/library/exceptions.html#PendingDeprecationWarning).
- [bpo-33453](https://python-all.ru/3/whatsnew/changelog.html): Исправлена работа dataclasses с литеральными строковыми аннотациями типов или при использовании PEP 563 («Отложенная оценка аннотаций»). Для ClassVar («ClassVar» и «typing.ClassVar») и InitVar («InitVar» и «dataclasses.InitVar») обнаруживаются только определённые префиксы строк.
- [bpo-28556](https://python-all.ru/3/whatsnew/changelog.html): Незначительные исправления в модуле typing: добавлены аннотации к `NamedTuple.__new__`, переданы `*args` и `**kwds` в `Generic.__new__`. Оригинальные PR от Paulius Šarka и Chad Dombrova.
- [bpo-33365](https://python-all.ru/3/whatsnew/changelog.html): Выводить значения заголовков вместе с ключами, а не только ключи, если *debuglevel* установлен в \>0 в [`http.client`](https://python-all.ru/3/library/http.client.html#module-http.client). Патч от Marco Strigl.
- [bpo-20087](https://python-all.ru/3/whatsnew/changelog.html): Обновлено сопоставление псевдонимов с поддерживаемыми glibc 2.27 локалями.
- [bpo-33422](https://python-all.ru/3/whatsnew/changelog.html): Исправлено удаление завершающих кавычек при поиске литералов байтов/строк в pydoc. Патч от Andrés Delfino.
- [bpo-28167](https://python-all.ru/3/whatsnew/changelog.html): Функции `platform.linux_distribution` и `platform.dist` теперь вызывают `DeprecationWarning` и помечены для удаления в Python 3.8
- [bpo-33281](https://python-all.ru/3/whatsnew/changelog.html): Исправлена регрессия ctypes.util.find\_library на macOS.
- [bpo-33311](https://python-all.ru/3/whatsnew/changelog.html): Текстовый и HTML-вывод, созданный cgitb, не показывает круглые скобки, если текущий вызов выполняется непосредственно в модуле. Патч от Stéphane Blondon.
- [bpo-27300](https://python-all.ru/3/whatsnew/changelog.html): Классы файлов в *tempfile* теперь принимают параметр *errors*, дополняющий уже существующий *encoding*. Патч от Stephan Hohe.
- [bpo-32933](https://python-all.ru/3/whatsnew/changelog.html): [`unittest.mock.mock_open()`](https://python-all.ru/3/library/unittest.mock.html#unittest.mock.mock_open) теперь поддерживает итерацию по содержимому файла. Патч от Tony Flury.
- [bpo-33217](https://python-all.ru/3/whatsnew/changelog.html): Вызывать [`TypeError`](https://python-all.ru/3/library/exceptions.html#TypeError) при поиске не-Enum объектов в Enum-классах и членах Enum.
- [bpo-33197](https://python-all.ru/3/whatsnew/changelog.html): Обновлено сообщение об ошибке при создании некорректных inspect.Parameters. Патч от Donghee Na.
- [bpo-33383](https://python-all.ru/3/whatsnew/changelog.html): Исправлен сбой в методе get() объекта базы данных [`dbm.ndbm`](https://python-all.ru/3/library/dbm.html#module-dbm.ndbm) при вызове с одним аргументом.
- [bpo-33375](https://python-all.ru/3/whatsnew/changelog.html): Модуль warnings теперь находит Python-файл, связанный с предупреждением, через объект кода, а не через глобальное пространство имён фрейма. Это согласуется с тем, как traceback и pdb находят имена файлов, и должно лучше работать для динамически выполняемого кода.
- [bpo-33336](https://python-all.ru/3/whatsnew/changelog.html): `imaplib` теперь допускает команду `MOVE` в `IMAP4.uid()` (RFC 6851: IMAP MOVE Extension) и, возможно, как имя поддерживаемого метода объекта `IMAP4`.
- [bpo-32455](https://python-all.ru/3/whatsnew/changelog.html): Добавлен параметр *jump* в [`dis.stack_effect()`](https://python-all.ru/3/library/dis.html#dis.stack_effect).
- [bpo-27485](https://python-all.ru/3/whatsnew/changelog.html): Переименованы и помечены как устаревшие недокументированные функции в [`urllib.parse()`](https://python-all.ru/3/library/urllib.parse.html#module-urllib.parse).
- [bpo-33332](https://python-all.ru/3/whatsnew/changelog.html): Добавлен `signal.valid_signals()` для предоставления функциональности POSIX sigfillset().
- [bpo-33251](https://python-all.ru/3/whatsnew/changelog.html): `ConfigParser.items()` исправлен так, что пары ключ-значение, переданные через [`vars()`](https://python-all.ru/3/library/functions.html#vars), не включаются в результирующий вывод.
- [bpo-33329](https://python-all.ru/3/whatsnew/changelog.html): Исправлена регрессия multiprocessing на новых версиях glibc.
- [bpo-33334](https://python-all.ru/3/whatsnew/changelog.html): [`dis.stack_effect()`](https://python-all.ru/3/library/dis.html#dis.stack_effect) теперь поддерживает все определённые опкоды, включая NOP и EXTENDED\_ARG.
- [bpo-991266](https://python-all.ru/3/whatsnew/changelog.html): Исправлено экранирование атрибута `Comment` в [`http.cookies.SimpleCookie`](https://python-all.ru/3/library/http.cookies.html#http.cookies.SimpleCookie).
- [bpo-33131](https://python-all.ru/3/whatsnew/changelog.html): Обновление встроенной версии pip до 10.0.1.
- [bpo-33308](https://python-all.ru/3/whatsnew/changelog.html): Исправлен сбой в модуле `parser` при преобразовании объекта ST в дерево кортежей или списков с помощью `line_info=False` и `col_info=True`.
- [bpo-23403](https://python-all.ru/3/whatsnew/changelog.html): lib2to3 теперь использует протокол pickle 4 для предварительно вычисленных грамматик.
- [bpo-33266](https://python-all.ru/3/whatsnew/changelog.html): lib2to3 теперь распознаёт строки `rf'...'`.
- [bpo-11594](https://python-all.ru/3/whatsnew/changelog.html): Обеспечено соблюдение концов строк при использовании lib2to3.
- [bpo-33254](https://python-all.ru/3/whatsnew/changelog.html): [`importlib.resources.contents()`](https://python-all.ru/3/library/importlib.resources.html#importlib.resources.contents) и `importlib.abc.ResourceReader.contents()` теперь возвращают [итерируемый объект](https://python-all.ru/3/glossary.html#term-iterable) вместо [итератора](https://python-all.ru/3/glossary.html#term-iterator).
- [bpo-33265](https://python-all.ru/3/whatsnew/changelog.html): `contextlib.ExitStack` и `contextlib.AsyncExitStack` теперь используют метод вместо функции-обёртки для колбэков выхода.
- [bpo-33263](https://python-all.ru/3/whatsnew/changelog.html): Исправлена утечка файловых дескрипторов в `_SelectorSocketTransport`. Патч от Vlad Starostin.
- [bpo-33256](https://python-all.ru/3/whatsnew/changelog.html): Исправлено отображение вызова `<module>` в HTML, созданном `cgitb.html()`. Патч от Stéphane Blondon.
- [bpo-33144](https://python-all.ru/3/whatsnew/changelog.html): `random.Random()` и его механизм создания подклассов был оптимизирован: теперь только один раз при создании класса или подкласса проверяется, можно ли полагаться на его метод `getrandbits()` для генерации произвольно больших случайных целых чисел в других методах, включая `randrange()`. Патч Вольфганга Майера.
- [bpo-33185](https://python-all.ru/3/whatsnew/changelog.html): Исправлена регрессия при запуске pydoc с ключом [`-m`](https://python-all.ru/3/using/cmdline.html#cmdoption-m). (Регрессия была внесена в 3.7.0b3 исправлением [bpo-33053](https://python-all.ru/3/whatsnew/changelog.html)).

  Это исправление также изменило поведение pydoc: теперь при необходимости `os.getcwd()` добавляется в [`sys.path`](https://python-all.ru/3/library/sys.html#sys.path), а не `"."`.
- [bpo-29613](https://python-all.ru/3/whatsnew/changelog.html): Добавлена поддержка флага cookie `SameSite` в модуль `http.cookies`.
- [bpo-33169](https://python-all.ru/3/whatsnew/changelog.html): Удаление записей `None` из [`sys.path_importer_cache`](https://python-all.ru/3/library/sys.html#sys.path_importer_cache) при вызове `importlib.machinery.invalidate_caches()`.
- [bpo-33203](https://python-all.ru/3/whatsnew/changelog.html): `random.Random.choice()` теперь последовательно вызывает `IndexError` для пустых последовательностей, даже при вызове из подклассов без реализации `getrandbits()`.
- [bpo-33224](https://python-all.ru/3/whatsnew/changelog.html): Обновление difflib.mdiff() для [**PEP 479**](https://python-all.ru/3/whatsnew/changelog.html). Преобразование необработанного StopIteration в генераторе в оператор return.
- [bpo-33209](https://python-all.ru/3/whatsnew/changelog.html): Завершение обрамления в конце C-реализации [`pickle.Pickler.dump()`](https://python-all.ru/3/library/pickle.html#pickle.Pickler.dump).
- [bpo-32861](https://python-all.ru/3/whatsnew/changelog.html): Представление `__str__` в urllib.robotparser теперь включает подстановочные записи и поля «Crawl-delay» и «Request-rate». Также удалены лишние символы новой строки, которые добавлялись в конец строки. Патч Майкла Лазаря.
- [bpo-23403](https://python-all.ru/3/whatsnew/changelog.html): `DEFAULT_PROTOCOL` в [`pickle`](https://python-all.ru/3/library/pickle.html#module-pickle) повышен до версии 4. Протокол 4 описан в [**PEP 3154**](https://python-all.ru/3/whatsnew/changelog.html) и доступен начиная с Python 3.4. Он обеспечивает лучшую производительность и меньший размер по сравнению с протоколом 3, представленным в Python 3.0.
- [bpo-20104](https://python-all.ru/3/whatsnew/changelog.html): Улучшена обработка ошибок и исправлена утечка ссылок в [`os.posix_spawn()`](https://python-all.ru/3/library/os.html#os.posix_spawn).
- [bpo-33106](https://python-all.ru/3/whatsnew/changelog.html): Удаление ключа из базы данных dbm, открытой только для чтения, теперь вызывает ошибку, специфичную для модуля, а не KeyError.
- [bpo-33175](https://python-all.ru/3/whatsnew/changelog.html): В dataclasses Field.\_\_set\_name\_\_ теперь ищет специальный метод \_\_set\_name\_\_ в классе, а не в экземпляре значения по умолчанию.
- [bpo-32380](https://python-all.ru/3/whatsnew/changelog.html): Создан functools.singledispatchmethod для поддержки обобщённой единичной диспетчеризации для дескрипторов и методов.
- [bpo-33141](https://python-all.ru/3/whatsnew/changelog.html): Объекты Field теперь передают \_\_set\_name\_\_ своим значениям по умолчанию, если у них есть собственный \_\_set\_name\_\_.
- [bpo-33096](https://python-all.ru/3/whatsnew/changelog.html): Разрешена вставка iid с ложным булевым значением в ttk.Treeview.insert. Обратите внимание, что iid=0 и iid=False будут одинаковыми. Патч Гарвита Хатри.
- [bpo-32873](https://python-all.ru/3/whatsnew/changelog.html): Переменные типа и специальные формы typing теперь считаются неизменяемыми для copy и pickle. Это исправляет несколько мелких проблем и несоответствий, а также улучшает обратную совместимость с Python 3.6.
- [bpo-33134](https://python-all.ru/3/whatsnew/changelog.html): При вычислении \_\_hash\_\_ для dataclass используется таблица поиска, содержащая функцию, возвращающую значение \_\_hash\_\_. Это улучшение по сравнению с поиском строки и последующей проверкой этой строки для определения действий.
- [bpo-33127](https://python-all.ru/3/whatsnew/changelog.html): Модуль ssl теперь компилируется с LibreSSL 2.7.1.
- [bpo-32505](https://python-all.ru/3/whatsnew/changelog.html): Вызывать TypeError, если переменная-член dataclass имеет тип Field, но не имеет аннотации типа.
- [bpo-33078](https://python-all.ru/3/whatsnew/changelog.html): Исправление сбоя на OSX, вызванного тестами, полагающимися на sem\_getvalue.
- [bpo-33116](https://python-all.ru/3/whatsnew/changelog.html): Добавлен ‘Field’ в dataclasses.\_\_all\_\_.
- [bpo-32896](https://python-all.ru/3/whatsnew/changelog.html): Исправление ошибки, когда создание подкласса dataclass с полем, использующим default\_factory, приводило к генерации некорректного класса.
- [bpo-33100](https://python-all.ru/3/whatsnew/changelog.html): Dataclasses: если поле имеет значение по умолчанию, являющееся MemberDescriptorType, то оно происходит от того, что это поле находится в \_\_slots\_\_, а не является фактическим значением по умолчанию.
- [bpo-32953](https://python-all.ru/3/whatsnew/changelog.html): Если не-dataclass наследуется от замороженного dataclass, разрешить добавление атрибутов в производный класс. Только атрибуты из замороженного dataclass не могут быть назначены. Требуется, чтобы все dataclass в иерархии были либо все заморожены, либо все не заморожены.
- [bpo-33097](https://python-all.ru/3/whatsnew/changelog.html): Вызывать RuntimeError при вызове `executor.submit` во время завершения интерпретатора.
- [bpo-32968](https://python-all.ru/3/whatsnew/changelog.html): Операции взятия остатка и целочисленного деления с участием Fraction и float должны возвращать float.
- [bpo-33061](https://python-all.ru/3/whatsnew/changelog.html): Добавлен отсутствующий `NoReturn` в `__all__` в typing.py
- [bpo-33078](https://python-all.ru/3/whatsnew/changelog.html): Исправление обработки размера в multiprocessing.Queue при возникновении ошибки pickling.
- [bpo-33064](https://python-all.ru/3/whatsnew/changelog.html): lib2to3 теперь корректно поддерживает завершающие запятые после `*args` и `**kwargs` в сигнатурах функций.
- [bpo-33056](https://python-all.ru/3/whatsnew/changelog.html): ИСПРАВЛЕНИЕ: корректное закрытие утекающих файловых дескрипторов в concurrent.futures.ProcessPoolExecutor.
- [bpo-33021](https://python-all.ru/3/whatsnew/changelog.html): Освобождение GIL во время вызовов fstat(), чтобы избежать зависания всех потоков при вызове mmap.mmap(), os.urandom() и random.seed(). Патч Нира Соффера.
- [bpo-31804](https://python-all.ru/3/whatsnew/changelog.html): Исправлен сбой в multiprocessing.Process, если стандартные потоки закрыты или установлены в None при завершении.
- [bpo-33034](https://python-all.ru/3/whatsnew/changelog.html): Добавлено явное сообщение об ошибке при приведении свойства port к чему-либо, кроме целого числа, с помощью `urlparse()` и `urlsplit()`. Исправление от Matt Eaton.
- [bpo-30249](https://python-all.ru/3/whatsnew/changelog.html): Улучшены сообщения исключений struct.unpack\_from() при проблемах с размером буфера и смещением.
- [bpo-33037](https://python-all.ru/3/whatsnew/changelog.html): Пропуск отправки/получения данных после закрытия SSL-транспорта.
- [bpo-27683](https://python-all.ru/3/whatsnew/changelog.html): Исправлен регресс в [`ipaddress`](https://python-all.ru/3/library/ipaddress.html#module-ipaddress), из-за которого результат `hosts()` оказывался пустым, когда сеть задана кортежем, содержащим целочисленную маску, и для адресов остался только 1 бит.
- [bpo-22674](https://python-all.ru/3/whatsnew/changelog.html): Добавлена функция strsignal() в модуль signal, которая возвращает системное описание переданного сигнала, как возвращается strsignal(3).
- [bpo-32999](https://python-all.ru/3/whatsnew/changelog.html): Исправлен сбой реализации C в `ABC.__subclasscheck__(cls, subclass)`, когда `subclass` не является объектом типа.
- [bpo-33009](https://python-all.ru/3/whatsnew/changelog.html): Исправлен inspect.signature() для partialmethods с одним параметром.
- [bpo-32969](https://python-all.ru/3/whatsnew/changelog.html): Добавлены несколько недостающих констант в zlib и исправлена соответствующая документация.
- [bpo-32056](https://python-all.ru/3/whatsnew/changelog.html): Улучшены исключения при недопустимом числе каналов и разрядности при чтении аудиофайла в модулях `aifc`, [`wave`](https://python-all.ru/3/library/wave.html#module-wave) и `sunau`.
- [bpo-32970](https://python-all.ru/3/whatsnew/changelog.html): Улучшена дизассемблировка инструкции MAKE\_FUNCTION.
- [bpo-32844](https://python-all.ru/3/whatsnew/changelog.html): Исправлено неправильное перенаправление низкого дескриптора (0 или 1) в stderr в подпроцессе, если другой низкий дескриптор закрыт.
- [bpo-32960](https://python-all.ru/3/whatsnew/changelog.html): Для классов данных (dataclasses) запрещено наследовать замороженный класс от незамороженного, а также незамороженный от замороженного. Это ограничение будет смягчено в будущем.
- [bpo-32713](https://python-all.ru/3/whatsnew/changelog.html): Исправлена обработка tarfile.itn для значений с плавающей точкой за пределами диапазона. Исправление от Joffrey Fuhrer.
- [bpo-32257](https://python-all.ru/3/whatsnew/changelog.html): Модуль ssl теперь содержит константу OP\_NO\_RENEGOTIATION, доступную в OpenSSL 1.1.0h или 1.1.1.
- [bpo-32951](https://python-all.ru/3/whatsnew/changelog.html): Прямое создание экземпляров SSLSocket и SSLObject теперь запрещено. Конструкторы никогда не документировались, не тестировались и не были публичными. Пользователи должны были использовать ssl.wrap\_socket() или SSLContext.
- [bpo-32929](https://python-all.ru/3/whatsnew/changelog.html): Удален трехзначный параметр “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](https://python-all.ru/3/whatsnew/changelog.html): Добавлены OP\_ENABLE\_MIDDLEBOX\_COMPAT и тестовый обходной путь для TLSv1.3 для обеспечения совместимости с будущими версиями OpenSSL 1.1.1.
- [bpo-32146](https://python-all.ru/3/whatsnew/changelog.html): Документировано взаимодействие между замороженными исполняемыми файлами и методами запуска spawn и forkserver в multiprocessing.
- [bpo-30622](https://python-all.ru/3/whatsnew/changelog.html): Модуль ssl теперь обнаруживает отсутствие поддержки NPN в LibreSSL.
- [bpo-32922](https://python-all.ru/3/whatsnew/changelog.html): dbm.open() теперь кодирует имя файла в кодировке файловой системы, а не в кодировке по умолчанию.
- [bpo-32759](https://python-all.ru/3/whatsnew/changelog.html): Освобождение неиспользуемых арен в multiprocessing.heap.
- [bpo-32859](https://python-all.ru/3/whatsnew/changelog.html): В `os.dup2` больше не проверяется при каждом вызове, существует ли системный вызов `dup3`.
- [bpo-32556](https://python-all.ru/3/whatsnew/changelog.html): nt.\_getfinalpathname, nt.\_getvolumepathname и nt.\_getdiskusage теперь корректно преобразуют из байтов.
- [bpo-21060](https://python-all.ru/3/whatsnew/changelog.html): Переписано сбивающее с толку сообщение setup.py upload с «No dist file created in earlier command» на более понятное «Must create and upload files in one command».
- [bpo-32857](https://python-all.ru/3/whatsnew/changelog.html): В [`tkinter`](https://python-all.ru/3/library/tkinter.html#module-tkinter), `after_cancel(None)` теперь вызывает [`ValueError`](https://python-all.ru/3/library/exceptions.html#ValueError) вместо отмены первой запланированной функции. Исправление от Cheryl Sabella.
- [bpo-32852](https://python-all.ru/3/whatsnew/changelog.html): Гарантировано, что sys.argv остаётся списком при запуске trace.
- [bpo-31333](https://python-all.ru/3/whatsnew/changelog.html): Добавлен модуль `_abc`. Это модуль ускорения с реализациями на C для различных функций и методов в `abc`. Создание подкласса ABC и вызов `isinstance` или `issubclass` с подклассом ABC выполняются до 1.5 раза быстрее. Кроме того, это ускоряет запуск Python до 10%.

  Note that the new implementation hides internal registry and caches, previously accessible via private attributes `_abc_registry`, `_abc_cache`, and `_abc_negative_cache`. There are three debugging helper methods that can be used instead `_dump_registry`, `_abc_registry_clear`, and `_abc_caches_clear`.
- [bpo-32841](https://python-all.ru/3/whatsnew/changelog.html): Исправлена проблема в `asyncio.Condition`, которая молча игнорировала отмену после уведомления и отмены условной блокировки. Исправление от Bar Harel.
- [bpo-32819](https://python-all.ru/3/whatsnew/changelog.html): ssl.match\_hostname() упрощена и больше не зависит от модулей re и ipaddress для wildcard и IP-адресов. Улучшено сообщение об ошибках для недопустимых wildcard.
- [bpo-19675](https://python-all.ru/3/whatsnew/changelog.html): `multiprocessing.Pool` больше не вызывает утечку процессов при сбое инициализации.
- [bpo-32394](https://python-all.ru/3/whatsnew/changelog.html): socket: удалены флаги TCP\_FASTOPEN, TCP\_KEEPCNT, TCP\_KEEPIDLE, TCP\_KEEPINTVL на старых версиях Windows во время выполнения.
- [bpo-31787](https://python-all.ru/3/whatsnew/changelog.html): Исправлены утечки ссылок методов `__init__()` в различных модулях. (Автор: Oren Milman)
- [bpo-30157](https://python-all.ru/3/whatsnew/changelog.html): Исправлено определение кавычек и разделителя в csv.Sniffer.sniff(), когда цитируется только последнее поле. Патч от Jake Davis.
- [bpo-30688](https://python-all.ru/3/whatsnew/changelog.html): Добавлена поддержка экранирования `\N{name}` в регулярных выражениях. На основе патча от Jonathan Eunice.
- [bpo-32792](https://python-all.ru/3/whatsnew/changelog.html): collections.ChainMap() сохраняет порядок базовых отображений.
- [bpo-32775](https://python-all.ru/3/whatsnew/changelog.html): [`fnmatch.translate()`](https://python-all.ru/3/library/fnmatch.html#fnmatch.translate) больше не создаёт шаблоны, содержащие операции над множествами. Наборы символов, начинающиеся с '\[' или содержащие '–', '&&', '~~' или '||', будут в будущих версиях интерпретироваться в регулярных выражениях иначе. Сейчас они вызывают предупреждения. fnmatch.translate() теперь избегает случайного создания шаблонов, содержащих такие наборы.
- [bpo-32622](https://python-all.ru/3/whatsnew/changelog.html): Реализован нативный быстрый sendfile для цикла событий Windows proactor.
- [bpo-32777](https://python-all.ru/3/whatsnew/changelog.html): Исправлена редкая, но возможная взаимоблокировка дочернего процесса перед exec в подпроцессе на системах POSIX при пометке файловых дескрипторов как наследуемых при exec в дочернем процессе. По-видимому, эта ошибка была внесена в версии 3.4.
- [bpo-32647](https://python-all.ru/3/whatsnew/changelog.html): Модуль ctypes ранее зависел от косвенной компоновки для dlopen. Теперь расширение явно компонуется с libdl на платформах, где есть dl.
- [bpo-32749](https://python-all.ru/3/whatsnew/changelog.html): База данных [`dbm.dumb`](https://python-all.ru/3/library/dbm.html#module-dbm.dumb), открытая с флагами 'r', теперь доступна только для чтения. [`dbm.dumb.open()`](https://python-all.ru/3/library/dbm.html#dbm.dumb.open) с флагами 'r' и 'w' больше не создаёт базу данных, если она не существует.
- [bpo-32741](https://python-all.ru/3/whatsnew/changelog.html): Реализован метод `asyncio.TimerHandle.when()`.
- [bpo-32691](https://python-all.ru/3/whatsnew/changelog.html): Использовать mod\_spec.parent при запуске модулей с pdb.
- [bpo-32734](https://python-all.ru/3/whatsnew/changelog.html): Исправлена проблема безопасности `asyncio.Lock()`, которая позволяла захватывать и блокировать одну и ту же блокировку несколько раз, даже если она не была свободна. Патч от Bar Harel.
- [bpo-32727](https://python-all.ru/3/whatsnew/changelog.html): Не включать поле name в адрес отправителя SMTP-конверта. Патч от Stéphane Wirtel.
- [bpo-31453](https://python-all.ru/3/whatsnew/changelog.html): Добавлены константы 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](https://python-all.ru/3/whatsnew/changelog.html).
- [bpo-24334](https://python-all.ru/3/whatsnew/changelog.html): Убраны лишние детали внутренней реализации модуля ssl. SSLSocket имеет на один уровень косвенности меньше. Информация о владельце и сессии теперь обрабатывается конструктором SSLSocket и SSLObject. Упрощена реализация привязки канала (channel binding).
- [bpo-31848](https://python-all.ru/3/whatsnew/changelog.html): Исправлена обработка ошибок в Aifc\_read.initfp(), когда фрагмент SSND не найден. Патч от Zackery Spytz.
- [bpo-32585](https://python-all.ru/3/whatsnew/changelog.html): Добавлен виджет Ttk spinbox в [`tkinter.ttk`](https://python-all.ru/3/library/tkinter.ttk.html#module-tkinter.ttk). Патч от Alan D Moore.
- [bpo-32512](https://python-all.ru/3/whatsnew/changelog.html): [`profile`](https://python-all.ru/3/library/profile.html#module-profile) CLI принимает `-m module_name` в качестве альтернативы пути к скрипту.
- [bpo-8525](https://python-all.ru/3/whatsnew/changelog.html): help() для типа теперь отображает встроенные подклассы. Это предназначено в первую очередь для помощи в уведомлении о более конкретных подклассах исключений.

  Патч от Sanyam Khurana.
- [bpo-31639](https://python-all.ru/3/whatsnew/changelog.html): http.server теперь предоставляет класс ThreadingHTTPServer и использует его при запуске модуля с `-m`, чтобы справляться с предварительным открытием сокетов веб-браузерами.
- [bpo-29877](https://python-all.ru/3/whatsnew/changelog.html): compileall: импортировать ProcessPoolExecutor только при необходимости, предотвращая зависания на платформах с низкими ресурсами.
- [bpo-32221](https://python-all.ru/3/whatsnew/changelog.html): Различные функции, возвращающие кортеж, содержащий IPv6-адреса, теперь опускают часть `%scope`, поскольку та же информация уже закодирована в элементе кортежа *scopeid*. В частности, это ускоряет `socket.recvfrom()` при получении многоадресного пакета, так как исключается бесполезное разрешение имени сетевого интерфейса.
- [bpo-32147](https://python-all.ru/3/whatsnew/changelog.html): [`binascii.unhexlify()`](https://python-all.ru/3/library/binascii.html#binascii.unhexlify) теперь работает до 2 раз быстрее. Патч от Sergey Fedoseev.
- [bpo-30693](https://python-all.ru/3/whatsnew/changelog.html): Класс TarFile теперь рекурсивно обходит каталоги воспроизводимым образом.
- [bpo-30693](https://python-all.ru/3/whatsnew/changelog.html): Класс ZipFile теперь рекурсивно обходит каталоги воспроизводимым образом.
- [bpo-31680](https://python-all.ru/3/whatsnew/changelog.html): Добавлен [`curses.ncurses_version`](https://python-all.ru/3/library/curses.html#curses.ncurses_version).
- [bpo-31908](https://python-all.ru/3/whatsnew/changelog.html): Исправлен вывод файлов покрытия для утилиты командной строки модуля `trace`. Ранее файлы покрытия создавались только при использовании опции `--missing`. Патч от Michael Selik.
- [bpo-31608](https://python-all.ru/3/whatsnew/changelog.html): Возникает исключение `TypeError` вместо аварийного завершения, если подкласс `collections.deque` возвращает не-deque из `__new__`. Патч от Oren Milman.
- [bpo-31425](https://python-all.ru/3/whatsnew/changelog.html): Добавлена поддержка сокетов адресного семейства AF\_QIPCRTR, поддерживаемого ядром Linux. Это используется для связи с сервисами, такими как GPS или радио, работающими на устройствах Qualcomm. Патч от Bjorn Andersson.
- [bpo-22005](https://python-all.ru/3/whatsnew/changelog.html): Реализована распаковка (unpickling) экземпляров [`datetime`](https://python-all.ru/3/library/datetime.html#datetime.datetime), [`date`](https://python-all.ru/3/library/datetime.html#datetime.date) и [`time`](https://python-all.ru/3/library/datetime.html#datetime.time), упакованных (pickled) Python 2. Для успешного декодирования следует использовать `encoding='latin1'`.
- [bpo-27645](https://python-all.ru/3/whatsnew/changelog.html): [`sqlite3.Connection`](https://python-all.ru/3/library/sqlite3.html#sqlite3.Connection) теперь предоставляет [`backup`](https://python-all.ru/3/library/sqlite3.html#sqlite3.Connection.backup) метод, если используемая библиотека SQLite имеет версию 3.6.11 или выше. Исправление от Lele Gaifax.
- [bpo-16865](https://python-all.ru/3/whatsnew/changelog.html): Поддержка массивов размером \>=2 ГБ в [`ctypes`](https://python-all.ru/3/library/ctypes.html#module-ctypes). Исправление от Segev Finer.
- [bpo-31508](https://python-all.ru/3/whatsnew/changelog.html): Удалена поддержка аргументов в `tkinter.ttk.Treeview.selection`. Они были объявлены устаревшими в 3.6. Используйте специализированные методы, такие как `selection_set`, для изменения выделения.
- [bpo-29456](https://python-all.ru/3/whatsnew/changelog.html): Исправлены ошибки в нормализации хангыля: u1176, u11a7 и u11c3

### Документация

- [bpo-21257](https://python-all.ru/3/whatsnew/changelog.html): Документирован [`http.client.parse_headers()`](https://python-all.ru/3/library/http.client.html#http.client.parse_headers).
- [bpo-34764](https://python-all.ru/3/whatsnew/changelog.html): Улучшен пример iter() со вторым аргументом-стражем.
- [bpo-35564](https://python-all.ru/3/whatsnew/changelog.html): Явно установлена переменная master\_doc в conf.py для совместимости с Sphinx 2.0
- [bpo-35511](https://python-all.ru/3/whatsnew/changelog.html): Указано, что класс profile.Profile не поддерживает методы enable или disable. Также разъяснено, что объект Profile в качестве контекстного менеджера поддерживается только в модуле cProfile.
- [bpo-10536](https://python-all.ru/3/whatsnew/changelog.html): Улучшена документация gettext. Исправление от Éric Araujo
- [bpo-35089](https://python-all.ru/3/whatsnew/changelog.html): Удалены упоминания `typing.io` и `typing.re`. Их типы следует импортировать напрямую из `typing`.
- [bpo-35038](https://python-all.ru/3/whatsnew/changelog.html): Исправлена документация о несуществующем атрибуте `f_restricted` в объекте frame. Исправление от Stéphane Wirtel
- [bpo-35042](https://python-all.ru/3/whatsnew/changelog.html): Замена PEP XYZ на роль pep и возможность использовать прямые ссылки на PEP.
- [bpo-35044](https://python-all.ru/3/whatsnew/changelog.html): Исправлена документация с использованием роли `exc` для соответствующего исключения. Исправление от Stéphane Wirtel
- [bpo-35035](https://python-all.ru/3/whatsnew/changelog.html): Переименована документация с [`email.utils`](https://python-all.ru/3/library/email.utils.html#module-email.utils) на `email.utils.rst`.
- [bpo-34967](https://python-all.ru/3/whatsnew/changelog.html): Использовать app.add\_object\_type() вместо устаревшей функции Sphinx app.description\_unit()
- [bpo-34913](https://python-all.ru/3/whatsnew/changelog.html): Добавлена документация о новом интерфейсе командной строки модуля gzip.
- [bpo-32174](https://python-all.ru/3/whatsnew/changelog.html): Документ CHM корректно отображает не-ASCII символы в некоторых многобайтовых системах Windows (MBCS).
- [bpo-11233](https://python-all.ru/3/whatsnew/changelog.html): Создана директива availability для документации. Оригинальное исправление от Georg Brandl.
- [bpo-34790](https://python-all.ru/3/whatsnew/changelog.html): Документировано, как передача корутин в asyncio.wait() может сбивать с толку.
- [bpo-34552](https://python-all.ru/3/whatsnew/changelog.html): Разъяснено, что оператор `==` иногда эквивалентен `is`. Операторы `<`, `<=`, `>` и `>=` определены только там, где они имеют смысл.
- [bpo-28617](https://python-all.ru/3/whatsnew/changelog.html): Исправлена информация в документации stdtypes о типах, поддерживающих проверку принадлежности.
- [bpo-20177](https://python-all.ru/3/whatsnew/changelog.html): Перенос datetime.date.fromtimestamp в Argument Clinic. Исправление от Tim Hoffmann.
- [bpo-34065](https://python-all.ru/3/whatsnew/changelog.html): Исправлена некорректно написанная разметка в документации basicConfig
- [bpo-33460](https://python-all.ru/3/whatsnew/changelog.html): Заменены многоточия на правильные коды ошибок в главе 3 учебного пособия.
- [bpo-33847](https://python-all.ru/3/whatsnew/changelog.html): Добавлен элемент «@» (оператор @) в индекс.
- [bpo-33409](https://python-all.ru/3/whatsnew/changelog.html): Разъяснена взаимосвязь между [**PEP 538**](https://python-all.ru/3/whatsnew/changelog.html) (PYTHONCOERCECLOCALE) и режимом PYTHONUTF8 из PEP 540.
- [bpo-33197](https://python-all.ru/3/whatsnew/changelog.html): Добавлен тег versionadded в документацию ParameterKind.description
- [bpo-17045](https://python-all.ru/3/whatsnew/changelog.html): Улучшена документация C-API для PyTypeObject. Включает добавление нескольких таблиц быстрого доступа и множества отсутствовавших записей слотов/typedef. Существующие записи также были приведены к более единообразному формату.
- [bpo-33736](https://python-all.ru/3/whatsnew/changelog.html): Улучшена документация [`asyncio.open_connection()`](https://python-all.ru/3/library/asyncio-stream.html#asyncio.open_connection), [`asyncio.start_server()`](https://python-all.ru/3/library/asyncio-stream.html#asyncio.start_server) и их аналогов для UNIX-сокетов.
- [bpo-23859](https://python-all.ru/3/whatsnew/changelog.html): Документировано, что `asyncio.wait()` не отменяет свои future по таймауту.
- [bpo-32436](https://python-all.ru/3/whatsnew/changelog.html): Документированы [**PEP 567**](https://python-all.ru/3/whatsnew/changelog.html) изменения в asyncio.
- [bpo-33604](https://python-all.ru/3/whatsnew/changelog.html): стандартное для HMAC md5 значение изменено на DeprecationWarning, удаление перенесено на версию 3.8.
- [bpo-33594](https://python-all.ru/3/whatsnew/changelog.html): `getargspec`, `from_function` и `from_builtin` объявлены устаревшими в их соответствующих строковых документах и указана версия, с которой они считаются устаревшими, в сообщении DeprecationWarning.
- [bpo-33503](https://python-all.ru/3/whatsnew/changelog.html): исправлена неработающая ссылка на PyPI
- [bpo-33421](https://python-all.ru/3/whatsnew/changelog.html): добавлена отсутствующая документация для `typing.AsyncContextManager`.
- [bpo-33487](https://python-all.ru/3/whatsnew/changelog.html): BZ2file теперь выводит DeprecationWarning при передаче buffering=None; сообщение об устаревании и документация теперь также явно указывают, что параметр считается устаревшим начиная с версии 3.0.
- [bpo-33378](https://python-all.ru/3/whatsnew/changelog.html): добавлен переключатель на корейский язык для [https://docs.python.org/3/](https://python-all.ru/3/index.html)
- [bpo-33276](https://python-all.ru/3/whatsnew/changelog.html): уточнено, что атрибут `__path__` в модулях не может быть произвольным значением.
- [bpo-33201](https://python-all.ru/3/whatsnew/changelog.html): обновление документации по написанию расширений на C.
- [bpo-33195](https://python-all.ru/3/whatsnew/changelog.html): объявлено устаревшим использование `Py_UNICODE` в документе `c-api/arg`. API, связанные с `Py_UNICODE`, считаются устаревшими с Python 3.3, но это упущение было в документе.
- [bpo-33126](https://python-all.ru/3/whatsnew/changelog.html): документация для PyBuffer\_ToContiguous().
- [bpo-27212](https://python-all.ru/3/whatsnew/changelog.html): изменена документация для рецепта `islice()` – теперь начальные значения потребляются до начального индекса.
- [bpo-28247](https://python-all.ru/3/whatsnew/changelog.html): обновлена документация [`zipapp`](https://python-all.ru/3/library/zipapp.html#module-zipapp): описано, как создавать автономные приложения.
- [bpo-18802](https://python-all.ru/3/whatsnew/changelog.html): изменения документации для ipaddress. Исправление от Джона Фостера (Jon Foster) и Беркера Пексага (Berker Peksag).
- [bpo-27428](https://python-all.ru/3/whatsnew/changelog.html): обновлена документация: уточнено, что `WindowsRegistryFinder` реализует `MetaPathFinder`. (Исправление от Химаншу Лакхара (Himanshu Lakhara))
- [bpo-28124](https://python-all.ru/3/whatsnew/changelog.html): функция ssl.wrap\_socket() модуля ssl теперь считается менее предпочтительной и объявлена устаревшей в пользу более безопасного и эффективного метода SSLContext.wrap\_socket().
- [bpo-17232](https://python-all.ru/3/whatsnew/changelog.html): уточнена документация для ключей -O и -OO. Исправление от Терри Риди (Terry Reedy).
- [bpo-32436](https://python-all.ru/3/whatsnew/changelog.html): добавлена документация для модуля contextvars (PEP 567).
- [bpo-32800](https://python-all.ru/3/whatsnew/changelog.html): обновлена ссылка на документацию W3C для пространств имён XML по умолчанию.
- [bpo-11015](https://python-all.ru/3/whatsnew/changelog.html): обновлена документация [`test.support`](https://python-all.ru/3/library/test.html#module-test.support).
- [bpo-32613](https://python-all.ru/3/whatsnew/changelog.html): файл faq/windows.html обновлён: вместо python теперь используется команда py (PEP 397).
- [bpo-8722](https://python-all.ru/3/whatsnew/changelog.html): документация для `__getattr__()`: описано поведение, когда метод `get()` свойства возбуждает [`AttributeError`](https://python-all.ru/3/library/exceptions.html#AttributeError).
- [bpo-32614](https://python-all.ru/3/whatsnew/changelog.html): примеры регулярных выражений в документации теперь используют сырые строки, чтобы избежать [`DeprecationWarning`](https://python-all.ru/3/library/exceptions.html#DeprecationWarning), и в REGEX HOWTO добавлен текст, подчёркивающий устаревание.
- [bpo-20709](https://python-all.ru/3/whatsnew/changelog.html): удалён абзац, где объяснялось, что os.utime() не поддерживает каталог как путь в Windows. Исправление от Яна-Филиппа Герке (Jan-Philip Gehrcke).
- [bpo-32722](https://python-all.ru/3/whatsnew/changelog.html): из руководства удалён неудачный пример с генераторным выражением. Исправление от Стефана Виртеля (Stéphane Wirtel).
- [bpo-31972](https://python-all.ru/3/whatsnew/changelog.html): улучшены строки документации для подклассов `pathlib.PurePath`.
- [bpo-30607](https://python-all.ru/3/whatsnew/changelog.html): при сборке документации используется внешний пакет `python-docs-theme`.
- [bpo-8243](https://python-all.ru/3/whatsnew/changelog.html): добавлено примечание о поведении исключений curses.addch и curses.addstr при записи за пределами окна или панели.
- [bpo-32337](https://python-all.ru/3/whatsnew/changelog.html): обновлена документация, касающаяся порядка `dict`.
- [bpo-25041](https://python-all.ru/3/whatsnew/changelog.html): документация для `AF_PACKET` в модуле [`socket`](https://python-all.ru/3/library/socket.html#module-socket).
- [bpo-31432](https://python-all.ru/3/whatsnew/changelog.html): уточнено значение флагов CERT\_NONE, CERT\_OPTIONAL и CERT\_REQUIRED для ssl.SSLContext.verify\_mode.

### Tests

- [bpo-35772](https://python-all.ru/3/whatsnew/changelog.html): исправлены тесты разрежённых файлов в test\_tarfile на ppc64 с файловой системой tmpfs. Исправлена функция, проверяющая, поддерживает ли файловая система разрежённые файлы: создаётся файл, содержащий данные и «дыры», вместо файла, не содержащего данных. Эффективный размер блока tmpfs равен размеру страницы (tmpfs живёт в кеше страниц). RHEL использует 64-килобайтные страницы на aarch64, ppc64, ppc64le, только s390x и x86\_64 используют 4-килобайтные страницы, тогда как тест пробивает дыры по 4 КБ.
- [bpo-35045](https://python-all.ru/3/whatsnew/changelog.html): Ослабить проверки ssl-тестов и также принимать TLSv1 в качестве системного значения по умолчанию. Изменения устраняют сбой test\_min\_max\_version на Fedora 29.
- [bpo-32710](https://python-all.ru/3/whatsnew/changelog.html): `test_asyncio/test_sendfile.py` теперь сбрасывает политику цикла событий с помощью `tearDownModule()`, как это делается в других тестах, чтобы предотвратить предупреждение при запуске тестов на Windows.
- [bpo-33717](https://python-all.ru/3/whatsnew/changelog.html): test.pythoninfo теперь регистрирует информацию обо всех часах, а не только о time.time() и time.perf\_counter().
- [bpo-35488](https://python-all.ru/3/whatsnew/changelog.html): Добавлен тест для pathlib.Path.match() с проверкой, что он не поддерживает рекурсивные шаблоны в стиле glob \*\*.
- [bpo-31731](https://python-all.ru/3/whatsnew/changelog.html): Исправлено состояние гонки в `check_interrupted_write()` из test\_io: поток создаётся с уже заблокированным сигналом SIGALRM, а не блокирует сигнал уже из самого потока. Ранее было возможно, что поток получит сигнал до его блокировки.
- [bpo-35424](https://python-all.ru/3/whatsnew/changelog.html): Исправлен test\_multiprocessing\_main\_handling: использовать `multiprocessing.Pool` с контекстным менеджером, а затем явно дождаться завершения пула.
- [bpo-35519](https://python-all.ru/3/whatsnew/changelog.html): Переименовать модуль `test.bisect` в `test.bisect_cmd`, чтобы избежать конфликта с модулем [`bisect`](https://python-all.ru/3/library/bisect.html#module-bisect) при прямом запуске теста, например `./python Lib/test/test_xmlrpc.py`.
- [bpo-35513](https://python-all.ru/3/whatsnew/changelog.html): Заменить [`time.time()`](https://python-all.ru/3/library/time.html#time.time) на [`time.monotonic()`](https://python-all.ru/3/library/time.html#time.monotonic) в тестах для измерения разницы во времени.
- [bpo-34279](https://python-all.ru/3/whatsnew/changelog.html): `test.support.run_unittest()` больше не вызывает `TestDidNotRun`, если результат теста содержит пропущенные тесты. Исключение теперь возникает только в том случае, если не было выполнено ни одного теста и не было пропущено ни одного теста.
- [bpo-35412](https://python-all.ru/3/whatsnew/changelog.html): Добавить тестовый пример в `test_future4`: проверка Unicode-литерала.
- [bpo-26704](https://python-all.ru/3/whatsnew/changelog.html): Добавлен тест, демонстрирующий двойное патчирование метода экземпляра. Патч от Anthony Sottile.
- [bpo-33725](https://python-all.ru/3/whatsnew/changelog.html): test\_multiprocessing\_fork может аварийно завершаться на новых версиях macOS. Пока проблема не решена, тест на macOS пропускается.
- [bpo-35352](https://python-all.ru/3/whatsnew/changelog.html): Изменить test\_asyncio, чтобы он использовал набор сертификатов из тестового каталога.
- [bpo-35317](https://python-all.ru/3/whatsnew/changelog.html): Исправить ошибку переполнения `mktime()` в `test_email`: запускать `test_localtime_daylight_true_dst_true()` и `test_localtime_daylight_false_dst_true()` с определённым часовым поясом.
- [bpo-21263](https://python-all.ru/3/whatsnew/changelog.html): После нескольких сообщений о том, что test\_gdb работает некорректно на macOS, и поскольку gdb больше не поставляется по умолчанию, test\_gdb теперь пропускается на macOS, если для компиляции Python использовался LLVM Clang. Патч от Lysandros Nikolaou.
- [bpo-34279](https://python-all.ru/3/whatsnew/changelog.html): regrtest выдаёт предупреждение, если в конкретном тестовом файле не было выполнено ни одного теста. Также выводится новое итоговое состояние результата, если ни один тест не был выполнен во всех тестовых файлах. Патч от Pablo Galindo.
- [bpo-34962](https://python-all.ru/3/whatsnew/changelog.html): make docstest в Doc теперь проходит успешно и проверяется в CI.
- [bpo-23596](https://python-all.ru/3/whatsnew/changelog.html): Использовать argparse для командной строки модуля gzip. Патч от Antony Lee.
- [bpo-34537](https://python-all.ru/3/whatsnew/changelog.html): Исправить `test_gdb.test_strings()`, когда `LC_ALL=C` и GDB был скомпилирован с Python 3.6 или более ранней версией.
- [bpo-34587](https://python-all.ru/3/whatsnew/changelog.html): test\_socket: удалён RDSTest.testCongestion(). Тест пытался заполнить буфер сокета получателя и ожидал ошибки. Но протокол RDS этого не требует. Более того, реализация RDS в Linux ожидает, что производитель сообщений снижает свою скорость, и не входит в обязанности получателя вызывать ошибку. Тест заведомо падает на Fedora 28, поэтому он просто удалён.
- [bpo-34661](https://python-all.ru/3/whatsnew/changelog.html): Исправить test\_shutil, если unzip не поддерживает -t.
- [bpo-34200](https://python-all.ru/3/whatsnew/changelog.html): Устранена недетерминированная нестабильность test\_pkg за счёт отказа от использования опасной логики test.support.module\_cleanup() для сохранения и восстановления содержимого sys.modules между тестовыми случаями.
- [bpo-34569](https://python-all.ru/3/whatsnew/changelog.html): Экспериментальные каналы данных PEP 554 теперь корректно передают отрицательные объекты PyLong между подынтерпретаторами на 32-битных системах. Патч от Michael Felt.
- [bpo-34594](https://python-all.ru/3/whatsnew/changelog.html): Исправить использование жёстко заданных значений `errno` в тестах.
- [bpo-34579](https://python-all.ru/3/whatsnew/changelog.html): Исправить test\_embed для AIX. Патч от Michael Felt.
- [bpo-34542](https://python-all.ru/3/whatsnew/changelog.html): Использовать RSA-ключи 3072 бит и подпись SHA-256 для тестовых сертификатов и ключей.
- [bpo-11193](https://python-all.ru/3/whatsnew/changelog.html): Убрать специальное условие для AIX в `test_subprocess.test_undecodable_env`.
- [bpo-34347](https://python-all.ru/3/whatsnew/changelog.html): Исправить `test_utf8_mode.test_cmd_line` для AIX.
- [bpo-34490](https://python-all.ru/3/whatsnew/changelog.html): На AIX с сокетами семейства AF\_UNIX функция getsockname() не предоставляет 'sockname', поэтому пропускаются вызовы transport.get\_extra\_info('sockname').
- [bpo-34391](https://python-all.ru/3/whatsnew/changelog.html): Исправить тест ftplib для TLS 1.3 с помощью чтения из сокета данных.
- [bpo-11192](https://python-all.ru/3/whatsnew/changelog.html): Исправить `test_socket` на AIX 6.1 и новее: поддержка IPv6 zone id поддерживается только `inet_pton6_zone()`. Перейти на `platform.system()`, основанный на определении во время выполнения, для определения текущей платформы вместо `sys.platform()`, основанного на времени сборки.
- [bpo-34399](https://python-all.ru/3/whatsnew/changelog.html): Обновить все RSA-ключи и параметры DH до использования не менее 2048 бит.
- [bpo-34373](https://python-all.ru/3/whatsnew/changelog.html): Исправлены тесты `test_mktime` и `test_pthread_getcpuclickid` для AIX. Добавлена проверка диапазона для `_PyTime_localtime`. Патч от Michael Felt
- [bpo-11191](https://python-all.ru/3/whatsnew/changelog.html): Пропуск теста distutils ‘test\_search\_cpp’ при использовании XLC в качестве компилятора. Патч от aixtools (Michael Felt)
- Улучшено сообщение об ошибке при сбое mock.assert\_has\_calls.
- [bpo-33746](https://python-all.ru/3/whatsnew/changelog.html): Исправлен test\_unittest при запуске в подробном режиме.
- [bpo-33901](https://python-all.ru/3/whatsnew/changelog.html): Исправлен test\_dbm\_gnu на macOS с gdbm 1.15: добавлено большее значение, чтобы гарантировать изменение размера файла.
- [bpo-33873](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка в `regrtest`, из-за которой запускался лишний тест при использовании –huntrleaks/-R. Завершение с ошибкой в случае указания недопустимых параметров для –huntrleaks/-R (необходимо указать хотя бы один прогревочный прогон и одно повторение).
- [bpo-33562](https://python-all.ru/3/whatsnew/changelog.html): Проверка, что глобальная политика цикла событий asyncio не остаётся после тестов.
- [bpo-33655](https://python-all.ru/3/whatsnew/changelog.html): Игнорирование ошибок test\_posix\_fallocate на платформах BSD, которые могут быть вызваны работой на ZFS.
- [bpo-32962](https://python-all.ru/3/whatsnew/changelog.html): Исправлен test\_gdb при компиляции Python с флагами -mcet -fcf-protection -O0.
- [bpo-33358](https://python-all.ru/3/whatsnew/changelog.html): Исправлен `test_embed.test_pre_initialization_sys_options()` при сборке интерпретатора с `--enable-shared`.
- [bpo-32872](https://python-all.ru/3/whatsnew/changelog.html): Избежание проблемы совместимости regrtest с пакетами пространств имён.
- [bpo-32517](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка в `test_asyncio` на macOS 10.12.2+ из-за того, что транспорт цикла `KqueueSelector` не закрывался.
- [bpo-32663](https://python-all.ru/3/whatsnew/changelog.html): Обеспечение запуска класса тестов `SMTPUTF8SimTests` в `test_smtplib.py`.
- [bpo-27643](https://python-all.ru/3/whatsnew/changelog.html): Тестовый случай Test\_C требует битовых полей «signed short», но компилятор IBM XLC (на AIX) этого не поддерживает. Пропустить код и тест при использовании AIX и XLC.

  Применимо к Python 2.7 и новее.
- [bpo-19417](https://python-all.ru/3/whatsnew/changelog.html): Добавлен test\_bdb.py.
- [bpo-31809](https://python-all.ru/3/whatsnew/changelog.html): Добавлены тесты для проверки соединения с кривыми secp ECDH.

### Сборка

- [bpo-34691](https://python-all.ru/3/whatsnew/changelog.html): Модуль \_contextvars теперь встроен в основную библиотеку Python на Windows.
- [bpo-35683](https://python-all.ru/3/whatsnew/changelog.html): Улучшены шаги сборки Azure Pipelines, теперь корректно проверяются макеты (layouts).
- [bpo-35642](https://python-all.ru/3/whatsnew/changelog.html): Удалён asynciomodule.c из pythoncore.vcxproj.
- [bpo-35550](https://python-all.ru/3/whatsnew/changelog.html): Исправлены неверные проверки #ifdef для Solaris: теперь ищется \_\_sun && \_\_SVR4 вместо sun при компиляции.
- [bpo-35499](https://python-all.ru/3/whatsnew/changelog.html): `make profile-opt` больше не заменяет `CFLAGS_NODIST` на `CFLAGS`. Теперь он добавляет флаги профильной оптимизации (PGO) в `CFLAGS_NODIST`: существующие флаги `CFLAGS_NODIST` сохраняются.
- [bpo-35257](https://python-all.ru/3/whatsnew/changelog.html): Предотвращение утечки флагов компоновщика из LTO в distutils при компиляции расширений C.
- [bpo-35351](https://python-all.ru/3/whatsnew/changelog.html): При сборке Python с clang и LTO флаги LTO больше не передаются в CFLAGS для сборки сторонних расширений C через distutils.
- [bpo-35139](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка компиляции при статической линковке `pyexpat` в `Modules/Setup`.
- [bpo-35059](https://python-all.ru/3/whatsnew/changelog.html): PCbuild: В pyproject.props в режиме Debug установлено InlineFunctionExpansion в OnlyExplicitInline (опция «/Ob1») для развёртывания функций, помеченных как inline. Это изменение должно сделать Python, скомпилированный в режиме Debug, немного быстрее на Windows.
- [bpo-35011](https://python-all.ru/3/whatsnew/changelog.html): Восстановлено использование pyexpatns.h для изоляции встроенной копии библиотеки expat, чтобы её символы не конфликтовали при линковке или динамической загрузке с внедряющим приложением или другими модулями расширения, имеющими собственную версию libexpat.
- [bpo-28015](https://python-all.ru/3/whatsnew/changelog.html): Обеспечение корректной работы –with-lto с clang.
- [bpo-34765](https://python-all.ru/3/whatsnew/changelog.html): Обновлён устаревший файл install-sh до последней ревизии из automake v1.16.1.
- [bpo-34585](https://python-all.ru/3/whatsnew/changelog.html): Проверка порядка байтов чисел с плавающей запятой в configure.ac с использованием тестов компиляции вместо выполнения кода, чтобы эти проверки работали в кросс-компилируемых сборках.
- [bpo-34710](https://python-all.ru/3/whatsnew/changelog.html): Исправлена сборка модуля SSL с OpenSSL и педантичными CFLAGS.
- [bpo-34582](https://python-all.ru/3/whatsnew/changelog.html): Добавлен вывод в формате JUnit XML для регрессионных тестов и обновлены сборки Azure DevOps.
- [bpo-34081](https://python-all.ru/3/whatsnew/changelog.html): Предупреждения Sphinx теперь обрабатываются как ошибки в Makefile документации.
- [bpo-34555](https://python-all.ru/3/whatsnew/changelog.html): Исправление случая, когда невозможно было оставить неопределёнными как `HAVE_LINUX_VM_SOCKETS_H`, так и `HAVE_SOCKADDR_ALG`.
- [bpo-33015](https://python-all.ru/3/whatsnew/changelog.html): Исправлено неопределённое поведение в реализации pthread для [`PyThread_start_new_thread()`](https://python-all.ru/3/c-api/threads.html#c.PyThread_start_new_thread): добавлена функция-обёртка, которая всегда возвращает `NULL`.
- [bpo-34245](https://python-all.ru/3/whatsnew/changelog.html): Разделяемая библиотека Python теперь устанавливается с правом на запись (режим 0755), что является стандартным способом установки таких библиотек.
- [bpo-34121](https://python-all.ru/3/whatsnew/changelog.html): Исправлено определение поддержки атомарных операций C11 в clang.
- [bpo-32430](https://python-all.ru/3/whatsnew/changelog.html): Файл Modules/Setup.dist переименован в Modules/Setup; при обновлении локального дерева исходников больше не требуется вручную копировать первый во второй.
- [bpo-30345](https://python-all.ru/3/whatsnew/changelog.html): Добавлен флаг -g в LDFLAGS при компиляции с LTO для получения отладочных символов.
- [bpo-5755](https://python-all.ru/3/whatsnew/changelog.html): Параметр `-Wstrict-prototypes` перенесён в `CFLAGS_NODIST` из `OPT`. Этот параметр выдавал раздражающие предупреждения при сборке модулей расширения на C++.
- [bpo-33614](https://python-all.ru/3/whatsnew/changelog.html): Обеспечивается корректная перегенерация файлов определений модулей для стабильного ABI на Windows.
- [bpo-33648](https://python-all.ru/3/whatsnew/changelog.html): Флаг конфигурации –with-c-locale-warning удалён. Он уже около года не оказывал никакого эффекта.
- [bpo-33522](https://python-all.ru/3/whatsnew/changelog.html): Включены сборки CI на Visual Studio Team Services по адресу [https://python.visualstudio.com/cpython](https://python-all.ru/3/whatsnew/changelog.html)
- [bpo-33512](https://python-all.ru/3/whatsnew/changelog.html): Проверка configure для «long double» упрощена
- [bpo-33483](https://python-all.ru/3/whatsnew/changelog.html): Компилятор C теперь корректно определяется из стандартных переменных окружения. Опции –without-gcc и –with-icc удалены.
- [bpo-33394](https://python-all.ru/3/whatsnew/changelog.html): Включена подробная сборка для модулей расширения, когда GNU make передаются макросы из командной строки.
- [bpo-33393](https://python-all.ru/3/whatsnew/changelog.html): Обновлены файлы config.guess и config.sub.
- [bpo-33377](https://python-all.ru/3/whatsnew/changelog.html): Добавлены новые тройки для вариантов mips r6 и riscv (используются в суффиксах расширений).
- [bpo-32232](https://python-all.ru/3/whatsnew/changelog.html): По умолчанию модули, настроенные в `Modules/Setup`, больше не собираются с `-DPy_BUILD_CORE`. Вместо этого модули, которым конкретно нужно это определение препроцессора, включают его в свои отдельные записи.
- [bpo-33182](https://python-all.ru/3/whatsnew/changelog.html): Тесты встраивания снова можно собирать с помощью clang 6.0
- [bpo-33163](https://python-all.ru/3/whatsnew/changelog.html): Обновлены pip до версии 9.0.3 и setuptools до v39.0.1.
- [bpo-33012](https://python-all.ru/3/whatsnew/changelog.html): gcc 8 добавил новую эвристику предупреждений для обнаружения некорректных приведений функций, и стандартная сборка Python, похоже, довольно часто вызывает это предупреждение. Наиболее распространённым является приведение функции METH\_NOARGS (использующей всего один аргумент) к PyCFunction. Исправлено добавлением фиктивного аргумента ко всем функциям, реализующим METH\_NOARGS.
- [bpo-32898](https://python-all.ru/3/whatsnew/changelog.html): Исправлена отладочная сборка python при использовании COUNT\_ALLOCS.
- [bpo-29442](https://python-all.ru/3/whatsnew/changelog.html): Замена optparse на argparse в setup.py

### Windows

- [bpo-35890](https://python-all.ru/3/whatsnew/changelog.html): Исправлена согласованность вызовов API GetVersionEx и wcstok.
- [bpo-32560](https://python-all.ru/3/whatsnew/changelog.html): Загрузчик `py` теперь передаёт свою структуру `STARTUPINFO` дочерним процессам.
- [bpo-35854](https://python-all.ru/3/whatsnew/changelog.html): Исправлены EnvBuilder и --symlinks в venv на Windows
- [bpo-35811](https://python-all.ru/3/whatsnew/changelog.html): Избежание распространения настроек venv при запуске через py.exe
- [bpo-35797](https://python-all.ru/3/whatsnew/changelog.html): Исправлен исполняемый файл по умолчанию, используемый модулем multiprocessing
- [bpo-35758](https://python-all.ru/3/whatsnew/changelog.html): Разрешена сборка на ARM с помощью MSVC.
- [bpo-29734](https://python-all.ru/3/whatsnew/changelog.html): Исправлена утечка дескрипторов в os.stat на Windows.
- [bpo-35596](https://python-all.ru/3/whatsnew/changelog.html): Использование непроверенных PYC-файлов для встраиваемого дистрибутива, чтобы избежать ограничений zipimport.
- [bpo-35596](https://python-all.ru/3/whatsnew/changelog.html): Исправлено многократное добавление vcruntime140.dll в переносимую сборку.
- [bpo-35402](https://python-all.ru/3/whatsnew/changelog.html): Обновлена сборка Windows для использования Tcl и Tk 8.6.9
- [bpo-35401](https://python-all.ru/3/whatsnew/changelog.html): Обновлена сборка Windows до OpenSSL 1.1.0j
- [bpo-34977](https://python-all.ru/3/whatsnew/changelog.html): В Windows venv теперь использует перенаправитель python.exe вместо копирования реальных двоичных файлов из базового окружения.
- [bpo-34977](https://python-all.ru/3/whatsnew/changelog.html): Добавлена поддержка сборки пакета для Windows App Store
- [bpo-35067](https://python-all.ru/3/whatsnew/changelog.html): Удалён модуль \_distutils\_findvs; вместо него используется vswhere.exe.
- [bpo-32557](https://python-all.ru/3/whatsnew/changelog.html): Разрешено передавать путь к файлу в shutil.disk\_usage в Windows
- [bpo-34770](https://python-all.ru/3/whatsnew/changelog.html): Исправлено возможное разыменование нулевого указателя в pyshellext.cpp.
- [bpo-34603](https://python-all.ru/3/whatsnew/changelog.html): Исправлено возвращение структур из функций, созданных MSVC
- [bpo-34581](https://python-all.ru/3/whatsnew/changelog.html): Код, специфичный для MSVC, в socketmodule.c защищён директивой `#ifdef _MSC_VER`.
- [bpo-34532](https://python-all.ru/3/whatsnew/changelog.html): Исправлен код выхода для аргументов списка версий в py.exe.
- [bpo-34062](https://python-all.ru/3/whatsnew/changelog.html): Исправлены аргументы ‘–list’ и ‘–list-paths’ в запускателе py.exe
- [bpo-34225](https://python-all.ru/3/whatsnew/changelog.html): Обеспечено, что каталоги INCLUDE и LIB не заканчиваются обратной косой чертой.
- [bpo-34011](https://python-all.ru/3/whatsnew/changelog.html): Изменён набор кода, который копировал DLL и init.tcl из запущенного Python в создаваемое виртуальное окружение. Такие копии нужны только при запуске из сборки из исходного кода Python, и теперь копирование выполняется только в этом случае, а не при каждом создании виртуального окружения.
- [bpo-34006](https://python-all.ru/3/whatsnew/changelog.html): Отменено ограничение длины строк для справочных документов Windows. Ограничение длины строк не требуется, так как страницы отображаются в отдельном приложении, а не на вкладке браузера. Кроме того, оно может плохо взаимодействовать с настройками DPI.
- [bpo-31546](https://python-all.ru/3/whatsnew/changelog.html): Восстановлен вызов PyOS\_InputHook во время ожидания ввода пользователя в приглашении. Это восстанавливает интеграцию интерактивных окон GUI (например, графиков Matplotlib) с приглашением в Windows.
- [bpo-30237](https://python-all.ru/3/whatsnew/changelog.html): Вывод ошибки при отмене ReadConsole с помощью CancelSynchronousIo вместо аварийного завершения.
- [bpo-33895](https://python-all.ru/3/whatsnew/changelog.html): GIL освобождается при вызове функций, которые захватывают блокировку загрузчика Windows.
- [bpo-33720](https://python-all.ru/3/whatsnew/changelog.html): Уменьшена максимальная глубина рекурсии marshal в релизных сборках.
- [bpo-29097](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка, при которой `datetime.fromtimestamp()` ошибочно выбрасывает [`OSError`](https://python-all.ru/3/library/exceptions.html#OSError) в Windows для значений от 0 до 86400. Патч от Ammar Askar.
- [bpo-33316](https://python-all.ru/3/whatsnew/changelog.html): PyThread\_release\_lock всегда завершается неудачей
- [bpo-33184](https://python-all.ru/3/whatsnew/changelog.html): Обновлён установщик Windows для использования OpenSSL 1.1.0h.
- [bpo-32890](https://python-all.ru/3/whatsnew/changelog.html): Исправлено использование GetLastError() вместо errno в os.execve() и os.truncate().
- [bpo-33016](https://python-all.ru/3/whatsnew/changelog.html): Исправлено потенциальное использование неинициализированной памяти в nt.\_getfinalpathname
- [bpo-32903](https://python-all.ru/3/whatsnew/changelog.html): Исправлена утечка памяти в os.chdir() в Windows, если текущий каталог задан UNC-путём.
- [bpo-32901](https://python-all.ru/3/whatsnew/changelog.html): Обновлены версии Tcl и Tk до 8.6.8
- [bpo-31966](https://python-all.ru/3/whatsnew/changelog.html): Исправлен WindowsConsoleIO.write() при записи пустых данных.
- [bpo-32409](https://python-all.ru/3/whatsnew/changelog.html): Обеспечена обработка содержимого Unicode в activate.bat.
- [bpo-32457](https://python-all.ru/3/whatsnew/changelog.html): Улучшена обработка денормализованного пути к исполняемому файлу при запуске Python.
- [bpo-32370](https://python-all.ru/3/whatsnew/changelog.html): Использование правильной кодировки для вывода ipconfig в модуле uuid. Патч от Segev Finer.
- [bpo-29248](https://python-all.ru/3/whatsnew/changelog.html): Исправлено [`os.readlink()`](https://python-all.ru/3/library/os.html#os.readlink) в Windows, который ошибочно считал поле `PrintNameOffset` буфера данных повторной обработки количеством символов, а не байтов. Патч от Craig Holmquist и SSE4.
- [bpo-1104](https://python-all.ru/3/whatsnew/changelog.html): Корректная обработка длины строки в `msilib.SummaryInfo.GetProperty()` для предотвращения усечения последнего символа.

### macOS

- [bpo-35401](https://python-all.ru/3/whatsnew/changelog.html): Обновлён установщик macOS для использования OpenSSL 1.1.0j.
- [bpo-35025](https://python-all.ru/3/whatsnew/changelog.html): Корректно защищено использование макросов `CLOCK_GETTIME` и др. в `timemodule` на macOS.
- [bpo-24658](https://python-all.ru/3/whatsnew/changelog.html): На macOS исправлено чтение из файла и запись в файл размером более 2 GiB.
- [bpo-34405](https://python-all.ru/3/whatsnew/changelog.html): Обновлён установщик macOS до OpenSSL 1.1.0i.
- [bpo-33635](https://python-all.ru/3/whatsnew/changelog.html): На macOS stat для некоторых файловых дескрипторов (например, /dev/fd/3) приводит к OSError с сообщением о плохом файловом дескрипторе. Добавлена защита от этого исключения в методах is\_dir, is\_file и подобных. DirEntry.is\_dir также может вызывать это исключение, поэтому \_RecursiveWildcardSelector.\_iterate\_directories расширен тем же шаблоном игнорирования ошибок.
- [bpo-13631](https://python-all.ru/3/whatsnew/changelog.html): Файл .editrc в домашнем каталоге пользователя теперь корректно обрабатывается во время инициализации readline через эмуляцию editline на macOS.
- [bpo-33184](https://python-all.ru/3/whatsnew/changelog.html): Обновлена сборка установщика macOS до OpenSSL 1.1.0h.
- [bpo-32726](https://python-all.ru/3/whatsnew/changelog.html): Сборка и компоновка с приватной копией Tcl/Tk 8.6 для установщика macOS 10.6+. Вариант установщика для 10.9+ уже так делал. Это означает, что Python 3.7, предоставляемый установщиками macOS с python.org, больше не требует и не использует никаких внешних версий Tcl/Tk, ни системных, ни установленных пользователем, таких как ActiveTcl.
- [bpo-32901](https://python-all.ru/3/whatsnew/changelog.html): Обновлён установщик macOS 10.9+ до Tcl/Tk 8.6.8.
- [bpo-31903](https://python-all.ru/3/whatsnew/changelog.html): В `_scproxy` освобождён GIL при вызове `SystemConfiguration`, чтобы избежать взаимоблокировок.

### IDLE

- [bpo-35770](https://python-all.ru/3/whatsnew/changelog.html): IDLE macosx удалил Options ⇒ Configure IDLE. Ранее он ошибочно удалял Window ⇒ Zoom Height. (Zoom Height теперь находится в меню Options). На Mac диалог настроек открывается через Preferences в меню IDLE.
- [bpo-35769](https://python-all.ru/3/whatsnew/changelog.html): Имя нового файла IDLE изменено с «Untitled» на «untitled».
- [bpo-35660](https://python-all.ru/3/whatsnew/changelog.html): Исправлены импорты в idlelib.window.
- [bpo-35641](https://python-all.ru/3/whatsnew/changelog.html): Корректно отформатирован `calltip`, когда функция не имеет docstring.
- [bpo-33987](https://python-all.ru/3/whatsnew/changelog.html): Для виджетов ttk теперь используется ttk Frame.
- [bpo-34055](https://python-all.ru/3/whatsnew/changelog.html): Исправлены ошибочные «умные» отступы и переносы строк в IDLE Shell.
- [bpo-35591](https://python-all.ru/3/whatsnew/changelog.html): Find Selection теперь работает, когда выделение не найдено.
- [bpo-35196](https://python-all.ru/3/whatsnew/changelog.html): Ускорен подсчёт строк в squeezer.
- [bpo-35598](https://python-all.ru/3/whatsnew/changelog.html): Обновлён config\_key: используются имена по PEP 8 и виджеты ttk, некоторые объекты сделаны глобальными, добавлены тесты.
- [bpo-28097](https://python-all.ru/3/whatsnew/changelog.html): Добавлены пункты Previous/Next History в меню Shell.
- [bpo-35208](https://python-all.ru/3/whatsnew/changelog.html): Squeezer теперь корректно подсчитывает перенесённые строки перед символами новой строки.
- [bpo-35555](https://python-all.ru/3/whatsnew/changelog.html): Пункт меню Code Context теперь отображается серым, когда он неприменим.
- [bpo-35521](https://python-all.ru/3/whatsnew/changelog.html): Документирована функция Code Context редактора IDLE. Добавлены некоторые внутренние ссылки в документации IDLE.
- [bpo-22703](https://python-all.ru/3/whatsnew/changelog.html): Метка меню Code Context теперь переключается между Show/Hide Code Context. Меню Zoom Height переключается между Zoom/Restore Height. Zoom Height перемещён из меню Window в меню Options.
- [bpo-35213](https://python-all.ru/3/whatsnew/changelog.html): Где уместно, используется «macOS» в idlelib.
- [bpo-34864](https://python-all.ru/3/whatsnew/changelog.html): На macOS выводится предупреждение, если системная настройка «Prefer tabs when opening documents» установлена в «Always».
- [bpo-34864](https://python-all.ru/3/whatsnew/changelog.html): Документированы две проблемы IDLE на macOS. Настройка System Preferences Dock «prefer tabs always» отключает некоторые функции IDLE. Меню немного отличаются от описанных для Windows и Linux.
- [bpo-35202](https://python-all.ru/3/whatsnew/changelog.html): Удалены неиспользуемые импорты из lib/idlelib.
- [bpo-33000](https://python-all.ru/3/whatsnew/changelog.html): Документировано, что оболочка IDLE не имеет ограничения на количество строк. Бесконечно выполняющаяся программа может переполнить память.
- [bpo-23220](https://python-all.ru/3/whatsnew/changelog.html): Объяснено, как оболочка IDLE отображает вывод.
- [bpo-35099](https://python-all.ru/3/whatsnew/changelog.html): Улучшена документация по выполнению пользовательского кода в IDLE. Раздел переименован с «IDLE – различия с консолью» на «Выполнение пользовательского кода». В основном описывает последствия использования объектов `sys.stdxxx`.
- [bpo-35097](https://python-all.ru/3/whatsnew/changelog.html): Добавлен подраздел документации IDLE, описывающий окна редактора. Темы включают открытие, строку заголовка и состояния, расширение .py\* и запуск.
- [bpo-35093](https://python-all.ru/3/whatsnew/changelog.html): Документирован просмотрщик документов IDLE. Добавлен абзац в подразделе «Справка и настройки», «Источники справки».
- [bpo-35088](https://python-all.ru/3/whatsnew/changelog.html): Обновлена строка документации idlelib.help.copy\_string. Теперь используется git и бэкпортирование вместо hg и слияния вперёд.
- [bpo-35087](https://python-all.ru/3/whatsnew/changelog.html): Обновлены файлы справки idlelib для текущей сборки документации. Основное изменение – удаление номеров глав и разделов.
- [bpo-34548](https://python-all.ru/3/whatsnew/changelog.html): Использовать настроенную цветовую тему для текстовых представлений только для чтения.
- [bpo-1529353](https://python-all.ru/3/whatsnew/changelog.html): Включено «сжатие» длинных выводов в оболочке, чтобы избежать снижения производительности и очистить историю без её потери. Сжатые выводы можно копировать, просматривать в отдельном окне и «разжимать».
- [bpo-34047](https://python-all.ru/3/whatsnew/changelog.html): Исправлено направление прокрутки колёсиком мыши на macOS.
- [bpo-34275](https://python-all.ru/3/whatsnew/changelog.html): Обеспечено постоянное отображение подсказок вызовов IDLE на Mac. Некоторым комбинациям MacOS-tk требуется .update\_idletasks(). Патч от Kevin Walzer.
- [bpo-34120](https://python-all.ru/3/whatsnew/changelog.html): Исправлена неотзывчивость после закрытия некоторых окон и диалогов.
- [bpo-33975](https://python-all.ru/3/whatsnew/changelog.html): Избегать мелкого шрифта при запуске htests. Поскольку одной из целей тестов, просматриваемых человеком, является проверка корректного внешнего вида виджетов, важно, чтобы они выглядели одинаково как при тестировании, так и при работе в IDLE.
- [bpo-33905](https://python-all.ru/3/whatsnew/changelog.html): Добавлен тест для idlelib.stackview.StackBrowser.
- [bpo-33924](https://python-all.ru/3/whatsnew/changelog.html): Изменён ключ mainmenu.menudefs ‘windows’ на ‘window’. Все остальные ключи menudef представляют собой версию записи главного меню в нижнем регистре.
- [bpo-33906](https://python-all.ru/3/whatsnew/changelog.html): Переименован idlelib.windows в window. Согласовано с пунктом «Window» в главном меню и удалено последнее имя модуля во множественном числе.
- [bpo-33917](https://python-all.ru/3/whatsnew/changelog.html): Исправлен и документирован idlelib/idle\_test/template.py. Исправленный файл компилируется, запускается и тестируется успешно. В idle\_test/README.txt объясняется, как использовать его для создания новых тестовых файлов IDLE.
- [bpo-33904](https://python-all.ru/3/whatsnew/changelog.html): IDLE: В rstrip класс RstripExtension переименован в Rstrip
- [bpo-33907](https://python-all.ru/3/whatsnew/changelog.html): Для согласованности и ясности переименованы модуль и классы IDLE. Модуль calltips и его класс CallTips теперь называются calltip и Calltip. В модуле calltip\_w класс CallTip теперь называется CalltipWindow.
- [bpo-33856](https://python-all.ru/3/whatsnew/changelog.html): Добавлено «help» в приветственное сообщение IDLE
- [bpo-33839](https://python-all.ru/3/whatsnew/changelog.html): IDLE: рефакторинг ToolTip и CallTip, добавление документации и тестов
- [bpo-33855](https://python-all.ru/3/whatsnew/changelog.html): Минимальное тестирование всех модулей IDLE. Добавлены недостающие файлы, импорт модуля, создание экземпляров классов и проверка покрытия. Проверены существующие файлы.
- [bpo-33656](https://python-all.ru/3/whatsnew/changelog.html): В Windows добавлен вызов API, указывающий, что tk масштабируется для DPI. На Windows 8.1+ или 10, если свойства совместимости DPI двоичного файла Python не изменены, а разрешение монитора превышает 96 DPI, это должно сделать текст и линии чётче. В остальных случаях эффекта не будет.
- [bpo-33768](https://python-all.ru/3/whatsnew/changelog.html): Щелчок по строке контекста перемещает эту строку в верхнюю часть окна редактора.
- [bpo-33763](https://python-all.ru/3/whatsnew/changelog.html): IDLE: Использовать текстовый виджет только для чтения для контекста кода вместо виджета-метки.
- [bpo-33664](https://python-all.ru/3/whatsnew/changelog.html): Прокрутка текста редактора IDLE по строкам. Ранее колёсико мыши и ползунок полосы прокрутки перемещали текст на фиксированное количество пикселей, что приводило к частичному отображению строк в верхней части окна редактора. Изменение также применяется к окнам оболочки и вывода grep, но не к текстовым представлениям только для чтения.
- [bpo-33679](https://python-all.ru/3/whatsnew/changelog.html): Включена настройка цветов для контекста кода в зависимости от темы. Используйте вкладку «Highlights», чтобы увидеть настройки для встроенных тем или добавить настройки в пользовательские темы.
- [bpo-33642](https://python-all.ru/3/whatsnew/changelog.html): Отображать до maxlines непустых строк для контекста кода. Если текущий контекст отсутствует, показывать одну пустую строку.
- [bpo-33628](https://python-all.ru/3/whatsnew/changelog.html): IDLE: Очистка codecontext.py и его теста.
- [bpo-33564](https://python-all.ru/3/whatsnew/changelog.html): Контекст кода IDLE теперь распознает async как открывающий блок ключевое слово.
- [bpo-21474](https://python-all.ru/3/whatsnew/changelog.html): Обновлено определение слова/идентификатора с ASCII на Unicode. В текстовых полях и полях ввода это влияет на выделение двойным щелчком, перемещение влево/вправо с помощью Ctrl+стрелки и удаление влево/вправо с помощью Ctrl+Backspace/Del.
- [bpo-33204](https://python-all.ru/3/whatsnew/changelog.html): IDLE: единообразная подсветка недопустимых префиксов строк. Префикс 'u' не может сочетаться с 'r' или 'f'. Единообразно подсвечивать столько символов префикса, начиная справа, сколько допустимо. Пересмотрен и расширен тест раскраски.
- [bpo-32984](https://python-all.ru/3/whatsnew/changelog.html): Устанавливать `__file__` при выполнении стартового файла. Как и Python, IDLE опционально выполняет один стартовый файл в окне оболочки перед показом первого приглашения ввода. В IDLE `-s` выполняет файл, указанный в переменной окружения `IDLESTARTUP` или [`PYTHONSTARTUP`](https://python-all.ru/3/using/cmdline.html#envvar-PYTHONSTARTUP); `-r file` выполняет `file`. Python устанавливает `__file__` в имя стартового файла перед его выполнением и сбрасывает перед первым приглашением. IDLE теперь делает то же самое при обычном запуске, без опции `-n`.
- [bpo-32940](https://python-all.ru/3/whatsnew/changelog.html): Упрощение и переименование StringTranslatePseudoMapping в pyparse.
- [bpo-32916](https://python-all.ru/3/whatsnew/changelog.html): Изменить `str` на `code` в pyparse.
- [bpo-32905](https://python-all.ru/3/whatsnew/changelog.html): Удалить неиспользуемый код в модуле pyparse.
- [bpo-32874](https://python-all.ru/3/whatsnew/changelog.html): Добавить тесты для pyparse.
- [bpo-32837](https://python-all.ru/3/whatsnew/changelog.html): Использование системной и зависящей от локали кодировки по умолчанию для open() – плохая идея для файлов IDLE, которые не зависят от системы и расположения.
- [bpo-32826](https://python-all.ru/3/whatsnew/changelog.html): Добавить "encoding=utf-8" для open() в test\_help\_about IDLE. GUI-тест test\_file\_buttons() проверяет только начальные строки, содержащие только ASCII, но он завершался ошибкой в системах, где open() по умолчанию использует 'ascii', поскольку readline() внутри читает и декодирует достаточно далеко вперед, чтобы встретить не-ASCII символ в CREDITS.txt.
- [bpo-32831](https://python-all.ru/3/whatsnew/changelog.html): Добавить строки документации и тесты для codecontext.
- [bpo-32765](https://python-all.ru/3/whatsnew/changelog.html): Обновить строку документации вкладки General в configdialog, чтобы добавить новые виджеты в список виджетов.

### Tools/Demos

- [bpo-35884](https://python-all.ru/3/whatsnew/changelog.html): Добавить скрипт для бенчмаркинга, измеряющего различные способы доступа к переменным: `Tools/scripts/var_access_benchmark.py`.
- [bpo-34989](https://python-all.ru/3/whatsnew/changelog.html): python-gdb.py теперь обрабатывает ошибки при вычислении номера строки фрейма Python.
- [bpo-20260](https://python-all.ru/3/whatsnew/changelog.html): Argument Clinic теперь имеет конвертеры беззнаковых целых без поразрядных операций.
- [bpo-32962](https://python-all.ru/3/whatsnew/changelog.html): python-gdb теперь перехватывает исключения `UnicodeDecodeError` при вызове `string()`.
- [bpo-32962](https://python-all.ru/3/whatsnew/changelog.html): python-gdb теперь перехватывает ValueError в read\_var(): например, когда у Python нет отладочных символов.
- [bpo-33189](https://python-all.ru/3/whatsnew/changelog.html): **pygettext.py** теперь распознает только строковые литералы как строки документации и переводимые строки, и отклоняет литералы bytes и f-строковые выражения.
- [bpo-31920](https://python-all.ru/3/whatsnew/changelog.html): Исправлена обработка каталогов в качестве аргументов в скрипте `pygettext`. На основе патча от Олега Красникова.
- [bpo-29673](https://python-all.ru/3/whatsnew/changelog.html): Исправить макросы pystackv и pystack в gdbinit.
- [bpo-25427](https://python-all.ru/3/whatsnew/changelog.html): Удалить скрипт pyvenv в пользу `python3 -m venv`, чтобы уменьшить путаницу относительно того, для какого интерпретатора Python будет создано виртуальное окружение.
- [bpo-32885](https://python-all.ru/3/whatsnew/changelog.html): Добавить флаг `-n` для `Tools/scripts/pathfix.py`, чтобы отключить автоматическое создание резервных копий (файлов с суффиксом `~`).
- [bpo-32222](https://python-all.ru/3/whatsnew/changelog.html): Исправить pygettext, который не извлекал строки документации для функций с аннотированными аргументами. Патч от Тоби Харрадайна.
- [bpo-31583](https://python-all.ru/3/whatsnew/changelog.html): Исправить 2to3 для использования с опцией –add-suffix, но без –output-dir для относительного пути к файлам в текущей директории.

### C API

- [bpo-35713](https://python-all.ru/3/whatsnew/changelog.html): Функции `PyByteArray_Init()` и `PyByteArray_Fini()` были удалены. Они ничего не делали начиная с Python 2.7.4 и Python 3.2.0, были исключены из ограниченного API (стабильного ABI) и не документировались.
- [bpo-33817](https://python-all.ru/3/whatsnew/changelog.html): Исправлен [`_PyBytes_Resize()`](https://python-all.ru/3/c-api/bytes.html#c._PyBytes_Resize) для пустых объектов bytes.
- [bpo-35322](https://python-all.ru/3/whatsnew/changelog.html): Исправить утечку памяти в [`PyUnicode_EncodeLocale()`](https://python-all.ru/3/c-api/unicode.html#c.PyUnicode_EncodeLocale) и [`PyUnicode_EncodeFSDefault()`](https://python-all.ru/3/c-api/unicode.html#c.PyUnicode_EncodeFSDefault) при обработке ошибок.
- [bpo-35059](https://python-all.ru/3/whatsnew/changelog.html): Следующие макросы C были преобразованы в статические встроенные функции: [`Py_INCREF()`](https://python-all.ru/3/c-api/refcounting.html#c.Py_INCREF), [`Py_DECREF()`](https://python-all.ru/3/c-api/refcounting.html#c.Py_DECREF), [`Py_XINCREF()`](https://python-all.ru/3/c-api/refcounting.html#c.Py_XINCREF), [`Py_XDECREF()`](https://python-all.ru/3/c-api/refcounting.html#c.Py_XDECREF), [`PyObject_INIT()`](https://python-all.ru/3/c-api/allocation.html#c.PyObject_INIT), [`PyObject_INIT_VAR()`](https://python-all.ru/3/c-api/allocation.html#c.PyObject_INIT_VAR).
- [bpo-35296](https://python-all.ru/3/whatsnew/changelog.html): `make install` теперь также устанавливает внутренний API: заголовочные файлы `Include/internal/*.h`.
- [bpo-35081](https://python-all.ru/3/whatsnew/changelog.html): Внутренние API, окруженные `#ifdef Py_BUILD_CORE`, были перемещены из заголовков `Include/*.h` в новые заголовочные файлы `Include/internal/pycore_*.h`.
- [bpo-35259](https://python-all.ru/3/whatsnew/changelog.html): Условно объявлять [`Py_FinalizeEx()`](https://python-all.ru/3/c-api/interp-lifecycle.html#c.Py_FinalizeEx) (новое в 3.6) на основе Py\_LIMITED\_API. Патч от Артура Нойфельда.
- [bpo-35081](https://python-all.ru/3/whatsnew/changelog.html): Макросы `_PyObject_GC_TRACK()` и `_PyObject_GC_UNTRACK()` были удалены из публичного C API.
- [bpo-35134](https://python-all.ru/3/whatsnew/changelog.html): Создание нового подкаталога `Include/cpython/`.
- [bpo-34725](https://python-all.ru/3/whatsnew/changelog.html): Добавлен \_Py\_SetProgramFullPath, чтобы разработчики, встраивающие Python, могли переопределять sys.executable
- [bpo-34910](https://python-all.ru/3/whatsnew/changelog.html): Обеспечить, чтобы [`PyObject_Print()`](https://python-all.ru/3/c-api/object.html#c.PyObject_Print) всегда возвращал `-1` при ошибке. Патч от Закери Спайтца.
- [bpo-34523](https://python-all.ru/3/whatsnew/changelog.html): Py\_DecodeLocale() и Py\_EncodeLocale() теперь используют кодировку UTF-8 в Windows, если Py\_LegacyWindowsFSEncodingFlag равен нулю.
- [bpo-34193](https://python-all.ru/3/whatsnew/changelog.html): Исправлена форма множественного числа в сообщениях TypeError в getargs.c и typeobject.c: ‘1 argument’ вместо ‘1 arguments’ и ‘1 element’ вместо ‘1 elements’.
- [bpo-34127](https://python-all.ru/3/whatsnew/changelog.html): Возвращает грамматически корректное сообщение об ошибке в зависимости от количества аргументов. Патч от Karthikeyan Singaravelan.
- [bpo-23927](https://python-all.ru/3/whatsnew/changelog.html): Исправлен [`SystemError`](https://python-all.ru/3/library/exceptions.html#SystemError) в [`PyArg_ParseTupleAndKeywords()`](https://python-all.ru/3/c-api/arg.html#c.PyArg_ParseTupleAndKeywords), когда единица формата `w*` используется для необязательного параметра.
- [bpo-32455](https://python-all.ru/3/whatsnew/changelog.html): Добавлен [`PyCompile_OpcodeStackEffectWithJump()`](https://python-all.ru/3/c-api/veryhigh.html#c.PyCompile_OpcodeStackEffectWithJump).
- [bpo-34008](https://python-all.ru/3/whatsnew/changelog.html): Py\_Main() снова можно вызывать после Py\_Initialize(), как в Python 3.6.
- [bpo-32500](https://python-all.ru/3/whatsnew/changelog.html): Исправлены сообщения об ошибках для [`PySequence_Size()`](https://python-all.ru/3/c-api/sequence.html#c.PySequence_Size), [`PySequence_GetItem()`](https://python-all.ru/3/c-api/sequence.html#c.PySequence_GetItem), [`PySequence_SetItem()`](https://python-all.ru/3/c-api/sequence.html#c.PySequence_SetItem) и [`PySequence_DelItem()`](https://python-all.ru/3/c-api/sequence.html#c.PySequence_DelItem), вызванных с отображением, и [`PyMapping_Size()`](https://python-all.ru/3/c-api/mapping.html#c.PyMapping_Size), вызванного с последовательностью.
- [bpo-33818](https://python-all.ru/3/whatsnew/changelog.html): [`PyExceptionClass_Name()`](https://python-all.ru/3/c-api/exceptions.html#c.PyExceptionClass_Name) теперь будет возвращать `const char *` вместо `char *`.
- [bpo-33042](https://python-all.ru/3/whatsnew/changelog.html): Встраиваемые приложения снова могут вызывать PySys\_ResetWarnOptions, PySys\_AddWarnOption и PySys\_AddXOption до вызова Py\_Initialize.
- [bpo-32374](https://python-all.ru/3/whatsnew/changelog.html): Документировано, что m\_traverse для модулей, инициализированных в несколько фаз, может вызываться с m\_state=NULL, и добавлена проверка корректности.
- [bpo-30863](https://python-all.ru/3/whatsnew/changelog.html): [`PyUnicode_AsWideChar()`](https://python-all.ru/3/c-api/unicode.html#c.PyUnicode_AsWideChar) и [`PyUnicode_AsWideCharString()`](https://python-all.ru/3/c-api/unicode.html#c.PyUnicode_AsWideCharString) больше не кэшируют `wchar_t*`-представление строковых объектов.

## Python 3.7.0 final

*Дата релиза: 2018-06-27*

### Библиотека

- [bpo-33851](https://python-all.ru/3/whatsnew/changelog.html): Исправлен [`ast.get_docstring()`](https://python-all.ru/3/library/ast.html#ast.get_docstring) для узла, у которого отсутствует docstring.

### C API

- [bpo-33932](https://python-all.ru/3/whatsnew/changelog.html): Двойной вызов Py\_Initialize() не делает ничего, вместо того чтобы завершаться с фатальной ошибкой: восстановлено поведение Python 3.6.

## Python 3.7.0 release candidate 1

*Дата релиза: 2018-06-12*

### Ядро и встроенные функции

- [bpo-33803](https://python-all.ru/3/whatsnew/changelog.html): Исправлен сбой в hamt.c, вызванный включением отслеживания GC для объекта, у которого не все поля были установлены в NULL.
- [bpo-33706](https://python-all.ru/3/whatsnew/changelog.html): Исправлен сбой при инициализации Python во время разбора параметров командной строки. Спасибо Christoph Gohlke за сообщение об ошибке и исправление!
- [bpo-30654](https://python-all.ru/3/whatsnew/changelog.html): Исправлен сброс обработчика SIGINT на SIG\_DFL при завершении интерпретатора, даже если ранее был установлен пользовательский обработчик. Патч от Philipp Kerling.
- [bpo-31849](https://python-all.ru/3/whatsnew/changelog.html): Исправлено предупреждение о сравнении знакового и беззнакового типов в pyhash.c.

### Библиотека

- [bpo-30167](https://python-all.ru/3/whatsnew/changelog.html): Предотвращение исключения в site.main(), если установлена переменная PYTHONSTARTUP. Патч от Steve Weber.
- [bpo-33812](https://python-all.ru/3/whatsnew/changelog.html): Экземпляр datetime d с tzinfo, не равным None, но с d.tzinfo.utcoffset(d), возвращающим None, теперь рассматривается методом astimezone() как наивный.
- [bpo-30805](https://python-all.ru/3/whatsnew/changelog.html): Устранение состояния гонки при ведении отладочного журнала.
- [bpo-33694](https://python-all.ru/3/whatsnew/changelog.html): asyncio: Исправлено состояние гонки, приводящее к потере данных при pause\_reading()/resume\_reading() при использовании ProactorEventLoop.
- [bpo-32493](https://python-all.ru/3/whatsnew/changelog.html): Исправлена проверка доступности `uuid_enc_be` в `configure.ac`. Патч от Michael Felt.
- [bpo-33792](https://python-all.ru/3/whatsnew/changelog.html): Добавлены asyncio.WindowsSelectorEventLoopPolicy и asyncio.WindowsProactorEventLoopPolicy.
- [bpo-33778](https://python-all.ru/3/whatsnew/changelog.html): Обновлена база данных `unicodedata` до версии Unicode 11.0.0.
- [bpo-33770](https://python-all.ru/3/whatsnew/changelog.html): улучшено сообщение об ошибке base64 для закодированных входных данных недопустимой длины
- [bpo-33769](https://python-all.ru/3/whatsnew/changelog.html): asyncio/start\_tls: исправлено сообщение об ошибке; отмена колбэков в случае необработанной ошибки; пометка SSLTransport как закрытого при прерывании.
- [bpo-33767](https://python-all.ru/3/whatsnew/changelog.html): Операции конкатенации (`+`) и повторения (`*`) последовательностей теперь вызывают [`TypeError`](https://python-all.ru/3/library/exceptions.html#TypeError) вместо [`SystemError`](https://python-all.ru/3/library/exceptions.html#SystemError) при выполнении над объектами [`mmap.mmap`](https://python-all.ru/3/library/mmap.html#mmap.mmap). Патч от Zackery Spytz.
- [bpo-33734](https://python-all.ru/3/whatsnew/changelog.html): asyncio/ssl: исправлен AttributeError, увеличено время ожидания рукопожатия по умолчанию
- [bpo-11874](https://python-all.ru/3/whatsnew/changelog.html): Использование улучшенного регулярного выражения при разбиении usage на части для переноса. Избегает ложных ошибок утверждения от пользовательских строк metavar.
- [bpo-33582](https://python-all.ru/3/whatsnew/changelog.html): Выдача предупреждения об устаревании для inspect.formatargspec

### Документация

- [bpo-33409](https://python-all.ru/3/whatsnew/changelog.html): Уточнена взаимосвязь между [**PEP 538**](https://python-all.ru/3/whatsnew/changelog.html)'s PYTHONCOERCECLOCALE и режимом PYTHONUTF8 из PEP 540.
- [bpo-33736](https://python-all.ru/3/whatsnew/changelog.html): Улучшена документация по [`asyncio.open_connection()`](https://python-all.ru/3/library/asyncio-stream.html#asyncio.open_connection), [`asyncio.start_server()`](https://python-all.ru/3/library/asyncio-stream.html#asyncio.start_server) и их аналогам для UNIX-сокетов.
- [bpo-31432](https://python-all.ru/3/whatsnew/changelog.html): Уточнено значение флагов CERT\_NONE, CERT\_OPTIONAL и CERT\_REQUIRED для ssl.SSLContext.verify\_mode.

### Сборка

- [bpo-5755](https://python-all.ru/3/whatsnew/changelog.html): Перемещена опция `-Wstrict-prototypes` в `CFLAGS_NODIST` из `OPT`. Эта опция выдавала раздражающие предупреждения при сборке модулей расширения, написанных на C++.

### Windows

- [bpo-33720](https://python-all.ru/3/whatsnew/changelog.html): Уменьшена максимальная глубина рекурсии маршала в сборках release.

### IDLE

- [bpo-33656](https://python-all.ru/3/whatsnew/changelog.html): На Windows добавлен вызов API, сообщающий, что tk масштабируется под DPI. На Windows 8.1+ или 10, если свойства совместимости DPI двоичного файла Python не изменены и разрешение монитора больше 96 DPI, это должно сделать текст и линии более четкими. В остальных случаях это не должно иметь эффекта.
- [bpo-33768](https://python-all.ru/3/whatsnew/changelog.html): Щелчок по строке контекста перемещает эту строку в верхнюю часть окна редактора.
- [bpo-33763](https://python-all.ru/3/whatsnew/changelog.html): IDLE: Использование виджета текста только для чтения для контекста кода вместо виджета метки.
- [bpo-33664](https://python-all.ru/3/whatsnew/changelog.html): Прокрутка текста редактора IDLE по строкам. Ранее колесо мыши и ползунок полосы прокрутки перемещали текст на фиксированное количество пикселей, что приводило к частичным строкам в верхней части окна редактора. Изменение также применяется к окнам оболочки и вывода grep, но не к окнам текста только для чтения.
- [bpo-33679](https://python-all.ru/3/whatsnew/changelog.html): Включение конфигурации цветов, специфичной для темы, для контекста кода. Используйте вкладку Highlights, чтобы увидеть настройки для встроенных тем или добавить настройки в пользовательские темы.
- [bpo-33642](https://python-all.ru/3/whatsnew/changelog.html): Отображение до maxlines непустых строк для контекста кода. Если текущего контекста нет, показывается одна пустая строка.

## Python 3.7.0 beta 5

*Дата выпуска: 2018-05-30*

### Ядро и встроенные модули

- [bpo-33622](https://python-all.ru/3/whatsnew/changelog.html): Исправлена утечка, когда сборщик мусора не может добавить объект с методом `__del__` или на который он ссылается, в список [`gc.garbage`](https://python-all.ru/3/library/gc.html#gc.garbage). [`PyGC_Collect()`](https://python-all.ru/3/c-api/gcsupport.html#c.PyGC_Collect) теперь может быть вызвана, когда установлено исключение, и сохраняет его.
- [bpo-33509](https://python-all.ru/3/whatsnew/changelog.html): Исправлен параметр module\_globals функции warnings.warn\_explicit(): не падать, если module\_globals не является словарём.
- [bpo-20104](https://python-all.ru/3/whatsnew/changelog.html): Новая `os.posix_spawn`, добавленная в 3.7.0b1, была удалена, так как мы всё ещё работаем над тем, как должен выглядеть API. Ожидайте этого в 3.8.
- [bpo-33475](https://python-all.ru/3/whatsnew/changelog.html): Исправлены различные ошибки при преобразовании аннотаций в строки и оптимизированы скобки в строковом представлении.
- [bpo-33391](https://python-all.ru/3/whatsnew/changelog.html): Исправлена утечка в set\_symmetric\_difference().
- [bpo-28055](https://python-all.ru/3/whatsnew/changelog.html): Исправлено невыровненное обращение к памяти в siphash24(). Патч от Rolf Eike Beer.
- [bpo-32911](https://python-all.ru/3/whatsnew/changelog.html): Из-за неожиданных проблем совместимости, обнаруженных во время бета-тестирования у потребителей, отменён [bpo-29463](https://python-all.ru/3/whatsnew/changelog.html). Поле `docstring` удалено из узлов AST Module, ClassDef, FunctionDef и AsyncFunctionDef, которое было добавлено в 3.7a1. Выражение docstring восстановлено как первый оператор в их теле. На основе патча от Inada Naoki.
- [bpo-21983](https://python-all.ru/3/whatsnew/changelog.html): Исправлен сбой в `ctypes.cast()`, если аргумент type является структурированным типом данных ctypes. Патч от Eryk Sun и Oren Milman.

### Библиотека

- [bpo-32751](https://python-all.ru/3/whatsnew/changelog.html): При отмене задачи из-за тайм-аута [`asyncio.wait_for()`](https://python-all.ru/3/library/asyncio-task.html#asyncio.wait_for) теперь будет ждать завершения отмены.
- [bpo-32684](https://python-all.ru/3/whatsnew/changelog.html): Исправлена gather: теперь она распространяет отмену самой себя даже при return\_exceptions.
- [bpo-33654](https://python-all.ru/3/whatsnew/changelog.html): Добавлена поддержка переключения типа протокола в SSLTransport.set\_protocol().
- [bpo-33674](https://python-all.ru/3/whatsnew/changelog.html): Транспорт приостанавливается как можно раньше, чтобы ещё больше снизить риск вызова data\_received() до connection\_made().
- [bpo-33674](https://python-all.ru/3/whatsnew/changelog.html): Исправлено состояние гонки в SSLProtocol.connection\_made() модуля asyncio.sslproto: теперь рукопожатие начинается немедленно вместо использования call\_soon(). Ранее data\_received() мог быть вызван до начала рукопожатия, что приводило к зависанию или сбою рукопожатия.
- [bpo-31647](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка, когда вызов write\_eof() на уже закрытом \_SelectorSocketTransport приводил к AttributeError.
- [bpo-32610](https://python-all.ru/3/whatsnew/changelog.html): asyncio.all\_tasks() теперь возвращает только ожидающие задачи.
- [bpo-32410](https://python-all.ru/3/whatsnew/changelog.html): Устранена блокировка при файловом вводе-выводе в резервном коде sendfile.
- [bpo-33469](https://python-all.ru/3/whatsnew/changelog.html): Исправлен RuntimeError после закрытия цикла событий, который использовал run\_in\_executor.
- [bpo-33672](https://python-all.ru/3/whatsnew/changelog.html): Исправлен сбой Task.\_\_repr\_\_ с некорректными корутинами Cython.
- [bpo-33654](https://python-all.ru/3/whatsnew/changelog.html): Исправлен transport.set\_protocol(): теперь поддерживается переключение между asyncio.Protocol и asyncio.BufferedProtocol. Исправлен loop.start\_tls(): теперь он работает с asyncio.BufferedProtocols.
- [bpo-33652](https://python-all.ru/3/whatsnew/changelog.html): Pickle-объекты переменных типов и индексированных обобщённых типов теперь устойчивы к будущим изменениям и совместимы со старыми версиями Python.
- [bpo-32493](https://python-all.ru/3/whatsnew/changelog.html): Исправлен [`uuid.uuid1()`](https://python-all.ru/3/library/uuid.html#uuid.uuid1) на FreeBSD.
- [bpo-33618](https://python-all.ru/3/whatsnew/changelog.html): Завершена и задокументирована предварительная и экспериментальная поддержка TLS 1.3 с OpenSSL 1.1.1.
- [bpo-33623](https://python-all.ru/3/whatsnew/changelog.html): Исправлена возможная ошибка SIGSGV при создании asyncio.Future в \_\_del\_\_.
- [bpo-30877](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка в Python-реализации декодера JSON, которая не позволяла очищать кэш разобранных строк после завершения декодирования. Основано на патче от c-fos.
- [bpo-33570](https://python-all.ru/3/whatsnew/changelog.html): Изменены настройки наборов шифров TLS 1.3 для совместимости с OpenSSL 1.1.1-pre6 и новее. В OpenSSL 1.1.1 шифры TLS 1.3 будут включены по умолчанию.
- [bpo-28556](https://python-all.ru/3/whatsnew/changelog.html): Аргументы `typing.Union` больше не упрощаются. Теперь `Union[Manager, Employee]` не упрощается до `Employee` во время выполнения. Ранее такое упрощение вызывало несколько ошибок и ограничивало возможности интроспекции.
- [bpo-33540](https://python-all.ru/3/whatsnew/changelog.html): Добавлен новый атрибут класса `block_on_close` в классы `ForkingMixIn` и `ThreadingMixIn` модуля [`socketserver`](https://python-all.ru/3/library/socketserver.html#module-socketserver).
- [bpo-33548](https://python-all.ru/3/whatsnew/changelog.html): tempfile.\_candidate\_tempdir\_list теперь учитывает обычные расположения TEMP.
- [bpo-33109](https://python-all.ru/3/whatsnew/changelog.html): Подпарсеры argparse снова не являются обязательными по умолчанию, отменяя изменение поведения, введённое [bpo-26510](https://python-all.ru/3/whatsnew/changelog.html) в 3.7.0a2.
- [bpo-33536](https://python-all.ru/3/whatsnew/changelog.html): dataclasses.make\_dataclass теперь проверяет некорректные имена полей и дублирующиеся поля. Также добавлена проверка некорректных спецификаций полей.
- [bpo-33542](https://python-all.ru/3/whatsnew/changelog.html): Запрещено использование `uuid.get_node` DUID вместо MAC на Windows. Патч от Zvi Effron.
- [bpo-26819](https://python-all.ru/3/whatsnew/changelog.html): Исправлено состояние гонки с `ReadTransport.resume_reading` в цикле событий proactor в Windows.
- Исправлена ошибка в `typing.get_type_hints()`, когда ClassVar был указан в виде строковой прямой ссылки.
- [bpo-33505](https://python-all.ru/3/whatsnew/changelog.html): Оптимизирован asyncio.ensure\_future() за счёт перестановки проверок: в 1.17 раза быстрее.
- [bpo-33497](https://python-all.ru/3/whatsnew/changelog.html): Добавлен параметр errors в cgi.parse\_multipart, и кодировка в FieldStorage теперь использует переданное значение errors (необходимо для Twisted). Патч от Amber Brown.
- [bpo-33495](https://python-all.ru/3/whatsnew/changelog.html): Изменено представление dataclasses.Fields: теперь используется repr каждого из его членов вместо str. Это позволяет лучше понять, что именно представляет каждое поле. Особенно это актуально для члена «type».
- [bpo-33453](https://python-all.ru/3/whatsnew/changelog.html): Исправлена работа dataclasses при использовании строковых литералов в аннотациях типов или при использовании PEP 563 («Отложенное вычисление аннотаций»). Для ClassVar («ClassVar» и «typing.ClassVar») и InitVar («InitVar» и «dataclasses.InitVar») обнаруживаются только определённые строковые префиксы.
- [bpo-28556](https://python-all.ru/3/whatsnew/changelog.html): Небольшие исправления в модуле typing: добавлены аннотации к `NamedTuple.__new__`, передаются `*args` и `**kwds` в `Generic.__new__`. Оригинальные PR от Paulius Šarka и Chad Dombrova.
- [bpo-20087](https://python-all.ru/3/whatsnew/changelog.html): Обновлено сопоставление псевдонимов с локалями, поддерживаемыми glibc 2.27.
- [bpo-33422](https://python-all.ru/3/whatsnew/changelog.html): Исправлено удаление завершающих кавычек при поиске литералов байтов/строк в pydoc. Исправление от Andrés Delfino.
- [bpo-28167](https://python-all.ru/3/whatsnew/changelog.html): Функции `platform.linux_distribution` и `platform.dist` теперь вызывают `DeprecationWarning` и помечены к удалению в Python 3.8.
- [bpo-33197](https://python-all.ru/3/whatsnew/changelog.html): Обновлено сообщение об ошибке при создании недопустимых inspect.Parameters. Исправление от Donghee Na.
- [bpo-33263](https://python-all.ru/3/whatsnew/changelog.html): Исправлена утечка FD в `_SelectorSocketTransport`. Исправление от Vlad Starostin.
- [bpo-32861](https://python-all.ru/3/whatsnew/changelog.html): Представление `__str__` модуля urllib.robotparser теперь включает записи с подстановочными знаками и поля «Crawl-delay» и «Request-rate». Исправление от Michael Lazar.
- [bpo-32257](https://python-all.ru/3/whatsnew/changelog.html): Модуль ssl теперь содержит константу OP\_NO\_RENEGOTIATION, доступную в OpenSSL 1.1.0h или 1.1.1.
- [bpo-16865](https://python-all.ru/3/whatsnew/changelog.html): Поддержка массивов размером \>=2 ГиБ в [`ctypes`](https://python-all.ru/3/library/ctypes.html#module-ctypes). Исправление от Segev Finer.

### Документация

- [bpo-23859](https://python-all.ru/3/whatsnew/changelog.html): Документировать, что `asyncio.wait()` не отменяет свои futures при тайм-ауте.
- [bpo-32436](https://python-all.ru/3/whatsnew/changelog.html): Документировать [**изменения PEP 567**](https://python-all.ru/3/whatsnew/changelog.html) в asyncio.
- [bpo-33604](https://python-all.ru/3/whatsnew/changelog.html): Обновлено поведение HMAC md5 по умолчанию: теперь вызывает DeprecationWarning, удаление отложено до версии 3.8.
- [bpo-33503](https://python-all.ru/3/whatsnew/changelog.html): Исправлена битая ссылка на PyPI.
- [bpo-33421](https://python-all.ru/3/whatsnew/changelog.html): Добавлена недостающая документация для `typing.AsyncContextManager`.

### Тесты

- [bpo-33655](https://python-all.ru/3/whatsnew/changelog.html): Игнорировать сбои test\_posix\_fallocate на платформах BSD, которые могут быть вызваны работой на ZFS.
- [bpo-32604](https://python-all.ru/3/whatsnew/changelog.html): Удалён модуль \_xxsubinterpreters (предназначенный для тестирования) и связанные с ним вспомогательные средства. Этот модуль был изначально добавлен недавно, в 3.7b1.

### Сборка

- [bpo-33614](https://python-all.ru/3/whatsnew/changelog.html): Обеспечивает корректную регенерацию файлов определения модулей для стабильного ABI в Windows.
- [bpo-33522](https://python-all.ru/3/whatsnew/changelog.html): Включены CI-сборки на Visual Studio Team Services по адресу [https://python.visualstudio.com/cpython](https://python-all.ru/3/whatsnew/changelog.html)
- [bpo-33012](https://python-all.ru/3/whatsnew/changelog.html): Добавлен `-Wno-cast-function-type` для gcc 8 для подавления предупреждений о приведении типов функций, например, приведении к PyCFunction в списках определений методов.

### macOS

- [bpo-13631](https://python-all.ru/3/whatsnew/changelog.html): Файл .editrc в домашнем каталоге пользователя теперь правильно обрабатывается во время инициализации readline через эмуляцию editline на macOS.

### IDLE

- [bpo-33628](https://python-all.ru/3/whatsnew/changelog.html): IDLE: Очистка codecontext.py и его теста.
- [bpo-33564](https://python-all.ru/3/whatsnew/changelog.html): Контекст кода IDLE теперь распознает async как открывающий блок.
- [bpo-32831](https://python-all.ru/3/whatsnew/changelog.html): Добавлены докстринги и тесты для codecontext.

## Python 3.7.0 beta 4

*Дата выпуска: 2018-05-02*

### Ядро и встроенные функции

- [bpo-33363](https://python-all.ru/3/whatsnew/changelog.html): Вызывать SyntaxError для операторов `async with` и `async for` вне асинхронных функций.
- [bpo-33128](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка, из-за которой PathFinder появлялся дважды в sys.meta\_path. Исправление от Pablo Galindo Salgado.
- [bpo-33312](https://python-all.ru/3/whatsnew/changelog.html): Исправлены предупреждения clang ubsan (санитайзер неопределённого поведения) в dictobject.c за счёт корректировки объявления внутренней структуры \_dictkeysobject с разделяемыми ключами.
- [bpo-33231](https://python-all.ru/3/whatsnew/changelog.html): Исправлена потенциальная утечка памяти в `normalizestring()`.
- [bpo-33205](https://python-all.ru/3/whatsnew/changelog.html): Изменена функция роста словаря с `round_up_to_power_2(used*2+hashtable_size/2)` на `round_up_to_power_2(used*3)`. Ранее словарь уменьшался только при `used == 0`. Теперь у словаря больше шансов быть уменьшенным.
- [bpo-29922](https://python-all.ru/3/whatsnew/changelog.html): Улучшены сообщения об ошибках в ‘async with’, когда `__aenter__()` или `__aexit__()` возвращают неожидаемый объект.
- [bpo-33199](https://python-all.ru/3/whatsnew/changelog.html): Исправлена `ma_version_tag` в реализации словаря, которая не инициализирована при копировании из словаря с общими ключами.

### Библиотека

- [bpo-33281](https://python-all.ru/3/whatsnew/changelog.html): Исправлен регресс ctypes.util.find\_library на macOS.
- [bpo-33383](https://python-all.ru/3/whatsnew/changelog.html): Исправлен сбой в методе get() объекта базы данных [`dbm.ndbm`](https://python-all.ru/3/library/dbm.html#module-dbm.ndbm) при вызове с одним аргументом.
- [bpo-33329](https://python-all.ru/3/whatsnew/changelog.html): Исправлен регресс модуля multiprocessing на новых версиях glibc
- [bpo-991266](https://python-all.ru/3/whatsnew/changelog.html): Исправлено экранирование атрибута `Comment` объекта [`http.cookies.SimpleCookie`](https://python-all.ru/3/library/http.cookies.html#http.cookies.SimpleCookie).
- [bpo-33131](https://python-all.ru/3/whatsnew/changelog.html): Обновление встроенной версии pip до 10.0.1.
- [bpo-33308](https://python-all.ru/3/whatsnew/changelog.html): Исправлен сбой в модуле `parser` при преобразовании объекта ST в дерево кортежей или списков с помощью `line_info=False` и `col_info=True`.
- [bpo-33266](https://python-all.ru/3/whatsnew/changelog.html): lib2to3 теперь распознает строки `rf'...'`.
- [bpo-11594](https://python-all.ru/3/whatsnew/changelog.html): Обеспечено сохранение символов конца строки при использовании lib2to3.
- [bpo-33254](https://python-all.ru/3/whatsnew/changelog.html): Изменено поведение [`importlib.resources.contents()`](https://python-all.ru/3/library/importlib.resources.html#importlib.resources.contents) и `importlib.abc.ResourceReader.contents()`: теперь они возвращают [итерируемый объект](https://python-all.ru/3/glossary.html#term-iterable) вместо [итератора](https://python-all.ru/3/glossary.html#term-iterator).
- [bpo-33256](https://python-all.ru/3/whatsnew/changelog.html): Исправлено отображение вызова `<module>` в HTML, создаваемом модулем `cgitb.html()`. Исправление от Stéphane Blondon.
- [bpo-33185](https://python-all.ru/3/whatsnew/changelog.html): Исправлен регресс при запуске pydoc с ключом [`-m`](https://python-all.ru/3/using/cmdline.html#cmdoption-m). (Регресс был внесён в 3.7.0b3 при исправлении [bpo-33053](https://python-all.ru/3/whatsnew/changelog.html)). Это исправление также изменило pydoc: теперь при необходимости добавляется `os.getcwd()` в [`sys.path`](https://python-all.ru/3/library/sys.html#sys.path) вместо `"."`.
- [bpo-33169](https://python-all.ru/3/whatsnew/changelog.html): Удаление записей `None` из [`sys.path_importer_cache`](https://python-all.ru/3/library/sys.html#sys.path_importer_cache) при вызове `importlib.machinery.invalidate_caches()`.
- [bpo-33217](https://python-all.ru/3/whatsnew/changelog.html): Устарело: поиск объектов, не являющихся перечислениями, в классах Enum и их элементах (начиная с версии 3.8 будет вызывать [`TypeError`](https://python-all.ru/3/library/exceptions.html#TypeError)).
- [bpo-33203](https://python-all.ru/3/whatsnew/changelog.html): `random.Random.choice()` теперь последовательно вызывает `IndexError` для пустых последовательностей, даже при вызове из подклассов без реализации `getrandbits()`.
- [bpo-33224](https://python-all.ru/3/whatsnew/changelog.html): Обновление difflib.mdiff() для соответствия [**PEP 479**](https://python-all.ru/3/whatsnew/changelog.html). Неперехваченное исключение StopIteration в генераторе преобразуется в оператор return.
- [bpo-33209](https://python-all.ru/3/whatsnew/changelog.html): Завершение формирования фрейма в конце C-реализации [`pickle.Pickler.dump()`](https://python-all.ru/3/library/pickle.html#pickle.Pickler.dump).
- [bpo-20104](https://python-all.ru/3/whatsnew/changelog.html): Улучшена обработка ошибок и исправлена утечка ссылок в [`os.posix_spawn()`](https://python-all.ru/3/library/os.html#os.posix_spawn).
- [bpo-33175](https://python-all.ru/3/whatsnew/changelog.html): В dataclasses метод Field.\_\_set\_name\_\_ теперь ищет специальный метод \_\_set\_name\_\_ в классе, а не в экземпляре значения по умолчанию.
- [bpo-33097](https://python-all.ru/3/whatsnew/changelog.html): Вызов RuntimeError при вызове `executor.submit` во время завершения работы интерпретатора.
- [bpo-31908](https://python-all.ru/3/whatsnew/changelog.html): Исправлен вывод файлов покрытия для инструмента командной строки модуля `trace`. Ранее файлы покрытия создавались только при использовании опции `--missing`. Исправление от Michael Selik.

### Документация

- [bpo-33378](https://python-all.ru/3/whatsnew/changelog.html): Добавлен переключатель корейского языка для [https://docs.python.org/3/](https://python-all.ru/3/index.html)
- [bpo-33276](https://python-all.ru/3/whatsnew/changelog.html): Уточнено, что атрибут `__path__` модулей не может быть произвольным значением.
- [bpo-33201](https://python-all.ru/3/whatsnew/changelog.html): Модернизация документации по написанию C-расширений для типов.
- [bpo-33195](https://python-all.ru/3/whatsnew/changelog.html): Устарело использование `Py_UNICODE` в документе `c-api/arg`. API, связанные с `Py_UNICODE`, устарели начиная с Python 3.3, но это было упущено в документации.
- [bpo-8243](https://python-all.ru/3/whatsnew/changelog.html): Добавлено примечание о поведении исключений curses.addch и curses.addstr при записи за пределами окна или подокна.
- [bpo-32337](https://python-all.ru/3/whatsnew/changelog.html): Обновление документации, связанной с порядком `dict`.

### Тесты

- [bpo-33358](https://python-all.ru/3/whatsnew/changelog.html): Исправлено `test_embed.test_pre_initialization_sys_options()`, когда интерпретатор собран с `--enable-shared`.

### Сборка

- [bpo-33394](https://python-all.ru/3/whatsnew/changelog.html): Включена подробная сборка для модулей расширения, когда GNU make получает макросы из командной строки.
- [bpo-33393](https://python-all.ru/3/whatsnew/changelog.html): Обновлены файлы config.guess и config.sub.
- [bpo-33377](https://python-all.ru/3/whatsnew/changelog.html): Добавлены новые триплеты для вариантов mips r6 и riscv (используются в суффиксах расширений).
- [bpo-32232](https://python-all.ru/3/whatsnew/changelog.html): По умолчанию модули, настроенные в `Modules/Setup`, больше не собираются с `-DPy_BUILD_CORE`. Вместо этого модули, которым конкретно нужно это определение препроцессора, включают его в свои собственные записи.
- [bpo-33182](https://python-all.ru/3/whatsnew/changelog.html): Тесты внедрения снова могут быть собраны с помощью clang 6.0

### Windows

- [bpo-33184](https://python-all.ru/3/whatsnew/changelog.html): Обновлён установщик Windows для использования OpenSSL 1.1.0h.

### macOS

- [bpo-33184](https://python-all.ru/3/whatsnew/changelog.html): Обновлена сборка установщика macOS для использования OpenSSL 1.1.0h.

### IDLE

- [bpo-21474](https://python-all.ru/3/whatsnew/changelog.html): Обновлено определение слова/идентификатора с ascii на unicode. В текстовых и полях ввода это влияет на выделение двойным щелчком, перемещение влево/вправо с помощью control-влево/вправо и удаление влево/вправо с помощью control-BACKSPACE/DEL.
- [bpo-33204](https://python-all.ru/3/whatsnew/changelog.html): IDLE: последовательно раскрашивать недопустимые префиксы строк. Префикс ‘u’ не может быть объединён ни с ‘r’, ни с ‘f’. Последовательно раскрашивать столько префикса, начиная справа, сколько допустимо. Исправлен и расширен тест раскраски.

### Инструменты/Демонстрации

- [bpo-33189](https://python-all.ru/3/whatsnew/changelog.html): **pygettext.py** теперь распознаёт только литеральные строки как докстринги и переводимые строки, и отклоняет байтовые литералы и выражения f-строк.
- [bpo-31920](https://python-all.ru/3/whatsnew/changelog.html): Исправлена обработка каталогов в качестве аргументов в скрипте `pygettext`. На основе патча от Oleg Krasnikov.
- [bpo-29673](https://python-all.ru/3/whatsnew/changelog.html): Исправлены макросы pystackv и pystack gdbinit.
- [bpo-31583](https://python-all.ru/3/whatsnew/changelog.html): Исправлена 2to3 для использования с опцией –add-suffix, но без опции –output-dir для относительного пути к файлам в текущем каталоге.

## Python 3.7.0 beta 3

*Дата выпуска: 2018-03-29*

### Безопасность

- [bpo-33136](https://python-all.ru/3/whatsnew/changelog.html): Усилен модуль ssl против LibreSSL [**CVE 2018-8970**](https://python-all.ru/3/whatsnew/changelog.html). X509\_VERIFY\_PARAM\_set1\_host() вызывается с явной длиной имени. Новый тест гарантирует, что нулевые байты не допускаются.
- [bpo-33001](https://python-all.ru/3/whatsnew/changelog.html): Минимальное исправление для предотвращения переполнения буфера в os.symlink в Windows
- [bpo-32981](https://python-all.ru/3/whatsnew/changelog.html): Регулярные выражения в difflib и poplib были уязвимы для катастрофического возврата. Эти регулярные выражения представляли потенциальные векторы DOS (REDOS). Они были реорганизованы. Это устраняет [**CVE 2018-1060**](https://python-all.ru/3/whatsnew/changelog.html) и [**CVE 2018-1061**](https://python-all.ru/3/whatsnew/changelog.html). Патч от Jamie Davis.

### Ядро и встроенные модули

- [bpo-33053](https://python-all.ru/3/whatsnew/changelog.html): При использовании переключателя -m sys.path\[0\] теперь явно раскрывается как *начальный* рабочий каталог, а не оставляется пустым путём (который разрешает импорт из текущего рабочего каталога на момент импорта)
- [bpo-33018](https://python-all.ru/3/whatsnew/changelog.html): Улучшена согласованность ошибок, вызываемых `issubclass()`, когда он вызывается с не-классом и абстрактным базовым классом в качестве первого и второго аргументов соответственно. Патч от Josh Bronson.
- [bpo-33041](https://python-all.ru/3/whatsnew/changelog.html): Исправлен переход, когда функция содержит цикл `async for`.
- [bpo-33026](https://python-all.ru/3/whatsnew/changelog.html): Исправлен выход из блока “with” с помощью установки f\_lineno.
- [bpo-33005](https://python-all.ru/3/whatsnew/changelog.html): Исправлен сбой при fork при использовании пользовательского распределителя памяти (например, с использованием переменной окружения PYTHONMALLOC). \_PyGILState\_Reinit() и \_PyInterpreterState\_Enable() теперь используют стандартный распределитель RAW памяти для выделения нового мьютекса интерпретатора при fork.
- [bpo-17288](https://python-all.ru/3/whatsnew/changelog.html): Предотвратить переходы из трассировочных событий 'return' и 'исключение'.
- [bpo-32836](https://python-all.ru/3/whatsnew/changelog.html): Не использовать временные переменные в list/dict/set comprehensions

### Библиотека

- [bpo-33141](https://python-all.ru/3/whatsnew/changelog.html): Объекты Field передают \_\_set\_name\_\_ своим значениям по умолчанию, если у них есть свой \_\_set\_name\_\_.
- [bpo-33096](https://python-all.ru/3/whatsnew/changelog.html): Разрешить ttk.Treeview.insert вставлять iid с ложным булевым значением. Примечание: iid=0 и iid=False будут одним и тем же. Патч от Garvit Khatri.
- [bpo-32873](https://python-all.ru/3/whatsnew/changelog.html): Обрабатывать переменные типов и специальные формы typing как неизменяемые при копировании и pickle. Это исправляет несколько мелких проблем и несоответствий, а также улучшает обратную совместимость с Python 3.6.
- [bpo-33134](https://python-all.ru/3/whatsnew/changelog.html): При вычислении \_\_hash\_\_ для dataclass используйте таблицу поиска для хранения функции, возвращающей значение \_\_hash\_\_. Это улучшение по сравнению с поиском строки, а затем проверкой этой строки, чтобы решить, что делать.
- [bpo-33127](https://python-all.ru/3/whatsnew/changelog.html): Модуль ssl теперь компилируется с LibreSSL 2.7.1.
- [bpo-32505](https://python-all.ru/3/whatsnew/changelog.html): Вызывать TypeError, если переменная-член dataclass имеет тип Field, но не имеет аннотации типа.
- [bpo-33078](https://python-all.ru/3/whatsnew/changelog.html): Исправление сбоя на OSX, вызванного тестами, полагающимися на sem\_getvalue
- [bpo-33116](https://python-all.ru/3/whatsnew/changelog.html): Добавить 'Field' в dataclasses.\_\_all\_\_.
- [bpo-32896](https://python-all.ru/3/whatsnew/changelog.html): Исправление ошибки, когда наследование от dataclass с полем, использующим default\_factory, приводило к созданию некорректного класса.
- [bpo-33100](https://python-all.ru/3/whatsnew/changelog.html): Dataclasses: Если у поля есть значение по умолчанию, являющееся MemberDescriptorType, то это от того, что поле находится в \_\_slots\_\_, а не фактическое значение по умолчанию.
- [bpo-32953](https://python-all.ru/3/whatsnew/changelog.html): Если не-dataclass наследуется от замороженного dataclass, разрешить добавление атрибутов в производный класс. Назначать можно только атрибуты, не принадлежащие замороженному dataclass. Требовать, чтобы все dataclass в иерархии были либо все замороженными, либо все незамороженными.
- [bpo-33061](https://python-all.ru/3/whatsnew/changelog.html): Добавить отсутствующий `NoReturn` в `__all__` в typing.py
- [bpo-33078](https://python-all.ru/3/whatsnew/changelog.html): Исправить обработку размера в multiprocessing.Queue при возникновении ошибки пиклинга.
- [bpo-33064](https://python-all.ru/3/whatsnew/changelog.html): lib2to3 теперь корректно поддерживает завершающие запятые после `*args` и `**kwargs` в сигнатурах функций.
- [bpo-33056](https://python-all.ru/3/whatsnew/changelog.html): FIX: корректно закрывать утекающие файловые дескрипторы в concurrent.futures.ProcessPoolExecutor.
- [bpo-33021](https://python-all.ru/3/whatsnew/changelog.html): Освобождать GIL во время вызовов fstat(), чтобы избежать зависания всех потоков при вызове mmap.mmap(), os.urandom() и random.seed(). Патч от Nir Soffer.
- [bpo-31804](https://python-all.ru/3/whatsnew/changelog.html): Избегать сбоя в multiprocessing.Process, если стандартные потоки закрыты или равны None при завершении.
- [bpo-33037](https://python-all.ru/3/whatsnew/changelog.html): Пропускать отправку/получение данных после закрытия SSL-транспорта.
- [bpo-27683](https://python-all.ru/3/whatsnew/changelog.html): Исправить регрессию в [`ipaddress`](https://python-all.ru/3/library/ipaddress.html#module-ipaddress), из-за которой результат `hosts()` пуст, когда сеть задана кортежем, содержащим целочисленную маску, и остался только 1 бит для адресов.
- [bpo-32999](https://python-all.ru/3/whatsnew/changelog.html): Исправить аварийное завершение C-реализации `ABC.__subclasscheck__(cls, subclass)`, когда `subclass` не является объектом типа.
- [bpo-33009](https://python-all.ru/3/whatsnew/changelog.html): Исправить inspect.signature() для partialmethods с одним параметром.
- [bpo-32969](https://python-all.ru/3/whatsnew/changelog.html): Добавить несколько недостающих констант в zlib и исправить соответствующую documentation.
- [bpo-32056](https://python-all.ru/3/whatsnew/changelog.html): Улучшены исключения, вызываемые при недопустимом количестве каналов и разрядности сэмпла при чтении аудиофайла в модулях `aifc`, [`wave`](https://python-all.ru/3/library/wave.html#module-wave) и `sunau`.
- [bpo-32844](https://python-all.ru/3/whatsnew/changelog.html): Исправить неверное перенаправление низкого дескриптора (0 или 1) в stderr в подпроцессе, если другой низкий дескриптор закрыт.
- [bpo-32857](https://python-all.ru/3/whatsnew/changelog.html): В [`tkinter`](https://python-all.ru/3/library/tkinter.html#module-tkinter) теперь `after_cancel(None)` вызывает [`ValueError`](https://python-all.ru/3/library/exceptions.html#ValueError) вместо отмены первой запланированной функции. Патч от Cheryl Sabella.
- [bpo-31639](https://python-all.ru/3/whatsnew/changelog.html): http.server теперь предоставляет класс ThreadedHTTPServer и использует его при запуске модуля с `-m` для работы с предварительным открытием сокетов веб-браузерами.
- [bpo-27645](https://python-all.ru/3/whatsnew/changelog.html): [`sqlite3.Connection`](https://python-all.ru/3/library/sqlite3.html#sqlite3.Connection) теперь предоставляет метод [`backup`](https://python-all.ru/3/library/sqlite3.html#sqlite3.Connection.backup), если используемая библиотека SQLite имеет версию 3.6.11 или выше. Патч от Lele Gaifax.

### Документация

- [bpo-33126](https://python-all.ru/3/whatsnew/changelog.html): Документировать PyBuffer\_ToContiguous().
- [bpo-27212](https://python-all.ru/3/whatsnew/changelog.html): Изменена документация для рецепта `islice()`: теперь он потребляет начальные значения вплоть до начального индекса.
- [bpo-28247](https://python-all.ru/3/whatsnew/changelog.html): Обновлена документация [`zipapp`](https://python-all.ru/3/library/zipapp.html#module-zipapp): добавлено описание создания автономных приложений.
- [bpo-18802](https://python-all.ru/3/whatsnew/changelog.html): Изменения в документации для ipaddress. Патч от Jon Foster и Berker Peksag.
- [bpo-27428](https://python-all.ru/3/whatsnew/changelog.html): Обновлена документация: уточнено, что `WindowsRegistryFinder` реализует `MetaPathFinder`. (Патч от Himanshu Lakhara)

### Тесты

- [bpo-32872](https://python-all.ru/3/whatsnew/changelog.html): Устранена проблема совместимости regrtest с пакетами пространств имён.
- [bpo-32517](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка `test_asyncio` в macOS 10.12.2+, вызванная тем, что транспорт цикла `KqueueSelector` не закрывался.
- [bpo-19417](https://python-all.ru/3/whatsnew/changelog.html): Добавлен test\_bdb.py.

### Сборка

- [bpo-33163](https://python-all.ru/3/whatsnew/changelog.html): Обновлены pip до 9.0.3 и setuptools до v39.0.1.

### Windows

- [bpo-33016](https://python-all.ru/3/whatsnew/changelog.html): Исправлена возможная ошибка использования неинициализированной памяти в nt.\_getfinalpathname
- [bpo-32903](https://python-all.ru/3/whatsnew/changelog.html): Исправлена утечка памяти в os.chdir() в Windows, если текущий каталог задан UNC-путём.

### macOS

- [bpo-32726](https://python-all.ru/3/whatsnew/changelog.html): Сборка и компоновка с собственной копией Tcl/Tk 8.6 для установщика macOS 10.6+. Вариант установщика для 10.9+ уже делает это. Это означает, что Python 3.7, предоставляемый установщиками macOS с python.org, больше не требует и не использует внешние версии Tcl/Tk, будь то системные или установленные пользователем, например ActiveTcl.

### IDLE

- [bpo-32984](https://python-all.ru/3/whatsnew/changelog.html): Установка `__file__` при запуске стартового файла. Подобно Python, IDLE при необходимости запускает один стартовый файл в окне Shell перед показом первого интерактивного приглашения ввода. Для IDLE `-s` запускает файл, имя которого указано в переменной окружения `IDLESTARTUP` или [`PYTHONSTARTUP`](https://python-all.ru/3/using/cmdline.html#envvar-PYTHONSTARTUP); `-r file` запускает `file`. Python устанавливает `__file__` в имя стартового файла перед его запуском и сбрасывает перед первым приглашением. IDLE теперь делает то же самое при обычном запуске, без опции `-n`.
- [bpo-32940](https://python-all.ru/3/whatsnew/changelog.html): Упрощён и переименован StringTranslatePseudoMapping в pyparse.

### Инструменты/Демо

- [bpo-32885](https://python-all.ru/3/whatsnew/changelog.html): Добавлен флаг `-n` для `Tools/scripts/pathfix.py` для отключения автоматического создания резервных копий (файлов с суффиксом `~`).

### C API

- [bpo-33042](https://python-all.ru/3/whatsnew/changelog.html): Встраиваемые приложения снова могут вызывать PySys\_ResetWarnOptions, PySys\_AddWarnOption и PySys\_AddXOption до вызова Py\_Initialize.
- [bpo-32374](https://python-all.ru/3/whatsnew/changelog.html): Документировано, что m\_traverse для модулей, инициализированных в несколько фаз, может вызываться с m\_state=NULL, и добавлена проверка корректности.

## Python 3.7.0 beta 2

*Дата выпуска: 2018-02-27*

### Безопасность

- [bpo-28414](https://python-all.ru/3/whatsnew/changelog.html): Модуль ssl теперь позволяет пользователям выполнять собственное кодирование/декодирование IDN при использовании SNI.

### Ядро и встроенные модули

- [bpo-32889](https://python-all.ru/3/whatsnew/changelog.html): Обновлён список подавления Valgrind с учётом переименования `Py_ADDRESS_IN_RANG` в `address_in_range`.
- [bpo-31356](https://python-all.ru/3/whatsnew/changelog.html): Удалён новый API, добавленный в [bpo-31356](https://python-all.ru/3/whatsnew/changelog.html) (менеджер контекста gc.ensure\_disabled()).
- [bpo-32305](https://python-all.ru/3/whatsnew/changelog.html): Для пакетов пространств имён обеспечено, что и `__file__`, и `__spec__.origin` установлены в None.
- [bpo-32303](https://python-all.ru/3/whatsnew/changelog.html): Обеспечено соответствие `__spec__.loader` и `__loader__` для пакетов пространств имён.
- [bpo-32711](https://python-all.ru/3/whatsnew/changelog.html): Исправлены предупреждающие сообщения для Python/ast\_unparse.c. Патч от Stéphane Wirtel
- [bpo-32583](https://python-all.ru/3/whatsnew/changelog.html): Исправлена возможная аварийная остановка встроенных декодеров Unicode, вызванная ошибками записи за границы массива при использовании пользовательских обработчиков ошибок декодирования.

### Библиотека

- [bpo-32960](https://python-all.ru/3/whatsnew/changelog.html): Для dataclasses запрещено наследование frozen от non-frozen классов, а также наследование non-frozen от frozen классов. Это ограничение будет снято в будущем.
- [bpo-32713](https://python-all.ru/3/whatsnew/changelog.html): Исправлена обработка tarfile.itn для выходящих за границы значений float. Патч от Joffrey Fuhrer.
- [bpo-32951](https://python-all.ru/3/whatsnew/changelog.html): Теперь запрещено прямое создание экземпляров SSLSocket и SSLObject. Конструкторы никогда не документировались, не тестировались и не проектировались как публичные. Предполагалось, что пользователи будут использовать ssl.wrap\_socket() или SSLContext.
- [bpo-32929](https://python-all.ru/3/whatsnew/changelog.html): Удалён трёхзначный параметр «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](https://python-all.ru/3/whatsnew/changelog.html): Добавлены OP\_ENABLE\_MIDDLEBOX\_COMPAT и тестовый обходной путь для TLSv1.3 для будущей совместимости с OpenSSL 1.1.1.
- [bpo-30622](https://python-all.ru/3/whatsnew/changelog.html): Модуль ssl теперь обнаруживает отсутствие поддержки NPN в LibreSSL.
- [bpo-32922](https://python-all.ru/3/whatsnew/changelog.html): dbm.open() теперь кодирует имя файла с помощью кодировки файловой системы, а не кодировки по умолчанию.
- [bpo-32859](https://python-all.ru/3/whatsnew/changelog.html): В `os.dup2` больше не проверяется при каждом вызове, существует ли `dup3` системный вызов.
- [bpo-32556](https://python-all.ru/3/whatsnew/changelog.html): nt.\_getfinalpathname, nt.\_getvolumepathname и nt.\_getdiskusage теперь корректно преобразуют из bytes.
- [bpo-25988](https://python-all.ru/3/whatsnew/changelog.html): Выдавать [`DeprecationWarning`](https://python-all.ru/3/library/exceptions.html#DeprecationWarning) при использовании или импорте ABC напрямую из [`collections`](https://python-all.ru/3/library/collections.html#module-collections), а не из [`collections.abc`](https://python-all.ru/3/library/collections.abc.html#module-collections.abc).
- [bpo-21060](https://python-all.ru/3/whatsnew/changelog.html): Переписано сбивающее с толку сообщение в setup.py upload с «No dist file created in earlier command» на более понятное «Must create and upload files in one command».
- [bpo-32852](https://python-all.ru/3/whatsnew/changelog.html): Обеспечить сохранение sys.argv как списка при запуске trace.
- [bpo-31333](https://python-all.ru/3/whatsnew/changelog.html): Добавлен модуль `_abc`. Это модуль ускорения с реализациями на C различных функций и методов из `abc`. Создание подкласса ABC и вызов `isinstance` или `issubclass` с подклассом ABC ускоряются до 1,5 раз. Кроме того, это ускоряет запуск Python до 10%. Обратите внимание, что новая реализация скрывает внутренние реестры и кеши, ранее доступные через приватные атрибуты `_abc_registry`, `_abc_cache` и `_abc_negative_cache`. Вместо них можно использовать три вспомогательных метода отладки: `_dump_registry`, `_abc_registry_clear` и `_abc_caches_clear`.
- [bpo-32841](https://python-all.ru/3/whatsnew/changelog.html): Исправлена проблема `asyncio.Condition`, которая молча игнорировала отмену после уведомления и отмены условной блокировки. Патч от Bar Harel.
- [bpo-32819](https://python-all.ru/3/whatsnew/changelog.html): ssl.match\_hostname() упрощён и больше не зависит от модулей re и ipaddress для подстановочных знаков и IP-адресов. Улучшено сообщение об ошибках для недопустимых подстановочных знаков.
- [bpo-32394](https://python-all.ru/3/whatsnew/changelog.html): socket: удалены флаги TCP\_FASTOPEN, TCP\_KEEPCNT, TCP\_KEEPIDLE, TCP\_KEEPINTVL в старых версиях Windows во время выполнения.
- [bpo-31787](https://python-all.ru/3/whatsnew/changelog.html): Исправлены утечки ссылок методов `__init__()` в различных модулях. (Автор: Oren Milman)
- [bpo-30157](https://python-all.ru/3/whatsnew/changelog.html): Исправлено угадывание кавычек и разделителя в csv.Sniffer.sniff() когда последнее поле взято в кавычки. Патч от Jake Davis.
- [bpo-32792](https://python-all.ru/3/whatsnew/changelog.html): collections.ChainMap() сохраняет порядок базовых отображений.
- [bpo-32775](https://python-all.ru/3/whatsnew/changelog.html): [`fnmatch.translate()`](https://python-all.ru/3/library/fnmatch.html#fnmatch.translate) больше не создаёт шаблоны, содержащие операции над наборами. Наборы, начинающиеся с ‘\[’ или содержащие ‘–’, ‘&&’, ‘~~’ или ‘||’, будут интерпретироваться иначе в регулярных выражениях в будущих версиях. Сейчас они вызывают предупреждения. fnmatch.translate() теперь избегает случайного создания шаблонов, содержащих такие наборы.
- [bpo-32622](https://python-all.ru/3/whatsnew/changelog.html): Реализован нативный быстрый sendfile для цикла событий proactor в Windows.
- [bpo-32777](https://python-all.ru/3/whatsnew/changelog.html): Исправлена редкая, но потенциальная взаимная блокировка дочернего процесса при pre-exec в подпроцессе на POSIX-системах при пометке файловых дескрипторов как наследуемых при exec в дочернем процессе. Эта ошибка, по-видимому, была введена в 3.4.
- [bpo-32647](https://python-all.ru/3/whatsnew/changelog.html): Модуль ctypes раньше зависел от косвенной линковки для dlopen. Теперь расширение явно линкуется с libdl на платформах с dl.
- [bpo-32741](https://python-all.ru/3/whatsnew/changelog.html): Реализован метод `asyncio.TimerHandle.when()`.
- [bpo-32691](https://python-all.ru/3/whatsnew/changelog.html): Использовать mod\_spec.parent при запуске модулей с pdb
- [bpo-32734](https://python-all.ru/3/whatsnew/changelog.html): Исправлена проблема безопасности `asyncio.Lock()`, которая позволяла захватывать и блокировать одну и ту же блокировку несколько раз, не освобождая её. Патч от Bar Harel.
- [bpo-32727](https://python-all.ru/3/whatsnew/changelog.html): Не включать поле имени в адрес отправителя конверта SMTP. Патч от Stéphane Wirtel
- [bpo-31453](https://python-all.ru/3/whatsnew/changelog.html): Добавлены константы 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](https://python-all.ru/3/whatsnew/changelog.html).
- [bpo-24334](https://python-all.ru/3/whatsnew/changelog.html): Очищены внутренние детали реализации модуля ssl. У SSLSocket на один слой косвенности меньше. Информация о владельце и сессии теперь обрабатывается конструктором SSLSocket и SSLObject. Упрощена реализация привязки канала.
- [bpo-31848](https://python-all.ru/3/whatsnew/changelog.html): Исправлена обработка ошибок в Aifc\_read.initfp(), когда не найден блок SSND. Патч от Zackery Spytz.
- [bpo-32585](https://python-all.ru/3/whatsnew/changelog.html): Добавлен виджет Ttk spinbox в [`tkinter.ttk`](https://python-all.ru/3/library/tkinter.ttk.html#module-tkinter.ttk). Патч от Alan D Moore.
- [bpo-32221](https://python-all.ru/3/whatsnew/changelog.html): Различные функции, возвращающие кортеж с IPv6-адресами, теперь опускают часть `%scope`, поскольку та же информация уже закодирована в элементе кортежа *scopeid*. Это особенно ускоряет `socket.recvfrom()` при получении multicast-пакета, так как исключается бесполезное разрешение имени сетевого интерфейса.
- [bpo-30693](https://python-all.ru/3/whatsnew/changelog.html): Класс TarFile теперь рекурсивно обходит каталоги воспроизводимым образом.
- [bpo-30693](https://python-all.ru/3/whatsnew/changelog.html): Класс ZipFile теперь рекурсивно обходит каталоги воспроизводимым образом.

### Документация

- [bpo-28124](https://python-all.ru/3/whatsnew/changelog.html): Функция ssl.wrap\_socket() модуля ssl устарела и больше не рекомендуется к использованию; вместо неё следует применять более безопасный и эффективный метод SSLContext.wrap\_socket().
- [bpo-17232](https://python-all.ru/3/whatsnew/changelog.html): Уточнена документация для -O и -OO. Патч от Terry Reedy.
- [bpo-32436](https://python-all.ru/3/whatsnew/changelog.html): Добавлена документация для модуля contextvars (PEP 567).
- [bpo-32800](https://python-all.ru/3/whatsnew/changelog.html): Обновлена ссылка на документ W3C для пространств имён XML по умолчанию.
- [bpo-11015](https://python-all.ru/3/whatsnew/changelog.html): Обновлена документация [`test.support`](https://python-all.ru/3/library/test.html#module-test.support).
- [bpo-8722](https://python-all.ru/3/whatsnew/changelog.html): Документировано поведение `__getattr__()`, когда метод свойства `get()` вызывает [`AttributeError`](https://python-all.ru/3/library/exceptions.html#AttributeError).
- [bpo-32614](https://python-all.ru/3/whatsnew/changelog.html): Примеры регулярных выражений в документации изменены для использования сырых строк, чтобы предотвратить [`DeprecationWarning`](https://python-all.ru/3/library/exceptions.html#DeprecationWarning); также добавлен текст в REGEX HOWTO, подчёркивающий устаревание.
- [bpo-31972](https://python-all.ru/3/whatsnew/changelog.html): Улучшены docstrings для подклассов `pathlib.PurePath`.

### Тесты

- [bpo-31809](https://python-all.ru/3/whatsnew/changelog.html): Добавлены тесты для проверки соединения с кривыми secp ECDH.

### Сборка

- [bpo-32898](https://python-all.ru/3/whatsnew/changelog.html): Исправлена отладочная сборка Python при использовании COUNT\_ALLOCS.

### Windows

- [bpo-32901](https://python-all.ru/3/whatsnew/changelog.html): Обновлены версии Tcl и Tk до 8.6.8.
- [bpo-31966](https://python-all.ru/3/whatsnew/changelog.html): Исправлен WindowsConsoleIO.write() для записи пустых данных.
- [bpo-32409](https://python-all.ru/3/whatsnew/changelog.html): Обеспечена поддержка содержимого Unicode в activate.bat.
- [bpo-32457](https://python-all.ru/3/whatsnew/changelog.html): Улучшена обработка денормализованного пути к исполняемому файлу при запуске Python.
- [bpo-32370](https://python-all.ru/3/whatsnew/changelog.html): Использована правильная кодировка для вывода ipconfig в модуле uuid. Патч от Segev Finer.
- [bpo-29248](https://python-all.ru/3/whatsnew/changelog.html): Исправлен [`os.readlink()`](https://python-all.ru/3/library/os.html#os.readlink) в Windows, который ошибочно интерпретировал поле `PrintNameOffset` буфера данных повторной обработки как количество символов, а не байт. Патч от Craig Holmquist и SSE4.

### macOS

- [bpo-32901](https://python-all.ru/3/whatsnew/changelog.html): Установщик для macOS 10.9+ обновлён до Tcl/Tk 8.6.8.

### IDLE

- [bpo-32916](https://python-all.ru/3/whatsnew/changelog.html): Заменено `str` на `code` в pyparse.
- [bpo-32905](https://python-all.ru/3/whatsnew/changelog.html): Удалён неиспользуемый код в модуле pyparse.
- [bpo-32874](https://python-all.ru/3/whatsnew/changelog.html): Добавлены тесты для pyparse.
- [bpo-32837](https://python-all.ru/3/whatsnew/changelog.html): Использование системной и зависимой от локали кодировки по умолчанию для open() – плохая идея для файлов IDLE, которые не зависят от системы и расположения.
- [bpo-32826](https://python-all.ru/3/whatsnew/changelog.html): Добавлен "encoding=utf-8" в open() в test\_help\_about из IDLE. GUI-тест test\_file\_buttons() проверяет только начальные строки из ASCII-символов, но давал сбой в системах, где open() по умолчанию использует 'ascii', так как readline() внутри читает и декодирует данные достаточно далеко вперёд и встречает не-ASCII символ в CREDITS.txt.
- [bpo-32765](https://python-all.ru/3/whatsnew/changelog.html): Обновлена докстринг вкладки General в configdialog для добавления новых виджетов в список виджетов.

### Tools/Demos

- [bpo-32222](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка pygettext, не извлекавшего докстринги для функций с аннотированными типами аргументами. Патч от Toby Harradine.

## Python 3.7.0 beta 1

*Дата выпуска: 2018-01-30*

### Core and Builtins

- [bpo-32703](https://python-all.ru/3/whatsnew/changelog.html): Исправлено ResourceWarning корутины, когда при её финализации установлена активная ошибка.
- [bpo-32650](https://python-all.ru/3/whatsnew/changelog.html): Pdb и другие отладчики, зависящие от bdb.py, теперь корректно выполняют шаг с обходом (команда next) нативных корутин. Патч от Pablo Galindo.
- [bpo-28685](https://python-all.ru/3/whatsnew/changelog.html): Оптимизированы list.sort() и sorted() за счёт использования специализированных по типу сравнений, где это возможно.
- [bpo-32685](https://python-all.ru/3/whatsnew/changelog.html): Улучшено предложение, когда форма оператора print из Python 2 находится на той же строке, что и заголовок составного оператора, или завершается точкой с запятой вместо перевода строки. Патч от Nitish Chandra.
- [bpo-32697](https://python-all.ru/3/whatsnew/changelog.html): Python теперь явно сохраняет порядок определения параметров только по ключевым словам. Раньше порядок всегда сохранялся, но это поведение никогда не гарантировалось; теперь оно гарантировано и протестировано.
- [bpo-32690](https://python-all.ru/3/whatsnew/changelog.html): Словарь locals() теперь отображается в лексическом порядке, в котором были определены переменные. Ранее порядок был обратным.
- [bpo-32677](https://python-all.ru/3/whatsnew/changelog.html): Добавлен метод `.isascii()` к `str`, `bytes` и `bytearray`. Его можно использовать для проверки, что строка содержит только ASCII-символы.
- [bpo-32670](https://python-all.ru/3/whatsnew/changelog.html): Применено [**PEP 479**](https://python-all.ru/3/whatsnew/changelog.html) для всего кода. Это означает, что ручное возбуждение исключения StopIteration из генератора запрещено для всего кода, независимо от того, использовался ли 'from \_\_future\_\_ import generator\_stop' или нет.
- [bpo-32591](https://python-all.ru/3/whatsnew/changelog.html): Добавлена встроенная поддержка отслеживания происхождения объектов корутин; см. sys.set\_coroutine\_origin\_tracking\_depth и CoroutineType.cr\_origin. Это заменяет использование обёртывания корутин в режиме отладки asyncio для нативных объектов корутин.
- [bpo-31368](https://python-all.ru/3/whatsnew/changelog.html): Открыты системные вызовы preadv и pwritev в модуле os. Патч от Pablo Galindo.
- [bpo-32544](https://python-all.ru/3/whatsnew/changelog.html): `hasattr(obj, name)` и `getattr(obj, name, default)` примерно в 4 раза быстрее, чем раньше, когда `name` не найден, а `obj` не переопределяет `__getattr__` или `__getattribute__`.
- [bpo-26163](https://python-all.ru/3/whatsnew/changelog.html): Улучшена хеш-функция frozenset() для создания более различных хеш-значений при работе с наборами данных, содержащими много похожих значений.
- [bpo-32550](https://python-all.ru/3/whatsnew/changelog.html): Удалён байткод STORE\_ANNOTATION.
- [bpo-20104](https://python-all.ru/3/whatsnew/changelog.html): Открыт posix\_spawn как низкоуровневый API в модуле os. (удалено до 3.7.0rc1)
- [bpo-24340](https://python-all.ru/3/whatsnew/changelog.html): Исправлена оценка размера стека кода.
- [bpo-32436](https://python-all.ru/3/whatsnew/changelog.html): Реализованы [**PEP 567**](https://python-all.ru/3/whatsnew/changelog.html) Контекстные переменные.
- [bpo-18533](https://python-all.ru/3/whatsnew/changelog.html): `repr()` для словаря, содержащего собственный `values()` или `items()`, больше не вызывает `RecursionError`; аналогично для OrderedDict. Вместо этого используйте `...`, как и для других рекурсивных структур. Патч от Ben North.
- [bpo-20891](https://python-all.ru/3/whatsnew/changelog.html): Py\_Initialize() теперь создаёт GIL. GIL больше не создаётся «по требованию» для исправления состояния гонки, когда PyGILState\_Ensure() вызывается в потоке, не являющемся потоком Python.
- [bpo-32028](https://python-all.ru/3/whatsnew/changelog.html): Начальные пробелы теперь корректно игнорируются при генерации предложений по преобразованию операторов print из Py2 во встроенные вызовы функции print в Py3. Патч от Sanyam Khurana.
- [bpo-31179](https://python-all.ru/3/whatsnew/changelog.html): Ускорение dict.copy() до 5.5 раз.
- [bpo-31113](https://python-all.ru/3/whatsnew/changelog.html): Устранена рекурсия в компиляторе для обычного потока управления.

### Библиотека

- [bpo-25988](https://python-all.ru/3/whatsnew/changelog.html): Объявлено устаревшим раскрытие содержимого collections.abc в обычном модуле collections.
- [bpo-31429](https://python-all.ru/3/whatsnew/changelog.html): Выбор набора шифров по умолчанию в модуле ssl теперь использует подход с чёрным списком вместо жёстко заданного белого списка. Python больше не включает повторно шифры, заблокированные обновлением безопасности OpenSSL. Выбор набора шифров по умолчанию можно настроить во время компиляции.
- [bpo-30306](https://python-all.ru/3/whatsnew/changelog.html): contextlib.contextmanager теперь освобождает аргументы, переданные базовому генератору, сразу после входа в менеджер контекста. Ранее они сохранялись всё время жизни менеджера контекста, даже если он не использовался как декоратор функции. Патч от Martin Teichmann.
- [bpo-21417](https://python-all.ru/3/whatsnew/changelog.html): Добавлена поддержка задания уровня сжатия для zipfile.ZipFile.
- [bpo-32251](https://python-all.ru/3/whatsnew/changelog.html): Реализован asyncio.BufferedProtocol (экспериментальный API).
- [bpo-32513](https://python-all.ru/3/whatsnew/changelog.html): В dataclasses упрощено переопределение dunder-методов без указания параметров декоратора.
- [bpo-32660](https://python-all.ru/3/whatsnew/changelog.html): [`termios`](https://python-all.ru/3/library/termios.html#module-termios) делает доступными `FIONREAD`, `FIONCLEX`, `FIOCLEX`, `FIOASYNC` и `FIONBIO` также в Solaris и производных.
- [bpo-27931](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка разбора заголовка email-адреса, когда имя пользователя представляет собой пустую строку в кавычках. Патч от Xiang Zhang.
- [bpo-32659](https://python-all.ru/3/whatsnew/changelog.html): В Solaris и производных [`os.stat_result`](https://python-all.ru/3/library/os.html#os.stat_result) предоставляет атрибут st\_fstype.
- [bpo-32662](https://python-all.ru/3/whatsnew/changelog.html): Реализованы методы Server.start\_serving(), Server.serve\_forever(), и Server.is\_serving(). Добавлен параметр ‘start\_serving’ в loop.create\_server() и loop.create\_unix\_server().
- [bpo-32391](https://python-all.ru/3/whatsnew/changelog.html): Реализованы методы [`asyncio.StreamWriter.wait_closed()`](https://python-all.ru/3/library/asyncio-stream.html#asyncio.StreamWriter.wait_closed) и [`asyncio.StreamWriter.is_closing()`](https://python-all.ru/3/library/asyncio-stream.html#asyncio.StreamWriter.is_closing)
- [bpo-32643](https://python-all.ru/3/whatsnew/changelog.html): Сделать методы Task.\_step, Task.\_wakeup и Future.\_schedule\_callbacks приватными.
- [bpo-32630](https://python-all.ru/3/whatsnew/changelog.html): Модуль decimal переработан для использования contextvars для хранения контекста decimal.
- [bpo-32622](https://python-all.ru/3/whatsnew/changelog.html): Добавлен метод `asyncio.AbstractEventLoop.sendfile()`.
- [bpo-32304](https://python-all.ru/3/whatsnew/changelog.html): Команда upload из distutils больше не повреждает tar-файлы, заканчивающиеся на байт CR, и больше не пытается преобразовывать CR в CRLF в текстовых полях загрузки.
- [bpo-32502](https://python-all.ru/3/whatsnew/changelog.html): uuid.uuid1 больше не вызывает исключение при обнаружении 64-битного аппаратного адреса.
- [bpo-32596](https://python-all.ru/3/whatsnew/changelog.html): `concurrent.futures` импортирует `ThreadPoolExecutor` и `ProcessPoolExecutor` лениво (с использованием [**PEP 562**](https://python-all.ru/3/whatsnew/changelog.html)). Это делает `import asyncio` примерно на 15% быстрее, поскольку asyncio по умолчанию использует только `ThreadPoolExecutor`.
- [bpo-31801](https://python-all.ru/3/whatsnew/changelog.html): Добавлен `_ignore_` в `Enum`, чтобы временные переменные можно было использовать во время конструирования класса без превращения их в члены.
- [bpo-32576](https://python-all.ru/3/whatsnew/changelog.html): Использовать queue.SimpleQueue() в местах, где он может быть вызван из колбэка слабой ссылки.
- [bpo-32574](https://python-all.ru/3/whatsnew/changelog.html): Исправлена утечка памяти в asyncio.Queue: когда очередь имеет ограниченный размер и заполнена, отмена queue.put() может вызвать утечку памяти. Патч от José Melero.
- [bpo-32521](https://python-all.ru/3/whatsnew/changelog.html): Модуль nis теперь совместим с новой libnsl и расположением заголовочных файлов.
- [bpo-32467](https://python-all.ru/3/whatsnew/changelog.html): collections.abc.ValuesView теперь наследуется от collections.abc.Collection.
- [bpo-32473](https://python-all.ru/3/whatsnew/changelog.html): Улучшена читаемость вывода ABCMeta.\_dump\_registry()
- [bpo-32102](https://python-all.ru/3/whatsnew/changelog.html): Новый аргумент `capture_output` для subprocess.run
- [bpo-32521](https://python-all.ru/3/whatsnew/changelog.html): glibc удалила Sun RPC. В модуле nis используются заменяющие заголовочные файлы и библиотека libtirpc.
- [bpo-32493](https://python-all.ru/3/whatsnew/changelog.html): Модуль UUID: исправлена сборка для FreeBSD/OpenBSD
- [bpo-32503](https://python-all.ru/3/whatsnew/changelog.html): Pickling с протоколом 4 больше не создаёт слишком маленькие фреймы.
- [bpo-29237](https://python-all.ru/3/whatsnew/changelog.html): Создано перечисление для опций сортировки pstats
- [bpo-32454](https://python-all.ru/3/whatsnew/changelog.html): Добавлена функция close(fd) в модуль socket.
- [bpo-25942](https://python-all.ru/3/whatsnew/changelog.html): Модуль subprocess теперь более корректно обрабатывает Ctrl-C (KeyboardInterrupt) во время subprocess.call, subprocess.run или менеджера контекста Popen. Он ожидает короткое время, пока дочерний процесс (предположительно также получивший SIGINT) завершится, прежде чем продолжить обработку исключения KeyboardInterrupt. Это всё ещё включает SIGKILL в API call() и run(), но по крайней мере дочерний процесс сначала получил шанс.
- [bpo-32433](https://python-all.ru/3/whatsnew/changelog.html): В модуле hmac теперь есть hmac.digest(), который предоставляет оптимизированную HMAC-дайджест.
- [bpo-28134](https://python-all.ru/3/whatsnew/changelog.html): Сокеты теперь по умолчанию автоматически определяют семейство, тип и протокол из файлового дескриптора.
- [bpo-32404](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка, когда [`datetime.datetime.fromtimestamp()`](https://python-all.ru/3/library/datetime.html#datetime.datetime.fromtimestamp) не вызывал \_\_new\_\_ в подклассах [`datetime.datetime`](https://python-all.ru/3/library/datetime.html#datetime.datetime).
- [bpo-32403](https://python-all.ru/3/whatsnew/changelog.html): Увеличена скорость альтернативных конструкторов [`datetime.date`](https://python-all.ru/3/library/datetime.html#datetime.date) и [`datetime.datetime`](https://python-all.ru/3/library/datetime.html#datetime.datetime).
- [bpo-32228](https://python-all.ru/3/whatsnew/changelog.html): Обеспечено сохранение позиции в файле `truncate()` (как сообщается `tell()`) после записи, превышающей размер буфера.
- [bpo-32410](https://python-all.ru/3/whatsnew/changelog.html): Реализован `loop.sock_sendfile` для цикла событий asyncio.
- [bpo-22908](https://python-all.ru/3/whatsnew/changelog.html): Добавлены методы seek и tell в класс ZipExtFile. Это работает только в том случае, если файловый объект, используемый для открытия zip-файла, поддерживает позиционирование.
- [bpo-32373](https://python-all.ru/3/whatsnew/changelog.html): Добавлен метод socket.getblocking().
- [bpo-32248](https://python-all.ru/3/whatsnew/changelog.html): Добавлены [`importlib.resources`](https://python-all.ru/3/library/importlib.resources.html#module-importlib.resources) и `importlib.abc.ResourceReader` в качестве единого API для чтения ресурсов, содержащихся в пакетах. Загрузчики, желающие поддерживать чтение ресурсов, должны реализовать метод `get_resource_reader()`. Файловые и zipimport-загрузчики реализуют оба этих API. [`importlib.abc.ResourceLoader`](https://python-all.ru/3/library/importlib.html#importlib.abc.ResourceLoader) устарел в пользу этих новых API.
- [bpo-32320](https://python-all.ru/3/whatsnew/changelog.html): collections.namedtuple() теперь поддерживает значения по умолчанию.
- [bpo-29302](https://python-all.ru/3/whatsnew/changelog.html): Добавлен contextlib.AsyncExitStack. Патч от Alexander Mohr и Ilya Kulakov.
- [bpo-31961](https://python-all.ru/3/whatsnew/changelog.html): *Удалено в Python 3.7.0b2.* Аргумент *args* subprocess.Popen теперь может быть [объектом, подобным пути](https://python-all.ru/3/glossary.html#term-path-like-object). Если *args* задан как последовательность, его первый элемент также может быть объектом, подобным пути.
- [bpo-31900](https://python-all.ru/3/whatsnew/changelog.html): Функция [`locale.localeconv()`](https://python-all.ru/3/library/locale.html#locale.localeconv) теперь временно устанавливает локаль `LC_CTYPE` в локаль `LC_NUMERIC` для декодирования байтовых строк `decimal_point` и `thousands_sep`, если они не ASCII или длиннее 1 байта, и локаль `LC_NUMERIC` отличается от локали `LC_CTYPE`. Это временное изменение затрагивает другие потоки. Аналогичное изменение для метода [`str.format()`](https://python-all.ru/3/library/stdtypes.html#str.format) при форматировании числа ([`int`](https://python-all.ru/3/library/functions.html#int), [`float`](https://python-all.ru/3/library/functions.html#float), `float` и подклассов) с типом `n` (например: `'{:n}'.format(1234)`).
- [bpo-31853](https://python-all.ru/3/whatsnew/changelog.html): Используйте super().method вместо socket.method в SSLSocket. Они там были, скорее всего, по историческим причинам.
- [bpo-31399](https://python-all.ru/3/whatsnew/changelog.html): Модуль ssl теперь использует API OpenSSL X509\_VERIFY\_PARAM\_set1\_host() и X509\_VERIFY\_PARAM\_set1\_ip() для проверки имени хоста и IP-адресов. Резервное использование Common Name может быть отключено с помощью SSLContext.hostname\_checks\_common\_name.
- [bpo-14976](https://python-all.ru/3/whatsnew/changelog.html): Добавлен класс queue.SimpleQueue, неограниченная очередь FIFO с реентерабельной C-реализацией метода put().

### Документация

- [bpo-32724](https://python-all.ru/3/whatsnew/changelog.html): Добавлены ссылки на некоторые команды в документации Pdb. Патч от Stéphane Wirtel
- [bpo-32649](https://python-all.ru/3/whatsnew/changelog.html): Дополнена документация C API, часть по профилированию и трассировке недавно добавленными событиями на уровне опкодов.
- [bpo-17799](https://python-all.ru/3/whatsnew/changelog.html): Описано реальное поведение sys.settrace и sys.setprofile и их аналогов в C API относительно того, какие типы событий принимаются в каждой функции. Патч от Pablo Galindo Salgado.

### Тесты

- [bpo-32721](https://python-all.ru/3/whatsnew/changelog.html): Исправлен test\_hashlib, чтобы он не выдавал ошибку, если модуль \_md5 не собран.
- [bpo-28414](https://python-all.ru/3/whatsnew/changelog.html): Добавлены тесты для IDNA 2003 и 2008 имен хостов. Интернационализированные имена хостов IDNA 2003 работают с момента выхода [bpo-31399](https://python-all.ru/3/whatsnew/changelog.html). IDNA 2008 по-прежнему сломаны.
- [bpo-32604](https://python-all.ru/3/whatsnew/changelog.html): Добавлен новый модуль расширения «\_xxsubinterpreters», который открывает существующий C-API под-интерпретаторов и новый механизм обмена данными между интерпретаторами. Модуль предназначен в первую очередь для более тщательного тестирования существующей поддержки под-интерпретаторов. Обратите внимание, что модуль \_xxsubinterpreters был удалён в 3.7.0rc1.
- [bpo-32602](https://python-all.ru/3/whatsnew/changelog.html): Добавлены тестовые сертификаты и тесты для ECDSA сертификата и двойного режима EC/RSA.
- [bpo-32549](https://python-all.ru/3/whatsnew/changelog.html): На Travis CI Python теперь компилирует и использует локальную копию OpenSSL 1.1.0g для тестирования.

### Сборка

- [bpo-32635](https://python-all.ru/3/whatsnew/changelog.html): Исправлен segfault модуля crypt, когда в системе предоставляется libxcrypt вместо libcrypt.
- [bpo-32598](https://python-all.ru/3/whatsnew/changelog.html): Используйте autoconf для обнаружения библиотек OpenSSL, заголовков и поддерживаемых возможностей. Макрос M4 ax\_check\_openssl использует pkg-config для поиска OpenSSL и переходит к ручному поиску в случае неудачи.
- [bpo-32593](https://python-all.ru/3/whatsnew/changelog.html): Прекращена поддержка FreeBSD 9 и старше.
- [bpo-29708](https://python-all.ru/3/whatsnew/changelog.html): Если установлена переменная окружения `SOURCE_DATE_EPOCH`, [`py_compile`](https://python-all.ru/3/library/py_compile.html#module-py_compile) всегда будет создавать файлы `.pyc` на основе хеша.

### Windows

- [bpo-32588](https://python-all.ru/3/whatsnew/changelog.html): Создан отдельный модуль \_distutils\_findvs и добавлен отсутствующий модуль \_queue в установщик.
- [bpo-29911](https://python-all.ru/3/whatsnew/changelog.html): Обеспечено отображение отдельных кнопок «Изменить» и «Удалить».
- [bpo-32507](https://python-all.ru/3/whatsnew/changelog.html): Используется локальная для приложения установка UCRT вместо соответствующего обновления для старых версий Windows.

### macOS

- [bpo-32726](https://python-all.ru/3/whatsnew/changelog.html): Предоставлен дополнительный, более современный вариант установщика macOS, который поддерживает системы macOS 10.9+ только в 64-битном режиме. Обновлены поставляемые сторонние библиотеки до OpenSSL 1.1.0g и SQLite 3.22.0. Установщик для 10.9+ теперь связывается и поставляет собственную копию Tcl/Tk 8.6.
- [bpo-28440](https://python-all.ru/3/whatsnew/changelog.html): Путь /Library/Python/3.x/site-packages больше не добавляется в sys.path для сборок фреймворков macOS, чтобы избежать будущих конфликтов.

### C API

- [bpo-32681](https://python-all.ru/3/whatsnew/changelog.html): Исправлена неинициализированная переменная ‘res’ в C-реализации os.dup2. Исправление от Stéphane Wirtel.
- [bpo-10381](https://python-all.ru/3/whatsnew/changelog.html): Добавлен доступ из C API к конструктору `datetime.timezone` и синглтону `datetime.timezone.UTC`.

## Python 3.7.0 alpha 4

*Дата выпуска: 2018-01-08*

### Ядро и встроенные модули

- [bpo-31975](https://python-all.ru/3/whatsnew/changelog.html): Список фильтров предупреждений по умолчанию теперь начинается с записи “default::DeprecationWarning:\_\_main\_\_”, поэтому предупреждения об устаревании снова показываются по умолчанию в однофайловых скриптах и в интерактивном режиме.
- [bpo-32226](https://python-all.ru/3/whatsnew/changelog.html): `__class_getitem__` теперь является автоматическим методом класса.
- [bpo-32399](https://python-all.ru/3/whatsnew/changelog.html): Добавлена поддержка библиотеки uuid для AIX для RFC4122 с использованием uuid\_create() в libc.a
- [bpo-32390](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка компиляции на AIX после добавления поля f\_fsid в объект, возвращаемый os.statvfs() ([bpo-32143](https://python-all.ru/3/whatsnew/changelog.html)). Оригинальное исправление от Michael Felt.
- [bpo-32379](https://python-all.ru/3/whatsnew/changelog.html): Ускорено вычисление MRO, когда класс наследуется от одного базового класса.
- [bpo-32259](https://python-all.ru/3/whatsnew/changelog.html): Сообщение об ошибке TypeError, возникающей при распаковке неитерируемого объекта, теперь более конкретное.
- [bpo-27169](https://python-all.ru/3/whatsnew/changelog.html): Константа `__debug__` теперь оптимизируется на этапе компиляции. Это также исправляет [bpo-22091](https://python-all.ru/3/whatsnew/changelog.html).
- [bpo-32329](https://python-all.ru/3/whatsnew/changelog.html): Опция [`-R`](https://python-all.ru/3/using/cmdline.html#cmdoption-R) теперь включает рандомизацию хэша, когда переменная окружения [`PYTHONHASHSEED`](https://python-all.ru/3/using/cmdline.html#envvar-PYTHONHASHSEED) установлена в `0`. Ранее опция игнорировалась. Более того, `sys.flags.hash_randomization` теперь корректно устанавливается в 0, когда рандомизация хэша отключается `PYTHONHASHSEED=0`.
- [bpo-30416](https://python-all.ru/3/whatsnew/changelog.html): Оптимизатор теперь защищён от затрат большого времени на сложные вычисления и большого объёма памяти на создание больших констант при свёртке констант. Увеличены лимиты на константы, которые могут быть получены при свёртке констант.
- [bpo-32282](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ненужная директива ifdef в подключении VersionHelpers.h в socketmodule на Windows.
- [bpo-30579](https://python-all.ru/3/whatsnew/changelog.html): Реализован TracebackType.\_\_new\_\_ для создания объектов traceback на уровне Python, и сделано изменяемым свойство TracebackType.tb\_next.
- [bpo-32260](https://python-all.ru/3/whatsnew/changelog.html): Не выполнять перестановку байтов входных ключей для алгоритма SipHash на платформах с обратным порядком байтов. Это должно обеспечить согласованные результаты siphash на разных платформах.
- [bpo-31506](https://python-all.ru/3/whatsnew/changelog.html): Улучшена логика сообщений об ошибках для object.\_\_new\_\_ и object.\_\_init\_\_. Исправление от Sanyam Khurana.
- [bpo-20361](https://python-all.ru/3/whatsnew/changelog.html): `-b` и `-bb` теперь вставляют записи `'default::BytesWarning'` и `error::BytesWarning` в `sys.warnoptions`, обеспечивая их приоритет над любыми другими фильтрами предупреждений, настроенными с помощью опции `-W` или переменной окружения `PYTHONWARNINGS`.
- [bpo-32230](https://python-all.ru/3/whatsnew/changelog.html): `-X dev` теперь вставляет запись `'default'` в sys.warnoptions, гарантируя, что это ведёт себя так же, как и при фактической передаче `-Wdefault` в командной строке.
- [bpo-29240](https://python-all.ru/3/whatsnew/changelog.html): Добавлен новый режим UTF-8: реализация [**PEP 540**](https://python-all.ru/3/whatsnew/changelog.html).
- [bpo-32226](https://python-all.ru/3/whatsnew/changelog.html): [**PEP 560**](https://python-all.ru/3/whatsnew/changelog.html): Добавлена поддержка `__mro_entries__` и `__class_getitem__`. Реализовано Иваном Левкивским (Ivan Levkivskyi).
- [bpo-32225](https://python-all.ru/3/whatsnew/changelog.html): [**PEP 562**](https://python-all.ru/3/whatsnew/changelog.html): Добавлена поддержка модуля `__getattr__` и `__dir__`. Реализовано Иваном Левкивским (Ivan Levkivskyi).
- [bpo-31901](https://python-all.ru/3/whatsnew/changelog.html): Модуль `atexit` теперь хранит свой колбэк для каждого интерпретатора.
- [bpo-31650](https://python-all.ru/3/whatsnew/changelog.html): Реализован [**PEP 552**](https://python-all.ru/3/whatsnew/changelog.html) (Детерминированные pyc). Python теперь поддерживает аннулирование файлов кэша байт-кода на основе хэша содержимого исходного кода, а не времени последнего изменения исходного кода.
- [bpo-29469](https://python-all.ru/3/whatsnew/changelog.html): Перенесена свёртка констант из слоя байт-кода на слой AST. Оригинальное исправление от Eugene Toder.

### Библиотека

- [bpo-32506](https://python-all.ru/3/whatsnew/changelog.html): Теперь, когда dict определён как сохраняющий порядок вставки, удалён OrderedDict и используется обычный dict.
- [bpo-32279](https://python-all.ru/3/whatsnew/changelog.html): Добавлены параметры в dataclasses.make\_dataclasses(): init, repr, eq, order, hash и frozen. Они передаются в dataclass().
- [bpo-32278](https://python-all.ru/3/whatsnew/changelog.html): Информация о типе в dataclasses.make\_dataclass() стала необязательной. Если она опущена, используется строка ‘typing.Any’.
- [bpo-32499](https://python-all.ru/3/whatsnew/changelog.html): Добавлена функция dataclasses.is\_dataclass(obj), возвращающая True, если obj является классом данных или экземпляром такого класса.
- [bpo-32468](https://python-all.ru/3/whatsnew/changelog.html): Улучшено представление repr() для фреймов: теперь оно включает имя файла, имя кода и номер текущей строки.
- [bpo-23749](https://python-all.ru/3/whatsnew/changelog.html): asyncio: реализован метод loop.start\_tls()
- [bpo-32441](https://python-all.ru/3/whatsnew/changelog.html): Теперь `os.dup2` возвращает новый файловый дескриптор (то есть второй аргумент). Ранее всегда возвращался `None`.
- [bpo-32422](https://python-all.ru/3/whatsnew/changelog.html): `functools.lru_cache` использует меньше памяти (3 слова на каждый кешированный ключ) и занимает примерно 1/3 времени для циклической сборки мусора.
- [bpo-31721](https://python-all.ru/3/whatsnew/changelog.html): Предотвращено аварийное завершение Python при ручной установке Future.\_log\_traceback в True. Теперь этот атрибут можно установить только в False, иначе возникает ValueError.
- [bpo-32415](https://python-all.ru/3/whatsnew/changelog.html): asyncio: добавлены методы Task.get\_loop() и Future.get\_loop()
- [bpo-26133](https://python-all.ru/3/whatsnew/changelog.html): Отписка от сигналов в цикле событий asyncio для UNIX больше не выполняется при завершении интерпретатора.
- [bpo-32363](https://python-all.ru/3/whatsnew/changelog.html): Методы asyncio.Task.set\_exception() и set\_result() теперь вызывают NotImplementedError. Task.\_step() и Future.\_\_await\_\_() при недопустимом состоянии вызывают соответствующие исключения вместо AssertionError.
- [bpo-32357](https://python-all.ru/3/whatsnew/changelog.html): Оптимизированы asyncio.iscoroutine() и loop.create\_task() для неродных корутин (например, async/await, скомпилированных с Cython). Ранее 'loop.create\_task(python\_coroutine)' был на 20% быстрее, чем 'loop.create\_task(cython\_coroutine)'. Теперь последний работает с той же скоростью.
- [bpo-32356](https://python-all.ru/3/whatsnew/changelog.html): asyncio.transport.resume\_reading() и pause\_reading() теперь идемпотентны. Добавлен новый метод transport.is\_reading().
- [bpo-32355](https://python-all.ru/3/whatsnew/changelog.html): Оптимизирован asyncio.gather(); теперь работает до 15% быстрее.
- [bpo-32351](https://python-all.ru/3/whatsnew/changelog.html): Использование быстрого пути в asyncio.sleep при delay\<0 (ускорение в 2 раза)
- [bpo-32348](https://python-all.ru/3/whatsnew/changelog.html): Оптимизированы методы планирования/добавления/удаления колбэков asyncio.Future. Оптимизация даёт улучшение производительности async/await кода на 3-6%.
- [bpo-32331](https://python-all.ru/3/whatsnew/changelog.html): Исправлено поведение socket.settimeout() и socket.setblocking() – теперь они не изменяют socket.type. Исправлен конструктор socket.socket() – теперь он сбрасывает любые битовые флаги, применённые к типу сокета. Это изменение затрагивает только ОС, в которых определены SOCK\_NONBLOCK и/или SOCK\_CLOEXEC.
- [bpo-32248](https://python-all.ru/3/whatsnew/changelog.html): Добавлен `importlib.abc.ResourceReader` как ABC для загрузчиков, предоставляющий единый API для чтения ресурсов, содержащихся в пакетах. Также добавлен [`importlib.resources`](https://python-all.ru/3/library/importlib.resources.html#module-importlib.resources) как порт `importlib_resources`.
- [bpo-32311](https://python-all.ru/3/whatsnew/changelog.html): Реализован краткий вызов asyncio.create\_task(coro)
- [bpo-32327](https://python-all.ru/3/whatsnew/changelog.html): Функции asyncio, которые были задокументированы как корутины, теперь реализованы как корутины. Затронутые функции: loop.sock\_sendall, loop.sock\_recv, loop.sock\_accept, loop.getaddrinfo, loop.getnameinfo.
- [bpo-32323](https://python-all.ru/3/whatsnew/changelog.html): [`urllib.parse.urlsplit()`](https://python-all.ru/3/library/urllib.parse.html#urllib.parse.urlsplit) теперь не приводит zone-id (область) к нижнему регистру для адресов IPv6 с областью в именах хостов.
- [bpo-32302](https://python-all.ru/3/whatsnew/changelog.html): Исправлен bdist\_wininst из distutils для CRT v142: теперь он бинарно совместим с CRT v140.
- [bpo-29711](https://python-all.ru/3/whatsnew/changelog.html): Исправлено `stop_serving` в proactor-цикле asyncio, который убивал все слушающие серверы
- [bpo-32308](https://python-all.ru/3/whatsnew/changelog.html): [`re.sub()`](https://python-all.ru/3/library/re.html#re.sub) теперь заменяет пустые совпадения, примыкающие к предыдущему непустому совпадению.
- [bpo-29970](https://python-all.ru/3/whatsnew/changelog.html): Соединение asyncio SSLProtocol прерывается, если рукопожатие не завершено в течение 10 секунд.
- [bpo-32314](https://python-all.ru/3/whatsnew/changelog.html): Реализован asyncio.run().
- [bpo-17852](https://python-all.ru/3/whatsnew/changelog.html): Откат некорректного исправления, основанного на неверном понимании семантики \_Py\_PyAtExit().
- [bpo-32296](https://python-all.ru/3/whatsnew/changelog.html): Реализованы asyncio.\_get\_running\_loop() и get\_event\_loop() на C. Это делает их в 4 раза быстрее.
- [bpo-32250](https://python-all.ru/3/whatsnew/changelog.html): Реализованы `asyncio.current_task()` и `asyncio.all_tasks()`. Добавлены вспомогательные функции, предназначенные для использования альтернативными реализациями задач: `asyncio._register_task`, `asyncio._enter_task`, `asyncio._leave_task` и `asyncio._unregister_task`. Помечены как устаревшие `asyncio.Task.current_task()` и `asyncio.Task.all_tasks()`.
- [bpo-32255](https://python-all.ru/3/whatsnew/changelog.html): Одно пустое поле теперь всегда заключается в кавычки при записи в CSV-файл. Это позволяет отличить пустую строку от строки, состоящей из одного пустого поля. Патч от Licht Takeuchi.
- [bpo-32277](https://python-all.ru/3/whatsnew/changelog.html): Возбуждается `NotImplementedError` вместо `SystemError` на платформах, где `chmod(..., follow_symlinks=False)` не поддерживается. Патч от Anthony Sottile.
- [bpo-30050](https://python-all.ru/3/whatsnew/changelog.html): Новый аргумент warn\_on\_full\_buffer для signal.set\_wakeup\_fd позволяет управлять выводом предупреждения в stderr при переполнении буфера файлового дескриптора пробуждения.
- [bpo-29137](https://python-all.ru/3/whatsnew/changelog.html): Библиотека `fpectl` удалена. Она никогда не была включена по умолчанию, никогда корректно не работала на x86-64 и изменяла ABI Python таким образом, что это приводило к неожиданным поломкам C-расширений.
- [bpo-32273](https://python-all.ru/3/whatsnew/changelog.html): asyncio.test\_utils перемещён в test.test\_asyncio.
- [bpo-32272](https://python-all.ru/3/whatsnew/changelog.html): Удалена функция asyncio.async().
- [bpo-32269](https://python-all.ru/3/whatsnew/changelog.html): Добавлена функция asyncio.get\_running\_loop().
- [bpo-32265](https://python-all.ru/3/whatsnew/changelog.html): Все классовые и статические методы встроенных типов теперь корректно классифицируются функцией inspect.classify\_class\_attrs() и группируются в выводе pydoc. Добавлен types.ClassMethodDescriptorType для непривязанных классовых методов встроенных типов.
- [bpo-32253](https://python-all.ru/3/whatsnew/changelog.html): Объявлены устаревшими `yield from lock`, `await lock`, `with (yield from lock)` и `with await lock` для примитивов синхронизации asyncio.
- [bpo-22589](https://python-all.ru/3/whatsnew/changelog.html): Изменён MIME-тип файлов .bmp с 'image/x-ms-bmp' на 'image/bmp'.
- [bpo-32193](https://python-all.ru/3/whatsnew/changelog.html): Asyncio переведён на синтаксис *async/await*. Старый стиль `yield from` по-прежнему поддерживается.
- [bpo-32206](https://python-all.ru/3/whatsnew/changelog.html): Добавлена поддержка запуска модулей с pdb.
- [bpo-32227](https://python-all.ru/3/whatsnew/changelog.html): `functools.singledispatch` теперь поддерживает регистрацию реализаций с помощью аннотаций типов.
- [bpo-15873](https://python-all.ru/3/whatsnew/changelog.html): Добавлены новые альтернативные конструкторы [`datetime.datetime.fromisoformat()`](https://python-all.ru/3/library/datetime.html#datetime.datetime.fromisoformat), [`datetime.time.fromisoformat()`](https://python-all.ru/3/library/datetime.html#datetime.time.fromisoformat) и [`datetime.date.fromisoformat()`](https://python-all.ru/3/library/datetime.html#datetime.date.fromisoformat) как обратные операции для соответствующих методов `isoformat` каждого класса.
- [bpo-32199](https://python-all.ru/3/whatsnew/changelog.html): Геттер IP-адреса getnode() теперь использует 'ip link' вместо 'ip link list'.
- [bpo-32143](https://python-all.ru/3/whatsnew/changelog.html): os.statvfs() теперь включает поле f\_fsid из statvfs(2).
- [bpo-26439](https://python-all.ru/3/whatsnew/changelog.html): Исправлена работа ctypes.util.find\_library() на AIX с помощью реализации ctypes.\_aix.find\_library(). Автор исправления: Michael Felt.
- [bpo-31993](https://python-all.ru/3/whatsnew/changelog.html): Теперь при сериализации больших объектов bytes и str в файл pickler использует меньше памяти. Пиклы, созданные с протоколом 4, потребуют меньше памяти для десериализации больших объектов bytes и str.
- [bpo-27456](https://python-all.ru/3/whatsnew/changelog.html): Обеспечена установка TCP\_NODELAY на Linux. Тесты Victor Stinner.
- [bpo-31778](https://python-all.ru/3/whatsnew/changelog.html): ast.literal\_eval() теперь более строгий. Сложение и вычитание произвольных чисел больше не допускается.
- [bpo-31802](https://python-all.ru/3/whatsnew/changelog.html): Импорт нативного модуля пути (`posixpath`, `ntpath`) теперь работает, даже если модуль `os` ещё не импортирован.
- [bpo-30241](https://python-all.ru/3/whatsnew/changelog.html): Добавлен contextlib.AbstractAsyncContextManager. Автор исправления: Jelle Zijlstra.
- [bpo-31699](https://python-all.ru/3/whatsnew/changelog.html): Исправлены взаимоблокировки в [`concurrent.futures.ProcessPoolExecutor`](https://python-all.ru/3/library/concurrent.futures.html#concurrent.futures.ProcessPoolExecutor), когда аргументы или результаты задач вызывают ошибки сериализации или десериализации. Это гарантирует, что вызовы API `ProcessPoolExecutor` в конечном итоге всегда завершаются.
- [bpo-15216](https://python-all.ru/3/whatsnew/changelog.html): `TextIOWrapper.reconfigure()` поддерживает изменение *кодировки*, *обработки ошибок* и *символа новой строки*.

### Документация

- [bpo-32418](https://python-all.ru/3/whatsnew/changelog.html): Добавлен метод get\_loop() в классы Server и AbstractServer.

### Тесты

- [bpo-32252](https://python-all.ru/3/whatsnew/changelog.html): Исправлена функция faulthandler\_suppress\_crash\_report(), используемая для предотвращения создания файлов дампа ядра при тестировании сбоев. getrlimit() возвращает ноль при успехе.
- [bpo-32002](https://python-all.ru/3/whatsnew/changelog.html): Настройка тестирования принудительного использования локали C для случаев пустой локали и локали POSIX для более лёгкой адаптации к поведению, зависящему от платформы.

### Windows

- [bpo-19764](https://python-all.ru/3/whatsnew/changelog.html): Реализована поддержка `subprocess.Popen(close_fds=True)` в Windows. Автор исправления: Segev Finer.

### Инструменты/Демонстрации

- [bpo-24960](https://python-all.ru/3/whatsnew/changelog.html): 2to3 и lib2to3 теперь могут читать сериализованные файлы грамматик с помощью pkgutil.get\_data() вместо обращения к файловой системе. Это позволяет 2to3 и lib2to3 работать при запуске из zip-файла.

### C API

- [bpo-32030](https://python-all.ru/3/whatsnew/changelog.html): Py\_Initialize() не сбрасывает распределители памяти в значения по умолчанию, если не установлена переменная окружения `PYTHONMALLOC`.
- [bpo-29084](https://python-all.ru/3/whatsnew/changelog.html): Незадокументированный C API для OrderedDict был исключён из ограниченного C API. Он был добавлен по ошибке и фактически никогда не работал в ограниченном C API.
- [bpo-32264](https://python-all.ru/3/whatsnew/changelog.html): Заголовочный файл pygetopt.h перемещён в internal/, так как у него нет публичных API.
- [bpo-32241](https://python-all.ru/3/whatsnew/changelog.html): `Py_SetProgramName()` и `Py_SetPythonHome()` теперь принимают аргументы `const wchar *` вместо `wchar *`.

## Python 3.7.0 alpha 3

*Дата выпуска: 2017-12-05*

### Ядро и встроенные модули

- [bpo-32176](https://python-all.ru/3/whatsnew/changelog.html): co\_flags.CO\_NOFREE теперь всегда корректно устанавливается конструктором объекта кода на основе freevars и cellvars, а не требует правильной установки вызывающей стороной. Это гарантирует, что флаг будет автоматически сброшен при добавлении дополнительных ссылок на ячейки в изменённый объект кода и функцию.
- [bpo-10544](https://python-all.ru/3/whatsnew/changelog.html): Выражения yield теперь устарели в включениях (comprehensions) и выражениях-генераторах. Они по-прежнему разрешены в определении самого внешнего итерируемого объекта, поскольку он вычисляется непосредственно в объемлющей области видимости.
- [bpo-32137](https://python-all.ru/3/whatsnew/changelog.html): Теперь repr глубоко вложенного словаря вызывает RecursionError вместо аварийного завершения из-за переполнения стека.
- [bpo-32096](https://python-all.ru/3/whatsnew/changelog.html): Откат изменений распределителя памяти в C API: структуры перенесены обратно из \_PyRuntime в Objects/obmalloc.c. Распределители памяти снова инициализируются статически, так что PyMem\_RawMalloc() и Py\_DecodeLocale() могут быть вызваны до \_PyRuntime\_Initialize().
- [bpo-32043](https://python-all.ru/3/whatsnew/changelog.html): Добавлен новый «режим разработчика»: новый параметр командной строки «-X dev» для включения отладочных проверок во время выполнения.
- [bpo-32023](https://python-all.ru/3/whatsnew/changelog.html): Теперь SyntaxError корректно возникает, когда выражение-генератор без скобок используется вместо списка наследования в определении класса. Дублирование скобок может быть опущено только в вызовах.
- [bpo-32012](https://python-all.ru/3/whatsnew/changelog.html): Теперь SyntaxError корректно возникает, когда выражение-генератор без скобок передаётся как аргумент, но с завершающей запятой. Выражение-генератор всегда должно находиться непосредственно внутри круглых скобок и не может иметь запятую ни с одной из сторон.
- [bpo-28180](https://python-all.ru/3/whatsnew/changelog.html): Добавлена новая внутренняя вспомогательная функция `_Py_SetLocaleFromEnv(category)` для улучшения согласованности поведения в разных реализациях `libc` (например, Android по умолчанию не поддерживает установку локали из окружения).
- [bpo-31949](https://python-all.ru/3/whatsnew/changelog.html): Исправлено несколько проблем при выводе трассировок (PyTraceBack\_Print()). Установка sys.tracebacklimit в 0 или меньше теперь подавляет вывод трассировок. Установка sys.tracebacklimit в None теперь приводит к использованию предела по умолчанию. Установка sys.tracebacklimit в целое число больше LONG\_MAX теперь означает использование предела LONG\_MAX, а не предела по умолчанию. Исправлены целочисленные переполнения в случае более `2**31` элементов трассировки в Windows. Исправлена обработка ошибок вывода.
- [bpo-30696](https://python-all.ru/3/whatsnew/changelog.html): Исправлено бесконечное зацикливание интерактивного интерпретатора при нехватке памяти.
- [bpo-20047](https://python-all.ru/3/whatsnew/changelog.html): Методы bytearray partition() и rpartition() теперь принимают в качестве разделителя только байтоподобные объекты, как и задокументировано. В частности, теперь они вызывают TypeError вместо возврата неверного результата при передаче целого числа в качестве разделителя.
- [bpo-21720](https://python-all.ru/3/whatsnew/changelog.html): BytesWarning больше не выдаётся, когда аргумент *fromlist* функции `__import__()` или атрибут `__all__` модуля содержат экземпляры bytes.
- [bpo-31845](https://python-all.ru/3/whatsnew/changelog.html): Переменные окружения снова корректно считываются при запуске интерпретатора.
- [bpo-28936](https://python-all.ru/3/whatsnew/changelog.html): Обеспечено обнаружение первой лексической синтаксической ошибки, связанной с параметром и `global` или `nonlocal`, в данной области видимости. Исправление от Ивана Левкивского.
- [bpo-31825](https://python-all.ru/3/whatsnew/changelog.html): Исправлен OverflowError в кодировщике ‘unicode-escape’ и в codecs.escape\_decode() при декодировании экранированного не-ASCII байта.
- [bpo-31618](https://python-all.ru/3/whatsnew/changelog.html): Логика трассировки по кадрам, добавленная в 3.7a1, была изменена так, что `frame->f_lineno` обновляется до того, как будут отправлены события `"line"` или `"opcode"`. Ранее сначала отправлялись события кода операции, и поэтому иногда на кадре отображались устаревшие номера строк. В результате поведение этой функции немного изменилось: когда включены и `f_trace_lines`, и `f_trace_opcodes`, теперь сначала происходят события строки.
- [bpo-28603](https://python-all.ru/3/whatsnew/changelog.html): При завершении интерпретатора теперь выводится полная цепочка контекста/причины исключений, даже если какое-либо исключение в цепочке нехешируемо или равно последующим. Исправление от Zane Bitter.
- [bpo-31786](https://python-all.ru/3/whatsnew/changelog.html): Исправлено округление тайм-аута в модуле select – теперь отрицательные тайм-ауты между -1.0 и 0.0 округляются корректно. Функции теперь блокируются в ожидании событий, как и предполагалось. Ранее вызов был некорректно неблокирующим. Исправление от Pablo Galindo.
- [bpo-31781](https://python-all.ru/3/whatsnew/changelog.html): Предотвращение аварийных завершений при вызове методов неинициализированного объекта `zipimport.zipimporter`. Исправление от Oren Milman.
- [bpo-30399](https://python-all.ru/3/whatsnew/changelog.html): Стандартный repr() для BaseException с одним аргументом больше не содержит лишней завершающей запятой.
- [bpo-31626](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка в отладочном распределителе памяти. Была запись в освобождённую память после уменьшения блока памяти.
- [bpo-30817](https://python-all.ru/3/whatsnew/changelog.html): `PyErr_PrintEx()` теперь очищает игнорируемое исключение, которое может быть вызвано `_PySys_SetObjectId()`, например при нехватке памяти.

### Библиотека

- [bpo-28556](https://python-all.ru/3/whatsnew/changelog.html): Два небольших исправления для модуля `typing`: разрешено поверхностное копирование экземпляров обобщённых классов, улучшено взаимодействие `__init_subclass__` с дженериками. Оригинальные PR от Ивана Левкивского.
- [bpo-32214](https://python-all.ru/3/whatsnew/changelog.html): PEP 557, Классы данных (Data Classes). Предоставляет декоратор, который добавляет шаблонные методы в классы, использующие аннотации типов для указания полей.
- [bpo-27240](https://python-all.ru/3/whatsnew/changelog.html): Алгоритм сворачивания заголовков для новых политик email был переписан, что также исправляет [bpo-30788](https://python-all.ru/3/whatsnew/changelog.html), [bpo-31831](https://python-all.ru/3/whatsnew/changelog.html) и [bpo-32182](https://python-all.ru/3/whatsnew/changelog.html). В частности, теперь корректно выполняется сворачивание по RFC2231.
- [bpo-32186](https://python-all.ru/3/whatsnew/changelog.html): io.FileIO.readall() и io.FileIO.read() теперь освобождают GIL при получении размера файла. Исправлено зависание всех потоков при недоступном NFS-сервере. Исправление от Nir Soffer.
- [bpo-32101](https://python-all.ru/3/whatsnew/changelog.html): Добавлен флаг [`sys.flags.dev_mode`](https://python-all.ru/3/library/sys.html#sys.flags.dev_mode)
- [bpo-32154](https://python-all.ru/3/whatsnew/changelog.html): Функция `asyncio.windows_utils.socketpair()` была удалена – используйте напрямую [`socket.socketpair()`](https://python-all.ru/3/library/socket.html#socket.socketpair), доступную на всех платформах начиная с Python 3.5 (ранее она отсутствовала в Windows). `asyncio.windows_utils.socketpair()` была всего лишь псевдонимом для `socket.socketpair` в Python 3.5 и новее.
- [bpo-32089](https://python-all.ru/3/whatsnew/changelog.html): warnings: В режиме разработки (-X dev) и отладки (сборка pydebug) используйте действие “default” для ResourceWarning, а не “always” в фильтрах предупреждений по умолчанию.
- [bpo-32107](https://python-all.ru/3/whatsnew/changelog.html): `uuid.getnode()` теперь предпочтительно возвращает глобально администрируемые MAC-адреса, если они доступны, вместо локально администрируемых. Это обеспечивает лучшую гарантию глобальной уникальности UUID, возвращаемых из `uuid.uuid1()`. Если доступны только локально администрируемые MAC-адреса, возвращается первый найденный.
- [bpo-23033](https://python-all.ru/3/whatsnew/changelog.html): Подстановочный символ теперь поддерживается в имени хоста, если он является единственным символом в крайнем левом сегменте имени хоста во втором аргументе `ssl.match_hostname()`. Исправление от Mandeep Singh.
- [bpo-12239](https://python-all.ru/3/whatsnew/changelog.html): Исправлено, чтобы `msilib.SummaryInformation.GetProperty()` возвращала `None`, когда значение свойства равно `VT_EMPTY`. Первоначальное исправление от Mark Mc Mahon.
- [bpo-28334](https://python-all.ru/3/whatsnew/changelog.html): Используйте [`os.path.expanduser()`](https://python-all.ru/3/library/os.path.html#os.path.expanduser) для поиска файла `~/.netrc` в [`netrc.netrc`](https://python-all.ru/3/library/netrc.html#netrc.netrc). Если его нет, вызывается [`FileNotFoundError`](https://python-all.ru/3/library/exceptions.html#FileNotFoundError). Исправление от Dimitri Merejkowsky.
- [bpo-32121](https://python-all.ru/3/whatsnew/changelog.html): Изменено поведение `tracemalloc.Traceback` для большего соответствия модулю traceback: фреймы теперь сортируются от старых к новым. `Traceback.format()` теперь принимает отрицательное *limit*, обрезая результат до `abs(limit)` старейших фреймов. Чтобы вернуть старое поведение, можно использовать новый аргумент *most\_recent\_first* в `Traceback.format()`. (Исправление от Jesse Bakker.)
- [bpo-31325](https://python-all.ru/3/whatsnew/changelog.html): Исправлено неправильное использование [`collections.namedtuple()`](https://python-all.ru/3/library/collections.html#collections.namedtuple) в методе [`RobotFileParser.parse()`](https://python-all.ru/3/library/urllib.robotparser.html#urllib.robotparser.RobotFileParser.parse). Первоначальное исправление от Robin Wellner.
- [bpo-12382](https://python-all.ru/3/whatsnew/changelog.html): `msilib.OpenDatabase()` теперь выводит более понятное сообщение об ошибке, если не удалось открыть или создать MSI-файл. Первоначальное исправление от William Tisäter.
- [bpo-19610](https://python-all.ru/3/whatsnew/changelog.html): `setup()` теперь предупреждает о некорректных типах для некоторых полей. Класс `distutils.dist.Distribution` теперь выводит предупреждение, если поля `classifiers`, `keywords` и `platforms` не указаны как список или строка.
- [bpo-32071](https://python-all.ru/3/whatsnew/changelog.html): Добавлена опция командной строки `-k` для `python -m unittest`, позволяющая запускать только тесты, соответствующие заданным шаблонам.
- [bpo-10049](https://python-all.ru/3/whatsnew/changelog.html): В модуль contextlib добавлен *nullcontext* – контекстный менеджер, не выполняющий никаких действий. Он предоставляет более простую и быструю альтернативу ExitStack() при работе с опциональными контекстными менеджерами.
- [bpo-28684](https://python-all.ru/3/whatsnew/changelog.html): Новый декоратор test.support.skip\_unless\_bind\_unix\_socket() используется здесь для пропуска тестов asyncio, которые завершаются ошибкой из-за отсутствия на платформе рабочей функции bind() для доменных сокетов Unix (как это происходит для обычных пользователей на последних версиях Android, где SELinux работает в режиме enforcing).
- [bpo-32110](https://python-all.ru/3/whatsnew/changelog.html): `codecs.StreamReader.read(n)` теперь возвращает не более *n* символов/байтов для неотрицательного *n*. Это делает его совместимым с методами `read()` других файлоподобных объектов.
- [bpo-27535](https://python-all.ru/3/whatsnew/changelog.html): Модуль warnings больше не приводит к утечке памяти в скрытом реестре предупреждений для действия “ignore” в фильтрах предупреждений. Функция warn\_explicit() больше не добавляет ключ предупреждения в реестр для действия “ignore”.
- [bpo-32088](https://python-all.ru/3/whatsnew/changelog.html): warnings: Если Python собран в режиме отладки (`Py_DEBUG`), предупреждения [`DeprecationWarning`](https://python-all.ru/3/library/exceptions.html#DeprecationWarning), [`PendingDeprecationWarning`](https://python-all.ru/3/library/exceptions.html#PendingDeprecationWarning) и [`ImportWarning`](https://python-all.ru/3/library/exceptions.html#ImportWarning) теперь отображаются по умолчанию.
- [bpo-1647489](https://python-all.ru/3/whatsnew/changelog.html): Исправлен поиск шаблонов регулярных выражений, которые могли совпадать с пустой строкой. Непустая строка теперь корректно находится после совпадения с пустой строкой.
- [bpo-25054](https://python-all.ru/3/whatsnew/changelog.html): Добавлена поддержка разбиения по шаблону, который может совпадать с пустой строкой.
- [bpo-32072](https://python-all.ru/3/whatsnew/changelog.html): Исправлены проблемы с двоичными plist: исправлено сохранение bytearray. Идентичные объекты теперь сохраняются только один раз. Равные ссылки загружаются как идентичные объекты. Добавлена поддержка сохранения и загрузки рекурсивных структур данных.
- [bpo-32069](https://python-all.ru/3/whatsnew/changelog.html): Из asyncio удалён устаревший SSL-транспорт; ssl.MemoryBIO всё равно используется всегда.
- [bpo-32066](https://python-all.ru/3/whatsnew/changelog.html): asyncio: Поддержка pathlib.Path в create\_unix\_connection; аргумент sock должен быть необязательным.
- [bpo-32046](https://python-all.ru/3/whatsnew/changelog.html): Обновлён 2to3 для преобразования operator.isCallable(obj) в callable(obj). Исправление от Donghee Na.
- [bpo-32018](https://python-all.ru/3/whatsnew/changelog.html): inspect.signature должна следовать [**PEP 8**](https://python-all.ru/3/whatsnew/changelog.html), если параметр имеет аннотацию и значение по умолчанию. Исправление от Donghee Na.
- [bpo-32025](https://python-all.ru/3/whatsnew/changelog.html): Добавлены time.thread\_time() и time.thread\_time\_ns()
- [bpo-32037](https://python-all.ru/3/whatsnew/changelog.html): Целые числа, помещающиеся в 32-битное знаковое целое, теперь будут упаковываться протоколом 0 с использованием кода операции INT. Это уменьшит размер pickle, ускорит упаковку и распаковку, а также позволит распаковывать эти целые числа как экземпляры int в Python 2.
- [bpo-32034](https://python-all.ru/3/whatsnew/changelog.html): Сделать asyncio.IncompleteReadError и LimitOverrunError сериализуемыми (pickleable).
- [bpo-32015](https://python-all.ru/3/whatsnew/changelog.html): Исправлено зацикливание asyncio в случае переподключения сокета во время ожидания асинхронного чтения/записи.
- [bpo-32011](https://python-all.ru/3/whatsnew/changelog.html): Восстановлена поддержка загрузки marshal-файлов с кодом TYPE\_INT64. Такие файлы могут создаваться в Python 2.7.
- [bpo-28369](https://python-all.ru/3/whatsnew/changelog.html): Улучшена проверка в add\_reader/writer: сокет не должен использоваться каким-либо транспортом. Раньше поддерживались только случаи, когда add\_reader/writer вызывались с int FD. Теперь проверка корректно реализована для всех файлоподобных объектов.
- [bpo-31976](https://python-all.ru/3/whatsnew/changelog.html): Исправлено состояние гонки при медленной очистке файла, которое могло приводить к segfault при закрытии файла из другого потока.
- [bpo-31985](https://python-all.ru/3/whatsnew/changelog.html): Официально объявлены устаревшими aifc.openfp, sunau.openfp и wave.openfp. Начиная с изменения 7bc817d5ba917528e8bd07ec461c635291e7b06a в 1993 году, openfp в каждом из трёх модулей ссылался на функцию open этого модуля для обратной совместимости, хотя это не тестировалось и не документировалось.
- [bpo-21862](https://python-all.ru/3/whatsnew/changelog.html): Командная строка cProfile теперь принимает `-m module_name` в качестве альтернативы пути к скрипту. Исправление от Sanyam Khurana.
- [bpo-31970](https://python-all.ru/3/whatsnew/changelog.html): Снижение накладных расходов на производительность в режиме отладки asyncio.
- [bpo-31843](https://python-all.ru/3/whatsnew/changelog.html): Аргумент *database* функции sqlite3.connect() теперь принимает [объект, подобный пути](https://python-all.ru/3/glossary.html#term-path-like-object), а не только строку.
- [bpo-31945](https://python-all.ru/3/whatsnew/changelog.html): Добавлена настраиваемая *blocksize* в `HTTPConnection` и `HTTPSConnection` для повышения пропускной способности при загрузке. Исправление от Нира Соффера.
- [bpo-31943](https://python-all.ru/3/whatsnew/changelog.html): Добавлен метод `cancelled()` в [`asyncio.Handle`](https://python-all.ru/3/library/asyncio-eventloop.html#asyncio.Handle). Исправление от Марата Шарафутдинова.
- [bpo-9678](https://python-all.ru/3/whatsnew/changelog.html): Исправлено определение MAC-адреса в модуле uuid: используется ifconfig на NetBSD и OpenBSD, arp на Linux, FreeBSD, NetBSD и OpenBSD. На основе исправления от Такаюки Симидзукавы.
- [bpo-30057](https://python-all.ru/3/whatsnew/changelog.html): Исправлен потенциально пропущенный сигнал в signal.signal().
- [bpo-31933](https://python-all.ru/3/whatsnew/changelog.html): Исправлены параметры Blake2 leaf\_size и node\_offset на платформах с big endian. Исправление от Джека О’Коннора.
- [bpo-21423](https://python-all.ru/3/whatsnew/changelog.html): Добавлен аргумент initializer в {процесс,поток}PoolExecutor
- [bpo-31927](https://python-all.ru/3/whatsnew/changelog.html): Исправлена компиляция модуля socket на NetBSD 8. Исправлено падение из-за утверждения или чтение произвольных данных при разборе адреса AF\_BLUETOOTH на NetBSD и DragonFly BSD.
- [bpo-27666](https://python-all.ru/3/whatsnew/changelog.html): Исправлено повреждение стека в curses.box() и curses.ungetmouse(), когда размер типов chtype или mmask\_t меньше размера C long. curses.box() теперь принимает символы в качестве аргументов. На основе исправления от Стива Финка.
- [bpo-31917](https://python-all.ru/3/whatsnew/changelog.html): Добавлено 3 новых идентификатора часов: [`time.CLOCK_BOOTTIME`](https://python-all.ru/3/library/time.html#time.CLOCK_BOOTTIME), [`time.CLOCK_PROF`](https://python-all.ru/3/library/time.html#time.CLOCK_PROF) и [`time.CLOCK_UPTIME`](https://python-all.ru/3/library/time.html#time.CLOCK_UPTIME).
- [bpo-31897](https://python-all.ru/3/whatsnew/changelog.html): Модуль plistlib теперь перехватывает больше ошибок при чтении бинарных файлов формата plist и возбуждает исключение InvalidFileException вместо неожиданных исключений.
- [bpo-25720](https://python-all.ru/3/whatsnew/changelog.html): Исправлен метод проверки состояния панели (pad) окна curses WINDOW. Исправление от Масаюки Ямамото.
- [bpo-31893](https://python-all.ru/3/whatsnew/changelog.html): Исправлена компоновка структуры kqueue\_event на OpenBSD и NetBSD. Исправлено сравнение объектов kqueue\_event.
- [bpo-31891](https://python-all.ru/3/whatsnew/changelog.html): Исправлена сборка модуля curses на NetBSD.
- [bpo-31884](https://python-all.ru/3/whatsnew/changelog.html): Добавлены необходимые константы в модуль подпроцесса для установки приоритета в Windows
- [bpo-28281](https://python-all.ru/3/whatsnew/changelog.html): Убраны ограничения на год (1–9999) для функции Calendar.weekday(). Исправление от Марка Голлахона.
- [bpo-31702](https://python-all.ru/3/whatsnew/changelog.html): crypt.mksalt() теперь позволяет задавать количество раундов для хэширования SHA-256 и SHA-512.
- [bpo-30639](https://python-all.ru/3/whatsnew/changelog.html): [`inspect.getfile()`](https://python-all.ru/3/library/inspect.html#inspect.getfile) больше не вычисляет repr неизвестных объектов для вывода в сообщении об ошибке, чтобы защититься от некорректно ведущих себя пользовательских repr.
- [bpo-30768](https://python-all.ru/3/whatsnew/changelog.html): Исправлена реализация PyThread\_acquire\_lock\_timed() на pthread+semaphore при вызове с timeout \> 0 и intr\_flag=0: повторное вычисление таймаута, если sem\_timedwait() прервана сигналом (EINTR). См. также [**PEP 475**](https://python-all.ru/3/whatsnew/changelog.html).
- [bpo-31854](https://python-all.ru/3/whatsnew/changelog.html): Добавлена константа `mmap.ACCESS_DEFAULT`.
- [bpo-31834](https://python-all.ru/3/whatsnew/changelog.html): Оптимизированный код для BLAKE2 теперь используется только с SSSE3+. Реализация на чистом SSE2 работает медленнее эталонной реализации на чистом C.
- [bpo-28292](https://python-all.ru/3/whatsnew/changelog.html): Calendar.itermonthdates() теперь будет последовательно возбуждать исключение, когда дата выходит за пределы диапазона 0001-01-01 – 9999-12-31. Для поддержки приложений, которые не могут допускать такие исключения, добавлены новые методы itermonthdays3() и itermonthdays4(). Новые методы возвращают кортежи и не ограничены диапазоном, поддерживаемым datetime.date.
- [bpo-28564](https://python-all.ru/3/whatsnew/changelog.html): Функция shutil.rmtree() ускорена на 20–40%. Это было сделано с помощью функции os.scandir().
- [bpo-28416](https://python-all.ru/3/whatsnew/changelog.html): Экземпляры подклассов pickle.Pickler с методом persistent\_id() и подклассов pickle.Unpickler с методом persistent\_load() больше не создают циклические ссылки.
- [bpo-31653](https://python-all.ru/3/whatsnew/changelog.html): Не освобождать GIL, если можно сразу захватить семафор multiprocessing.
- [bpo-28326](https://python-all.ru/3/whatsnew/changelog.html): Исправлен multiprocessing.Process, когда stdout и/или stderr закрыты или равны None.
- [bpo-20825](https://python-all.ru/3/whatsnew/changelog.html): Добавлены проверки вхождения `subnet_of` и `superset_of` в [`ipaddress.IPv6Network`](https://python-all.ru/3/library/ipaddress.html#ipaddress.IPv6Network) и [`ipaddress.IPv4Network`](https://python-all.ru/3/library/ipaddress.html#ipaddress.IPv4Network). Исправление от Мишеля Альбера и Шерил Сабеллы.
- [bpo-31827](https://python-all.ru/3/whatsnew/changelog.html): Удалена функция os.stat\_float\_times(). Она была введена в Python 2.3 для обратной совместимости с Python 2.2 и устарела с Python 3.1.
- [bpo-31756](https://python-all.ru/3/whatsnew/changelog.html): Добавлен именованный аргумент `subprocess.Popen(text=False)` в функции `subprocess`, чтобы явно указать, когда библиотека должна пытаться декодировать вывод в текст. Исправление от Эндрю Клегга.
- [bpo-31819](https://python-all.ru/3/whatsnew/changelog.html): Добавлен AbstractEventLoop.sock\_recv\_into().
- [bpo-31457](https://python-all.ru/3/whatsnew/changelog.html): При использовании вложенных адаптеров логов внутренние методы `process()` больше не пропускаются.
- [bpo-31457](https://python-all.ru/3/whatsnew/changelog.html): Свойство `manager` объектов LoggerAdapter теперь можно правильно устанавливать.
- [bpo-31806](https://python-all.ru/3/whatsnew/changelog.html): Исправлено округление тайм-аута в time.sleep(), threading.Lock.acquire() и socket.socket.settimeout(): теперь отрицательные тайм-ауты от -1.0 до 0.0 округляются правильно. Функции блокируются в ожидании событий, как и ожидалось. Ранее вызов некорректно был неблокирующим. Патч от Pablo Galindo.
- [bpo-31803](https://python-all.ru/3/whatsnew/changelog.html): time.clock() и time.get\_clock\_info('clock') теперь выдают предупреждение DeprecationWarning.
- [bpo-31800](https://python-all.ru/3/whatsnew/changelog.html): Расширена поддержка разбора смещений UTC. strptime '%z' теперь может разбирать вывод, генерируемый datetime.isoformat, включая секунды и микросекунды.
- [bpo-28603](https://python-all.ru/3/whatsnew/changelog.html): traceback: Исправлена ошибка TypeError, возникавшая при печати трассировок исключений, когда текущее исключение или исключение в цепочке контекста/причины было нехешируемым. Патч от Zane Bitter.
- [bpo-30541](https://python-all.ru/3/whatsnew/changelog.html): Добавлена новая функция для запечатывания mock-объекта и предотвращения автоматического создания дочерних mock-объектов. Патч от Mario Corchero.
- [bpo-31784](https://python-all.ru/3/whatsnew/changelog.html): Реализован [**PEP 564**](https://python-all.ru/3/whatsnew/changelog.html), добавлено шесть новых функций с разрешением в наносекундах в модуль [`time`](https://python-all.ru/3/library/time.html#module-time): [`clock_gettime_ns()`](https://python-all.ru/3/library/time.html#time.clock_gettime_ns), [`clock_settime_ns()`](https://python-all.ru/3/library/time.html#time.clock_settime_ns), [`monotonic_ns()`](https://python-all.ru/3/library/time.html#time.monotonic_ns), [`perf_counter_ns()`](https://python-all.ru/3/library/time.html#time.perf_counter_ns), [`process_time_ns()`](https://python-all.ru/3/library/time.html#time.process_time_ns), [`time_ns()`](https://python-all.ru/3/library/time.html#time.time_ns).
- [bpo-30143](https://python-all.ru/3/whatsnew/changelog.html): 2to3 теперь генерирует код, использующий абстрактные классы коллекций из collections.abc вместо collections.
- [bpo-31770](https://python-all.ru/3/whatsnew/changelog.html): Исправлен сбой, возникавший при многократном вызове метода `__init__()` объекта `sqlite3.Cursor`. Патч от Oren Milman.
- [bpo-31764](https://python-all.ru/3/whatsnew/changelog.html): Исправлен сбой в `sqlite3.Cursor.close()`, если объект `Cursor` не инициализирован. Патч от Oren Milman.
- [bpo-31752](https://python-all.ru/3/whatsnew/changelog.html): Исправлен возможный сбой в конструкторе timedelta при вызове с пользовательскими целыми числами.
- [bpo-31620](https://python-all.ru/3/whatsnew/changelog.html): Пустая asyncio.Queue теперь не вызывает утечку памяти, когда тайм-аут опроса queue.get истекает.
- [bpo-31690](https://python-all.ru/3/whatsnew/changelog.html): Разрешено использование флагов re.ASCII, re.LOCALE и re.UNICODE в качестве групповых флагов для регулярных выражений.
- [bpo-30349](https://python-all.ru/3/whatsnew/changelog.html): Теперь выдается FutureWarning, если регулярное выражение содержит конструкции наборов символов, чья семантика изменится в будущем (вложенные наборы и операции над наборами).
- [bpo-31664](https://python-all.ru/3/whatsnew/changelog.html): Добавлена поддержка хеширования Blowfish в модуль crypt.
- [bpo-31632](https://python-all.ru/3/whatsnew/changelog.html): Исправлен метод set\_protocol() класса \_SSLProtocolTransport в модуле asyncio. Ранее этот метод изменял неверную ссылку на протокол.
- [bpo-15037](https://python-all.ru/3/whatsnew/changelog.html): Добавлен обходной путь для getkey() в curses для ncurses 5.7 и более ранних версий.
- [bpo-31307](https://python-all.ru/3/whatsnew/changelog.html): Разрешено использование байтовых объектов в качестве аргументов для [`configparser.ConfigParser.read()`](https://python-all.ru/3/library/configparser.html#configparser.ConfigParser.read). Патч от Vincent Michel.
- [bpo-31334](https://python-all.ru/3/whatsnew/changelog.html): Исправлен `poll.poll([timeout])` в модуле `select` для произвольных отрицательных тайм-аутов на всех ОС, где он может быть только неотрицательным целым числом или -1. Патч от Riccardo Coccioli.
- [bpo-31310](https://python-all.ru/3/whatsnew/changelog.html): Трекер семафоров multiprocessing должен запускаться снова, если он аварийно завершился.
- [bpo-31308](https://python-all.ru/3/whatsnew/changelog.html): Сделать процесс forkserver в multiprocessing устойчивым к Ctrl-C и другим прерываниям пользователя. Если он аварийно завершится, перезапускать его при необходимости.
- [bpo-31245](https://python-all.ru/3/whatsnew/changelog.html): Добавлена поддержка сокетов AF\_UNIX в asyncio `create_datagram_endpoint`.
- [bpo-30553](https://python-all.ru/3/whatsnew/changelog.html): Добавлен код состояния HTTP/2 421 (Misdirected Request) в [`http.HTTPStatus`](https://python-all.ru/3/library/http.html#http.HTTPStatus). Патч от Vitor Pereira.

### Документация

- [bpo-32105](https://python-all.ru/3/whatsnew/changelog.html): Добавлен маркер versionadded для asyncio.BaseEventLoop.connect\_accepted\_socket.

### Тесты

- [bpo-31380](https://python-all.ru/3/whatsnew/changelog.html): Пропускать test\_httpservers test\_undecodable\_file на macOS: не работает на APFS.
- [bpo-31705](https://python-all.ru/3/whatsnew/changelog.html): Пропускать test\_socket.test\_sha256() на ядре Linux версии ниже 4.5. Тест завершается ошибкой ENOKEY на ядре 3.10 (на ppc64le). Исправление было включено в ядро 4.5.
- [bpo-32138](https://python-all.ru/3/whatsnew/changelog.html): Пропускать на Android тесты test\_faulthandler, которые вызывают SIGSEGV, и удалить декоратор test.support.requires\_android\_level.
- [bpo-32136](https://python-all.ru/3/whatsnew/changelog.html): Тесты на встраивание времени выполнения выделены из `Lib/test/test_capi.py` в новый файл `Lib/test/test_embed.py`.
- [bpo-28668](https://python-all.ru/3/whatsnew/changelog.html): Удалена test.support.requires\_multiprocessing\_queue. Вместо этого пропускайте тесты с помощью test.support.import\_module('multiprocessing.synchronize'), когда реализация семафора повреждена или отсутствует.
- [bpo-32126](https://python-all.ru/3/whatsnew/changelog.html): Пропускать test\_get\_event\_loop\_new\_process в test.test\_asyncio.test\_events, если sem\_open() не работает.
- [bpo-31174](https://python-all.ru/3/whatsnew/changelog.html): Исправлен test\_tools.test\_unparse: DirectoryTestCase теперь сохраняет образец имен, чтобы всегда тестировать одни и те же файлы. Это предотвращает ложные срабатывания при поиске утечек ссылок.

### Сборка

- [bpo-28538](https://python-all.ru/3/whatsnew/changelog.html): Откат предыдущих изменений: структура if\_nameindex определяется Unified Headers.
- [bpo-28762](https://python-all.ru/3/whatsnew/changelog.html): Откат последнего коммита: макрос F\_LOCK определяется Android Unified Headers.
- [bpo-29040](https://python-all.ru/3/whatsnew/changelog.html): Поддержка сборки Android с Unified Headers. Первый выпуск NDK, поддерживающий Unified Headers – android-ndk-r14.
- [bpo-32059](https://python-all.ru/3/whatsnew/changelog.html): `detect_modules()` в `setup.py` теперь также ищет пути sysroot при кросскомпиляции.
- [bpo-31957](https://python-all.ru/3/whatsnew/changelog.html): Исправлено определение версии Windows SDK при сборке для Windows.
- [bpo-31609](https://python-all.ru/3/whatsnew/changelog.html): Исправлены кавычки в PCbuild/clean.bat
- [bpo-31934](https://python-all.ru/3/whatsnew/changelog.html): Прерывание сборки при сборке вне чистого дерева исходников.
- [bpo-31926](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ситуация, когда Argument Clinic иногда вызывал ошибки компиляции, если в одном .c файле было более одной функции и/или метода с одинаковым именем.
- [bpo-28791](https://python-all.ru/3/whatsnew/changelog.html): Обновление сборок Windows для использования SQLite 3.21.0.
- [bpo-28791](https://python-all.ru/3/whatsnew/changelog.html): Обновление установщика OS X для использования SQLite 3.21.0.
- [bpo-28643](https://python-all.ru/3/whatsnew/changelog.html): Запись прогресса сборки с profile-opt с помощью stamp-файлов.
- [bpo-31866](https://python-all.ru/3/whatsnew/changelog.html): Окончательное удаление поддержки AtheOS.

### Windows

- [bpo-1102](https://python-all.ru/3/whatsnew/changelog.html): Возвращать `None`, когда `View.Fetch()` возвращает `ERROR_NO_MORE_ITEMS`, вместо возбуждения `MSIError`. Первоначальный патч от Энтони Туайнинги (Anthony Tuininga).
- [bpo-31944](https://python-all.ru/3/whatsnew/changelog.html): Исправлена кнопка «Изменить» в диалоговом окне «Приложения и возможности».
- [bpo-20486](https://python-all.ru/3/whatsnew/changelog.html): Реализован метод `Database.Close()` для помощи в закрытии объектов базы данных MSI.
- [bpo-31857](https://python-all.ru/3/whatsnew/changelog.html): Сделать поведение USE\_STACKCHECK детерминированным в многопоточной среде.

### macOS

- [bpo-31392](https://python-all.ru/3/whatsnew/changelog.html): Обновление установщика macOS для использования OpenSSL 1.0.2m

### IDLE

- [bpo-32207](https://python-all.ru/3/whatsnew/changelog.html): Улучшение трассировок исключений событий tk в IDLE. Когда обработка событий tk управляется циклом выполнения IDLE, сбивающий с толку и отвлекающий контекст трассировки queue.EMPTY больше не добавляется к трассировкам исключений событий tk. Теперь трассировка такая же, как когда обработка событий управляется пользовательским кодом. Патч на основе предложения Сергея Сторчаки (Serhiy Storchaka).
- [bpo-32164](https://python-all.ru/3/whatsnew/changelog.html): Удалён неиспользуемый файл idlelib/tabbedpages.py. Использование TabbedPageSet в configdialog заменено на ttk.Notebook.
- [bpo-32100](https://python-all.ru/3/whatsnew/changelog.html): IDLE: Исправлены старые и новые ошибки в pathbrowser; улучшены тесты. Патч в основном от Шерил Сабеллы (Cheryl Sabella).
- [bpo-31858](https://python-all.ru/3/whatsnew/changelog.html): IDLE – Ограничить манипуляции с приглашением оболочки только оболочкой. Редактор и окна вывода видят только пустую последнюю строку приглашения. Это упрощает код и исправляет мелкую ошибку при вставке новой строки. Sys.ps1, если присутствует, считывается при запуске оболочки, но не устанавливается и не изменяется.
- [bpo-31860](https://python-all.ru/3/whatsnew/changelog.html): Образец шрифта в диалоговом окне конфигурации IDLE теперь редактируемый. Изменения сохраняются, пока IDLE открыт.
- [bpo-31836](https://python-all.ru/3/whatsnew/changelog.html): Test\_code\_module теперь проходит, если запущен после test\_idle, который устанавливает ps1. Модуль code использует sys.ps1, если он присутствует, или устанавливает его в '\>\>\> ' если нет. Test\_code\_module теперь корректно проверяет оба поведения. То же самое для ps2.
- [bpo-28603](https://python-all.ru/3/whatsnew/changelog.html): Исправлен TypeError, который вызывал перезапуск оболочки при выводе трассировки, включающей исключение, которое нельзя хэшировать. Патч от Зейна Биттера (Zane Bitter).
- [bpo-13802](https://python-all.ru/3/whatsnew/changelog.html): Использование нелатинских символов в образце шрифта IDLE. Даже если выбрать шрифт, который определяет ограниченное подмножество unicode Basic Multilingual Plane, tcl/tk будет использовать другие шрифты, которые определяют символ. Расширенный пример даёт пользователям нелатинских символов лучшее представление о том, что они могут увидеть в оболочке и редакторах IDLE. Чтобы освободить место для расширенного образца, рамки на вкладке Font переставлены. Справка Font/Tabs немного объясняет о дополнениях.

### Tools/Demos

- [bpo-32159](https://python-all.ru/3/whatsnew/changelog.html): Удаление инструментов CVS и Subversion: удалены скрипты svneol.py и treesync.py. CPython мигрировал с CVS на Subversion, затем на Mercurial, а затем на Git. CVS и Subversion больше не используются для разработки CPython.
- [bpo-30722](https://python-all.ru/3/whatsnew/changelog.html): Исправлена работа redemo с Python 3.6 и новее. Также удален параметр `LOCALE`, поскольку он не работает со строковыми шаблонами в Python 3. Автор исправления – Christoph Sarnowski.

### C API

- [bpo-20891](https://python-all.ru/3/whatsnew/changelog.html): Исправлена функция PyGILState\_Ensure(). Если PyGILState\_Ensure() вызывается в непотоке Python до PyEval\_InitThreads(), теперь PyEval\_InitThreads() вызывается только после PyThreadState\_New(), что устраняет аварию.
- [bpo-32125](https://python-all.ru/3/whatsnew/changelog.html): Флаг `Py_UseClassExceptionsFlag` удален. Он был устаревшим и не использовался начиная с Python 2.0.
- [bpo-25612](https://python-all.ru/3/whatsnew/changelog.html): Текущее состояние исключения перенесено из объекта фрейма в корутину. Это упрощает интерпретатор и устраняет ряд трудноуловимых ошибок, вызванных переключением состояния исключения при входе в генератор или выходе из него.
- [bpo-23699](https://python-all.ru/3/whatsnew/changelog.html): Добавлен макрос Py\_RETURN\_RICHCOMPARE для уменьшения шаблонного кода в функциях полного сравнения.
- [bpo-30697](https://python-all.ru/3/whatsnew/changelog.html): Синглтон `PyExc_RecursionErrorInst` удален, и `PyErr_NormalizeException()` больше его не использует. Этот синглтон является постоянным, и его члены никогда не очищаются, что может приводить к segfault при завершении интерпретатора. См. также [bpo-22898](https://python-all.ru/3/whatsnew/changelog.html).

## Python 3.7.0 alpha 2

*Дата выпуска: 2017-10-16*

### Ядро и встроенные модули

- [bpo-31558](https://python-all.ru/3/whatsnew/changelog.html): `gc.freeze()` – новый API, позволяющий перемещать все объекты, отслеживаемые сборщиком мусора, в постоянное поколение, фактически исключая их из будущих сборок. Это можно использовать для защиты этих объектов от изменения их PyGC\_Head. В результате достигается высокая стабильность copy-on-write при fork().
- [bpo-31642](https://python-all.ru/3/whatsnew/changelog.html): Восстановлено блокирующее поведение «from package import module» путём установки sys.modules\[“package.module”\] в None.
- [bpo-31708](https://python-all.ru/3/whatsnew/changelog.html): Разрешено использование асинхронных генераторных выражений в синхронных функциях.
- [bpo-31709](https://python-all.ru/3/whatsnew/changelog.html): Прекращена поддержка асинхронного \_\_aiter\_\_.
- [bpo-30404](https://python-all.ru/3/whatsnew/changelog.html): Параметр -u теперь делает потоки stdout и stderr небуферизованными, а не буферизованными по строкам.
- [bpo-31619](https://python-all.ru/3/whatsnew/changelog.html): Исправлен ValueError при преобразовании строки с большим количеством подчеркиваний в целое число с двоичным основанием.
- [bpo-31602](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка утверждения в `zipimporter.get_source()` при неверном `zlib.decompress()`. Автор исправления – Oren Milman.
- [bpo-31592](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка утверждения в парсере Python при неверном `unicodedata.normalize()`. Автор исправления – Oren Milman.
- [bpo-31588](https://python-all.ru/3/whatsnew/changelog.html): Возникает `TypeError` с информативным сообщением об ошибке, когда создание класса не удается из-за метакласса с неверным методом `__prepare__()`. Автор исправления – Oren Milman.
- [bpo-31574](https://python-all.ru/3/whatsnew/changelog.html): В importlib добавлены две точки инструментирования dtrace для профилирования времени импорта.
- [bpo-31566](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка утверждения в `_warnings.warn()` при неверной глобальной переменной `__name__`. Автор исправления – Oren Milman.
- [bpo-31506](https://python-all.ru/3/whatsnew/changelog.html): Улучшена логика сообщений об ошибках для `object.__new__` и ``.
- [bpo-31505](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка утверждения в `json`, если `` получил неверный аргумент `encoder()`. Автор исправления – Oren Milman.
- [bpo-31492](https://python-all.ru/3/whatsnew/changelog.html): Исправлены ошибки утверждения при неудачном импорте из модуля с неверным атрибутом `__name__`, а также при неудачном доступе к атрибуту такого модуля. Автор исправления – Oren Milman.
- [bpo-31478](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка утверждения в `_random.Random.seed()`, если аргумент имеет неверный метод `__abs__()`. Автор исправления – Oren Milman.
- [bpo-31336](https://python-all.ru/3/whatsnew/changelog.html): Ускорено создание классов на 10-20% за счет снижения накладных расходов на поиск необходимых специальных методов. Автор исправления – Stefan Behnel.
- [bpo-31415](https://python-all.ru/3/whatsnew/changelog.html): Добавлен параметр `-X importtime` для отображения времени каждого импорта. Его можно использовать для оптимизации времени запуска приложения. Поддержка [`PYTHONPROFILEIMPORTTIME`](https://python-all.ru/3/using/cmdline.html#envvar-PYTHONPROFILEIMPORTTIME) как эквивалентного способа включения этой функции.
- [bpo-31410](https://python-all.ru/3/whatsnew/changelog.html): Оптимизирован вызов дескрипторов wrapper и classmethod.
- [bpo-31353](https://python-all.ru/3/whatsnew/changelog.html): [**PEP 553**](https://python-all.ru/3/whatsnew/changelog.html) – добавлена новая встроенная функция `breakpoint()`, которая вызывает `sys.breakpointhook()`. По умолчанию она импортирует `pdb` и вызывает `pdb.set_trace()`, но пользователи могут переопределить `sys.breakpointhook()`, чтобы вызывать любой отладчик. Исходное значение хука сохраняется в `sys.__breakpointhook__`.
- [bpo-17852](https://python-all.ru/3/whatsnew/changelog.html): Ведется список открытых буферизованных файлов, они сбрасываются перед выходом из интерпретатора. Основано на патче от Armin Rigo.
- [bpo-31315](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка утверждения в imp.create\_dynamic(), когда spec.name не является строкой. Автор исправления – Oren Milman.
- [bpo-31311](https://python-all.ru/3/whatsnew/changelog.html): Исправлена авария в методе `__setstate__()` объекта `ctypes._CData` при неверном `__dict__`. Автор исправления – Oren Milman.
- [bpo-31293](https://python-all.ru/3/whatsnew/changelog.html): Исправлены падения при истинном делении и умножении объекта timedelta на число с плавающей запятой (float) с некорректным методом as\_integer\_ratio(). Патч от Oren Milman.
- [bpo-31285](https://python-all.ru/3/whatsnew/changelog.html): Исправлено нарушение утверждения (assertion failure) в `warnings.warn_explicit`, когда значение, возвращаемое методом `get_source()` полученной загрузчика (loader), содержит некорректный метод `splitlines()`. Патч от Oren Milman.
- [bpo-30406](https://python-all.ru/3/whatsnew/changelog.html): Make `async` and `await` proper keywords, as specified in [**PEP 492**](https://python-all.ru/3/whatsnew/changelog.html).

### Библиотека

- [bpo-30058](https://python-all.ru/3/whatsnew/changelog.html): Исправлено переполнение буфера в select.kqueue.control().
- [bpo-31672](https://python-all.ru/3/whatsnew/changelog.html): `idpattern` в `string.Template` сопоставлял некоторые не-ASCII символы. Теперь используется регулярное выражение с локальным флагом `-i`, чтобы избежать не-ASCII символов.
- [bpo-31701](https://python-all.ru/3/whatsnew/changelog.html): В Windows faulthandler.enable() теперь игнорирует исключения MSC и COM.
- [bpo-31728](https://python-all.ru/3/whatsnew/changelog.html): Предотвращены падения в `_elementtree` из-за небезопасной очистки `Element.text` и `Element.tail`. Патч от Oren Milman.
- [bpo-31671](https://python-all.ru/3/whatsnew/changelog.html): Теперь `re.compile()` преобразует переданный RegexFlag в обычный целочисленный объект перед компиляцией. Бенчмарк bm\_regex\_compile показывает улучшение производительности на 14%.
- [bpo-30397](https://python-all.ru/3/whatsnew/changelog.html): Типы скомпилированных регулярных объектов и объектов сопоставления теперь доступны как `re.Pattern` и `re.Match`. Это добавляет информацию в вывод pydoc для модуля `re`.
- [bpo-31675](https://python-all.ru/3/whatsnew/changelog.html): Исправлены утечки памяти в методах Tkinter splitlist() и split() при передаче строки размером более 2 ГиБ.
- [bpo-31673](https://python-all.ru/3/whatsnew/changelog.html): Исправлена опечатка в имени метода Tkinter adderrorinfo().
- [bpo-31648](https://python-all.ru/3/whatsnew/changelog.html): Улучшения предикатов пути в ElementTree: разрешены пробелы вокруг частей предиката, например ⟦a = 'text'⟧ вместо менее читаемого ⟦a='text'⟧. Добавлена поддержка сравнения текста текущего узла, например ⟦.='text'⟧. Патч от Stefan Behnel.
- [bpo-30806](https://python-all.ru/3/whatsnew/changelog.html): Исправлено строковое представление объекта netrc.
- [bpo-31638](https://python-all.ru/3/whatsnew/changelog.html): Добавлен необязательный аргумент `compressed` в `zipapp.create_archive` и опция `--compress` в интерфейс командной строки `zipapp`.
- [bpo-25351](https://python-all.ru/3/whatsnew/changelog.html): Исправлены ошибки активации venv при неопределённых переменных.
- [bpo-20519](https://python-all.ru/3/whatsnew/changelog.html): Избегается использование ctypes (где возможно) и улучшено время импорта uuid.
- [bpo-28293](https://python-all.ru/3/whatsnew/changelog.html): Кэш регулярных выражений теперь не сбрасывается полностью при заполнении.
- [bpo-31596](https://python-all.ru/3/whatsnew/changelog.html): В модуль time добавлена функция pthread\_getcpuclockid().
- [bpo-27494](https://python-all.ru/3/whatsnew/changelog.html): В утилите 2to3 разрешена завершающая запятая в выражениях-генераторах. Например, теперь допускается запись `set(x for x in [],)`.
- [bpo-30347](https://python-all.ru/3/whatsnew/changelog.html): Прекращены падения при одновременном итерировании по итераторам itertools.groupby().
- [bpo-30346](https://python-all.ru/3/whatsnew/changelog.html): Итератор, созданный itertools.groupby(), теперь исчерпывается после продвижения итератора groupby.
- [bpo-31556](https://python-all.ru/3/whatsnew/changelog.html): Future, ожидаемая asyncio.wait\_for, отменяется быстрее, если timeout \<= 0.
- [bpo-31540](https://python-all.ru/3/whatsnew/changelog.html): В конструктор [`concurrent.futures.ProcessPoolExecutor`](https://python-all.ru/3/library/concurrent.futures.html#concurrent.futures.ProcessPoolExecutor) разрешена передача объекта контекста. Также ресурсы заданий (job) освобождаются в `concurrent.futures.ProcessPoolExecutor` раньше, чтобы улучшить использование памяти, когда рабочий процесс ожидает новые задания.
- [bpo-31516](https://python-all.ru/3/whatsnew/changelog.html): `threading.current_thread()` не должен возвращать фиктивный поток при завершении работы.
- [bpo-31525](https://python-all.ru/3/whatsnew/changelog.html): В модуле sqlite теперь требуется API sqlite3\_prepare\_v2. Таким образом, для модуля sqlite теперь требуется SQLite версии не ниже 3.3.9.
- [bpo-26510](https://python-all.ru/3/whatsnew/changelog.html): Подпарсеры argparse теперь обязательны по умолчанию. Это соответствует поведению в Python 2. Для необязательных подпарсеров используйте новый параметр `add_subparsers(required=False)`. Патч от Anthony Sottile. (Начиная с 3.7.0rc1 значение по умолчанию было изменено на «не обязательный», как было в Python 3.3.)
- [bpo-27541](https://python-all.ru/3/whatsnew/changelog.html): строковые представления подклассов некоторых классов коллекций и итераторов (`bytearray`, `array.array`, `collections.deque`, `collections.defaultdict`, `itertools.count`, `itertools.repeat`) теперь содержат фактическое имя типа, а не жёстко заданные имена базового класса.
- [bpo-31351](https://python-all.ru/3/whatsnew/changelog.html): python -m ensurepip теперь завершается с ненулевым кодом возврата, если начальная загрузка pip не удалась.
- [bpo-31389](https://python-all.ru/3/whatsnew/changelog.html): `pdb.set_trace()` теперь принимает необязательный аргумент только по ключевому слову `header`. Если он передан, он выводится на консоль перед началом отладки.

### Документация

- [bpo-31537](https://python-all.ru/3/whatsnew/changelog.html): Исправлено некорректное использование `get_history_length` в примере кода документации readline. Патч от Brad Smith.
- [bpo-30085](https://python-all.ru/3/whatsnew/changelog.html): Для ясности предпочтительны операторные функции без двойных подчёркиваний. Функции с подчёркиваниями сохранены только для обратной совместимости.

### Сборка

- [bpo-31696](https://python-all.ru/3/whatsnew/changelog.html): Улучшена информация о версии компилятора в [`sys.version`](https://python-all.ru/3/library/sys.html#sys.version) при сборке Python с помощью Clang.
- [bpo-31625](https://python-all.ru/3/whatsnew/changelog.html): Прекращено использование ranlib для статических библиотек. Вместо этого предполагается, что ar поддерживает флаг 's'.
- [bpo-31624](https://python-all.ru/3/whatsnew/changelog.html): Удалена поддержка BSD/OS.
- [bpo-22140](https://python-all.ru/3/whatsnew/changelog.html): Предотвращена двойная подстановка префикса в python-config.sh.
- [bpo-31569](https://python-all.ru/3/whatsnew/changelog.html): Исправлен регистр PCBuild/ на PCbuild/ в сценариях сборки и документации.
- [bpo-31536](https://python-all.ru/3/whatsnew/changelog.html): Предотвращение полной пересборки после `make regen-all`, если ничего не изменилось.

### IDLE

- [bpo-31460](https://python-all.ru/3/whatsnew/changelog.html): Упрощён API модульного браузера IDLE. Передача виджета вместо flist с корневым виджетом открывает возможность создания рамки браузера, которая является лишь частью окна. Передача полного имени файла вместо частей, которые предполагались из файла .py, открывает возможность просмотра файлов Python, не оканчивающихся на .py.
- [bpo-31649](https://python-all.ru/3/whatsnew/changelog.html): IDLE – сделаны параметры \_htest и \_utest только ключевыми.
- [bpo-31559](https://python-all.ru/3/whatsnew/changelog.html): Устранена зависимость от порядка тестов в idle\_test.test\_browser.
- [bpo-31459](https://python-all.ru/3/whatsnew/changelog.html): Переименован модульный браузер IDLE из Class Browser в Module Browser. Изначальный браузер классов и методов уровня модуля стал браузером модулей с добавлением функций уровня модуля несколько лет назад. Вложенные классы и функции были добавлены вчера. Для обратной совместимости виртуальное событие \<\<open-class-browser\>\>, которое отображается на вкладке Keys в диалоге Settings, не изменено. Патч от Cheryl Sabella.
- [bpo-31500](https://python-all.ru/3/whatsnew/changelog.html): Шрифты по умолчанию теперь масштабируются на HiDPI-дисплеях.
- [bpo-1612262](https://python-all.ru/3/whatsnew/changelog.html): Модульный браузер IDLE теперь показывает вложенные классы и функции. Оригинальные патчи для кода и тестов от Guilherme Polo и Cheryl Sabella соответственно.

### C API

- [bpo-28280](https://python-all.ru/3/whatsnew/changelog.html): Сделано, чтобы `PyMapping_Keys()`, `PyMapping_Values()` и `PyMapping_Items()` всегда возвращали `list` (вместо `list` или `tuple`). Патч от Oren Milman.
- [bpo-31532](https://python-all.ru/3/whatsnew/changelog.html): Исправлено повреждение памяти из-за смешивания аллокаторов в getpath.c между Py\_GetPath() и Py\_SetPath().
- [bpo-25658](https://python-all.ru/3/whatsnew/changelog.html): Реализован [**PEP 539**](https://python-all.ru/3/whatsnew/changelog.html) для API потоково-специфического хранилища (TSS): это новый API для потоково-локального хранилища (TLS) в CPython, который заменит использование существующего TLS API в интерпретаторе CPython, при этом объявляя существующий API устаревшим. PEP написан Эриком М. Бреем, патч от Масаюки Ямамото.

## Python 3.7.0 alpha 1

*Дата выпуска: 2017-09-19*

### Безопасность

- [bpo-29781](https://python-all.ru/3/whatsnew/changelog.html): SSLObject.version() теперь корректно возвращает None, когда рукопожатие через BIO ещё не выполнено.
- [bpo-29505](https://python-all.ru/3/whatsnew/changelog.html): Добавлены fuzz-тесты для float(str), int(str), unicode(str); для oss-fuzz.
- [bpo-30947](https://python-all.ru/3/whatsnew/changelog.html): Обновлена встроенная копия libexpat с версии 2.2.1 до 2.2.3 для получения исправлений безопасности.
- [bpo-30730](https://python-all.ru/3/whatsnew/changelog.html): Предотвращена инъекция переменных окружения в подпроцесс на Windows. Предотвращена передача других переменных окружения и аргументов командной строки.
- [bpo-30694](https://python-all.ru/3/whatsnew/changelog.html): Обновлена копия expat с версии 2.2.0 до 2.2.1 для получения исправлений нескольких уязвимостей безопасности, включая: [**CVE-2017-9233**](https://python-all.ru/3/whatsnew/changelog.html) (бесконечный цикл DoS через внешний объект), [**CVE-2016-9063**](https://python-all.ru/3/whatsnew/changelog.html) (целочисленное переполнение, повторное исправление), [**CVE-2016-0718**](https://python-all.ru/3/whatsnew/changelog.html) (исправление регрессионных ошибок из исправления 2.2.0 для [**CVE-2016-0718**](https://python-all.ru/3/whatsnew/changelog.html)) и [**CVE-2012-0876**](https://python-all.ru/3/whatsnew/changelog.html) (противодействие хэш-флудингу с помощью SipHash). Примечание: [**CVE-2016-5300**](https://python-all.ru/3/whatsnew/changelog.html) (использование специфичных для ОС источников энтропии, таких как getrandom) не влияет на Python, поскольку Python уже получает энтропию от ОС для установки секрета expat через `XML_SetHashSalt()`.
- [bpo-30500](https://python-all.ru/3/whatsnew/changelog.html): Исправлен urllib.parse.splithost() для корректного разбора фрагментов. Например, `splithost('//127.0.0.1#@evil.com/')` теперь корректно возвращает хост `127.0.0.1`, вместо того чтобы рассматривать `@evil.com` как хост в аутентификации (`login@host`).
- [bpo-29591](https://python-all.ru/3/whatsnew/changelog.html): Обновлена копия expat с версии 2.1.1 до 2.2.0 для получения исправлений [**CVE-2016-0718**](https://python-all.ru/3/whatsnew/changelog.html) и [**CVE-2016-4472**](https://python-all.ru/3/whatsnew/changelog.html). См. [https://sourceforge.net/p/expat/bugs/537/](https://python-all.ru/3/whatsnew/changelog.html) для получения дополнительной информации.

### Ядро и встроенные функции

- [bpo-31490](https://python-all.ru/3/whatsnew/changelog.html): Исправлено ошибочное утверждение в определении класса `ctypes`, когда класс имеет атрибут, имя которого указано в `_anonymous_`, но не в `_fields_`. Патч от Oren Milman.
- [bpo-31471](https://python-all.ru/3/whatsnew/changelog.html): Исправлено ошибочное утверждение в `subprocess.Popen()` на Windows, когда аргумент env имеет некорректный метод `keys()`. Патч от Oren Milman.
- [bpo-31418](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка утверждения в `PyErr_WriteUnraisable()` при возникновении исключения с некорректным атрибутом `__module__`. Патч от Oren Milman.
- [bpo-31416](https://python-all.ru/3/whatsnew/changelog.html): Исправлены ошибки утверждения при некорректных warnings.filters или warnings.defaultaction. Патч от Oren Milman.
- [bpo-28411](https://python-all.ru/3/whatsnew/changelog.html): Прямое использование PyInterpreterState.modules заменено на PyImport\_GetModuleDict(). Также внесена единообразность в другой код, работающий с sys.modules. Это помогает уменьшить сложности при работе с sys.modules.
- [bpo-28411](https://python-all.ru/3/whatsnew/changelog.html): Переход на абстрактный API при работе с `PyInterpreterState.modules`. Это позволяет в дальнейшем поддерживать все подклассы dict и другие реализации Mapping. Также добавлена функция `PyImport_GetModule()` для сокращения дублирующегося кода.
- [bpo-31411](https://python-all.ru/3/whatsnew/changelog.html): Возбуждение TypeError вместо SystemError, если warnings.onceregistry не является словарём. Патч от Oren Milman.
- [bpo-31344](https://python-all.ru/3/whatsnew/changelog.html): Для более точного управления трассировкой при тестировании интерпретатора добавлены два новых атрибута фрейма для контроля генерации определённых событий трассировки: `f_trace_lines` (`True` по умолчанию) для отключения построчных событий трассировки; и `f_trace_opcodes` (`False` по умолчанию) для включения событий трассировки по опкодам.
- [bpo-31373](https://python-all.ru/3/whatsnew/changelog.html): Исправлено несколько возможных случаев неопределённого поведения из-за понижения типов с плавающей запятой.
- [bpo-30465](https://python-all.ru/3/whatsnew/changelog.html): Информация о местоположении (`lineno` и `col_offset`) в f-строках теперь (в основном) корректна. Это исправляет такие инструменты, как flake8, которые показывали предупреждения на неправильной строке (обычно первой строке файла).
- [bpo-30860](https://python-all.ru/3/whatsnew/changelog.html): Консолидация глобального состояния среды выполнения CPython в одной структуре. Это улучшает обнаруживаемость состояния среды выполнения.
- [bpo-31347](https://python-all.ru/3/whatsnew/changelog.html): Исправлено возможное неопределённое поведение в \_PyObject\_FastCall\_Prepend.
- [bpo-31343](https://python-all.ru/3/whatsnew/changelog.html): Включение sys/sysmacros.h для major(), minor() и makedev(). Библиотека GNU C планирует удалить эти функции из sys/types.h.
- [bpo-31291](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка утверждения в `zipimport.zipimporter.get_data` в Windows, когда возвращаемое значение `pathname.replace('/','\\')` не является строкой. Патч от Oren Milman.
- [bpo-31271](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка утверждения в методе `write()` класса `io.TextIOWrapper`, когда кодировщик не возвращает объект bytes. Патч от Oren Milman.
- [bpo-31243](https://python-all.ru/3/whatsnew/changelog.html): Исправлен сбой в некоторых методах `io.TextIOWrapper`, когда состояние декодера некорректно. Патч от Oren Milman.
- [bpo-30721](https://python-all.ru/3/whatsnew/changelog.html): `print` теперь показывает правильную подсказку по использованию синтаксиса перенаправления Python 2. Патч от Sanyam Khurana.
- [bpo-31070](https://python-all.ru/3/whatsnew/changelog.html): Исправлено состояние гонки в importlib \_get\_module\_lock().
- [bpo-30747](https://python-all.ru/3/whatsnew/changelog.html): Добавлена нефиктивная реализация \_Py\_atomic\_store и \_Py\_atomic\_load для MSVC.
- [bpo-31095](https://python-all.ru/3/whatsnew/changelog.html): Исправлен потенциальный сбой во время сборки мусора, вызванный `tp_dealloc`, который не вызывает `PyObject_GC_UnTrack()`.
- [bpo-31071](https://python-all.ru/3/whatsnew/changelog.html): Предотвращение маскировки исходного TypeError при вызове с распаковкой \*, когда передаются другие аргументы.
- [bpo-30978](https://python-all.ru/3/whatsnew/changelog.html): str.format\_map() теперь пропускает исключения поиска ключей. Ранее любое исключение заменялось исключением KeyError.
- [bpo-30808](https://python-all.ru/3/whatsnew/changelog.html): Использование \_Py\_atomic API для состояния сигналов, чувствительного к параллелизму.
- [bpo-30876](https://python-all.ru/3/whatsnew/changelog.html): Относительный импорт из незагруженного пакета теперь переимпортирует пакет вместо ошибки SystemError. Относительный импорт из непакета теперь завершается ImportError, а не SystemError.
- [bpo-30703](https://python-all.ru/3/whatsnew/changelog.html): Улучшена доставка сигналов. Избегание использования Py\_AddPendingCall из обработчика сигналов, чтобы не вызывать функции, небезопасные для сигналов. Тесты, добавленные здесь, без остальной части патча падают на Linux и OS X. Это означает, что логика доставки сигналов имела дефекты (некоторые сигналы могли теряться).
- [bpo-30765](https://python-all.ru/3/whatsnew/changelog.html): Предотвращение блокировки в pthread\_mutex\_lock(), когда PyThread\_acquire\_lock() запрошено не блокировать.
- [bpo-31161](https://python-all.ru/3/whatsnew/changelog.html): Обеспечение применения сообщения об ошибке синтаксиса «Missing parentheses» только к SyntaxError, а не к подклассам. Патч от Martijn Pieters.
- [bpo-30814](https://python-all.ru/3/whatsnew/changelog.html): Исправлено состояние гонки при импорте подмодуля из пакета.
- [bpo-30736](https://python-all.ru/3/whatsnew/changelog.html): Внутренняя база данных unicodedata обновлена до Unicode 10.0.
- [bpo-30604](https://python-all.ru/3/whatsnew/changelog.html): Перемещение co\_extra\_freefuncs из расчёта на поток в расчёт на интерпретатор для избежания сбоев.
- [bpo-30597](https://python-all.ru/3/whatsnew/changelog.html): `print` теперь показывает ожидаемый ввод в пользовательском сообщении об ошибке при использовании в качестве оператора Python 2. Патч от Sanyam Khurana.
- [bpo-30682](https://python-all.ru/3/whatsnew/changelog.html): Удалено слишком строгое утверждение, которое выдавало ошибку для некоторых f-строк, например eval(“f’\\n’”) и eval(“f’\\r’”).
- [bpo-30501](https://python-all.ru/3/whatsnew/changelog.html): Компилятор теперь генерирует более оптимальный код для сложных условных выражений в операторах “if”, “while” и “assert”, в выражении “if”, а также в генераторных выражениях и включениях.
- [bpo-28180](https://python-all.ru/3/whatsnew/changelog.html): Реализован [**PEP 538**](https://python-all.ru/3/whatsnew/changelog.html) (принудительное преобразование устаревшей локали C). Это означает, что при наличии подходящей целевой локали для преобразования как ядро интерпретатора, так и учитывающие локаль расширения C будут использовать UTF-8 в качестве кодировки текста по умолчанию вместо ASCII.
- [bpo-30486](https://python-all.ru/3/whatsnew/changelog.html): Добавлена возможность устанавливать значения клеток для \_\_closure\_\_. Исправление от Lisa Roach.
- [bpo-30537](https://python-all.ru/3/whatsnew/changelog.html): itertools.islice теперь принимает объекты, подобные целым числам (имеющие метод \_\_index\_\_), в качестве аргументов start, stop и slice.
- [bpo-25324](https://python-all.ru/3/whatsnew/changelog.html): Токены, необходимые для синтаксического анализа в Python, перенесены в C. `COMMENT`, `NL` и `ENCODING`. Теперь токены и tok\_names в модуле token не изменяются при импорте модуля tokenize.
- [bpo-29104](https://python-all.ru/3/whatsnew/changelog.html): Исправлен разбор обратных слешей в f-строках.
- [bpo-27945](https://python-all.ru/3/whatsnew/changelog.html): Исправлены различные segfaults в dict при изменении входных коллекций во время поиска, вставки или сравнения. На основе исправлений от Duane Griffin и Tim Mitchell.
- [bpo-25794](https://python-all.ru/3/whatsnew/changelog.html): Исправлены type.\_\_setattr\_\_() и type.\_\_delattr\_\_() для неинтернированных имён атрибутов. На основе исправления от Eryk Sun.
- [bpo-30039](https://python-all.ru/3/whatsnew/changelog.html): Если KeyboardInterrupt возникает в тот момент, когда интерпретатор находится в процессе возобновления цепочки вложенных вызовов 'yield from' или 'await', теперь это исключение корректно доставляется во внутренний фрейм.
- [bpo-28974](https://python-all.ru/3/whatsnew/changelog.html): `object.__format__(x, '')` теперь эквивалентно `str(x)`, а не `format(str(self), '')`.
- [bpo-30024](https://python-all.ru/3/whatsnew/changelog.html): Теперь поддерживаются циклические импорты, включающие абсолютные импорты с привязкой подмодуля к имени.
- [bpo-12414](https://python-all.ru/3/whatsnew/changelog.html): sys.getsizeof() для объекта code теперь возвращает размеры, включающие структуру code и размеры объектов, на которые он ссылается. Исправление от Donghee Na.
- [bpo-29839](https://python-all.ru/3/whatsnew/changelog.html): len() теперь возбуждает ValueError вместо OverflowError, если \_\_len\_\_() вернула большое отрицательное целое число.
- [bpo-11913](https://python-all.ru/3/whatsnew/changelog.html): README.rst теперь включён в список стандартных README distutils и, следовательно, включается в дистрибутивы исходного кода.
- [bpo-29914](https://python-all.ru/3/whatsnew/changelog.html): Исправлены реализации по умолчанию \_\_reduce\_\_ и \_\_reduce\_ex\_\_(). object.\_\_reduce\_\_() больше не принимает аргументы, object.\_\_reduce\_ex\_\_() теперь требует один аргумент.
- [bpo-29949](https://python-all.ru/3/whatsnew/changelog.html): Исправление регрессии использования памяти объектами set и frozenset.
- [bpo-29935](https://python-all.ru/3/whatsnew/changelog.html): Исправлены сообщения об ошибках в методе index() у tuple, list и deque при передаче индексов неверного типа.
- [bpo-29816](https://python-all.ru/3/whatsnew/changelog.html): Операция сдвига теперь реже вызывает OverflowError. Для отрицательных значений счётчика всегда возбуждается ValueError вместо OverflowError. Сдвиг нуля на неотрицательное значение всегда возвращает ноль.
- [bpo-24821](https://python-all.ru/3/whatsnew/changelog.html): Исправлено замедление до 25 раз при поиске некоторых «неудачных» символов Unicode.
- [bpo-29102](https://python-all.ru/3/whatsnew/changelog.html): Добавлен уникальный идентификатор в PyInterpreterState. Это упрощает идентификацию каждого подынтерпретатора.
- [bpo-29894](https://python-all.ru/3/whatsnew/changelog.html): Предупреждение об устаревании выдаётся, если \_\_complex\_\_ возвращает экземпляр строгого подкласса complex. В будущих версиях Python это может стать ошибкой.
- [bpo-29859](https://python-all.ru/3/whatsnew/changelog.html): Показываются корректные сообщения об ошибках при сбое любого из вызовов pthread\_\* в thread\_pthread.h.
- [bpo-29849](https://python-all.ru/3/whatsnew/changelog.html): Исправлена утечка памяти при возбуждении ImportError во время конструкции from import.
- [bpo-28856](https://python-all.ru/3/whatsnew/changelog.html): Исправлено упущение: формат %b для bytes должен поддерживать объекты, следующие протоколу буфера.
- [bpo-29723](https://python-all.ru/3/whatsnew/changelog.html): Изменение инициализации `sys.path[0]` для [bpo-29139](https://python-all.ru/3/whatsnew/changelog.html) вызвало регрессию, выявив несоответствие в том, как инициализируется sys.path при выполнении `__main__` из zip-файла, каталога или другого места импорта. Теперь интерпретатор последовательно избегает добавления родительского каталога места импорта в `sys.path` и гарантирует, что никакие другие записи `sys.path` не будут случайно изменены при вставке места импорта, указанного в командной строке.
- [bpo-29568](https://python-all.ru/3/whatsnew/changelog.html): Экранированный процент “%%” в строке форматирования для классического форматирования строк больше не допускает никаких символов между двумя процентами.
- [bpo-29714](https://python-all.ru/3/whatsnew/changelog.html): Исправление регрессии: форматирование bytes может давать сбой при наличии нулевых байтов внутри.
- [bpo-29695](https://python-all.ru/3/whatsnew/changelog.html): bool(), float(), list() и tuple() больше не принимают именованные аргументы. Первый аргумент int() теперь может передаваться только как позиционный.
- [bpo-28893](https://python-all.ru/3/whatsnew/changelog.html): Устанавливается корректный \_\_cause\_\_ для ошибок о недопустимых ожидаемых объектах, возвращённых из \_\_aiter\_\_ и \_\_anext\_\_.
- [bpo-28876](https://python-all.ru/3/whatsnew/changelog.html): `bool(range)` работает даже если `len(range)` возбуждает [`OverflowError`](https://python-all.ru/3/library/exceptions.html#OverflowError).
- [bpo-29683](https://python-all.ru/3/whatsnew/changelog.html): Исправления выделения памяти в \_PyCode\_SetExtra. Исправление от Brian Coleman.
- [bpo-29684](https://python-all.ru/3/whatsnew/changelog.html): Исправление незначительной регрессии PyEval\_CallObjectWithKeywords. Функция должна возбуждать TypeError, если kwargs не является dict. Но могла вызывать ошибку сегментации при args=NULL, если kwargs не является dict.
- [bpo-28598](https://python-all.ru/3/whatsnew/changelog.html): Поддержка вызова \_\_rmod\_\_ для подклассов str перед str.\_\_mod\_\_. Исправление от Martijn Pieters.
- [bpo-29607](https://python-all.ru/3/whatsnew/changelog.html): Исправление вычисления stack\_effect для CALL\_FUNCTION\_EX. Исправление от Matthieu Dartiailh.
- [bpo-29602](https://python-all.ru/3/whatsnew/changelog.html): Исправлена некорректная обработка знаковых нулей в конструкторе комплексных чисел для подклассов complex и для входных данных, имеющих метод \_\_complex\_\_. Патч от Serhiy Storchaka.
- [bpo-29347](https://python-all.ru/3/whatsnew/changelog.html): Исправлена возможная разыменовка неопределенных указателей при создании объектов weakref.
- [bpo-29463](https://python-all.ru/3/whatsnew/changelog.html): Добавлено поле `docstring` в узлы AST Module, ClassDef, FunctionDef и AsyncFunctionDef. Теперь docstring не является первым оператором в их теле. Это влияет на `co_firstlineno` и `co_lnotab` объекта кода для модуля и класса. (Отменено в [bpo-32911](https://python-all.ru/3/whatsnew/changelog.html).)
- [bpo-29438](https://python-all.ru/3/whatsnew/changelog.html): Исправлена проблема использования после освобождения (use-after-free) в словаре с разделением ключей (key sharing dict).
- [bpo-29546](https://python-all.ru/3/whatsnew/changelog.html): Установлены атрибуты ‘path’ и ‘name’ для ImportError для `from ... import ...`.
- [bpo-29546](https://python-all.ru/3/whatsnew/changelog.html): Улучшено сообщение об ошибке для from-import с указанием местоположения.
- [bpo-29478](https://python-all.ru/3/whatsnew/changelog.html): Если при использовании политики Compat32 указано max\_line\_length=None, это значение больше не игнорируется. Патч от Mircea Cosbuc.
- [bpo-29319](https://python-all.ru/3/whatsnew/changelog.html): Предотвращение перезаписи sys.path\[0\] функцией RunMainFromImporter.
- [bpo-29337](https://python-all.ru/3/whatsnew/changelog.html): Исправлено возможное предупреждение BytesWarning при сравнении объектов кода. Предупреждения могли возникать на этапе компиляции.
- [bpo-29327](https://python-all.ru/3/whatsnew/changelog.html): Исправлено падение при передаче именованного аргумента iterable в sorted().
- [bpo-29034](https://python-all.ru/3/whatsnew/changelog.html): Исправлена утечка памяти и использование после освобождения (use-after-free) в модуле os (path\_converter).
- [bpo-29159](https://python-all.ru/3/whatsnew/changelog.html): Исправлена регрессия в bytes(x) при возникновении исключения в x.\_\_index\_\_().
- [bpo-29049](https://python-all.ru/3/whatsnew/changelog.html): Вызов \_PyObject\_GC\_TRACK() теперь происходит отложенно (лениво) при вызове функции Python. Вызов функции стал до 5% быстрее.
- [bpo-28927](https://python-all.ru/3/whatsnew/changelog.html): bytes.fromhex() и bytearray.fromhex() теперь игнорируют все пробельные символы ASCII, а не только пробелы. Патч от Robert Xiao.
- [bpo-28932](https://python-all.ru/3/whatsnew/changelog.html): Не включать \<sys/random.h\>, если его не существует.
- [bpo-25677](https://python-all.ru/3/whatsnew/changelog.html): Исправлено позиционирование маркера синтаксической ошибки (caret) для блоков с отступом. На основе патча от Michael Layzell.
- [bpo-29000](https://python-all.ru/3/whatsnew/changelog.html): Исправлено форматирование байтов для восьмеричных чисел с нулевым заполнением в альтернативной форме.
- [bpo-18896](https://python-all.ru/3/whatsnew/changelog.html): Функция Python теперь может иметь более 255 параметров. collections.namedtuple() теперь поддерживает кортежи с более чем 255 элементами.
- [bpo-28596](https://python-all.ru/3/whatsnew/changelog.html): На Android предпочтительной кодировкой является UTF-8. Патч написан Chi Hsuan Yen.
- [bpo-22257](https://python-all.ru/3/whatsnew/changelog.html): Очистка запуска интерпретатора (см. [**PEP 432**](https://python-all.ru/3/whatsnew/changelog.html)).
- [bpo-26919](https://python-all.ru/3/whatsnew/changelog.html): На Android данные операционной системы теперь всегда кодируются/декодируются в/из UTF-8, а не в кодировке локали, чтобы избежать несоответствий с os.fsencode() и os.fsdecode(), которые уже используют UTF-8.
- [bpo-28991](https://python-all.ru/3/whatsnew/changelog.html): functools.lru\_cache() была подвержена трудноуловимой ошибке повторного входа, вызываемой при подмене функции len().
- [bpo-28147](https://python-all.ru/3/whatsnew/changelog.html): Исправлена утечка памяти в split-table словарях: setattr() не должен преобразовывать combined table в split table. Патч написан INADA Naoki.
- [bpo-28739](https://python-all.ru/3/whatsnew/changelog.html): Выражения f-строк больше не принимаются в качестве строк документации и функцией ast.literal\_eval(), даже если они не содержат выражений.
- [bpo-28512](https://python-all.ru/3/whatsnew/changelog.html): Исправлена установка атрибута offset у SyntaxError функциями PyErr\_SyntaxLocationEx() и PyErr\_SyntaxLocationObject().
- [bpo-28918](https://python-all.ru/3/whatsnew/changelog.html): Исправлена кросс-компиляция xxlimited, когда Python был собран с определенным Py\_DEBUG.
- [bpo-23722](https://python-all.ru/3/whatsnew/changelog.html): Вместо того чтобы молча создавать класс, который не поддерживает `super()` без аргументов в методах, теперь при неудачной передаче новой записи пространства имен `__classcell__` в `type.__new__` возникает `DeprecationWarning` и создается класс, поддерживающий `super()` без аргументов.
- [bpo-28797](https://python-all.ru/3/whatsnew/changelog.html): Изменение \_\_dict\_\_ класса внутри метода \_\_set\_name\_\_ дескриптора, который используется внутри этого класса, больше не препятствует вызову метода \_\_set\_name\_\_ других дескрипторов.
- [bpo-28799](https://python-all.ru/3/whatsnew/changelog.html): Удалена функция `PyEval_GetCallStats()` и объявлена устаревшей непротестированная и недокументированная функция `sys.callstats()`. Удалена специальная сборка `CALL_PROFILE`: используйте функцию [`sys.setprofile()`](https://python-all.ru/3/library/sys.html#sys.setprofile), [`cProfile`](https://python-all.ru/3/library/profile.html#module-cProfile) или [`profile`](https://python-all.ru/3/library/profile.html#module-profile) для профилирования вызовов функций.
- [bpo-12844](https://python-all.ru/3/whatsnew/changelog.html): Теперь функции можно передавать более 255 аргументов.
- [bpo-28782](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка в реализации `yield from` при проверке, является ли следующая инструкция YIELD\_FROM. Регрессия введена WORDCODE ([bpo-26647](https://python-all.ru/3/whatsnew/changelog.html)).
- [bpo-28774](https://python-all.ru/3/whatsnew/changelog.html): Исправлена позиция ошибки Unicode в кодировщиках ASCII и Latin1, когда строка, возвращаемая обработчиком ошибок, содержит несколько не кодируемых символов (не-ASCII для кодека ASCII, символы вне диапазона U+0000-U+00FF для Latin1).
- [bpo-28731](https://python-all.ru/3/whatsnew/changelog.html): Оптимизирована \_PyDict\_NewPresized() для создания словаря подходящего размера. Скорость создания литерала словаря с константными ключами увеличена до 30%.
- [bpo-28532](https://python-all.ru/3/whatsnew/changelog.html): Показывать sys.version, если опция -V указана дважды.
- [bpo-27100](https://python-all.ru/3/whatsnew/changelog.html): Конструкция with теперь проверяет \_\_enter\_\_ до проверки \_\_exit\_\_. Это даёт менее запутанные сообщения об ошибках, когда оба метода отсутствуют. Патч от Jonathan Ellington.
- [bpo-28746](https://python-all.ru/3/whatsnew/changelog.html): Исправлен метод файлового дескриптора set\_inheritable() на платформах, не поддерживающих команды ioctl FIOCLEX и FIONCLEX.
- [bpo-26920](https://python-all.ru/3/whatsnew/changelog.html): Исправлено получение кодировки локали при инициализации интерпретатора на платформах, не имеющих langinfo.
- [bpo-28648](https://python-all.ru/3/whatsnew/changelog.html): Исправлен сбой в Py\_DecodeLocale() в отладочной сборке на Mac OS X при декодировании астральных символов. Патч от Xiang Zhang.
- [bpo-28665](https://python-all.ru/3/whatsnew/changelog.html): Скорость выполнения опкода STORE\_DEREF увеличена на 40%.
- [bpo-19398](https://python-all.ru/3/whatsnew/changelog.html): Лишняя косая черта больше не добавляется к компонентам sys.path, если соответствующие компоненты PYTHONPATH пусты во время компиляции.
- [bpo-28621](https://python-all.ru/3/whatsnew/changelog.html): Ускорено преобразование int в float за счёт повторного использования более быстрой реализации подсчёта битов. Патч от Adrian Wielgosik.
- [bpo-28580](https://python-all.ru/3/whatsnew/changelog.html): Оптимизирован обход значений разделённых таблиц. Патч от Xiang Zhang.
- [bpo-28583](https://python-all.ru/3/whatsnew/changelog.html): PyDict\_SetDefault не объединял разделённую таблицу, когда это было необходимо. Патч от Xiang Zhang.
- [bpo-28128](https://python-all.ru/3/whatsnew/changelog.html): Предупреждение об устаревании для недопустимых str- и byte-escape-последовательностей теперь выводит более точную информацию о месте ошибки. Патч от Serhiy Storchaka и Eric Smith.
- [bpo-28509](https://python-all.ru/3/whatsnew/changelog.html): dict.update() больше не выделяет излишне большую память.
- [bpo-28426](https://python-all.ru/3/whatsnew/changelog.html): Исправлен потенциальный сбой в PyUnicode\_AsDecodedObject() в отладочной сборке.
- [bpo-28517](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка «на единицу» в оптимизаторе peephole, из-за которой сохранялся недостижимый код.
- [bpo-28214](https://python-all.ru/3/whatsnew/changelog.html): Улучшено сообщение об исключении для проблемных атрибутов \_\_set\_name\_\_.
- [bpo-23782](https://python-all.ru/3/whatsnew/changelog.html): Исправлена возможная утечка памяти в \_PyTraceback\_Add() и потеря исключения в PyTraceBack\_Here().
- [bpo-28183](https://python-all.ru/3/whatsnew/changelog.html): Оптимизация и очистка итерации по словарю.
- [bpo-26081](https://python-all.ru/3/whatsnew/changelog.html): Добавлена реализация asyncio.Future на C. Оригинальный патч от Yury Selivanov.
- [bpo-28379](https://python-all.ru/3/whatsnew/changelog.html): Добавлены проверки корректности и тесты для PyUnicode\_CopyCharacters(). Патч от Xiang Zhang.
- [bpo-28376](https://python-all.ru/3/whatsnew/changelog.html): Тип длинного итератора диапазона теперь зарегистрирован как Iterator. Патч от Oren Milman.
- [bpo-28376](https://python-all.ru/3/whatsnew/changelog.html): Создание экземпляров range\_iterator вызовом типа range\_iterator теперь запрещено. Единственный способ – вызов iter() для экземпляра range. Патч от Oren Milman.
- [bpo-26906](https://python-all.ru/3/whatsnew/changelog.html): Разрешение специальных методов неинициализированного типа теперь вызывает неявную инициализацию типа вместо ошибки.
- [bpo-18287](https://python-all.ru/3/whatsnew/changelog.html): PyType\_Ready() теперь проверяет, что tp\_name не равен NULL. Оригинальный патч от Niklas Koep.
- [bpo-24098](https://python-all.ru/3/whatsnew/changelog.html): Исправлен возможный сбой при изменении AST в процессе компиляции.
- [bpo-28201](https://python-all.ru/3/whatsnew/changelog.html): Словарь уменьшает вероятность второго конфликта в хеш-таблице, когда хеши имеют одинаковые младшие биты.
- [bpo-28350](https://python-all.ru/3/whatsnew/changelog.html): Строковые константы с нулевым символом больше не интернируются.
- [bpo-26617](https://python-all.ru/3/whatsnew/changelog.html): Исправлен сбой при выполнении сборщика мусора во время колбэков слабых ссылок.
- [bpo-27942](https://python-all.ru/3/whatsnew/changelog.html): Строковые константы теперь интернируются рекурсивно в кортежах и неизменяемых множествах.
- [bpo-28289](https://python-all.ru/3/whatsnew/changelog.html): ImportError.\_\_init\_\_ теперь сбрасывает неуказанные атрибуты.
- [bpo-21578](https://python-all.ru/3/whatsnew/changelog.html): Исправлено вводящее в заблуждение сообщение об ошибке, когда ImportError вызывается с недопустимыми именованными аргументами.
- [bpo-28203](https://python-all.ru/3/whatsnew/changelog.html): Исправлен неверный тип в сообщении об ошибке complex(1.0, {2:3}). Патч от Soumya Sharma.
- [bpo-28086](https://python-all.ru/3/whatsnew/changelog.html): Один позиционный аргумент с типом подкласса кортежа передавался в функцию, определённую на C, без изменений. Теперь он преобразуется в точный кортеж.
- [bpo-28214](https://python-all.ru/3/whatsnew/changelog.html): Теперь \_\_set\_name\_\_ ищется в классе, а не в экземпляре.
- [bpo-27955](https://python-all.ru/3/whatsnew/changelog.html): Резервное чтение из устройства /dev/urandom, когда системный вызов getrandom() завершается с ошибкой EPERM, например при блокировке SECCOMP.
- [bpo-28192](https://python-all.ru/3/whatsnew/changelog.html): Не импортировать readline в изолированном режиме.
- [bpo-27441](https://python-all.ru/3/whatsnew/changelog.html): Удалены некоторые избыточные присваивания ob\_size в longobject.c. Спасибо Oren Milman.
- [bpo-27222](https://python-all.ru/3/whatsnew/changelog.html): Очистка избыточного кода в функции long\_rshift. Спасибо Oren Milman.
- Обновлены внутренние базы данных Unicode до версии 9.0.0.
- [bpo-28131](https://python-all.ru/3/whatsnew/changelog.html): Исправлен регресс в zipimport.compile\_source(). zipimport должен использовать тот же уровень оптимизации, что и интерпретатор.
- [bpo-28126](https://python-all.ru/3/whatsnew/changelog.html): Замена Py\_MEMCPY на memcpy(). Visual Studio может правильно оптимизировать memcpy().
- [bpo-28120](https://python-all.ru/3/whatsnew/changelog.html): Исправлен dict.pop() для разделённого словаря при попытке удалить «ожидающий ключ» (ещё не вставленный в split-table). Патч от Xiang Zhang.
- [bpo-26182](https://python-all.ru/3/whatsnew/changelog.html): Добавлено DeprecationWarning при использовании ключевых слов async и await в качестве имени переменной/атрибута/класса/функции.
- [bpo-26182](https://python-all.ru/3/whatsnew/changelog.html): Исправлена утечка ссылки в коде, вызывающем DeprecationWarning.
- [bpo-28721](https://python-all.ru/3/whatsnew/changelog.html): Исправлена обработка StopAsyncIteration в асинхронных генераторах aclose() и athrow().
- [bpo-26110](https://python-all.ru/3/whatsnew/changelog.html): Ускорение вызовов методов: добавлены коды операций LOAD\_METHOD и CALL\_METHOD.

### Библиотека

- [bpo-31499](https://python-all.ru/3/whatsnew/changelog.html): xml.etree: Исправлен сбой, когда анализатор является частью цикла ссылок.
- [bpo-31482](https://python-all.ru/3/whatsnew/changelog.html): `random.seed()` теперь работает с bytes в версии=1
- [bpo-28556](https://python-all.ru/3/whatsnew/changelog.html): typing.get\_type\_hints теперь по умолчанию находит правильное глобальное пространство имён для классов и модулей (когда вызывающий не указал `globalns`).
- [bpo-28556](https://python-all.ru/3/whatsnew/changelog.html): Ускорение работы модуля `typing`. Исходные PR от Ivan Levkivskyi и Mitar.
- [bpo-31544](https://python-all.ru/3/whatsnew/changelog.html): Ускоритель на C модуля ElementTree игнорировал исключения, возникающие при поиске методов целевого объекта TreeBuilder в XMLParser().
- [bpo-31234](https://python-all.ru/3/whatsnew/changelog.html): socket.create\_connection() теперь вручную разрывает цикл ссылок: при успехе очищает переменную, хранящую последнее исключение.
- [bpo-31457](https://python-all.ru/3/whatsnew/changelog.html): Объекты LoggerAdapter теперь можно вкладывать друг в друга.
- [bpo-31431](https://python-all.ru/3/whatsnew/changelog.html): SSLContext.check\_hostname теперь автоматически устанавливает SSLContext.verify\_mode в ssl.CERT\_REQUIRED вместо того, чтобы завершаться с ValueError.
- [bpo-31233](https://python-all.ru/3/whatsnew/changelog.html): socketserver.ThreadingMixIn теперь хранит список недемонических потоков, чтобы дождаться их завершения в server\_close().
- [bpo-28638](https://python-all.ru/3/whatsnew/changelog.html): Изменена стратегия реализации collections.namedtuple() для значительного сокращения использования exec() в пользу предварительно вычисленных методов. В результате параметр *verbose* и атрибут *\_source* больше не поддерживаются. Преимущества включают 1) меньшее потребление памяти для приложений, использующих множество именованных кортежей, 2) более быстрое создание класса именованного кортежа (примерно в 4–6 раз в зависимости от способа измерения) и 3) небольшое ускорение создания экземпляров с помощью \_\_new\_\_, \_make и \_replace. (Основной автор патча – Jelle Zijlstra, с дальнейшими улучшениями от INADA Naoki, Serhiy Storchaka и Raymond Hettinger.)
- [bpo-31400](https://python-all.ru/3/whatsnew/changelog.html): Улучшена обработка ошибок SSL, чтобы не терять номера ошибок.
- [bpo-27629](https://python-all.ru/3/whatsnew/changelog.html): Сделаны настраиваемыми возвращаемые типы SSLContext.wrap\_bio() и SSLContext.wrap\_socket().
- [bpo-28958](https://python-all.ru/3/whatsnew/changelog.html): ssl.SSLContext() теперь использует информацию об ошибках OpenSSL, когда контекст не может быть создан.
- [bpo-28182](https://python-all.ru/3/whatsnew/changelog.html): Модуль SSL теперь вызывает SSLCertVerificationError, когда OpenSSL не может проверить сертификат однорангового узла. Исключение содержит больше информации об ошибке.
- [bpo-27340](https://python-all.ru/3/whatsnew/changelog.html): SSLSocket.sendall() теперь использует memoryview для создания срезов данных. Это исправляет поддержку всех байтоподобных объектов. Кроме того, это более эффективно и позволяет избежать дорогостоящих копий.
- [bpo-14191](https://python-all.ru/3/whatsnew/changelog.html): Новая функция `argparse.ArgumentParser.parse_intermixed_args` предоставляет возможность разбирать командные строки, в которых пользователь смешивает опции и позиционные аргументы.
- [bpo-31178](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка конкатенации строк в редком пути обработки ошибок в модуле subprocess.
- [bpo-31350](https://python-all.ru/3/whatsnew/changelog.html): Микрооптимизация `asyncio._get_running_loop()` для ускорения до 10%.
- [bpo-31170](https://python-all.ru/3/whatsnew/changelog.html): expat: обновление libexpat с версии 2.2.3 до 2.2.4. Исправлено копирование частичных символов для входных данных UTF-8 (ошибка libexpat 115): [https://github.com/libexpat/libexpat/issues/115](https://python-all.ru/3/whatsnew/changelog.html)
- [bpo-29136](https://python-all.ru/3/whatsnew/changelog.html): Добавлены наборы шифров TLS 1.3 и OP\_NO\_TLSv1\_3.
- [bpo-1198569](https://python-all.ru/3/whatsnew/changelog.html): Подклассы `string.Template` могут опционально определять `braceidpattern`, если требуется задать разные шаблоны заполнителей внутри и снаружи фигурных скобок. Если указано None (по умолчанию), используется `idpattern`.
- [bpo-31326](https://python-all.ru/3/whatsnew/changelog.html): concurrent.futures.ProcessPoolExecutor.shutdown() теперь явно закрывает очередь вызовов. Кроме того, shutdown(wait=True) теперь также ожидает завершения потока очереди вызовов, чтобы избежать утечки потока.
- [bpo-27144](https://python-all.ru/3/whatsnew/changelog.html): Итераторы `map()` и `as_completed()` в `concurrent.futures` теперь не хранят ссылки на возвращаемые объекты.
- [bpo-31281](https://python-all.ru/3/whatsnew/changelog.html): Исправлена `fileinput.FileInput(files, inplace=True)` при наличии `pathlib.Path`-объектов в `files`.
- [bpo-10746](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка ctypes, из-за которой генерировались неверные коды типов [**PEP 3118**](https://python-all.ru/3/whatsnew/changelog.html) для целочисленных типов.
- [bpo-27584](https://python-all.ru/3/whatsnew/changelog.html): В интерфейс сокетов добавлен `AF_VSOCK`, позволяющий обмениваться данными между виртуальными машинами и их хостом.
- [bpo-22536](https://python-all.ru/3/whatsnew/changelog.html): Модуль подпроцесса теперь задаёт имя файла при возникновении FileNotFoundError в POSIX-системах из-за ненайденного исполняемого файла или рабочего каталога.
- [bpo-29741](https://python-all.ru/3/whatsnew/changelog.html): Обновлены некоторые методы модуля \_pyio, чтобы они также принимали целочисленные типы. Патч от Oren Milman.
- [bpo-31249](https://python-all.ru/3/whatsnew/changelog.html): concurrent.futures: WorkItem.run(), используемый ThreadPoolExecutor, теперь разрывает циклическую ссылку между объектом исключения и объектом WorkItem.
- [bpo-31247](https://python-all.ru/3/whatsnew/changelog.html): xmlrpc.server теперь явно разрывает циклические ссылки при использовании sys.exc\_info() в коде обработки исключений.
- [bpo-23835](https://python-all.ru/3/whatsnew/changelog.html): configparser: чтение значений по умолчанию в конструкторе `ConfigParser()` теперь использует `read_dict()`, что делает его поведение согласованным с остальным парсером. Нестроковые ключи и значения в словаре defaults теперь неявно преобразуются в строки. Патч от James Tocknell.
- [bpo-31238](https://python-all.ru/3/whatsnew/changelog.html): pydoc: метод stop() приватного класса ServerThread теперь ожидает завершения DocServer.serve\_until\_quit(), а затем явно устанавливает атрибут docserver в None для разрыва циклической ссылки.
- [bpo-5001](https://python-all.ru/3/whatsnew/changelog.html): Многие утверждения assert в `multiprocessing` теперь стали более информативными, а некоторые типы ошибок заменены на более специфичные.
- [bpo-31109](https://python-all.ru/3/whatsnew/changelog.html): Модуль zipimport переведён на использование Argument Clinic.
- [bpo-30102](https://python-all.ru/3/whatsnew/changelog.html): Модули ssl и hashlib теперь вызывают OPENSSL\_add\_all\_algorithms\_noconf() в OpenSSL \< 1.1.0. Эта функция определяет возможности процессора и включает оптимизации на некоторых архитектурах, таких как POWER8. Патч основан на исследовании Gustavo Serra Scalet.
- [bpo-18966](https://python-all.ru/3/whatsnew/changelog.html): Не-демонические потоки, созданные multiprocessing.Process, теперь ожидаются при завершении дочернего процесса.
- [bpo-31183](https://python-all.ru/3/whatsnew/changelog.html): `dis` теперь работает с асинхронными генераторами и объектами корутин. Патч от George Collins на основе диагностики Luciano Ramalho.
- [bpo-5001](https://python-all.ru/3/whatsnew/changelog.html): There are a number of uninformative asserts in the `multiprocessing` module, as noted in issue 5001. This change fixes two of the most potentially problematic ones, since they are in error-reporting code, in the `multiprocessing.managers.convert_to_error` function. (It also makes more informative a ValueError message.) The only potentially problematic change is that the AssertionError is now a TypeError; however, this should also help distinguish it from an AssertionError being *reported* by the function/its caller (such as in issue 31169). - Patch by Allen W. Smith (drallensmith on github).
- [bpo-31185](https://python-all.ru/3/whatsnew/changelog.html): Исправлены различные ошибки в модуле ускорения asyncio.
- [bpo-31151](https://python-all.ru/3/whatsnew/changelog.html): socketserver.ForkingMixIn.server\_close() теперь ожидает завершения всех дочерних процессов, чтобы избежать утечки процессов-зомби.
- [bpo-31072](https://python-all.ru/3/whatsnew/changelog.html): Добавлен параметр `include_file` в `zipapp.create_archive()`
- [bpo-24700](https://python-all.ru/3/whatsnew/changelog.html): Оптимизация сравнения array.array. Теперь оно выполняется от 10 до 70 раз быстрее при сравнении массивов, содержащих значения одного целочисленного типа.
- [bpo-31135](https://python-all.ru/3/whatsnew/changelog.html): ttk: исправлен метод destroy() классов LabeledScale и OptionMenu. Теперь вызывается родительский метод destroy() даже при отсутствии используемого атрибута. Метод LabeledScale.destroy() также теперь явно очищает атрибуты label и scale, чтобы помочь сборщику мусора уничтожить все виджеты.
- [bpo-31107](https://python-all.ru/3/whatsnew/changelog.html): Исправлено вычисление искажённого атрибута `copyreg._slotnames()` для классов, имя которых начинается с подчёркивания. Патч от Shane Harvey.
- [bpo-31080](https://python-all.ru/3/whatsnew/changelog.html): Разрешено передавать kwargs и/или args в `logging.config.fileConfig`.
- [bpo-30897](https://python-all.ru/3/whatsnew/changelog.html): Объекты `pathlib.Path` теперь содержат метод `is_mount()` (реализован только на POSIX). Он аналогичен `os.path.ismount(p)`. Патч от Cooper Ry Lees.
- [bpo-31061](https://python-all.ru/3/whatsnew/changelog.html): Исправлен сбой при использовании asyncio и потоков.
- [bpo-30987](https://python-all.ru/3/whatsnew/changelog.html): Добавлена поддержка протокола CAN ISO-TP в модуль socket.
- [bpo-30522](https://python-all.ru/3/whatsnew/changelog.html): Добавлен метод `setStream` в `logging.StreamHandler`, позволяющий задать поток данных после создания.
- [bpo-30502](https://python-all.ru/3/whatsnew/changelog.html): Исправлена обработка длинных OID в ssl. На основе патча от Christian Heimes.
- [bpo-5288](https://python-all.ru/3/whatsnew/changelog.html): Поддержка объектов tzinfo со смещениями меньше минуты.
- [bpo-30919](https://python-all.ru/3/whatsnew/changelog.html): Исправлено снижение производительности разделяемой памяти в multiprocessing в 3.x. В 2.x разделяемая память использовала анонимные отображения памяти, а в 3.x – отображения реальных файлов. Постарались минимизировать дисковый ввод-вывод.
- [bpo-26732](https://python-all.ru/3/whatsnew/changelog.html): Исправлена проблема с избыточным количеством файловых дескрипторов в процессах, запущенных методом «forkserver». Дочерний процесс наследовал столько же дескрипторов, сколько было работающих дочерних процессов.
- [bpo-29403](https://python-all.ru/3/whatsnew/changelog.html): Исправлено поведение `unittest.mock`’s autospec, чтобы он не падал на встроенных функциях, привязанных к методам. Патч от Aaron Gallagher.
- [bpo-30961](https://python-all.ru/3/whatsnew/changelog.html): Исправлено уменьшение счётчика заимствованной ссылки в tracemalloc.
- [bpo-19896](https://python-all.ru/3/whatsnew/changelog.html): Исправлено распознавание кодов типов `'q'` и `'Q'` в multiprocessing.sharedctypes.
- [bpo-30946](https://python-all.ru/3/whatsnew/changelog.html): Удалён устаревший код в модуле readline для платформ, где GNU readline старше 2.1 или недоступна функция select().
- [bpo-25684](https://python-all.ru/3/whatsnew/changelog.html): Изменены радиокнопки `ttk.OptionMenu`, чтобы они были уникальными для разных экземпляров `OptionMenu`.
- [bpo-30886](https://python-all.ru/3/whatsnew/changelog.html): Исправлен multiprocessing.Queue.join\_thread(): теперь он ожидает завершения потока, даже если поток был запущен тем же процессом, который создал очередь.
- [bpo-29854](https://python-all.ru/3/whatsnew/changelog.html): Исправлен segfault в readline при использовании опции history-size. Патч от Nir Soffer.
- [bpo-30794](https://python-all.ru/3/whatsnew/changelog.html): Добавлен метод multiprocessing.Process.kill для завершения процесса сигналом SIGKILL в Unix.
- [bpo-30319](https://python-all.ru/3/whatsnew/changelog.html): socket.close() теперь игнорирует ошибку ECONNRESET.
- [bpo-30828](https://python-all.ru/3/whatsnew/changelog.html): Исправлена запись за границы буфера в `asyncio.CFuture.remove_done_callback()`.
- [bpo-30302](https://python-all.ru/3/whatsnew/changelog.html): Использование ключевых слов в `repr` из `datetime.timedelta`.
- [bpo-30807](https://python-all.ru/3/whatsnew/changelog.html): signal.setitimer() мог отключать таймер при передаче очень маленького значения. Маленькие значения (например, 1e-6) являются допустимыми ненулевыми значениями для setitimer(), который принимает интервалы с разрешением в микросекундах. Однако на некоторых платформах процедура преобразования могла превратить 1e-6 в нулевой интервал, тем самым отключая таймер вместо его (пере)планирования.
- [bpo-30441](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка при изменении os.environ во время итерации по нему.
- [bpo-29585](https://python-all.ru/3/whatsnew/changelog.html): Избегание импорта `sysconfig` из `site` для ускорения запуска. Запуск Python стал быстрее примерно на 5% в Linux и на 30% в macOS.
- [bpo-29293](https://python-all.ru/3/whatsnew/changelog.html): Добавлен отсутствующий параметр «n» в multiprocessing.Condition.notify(). Документация утверждает, что multiprocessing.Condition ведёт себя как threading.Condition, но в его методе notify() не было опционального аргумента «n» (для указания количества пробуждаемых ожидающих), который принимает threading.Condition.notify().
- [bpo-30532](https://python-all.ru/3/whatsnew/changelog.html): Исправлен парсер значений заголовков email, который в некоторых случаях отбрасывал переносы с пробелами (folding white space).
- [bpo-30596](https://python-all.ru/3/whatsnew/changelog.html): Добавлен метод `close()` в `multiprocessing.Process`.
- [bpo-9146](https://python-all.ru/3/whatsnew/changelog.html): Исправлен segmentation fault в \_hashopenssl, когда стандартные хэш-функции, такие как md5, недоступны в связанной библиотеке OpenSSL. Например, в некоторых специальных средах сборки FIPS-140.
- [bpo-29169](https://python-all.ru/3/whatsnew/changelog.html): Обновление zlib до версии 1.2.11.
- [bpo-30119](https://python-all.ru/3/whatsnew/changelog.html): ftplib.FTP.putline() теперь выбрасывает ValueError для команд, содержащих CR или LF. Патч от Donghee Na.
- [bpo-30879](https://python-all.ru/3/whatsnew/changelog.html): os.listdir() и os.scandir() теперь возвращают имена в виде bytes, если вызваны с аргументом, подобным bytes.
- [bpo-30746](https://python-all.ru/3/whatsnew/changelog.html): Запрещён символ ‘=’ в именах переменных окружения в `os.putenv()` и `os.spawn*()`.
- [bpo-30664](https://python-all.ru/3/whatsnew/changelog.html): Описание подтеста unittest теперь сохраняет порядок именованных аргументов TestCase.subTest().
- [bpo-21071](https://python-all.ru/3/whatsnew/changelog.html): Тип struct.Struct.format теперь [`str`](https://python-all.ru/3/library/stdtypes.html#str) вместо [`bytes`](https://python-all.ru/3/library/stdtypes.html#bytes).
- [bpo-29212](https://python-all.ru/3/whatsnew/changelog.html): Исправлено, чтобы потоки concurrent.futures.thread.ThreadPoolExecutor по умолчанию имели имя, не основанное на repr(), если не задан thread\_name\_prefix. Теперь они идентифицируются как «ThreadPoolExecutor-y\_n».
- [bpo-29755](https://python-all.ru/3/whatsnew/changelog.html): Исправлено семейство функций lgettext() в модуле gettext. Теперь они всегда возвращают bytes.
- [bpo-30616](https://python-all.ru/3/whatsnew/changelog.html): Функциональный API enum позволяет создавать пустые перечисления. Исправлено Donghee Na.
- [bpo-30038](https://python-all.ru/3/whatsnew/changelog.html): Исправлена гонка между доставкой сигнала и файловым дескриптором пробуждения (wakeup file descriptor). Патч от Nathaniel Smith.
- [bpo-23894](https://python-all.ru/3/whatsnew/changelog.html): lib2to3 теперь распознает строки `rb'...'` и `f'...'`.
- [bpo-24744](https://python-all.ru/3/whatsnew/changelog.html): функция pkgutil.walk\_packages теперь вызывает ValueError, если *path* является строкой. Патч от Sanyam Khurana.
- [bpo-24484](https://python-all.ru/3/whatsnew/changelog.html): Устранено состояние гонки при очистке multiprocessing.
- [bpo-30589](https://python-all.ru/3/whatsnew/changelog.html): Исправлено multiprocessing.Process.exitcode – теперь при завершении процесса сигналом возвращается противоположное значение номера сигнала (вместо 255) при использовании метода “forkserver”.
- [bpo-28994](https://python-all.ru/3/whatsnew/changelog.html): Трассировка больше не отображается для SystemExit, возникшего в колбэке, зарегистрированном через atexit.
- [bpo-30508](https://python-all.ru/3/whatsnew/changelog.html): Исключения не регистрируются, если был вызван метод “cancel()” у задачи или Future.
- [bpo-30645](https://python-all.ru/3/whatsnew/changelog.html): Исправлено вычисление пути в `imp.load_package()` – устранена проблема для случаев, когда пакет поставляется только с байткодами. Патч от Alexandru Ardelean.
- [bpo-11822](https://python-all.ru/3/whatsnew/changelog.html): Функция dis.dis() теперь может дизассемблировать вложенные объекты кода.
- [bpo-30624](https://python-all.ru/3/whatsnew/changelog.html): Модуль selectors не учитывает KeyboardInterrupt и SystemExit, что оставляет файловый дескриптор в плохом состоянии в случае ошибки. Патч от Giampaolo Rodola’.
- [bpo-30595](https://python-all.ru/3/whatsnew/changelog.html): multiprocessing.Queue.get() с таймаутом теперь опрашивает свой читатель в неблокирующем режиме, если удалось захватить блокировку, но захват занял больше времени, чем таймаут.
- [bpo-28556](https://python-all.ru/3/whatsnew/changelog.html): Обновления модуля typing: добавлен обобщённый AsyncContextManager, добавлена поддержка ContextManager для всех версий. Оригинальные PR от Jelle Zijlstra и Ivan Levkivskyi.
- [bpo-30605](https://python-all.ru/3/whatsnew/changelog.html): re.compile() больше не вызывает BytesWarning при компиляции экземпляра bytes с неправильно расположенным встроенным модификатором. Патч от Roy Williams.
- [bpo-29870](https://python-all.ru/3/whatsnew/changelog.html): Исправлена утечка ssl-сокетов при прерывании соединения в реализации asyncio/ssl. Патч от Michaël Sghaïer.
- [bpo-29743](https://python-all.ru/3/whatsnew/changelog.html): Закрытие транспорта во время рукопожатия приводит к утечке открытого сокета. Патч от Nikolay Kim.
- [bpo-27585](https://python-all.ru/3/whatsnew/changelog.html): Исправлена отмена ожидания в asyncio.Lock. Патч от Mathieu Sornay.
- [bpo-30014](https://python-all.ru/3/whatsnew/changelog.html): Метод modify() классов на основе poll(), epoll() и devpoll() модуля selectors стал примерно на 10% быстрее. Патч от Giampaolo Rodola’.
- [bpo-30418](https://python-all.ru/3/whatsnew/changelog.html): В Windows subprocess.Popen.communicate() теперь также игнорирует EINVAL при stdin.write(), если дочерний процесс всё ещё работает, но закрыл канал.
- [bpo-30463](https://python-all.ru/3/whatsnew/changelog.html): Добавлен пустой \_\_slots\_\_ в abc.ABC. Это позволяет подклассам запретить создание \_\_dict\_\_ и \_\_weakref\_\_. Патч от Aaron Hall.
- [bpo-30520](https://python-all.ru/3/whatsnew/changelog.html): Объекты логгеров теперь сериализуемы.
- [bpo-30557](https://python-all.ru/3/whatsnew/changelog.html): faulthandler теперь корректно фильтрует и отображает коды исключений в Windows.
- [bpo-30526](https://python-all.ru/3/whatsnew/changelog.html): Добавлены метод TextIOWrapper.reconfigure() и атрибут TextIOWrapper.write\_through.
- [bpo-30245](https://python-all.ru/3/whatsnew/changelog.html): Исправлено возможное переполнение при формировании сообщения об ошибке struct.pack\_into. Патч от Yuan Liu.
- [bpo-30378](https://python-all.ru/3/whatsnew/changelog.html): Исправлена проблема, из-за которой logging.handlers.SysLogHandler не мог обрабатывать IPv6-адреса.
- [bpo-16500](https://python-all.ru/3/whatsnew/changelog.html): Разрешена регистрация обработчиков at-fork.
- [bpo-30470](https://python-all.ru/3/whatsnew/changelog.html): Устарела некорректная защита вызовов ctypes в Windows. Патч от Mariatta Wijaya.
- [bpo-30414](https://python-all.ru/3/whatsnew/changelog.html): Фоновый поток multiprocessing.Queue.\_feed больше не прерывает основной цикл при возникновении исключения.
- [bpo-30003](https://python-all.ru/3/whatsnew/changelog.html): Исправлена обработка escape-символов в кодировке HZ. На основе патча от Ma Lin.
- [bpo-30149](https://python-all.ru/3/whatsnew/changelog.html): inspect.signature() теперь поддерживает вызываемые объекты с параметрами переменного числа аргументов, обёрнутыми с помощью partialmethod. Патч от Donghee Na.
- [bpo-30436](https://python-all.ru/3/whatsnew/changelog.html): importlib.find\_spec() теперь вызывает ModuleNotFoundError вместо AttributeError, если указанный родительский модуль не является пакетом (то есть не имеет атрибута \_\_path\_\_).
- [bpo-30301](https://python-all.ru/3/whatsnew/changelog.html): Исправлен AttributeError при использовании SimpleQueue.empty() с методами запуска *spawn* и *forkserver*.
- [bpo-30375](https://python-all.ru/3/whatsnew/changelog.html): Предупреждения, выдаваемые при компиляции регулярного выражения, теперь всегда указывают на строку в пользовательском коде. Ранее они могли указывать на внутренности модуля re, если выдавались изнутри групп или условных конструкций.
- [bpo-30329](https://python-all.ru/3/whatsnew/changelog.html): imaplib и poplib теперь перехватывают ошибку Windows socket WSAEINVAL (код 10022) при shutdown(SHUT\_RDWR): была предпринята недопустимая операция. Эта ошибка иногда возникает при SSL-соединениях.
- [bpo-29196](https://python-all.ru/3/whatsnew/changelog.html): Удалены ранее устаревшие в Python 2.4 классы Plist, Dict и \_InternalDict из модуля plistlib. Значения типа Dict в результатах функций readPlist() и readPlistFromBytes() теперь являются обычными словарями. Больше нельзя использовать доступ через атрибуты для получения элементов этих словарей.
- [bpo-9850](https://python-all.ru/3/whatsnew/changelog.html): `macpath` теперь считается устаревшим и будет удален в Python 3.8.
- [bpo-30299](https://python-all.ru/3/whatsnew/changelog.html): Компиляция регулярного выражения в режиме отладки в CPython теперь показывает скомпилированный байт-код в читаемом виде.
- [bpo-30048](https://python-all.ru/3/whatsnew/changelog.html): Исправлено, что `Task.cancel()` может игнорироваться, когда задача выполняет корутину, а корутина возвращается без дополнительных `await`.
- [bpo-30266](https://python-all.ru/3/whatsnew/changelog.html): contextlib.AbstractContextManager теперь поддерживает анти-регистрацию путем установки \_\_enter\_\_ = None или \_\_exit\_\_ = None, следуя шаблону, введенному в [bpo-25958](https://python-all.ru/3/whatsnew/changelog.html). Патч от Jelle Zijlstra.
- [bpo-30340](https://python-all.ru/3/whatsnew/changelog.html): Улучшена оптимизация регулярных выражений. Это повысило производительность сопоставления некоторых шаблонов до 25 раз.
- [bpo-30298](https://python-all.ru/3/whatsnew/changelog.html): Ослаблено условие предупреждений об устаревании для встроенных модификаторов. Теперь разрешено несколько последовательных встроенных модификаторов в начале шаблона (например, `'(?i)(?s)...'`). В подробном режиме теперь допускаются пробелы и комментарии до и между встроенными модификаторами (например, `'(?x) (?i) (?s)...'`).
- [bpo-30285](https://python-all.ru/3/whatsnew/changelog.html): Оптимизировано сопоставление и поиск регулярных выражений без учета регистра.
- [bpo-29990](https://python-all.ru/3/whatsnew/changelog.html): Исправлена проверка диапазона в декодере GB18030. Оригинальный патч от Ma Lin.
- [bpo-29979](https://python-all.ru/3/whatsnew/changelog.html): Переписан cgi.parse\_multipart с повторным использованием класса FieldStorage и приведением его результатов в соответствие с результатами FieldStorage для запросов multipart/form-data. Патч от Pierre Quentel.
- [bpo-30243](https://python-all.ru/3/whatsnew/changelog.html): Удалены методы \_\_init\_\_ у сканера и кодировщика \_json. Их неправильное использование могло привести к утечкам памяти или сбоям. Теперь объекты сканера и кодировщика полностью инициализируются в методах \_\_new\_\_.
- [bpo-30215](https://python-all.ru/3/whatsnew/changelog.html): Скомпилированные объекты регулярных выражений с флагом re.LOCALE больше не зависят от локали во время компиляции. Только локаль во время сопоставления влияет на результат.
- [bpo-30185](https://python-all.ru/3/whatsnew/changelog.html): Устранены трассировки KeyboardInterrupt во вспомогательном процессе forkserver при получении Ctrl-C.
- [bpo-30103](https://python-all.ru/3/whatsnew/changelog.html): binascii.b2a\_uu() и uu.encode() теперь поддерживают использование `` '`' `` в качестве нуля вместо пробела.
- [bpo-28556](https://python-all.ru/3/whatsnew/changelog.html): Различные обновления модуля typing: добавлен тип typing.NoReturn, использование WrapperDescriptorType, мелкие исправления ошибок. Оригинальные PR от Jim Fasarakis-Hilliard и Ivan Levkivskyi.
- [bpo-30205](https://python-all.ru/3/whatsnew/changelog.html): Исправлена getsockname() для непривязанных сокетов AF\_UNIX в Linux.
- [bpo-30228](https://python-all.ru/3/whatsnew/changelog.html): Методы seek() и tell() у io.FileIO теперь устанавливают внутренний атрибут seekable, чтобы избежать одного системного вызова при open() (в буферизованном или текстовом режиме).
- [bpo-30190](https://python-all.ru/3/whatsnew/changelog.html): assertAlmostEqual и assertNotAlmostEqual из unittest теперь предоставляют более информативное сообщение в случае неудачи, включающее разницу между левым и правым аргументами. (патч от Giampaolo Rodola')
- [bpo-30101](https://python-all.ru/3/whatsnew/changelog.html): Добавлена поддержка curses.A\_ITALIC.
- [bpo-29822](https://python-all.ru/3/whatsnew/changelog.html): inspect.isabstract() теперь работает во время \_\_init\_subclass\_\_. Патч от Nate Soares.
- [bpo-29960](https://python-all.ru/3/whatsnew/changelog.html): Сохраняется состояние генератора при возникновении исключения в \_random.Random.setstate(). Патч от Bryan Olson.
- [bpo-30070](https://python-all.ru/3/whatsnew/changelog.html): Исправлены утечки и сбои при обработке ошибок в модуле parser.
- [bpo-22352](https://python-all.ru/3/whatsnew/changelog.html): Ширина столбцов в выводе dis.dis() теперь корректируется для больших номеров строк и смещений инструкций.
- [bpo-30061](https://python-all.ru/3/whatsnew/changelog.html): Исправлены сбои в методах IOBase \_\_next\_\_() и readlines(), когда readline() или \_\_next\_\_() возвращают объект, не имеющий размера. Исправлены возможные другие ошибки, вызванные непроверкой результатов PyObject\_Size(), PySequence\_Size() или PyMapping\_Size().
- [bpo-30218](https://python-all.ru/3/whatsnew/changelog.html): Исправлена поддержка PathLike для shutil.unpack\_archive. Патч от Jelle Zijlstra.
- [bpo-10076](https://python-all.ru/3/whatsnew/changelog.html): Скомпилированные регулярные выражения и объекты совпадений в модуле re теперь поддерживают copy.copy() и copy.deepcopy() (они считаются атомарными).
- [bpo-30068](https://python-all.ru/3/whatsnew/changelog.html): \_io.\_IOBase.readlines теперь при наличии аргумента hint сначала проверяет, не закрыт ли файл.
- [bpo-29694](https://python-all.ru/3/whatsnew/changelog.html): Исправлено состояние гонки в pathlib mkdir с флагом parents=True. Патч от Armin Rigo.
- [bpo-29692](https://python-all.ru/3/whatsnew/changelog.html): Исправлено произвольное разрывание цепочек исключений RuntimeError в contextlib.contextmanager. Патч от Siddharth Velankar.
- [bpo-26187](https://python-all.ru/3/whatsnew/changelog.html): Тест, что колбэк трассировки sqlite3 не вызывается многократно при изменении схемы. Косвенно исправлено переходом на использование sqlite3\_prepare\_v2() в [bpo-9303](https://python-all.ru/3/whatsnew/changelog.html). Патч от Aviv Palivoda.
- [bpo-30017](https://python-all.ru/3/whatsnew/changelog.html): Разрешено многократное вызов метода close() у объекта записи элемента zip. Запись в закрытый writer теперь всегда вызывает ValueError.
- [bpo-29998](https://python-all.ru/3/whatsnew/changelog.html): Pickling и копирование ImportError теперь сохраняет атрибуты name и path.
- [bpo-29995](https://python-all.ru/3/whatsnew/changelog.html): re.escape() теперь экранирует только специальные символы регулярных выражений.
- [bpo-29962](https://python-all.ru/3/whatsnew/changelog.html): Добавлена операция math.remainder, реализующая остаток согласно IEEE 754.
- [bpo-29649](https://python-all.ru/3/whatsnew/changelog.html): Улучшены сообщения об исключениях struct.pack\_into() при проблемах с размером буфера и смещением. Патч от Andrew Nester.
- [bpo-29654](https://python-all.ru/3/whatsnew/changelog.html): Добавлена поддержка HTTP-заголовка If-Modified-Since (кеш браузера). Патч от Pierre Quentel.
- [bpo-29931](https://python-all.ru/3/whatsnew/changelog.html): Исправлена проверка сравнения для объектов ipaddress.ip\_interface. Патч от Sanjay Sundaresan.
- [bpo-29953](https://python-all.ru/3/whatsnew/changelog.html): Исправлены утечки памяти в методе replace() объектов datetime и time при передаче аргумента fold вне допустимого диапазона.
- [bpo-29942](https://python-all.ru/3/whatsnew/changelog.html): Исправлен сбой в itertools.chain.from\_iterable при встрече длинных последовательностей пустых итераций.
- [bpo-10030](https://python-all.ru/3/whatsnew/changelog.html): Ускорено чтение зашифрованных ZIP-файлов в 2 раза.
- [bpo-29204](https://python-all.ru/3/whatsnew/changelog.html): Element.getiterator() и параметр html в XMLParser() были объявлены устаревшими только в документации (начиная с Python 3.2 и 3.4 соответственно). Теперь их использование вызывает предупреждение об устаревании.
- [bpo-27863](https://python-all.ru/3/whatsnew/changelog.html): Исправлены многочисленные сбои в ElementTree, вызванные состояниями гонки и неверными типами.
- [bpo-25996](https://python-all.ru/3/whatsnew/changelog.html): Добавлена поддержка файловых дескрипторов в os.scandir() на Unix. os.fwalk() ускорен в 2 раза за счёт использования os.scandir().
- [bpo-28699](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка в пулах multiprocessing.pool, когда возбуждение исключения в самом начале итерируемого объекта могло проглотить исключение или привести к зависанию программы. Патч от Davin Potts и Xiang Zhang.
- [bpo-23890](https://python-all.ru/3/whatsnew/changelog.html): unittest.TestCase.assertRaises() теперь вручную разрывает циклические ссылки, чтобы не держать объекты в памяти дольше необходимого.
- [bpo-29901](https://python-all.ru/3/whatsnew/changelog.html): Модуль zipapp теперь поддерживает любые объекты, подобные пути, а не только pathlib.Path.
- [bpo-25803](https://python-all.ru/3/whatsnew/changelog.html): Исправлены некорректные ошибки, вызываемые Path.mkdir(exist\_ok=True), когда ОС отдаёт приоритет ошибкам типа EACCES над EEXIST.
- [bpo-29861](https://python-all.ru/3/whatsnew/changelog.html): Освобождение ссылок на задачи, их аргументы и результаты сразу после их завершения в multiprocessing.Pool.
- [bpo-19930](https://python-all.ru/3/whatsnew/changelog.html): Аргумент mode в os.makedirs() больше не влияет на права доступа вновь создаваемых промежуточных каталогов.
- [bpo-29884](https://python-all.ru/3/whatsnew/changelog.html): faulthandler: восстановление старого sigaltstack при завершении. Патч от Christophe Zeitouny.
- [bpo-25455](https://python-all.ru/3/whatsnew/changelog.html): Исправлены сбои в repr рекурсивных буферизованных файлоподобных объектов.
- [bpo-29800](https://python-all.ru/3/whatsnew/changelog.html): Исправлены сбои в partial.\_\_repr\_\_, если ключи partial.keywords не являются строками. Патч от Michael Seifert.
- [bpo-8256](https://python-all.ru/3/whatsnew/changelog.html): Исправлена возможность отказа или сбоя input(), если атрибуты «encoding» или «errors» sys.stdin или sys.stdout не установлены или не являются строками.
- [bpo-28692](https://python-all.ru/3/whatsnew/changelog.html): Использование нецелого значения для выбора формы множественного числа в gettext теперь устарело.
- [bpo-26121](https://python-all.ru/3/whatsnew/changelog.html): Использование реализации из библиотеки C для математических функций erf() и erfc().
- [bpo-29619](https://python-all.ru/3/whatsnew/changelog.html): os.stat() и os.DirEntry.inode() теперь преобразуют индексный дескриптор (st\_ino) с использованием беззнаковых целых чисел.
- [bpo-28298](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка, препятствовавшая тому, чтобы массивы 'Q', 'L' и 'I' принимали большие intables (объекты с \_\_int\_\_) в качестве элементов.
- [bpo-29645](https://python-all.ru/3/whatsnew/changelog.html): Ускорен импорт модуля webbrowser. webbrowser.register() теперь потокобезопасен.
- [bpo-28231](https://python-all.ru/3/whatsnew/changelog.html): Модуль zipfile теперь принимает объекты, подобные пути, для внешних путей.
- [bpo-26915](https://python-all.ru/3/whatsnew/changelog.html): Методы index() и count() из collections.abc.Sequence теперь при сравнениях сначала проверяют идентичность, а затем равенство.
- [bpo-28682](https://python-all.ru/3/whatsnew/changelog.html): Добавлена поддержка путей в виде байтов в os.fwalk().
- [bpo-29728](https://python-all.ru/3/whatsnew/changelog.html): Добавлена новая константа `socket.TCP_NOTSENT_LOWAT` (Linux 3.12). Патч от Nathaniel J. Smith.
- [bpo-29623](https://python-all.ru/3/whatsnew/changelog.html): Разрешено использование объекта, подобного пути, в качестве единственного аргумента в ConfigParser.read(). Патч от David Ellis.
- [bpo-9303](https://python-all.ru/3/whatsnew/changelog.html): Переведён модуль sqlite3 на API \_v2. Патч от Aviv Palivoda.
- [bpo-28963](https://python-all.ru/3/whatsnew/changelog.html): Исправлен выход за границы итерации в asyncio.Future.remove\_done\_callback, реализованном на C.
- [bpo-29704](https://python-all.ru/3/whatsnew/changelog.html): asyncio.subprocess.SubprocessStreamProtocol больше не закрывается до того, как будут закрыты все каналы.
- [bpo-29271](https://python-all.ru/3/whatsnew/changelog.html): Исправлены Task.current\_task и Task.all\_tasks, реализованные на C, чтобы принимали аргумент None, как их реализация на чистом Python.
- [bpo-29703](https://python-all.ru/3/whatsnew/changelog.html): Исправлен asyncio для поддержки создания новых циклов событий в дочерних процессах.
- [bpo-29615](https://python-all.ru/3/whatsnew/changelog.html): SimpleXMLRPCDispatcher больше не цепляет KeyError (или любое другое исключение) к исключениям, возникающим в диспетчеризируемых методах. Исправление от Petr Motejlek.
- [bpo-7769](https://python-all.ru/3/whatsnew/changelog.html): Метод register\_function() из xmlrpc.server.SimpleXMLRPCDispatcher и его подклассов теперь можно использовать как декоратор.
- [bpo-29376](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка утверждения в threading.\_DummyThread.is\_alive().
- [bpo-28624](https://python-all.ru/3/whatsnew/changelog.html): Добавлен тест, проверяющий, что параметр cwd функции Popen() принимает объекты PathLike. Исправление от Sayan Chowdhury.
- [bpo-28518](https://python-all.ru/3/whatsnew/changelog.html): Запускать транзакцию неявно перед оператором DML. Исправление от Aviv Palivoda.
- [bpo-29742](https://python-all.ru/3/whatsnew/changelog.html): get\_extra\_info() вызывает исключение, если вызван на закрытом ssl транспорте. Исправление от Nikolay Kim.
- [bpo-16285](https://python-all.ru/3/whatsnew/changelog.html): urllib.parse.quote теперь основан на RFC 3986 и поэтому включает ‘~’ в набор символов, которые не экранируются по умолчанию. Исправление от Christian Theune и Ratnadeep Debnath.
- [bpo-29532](https://python-all.ru/3/whatsnew/changelog.html): Изменение словаря ключевых аргументов, переданного в functools.partial(), больше не влияет на объект partial после его создания.
- [bpo-29110](https://python-all.ru/3/whatsnew/changelog.html): Исправлена утечка объекта файла в aifc.open(), когда файл задан как путь в файловой системе и не является валидным форматом AIFF. Исправление от Anthony Zhang.
- [bpo-22807](https://python-all.ru/3/whatsnew/changelog.html): Добавлены uuid.SafeUUID и uuid.UUID.is\_safe для передачи информации от платформы о том, генерируются ли UUID с помощью многопроцессорного безопасного метода.
- [bpo-29576](https://python-all.ru/3/whatsnew/changelog.html): Улучшены некоторые предупреждения об устаревании в importlib. Некоторые устаревшие методы теперь вызывают DeprecationWarnings и имеют более информативные сообщения.
- [bpo-29534](https://python-all.ru/3/whatsnew/changelog.html): Исправлено различное поведение Decimal.from\_float() для \_decimal и \_pydecimal. Благодарность Andrew Nester.
- [bpo-10379](https://python-all.ru/3/whatsnew/changelog.html): locale.format\_string теперь поддерживает именованный аргумент 'monetary', а locale.format устарел.
- [bpo-29851](https://python-all.ru/3/whatsnew/changelog.html): importlib.reload() теперь вызывает ModuleNotFoundError, если у модуля отсутствует спецификация.
- [bpo-28556](https://python-all.ru/3/whatsnew/changelog.html): Различные обновления модуля typing: typing.Counter, typing.ChainMap, улучшенное кэширование ABC и др. Исходные PR от Jelle Zijlstra, Ivan Levkivskyi, Manuel Krebber и Łukasz Langa.
- [bpo-29100](https://python-all.ru/3/whatsnew/changelog.html): Исправлен регресс в datetime.fromtimestamp(), появившийся в Python 3.6.0: проверка минимального и максимального годов.
- [bpo-29416](https://python-all.ru/3/whatsnew/changelog.html): Предотвращен бесконечный цикл в pathlib.Path.mkdir
- [bpo-29444](https://python-all.ru/3/whatsnew/changelog.html): Исправлен выход за границы буфера в методе group() объекта match. На основе патча от WGH.
- [bpo-29377](https://python-all.ru/3/whatsnew/changelog.html): Добавлены встроенные типы WrapperDescriptorType, MethodWrapperType и MethodDescriptorType в модуль types. Оригинальный патч от Manuel Krebber.
- [bpo-29218](https://python-all.ru/3/whatsnew/changelog.html): Неиспользуемая команда install\_misc теперь удалена. Она документировалась как неиспользуемая с 2000 года. Исправление от Eric N. Vander Weele.
- [bpo-29368](https://python-all.ru/3/whatsnew/changelog.html): При распаковке (unpickle) collections.deque и других подобных списку объектов теперь вызывается метод extend() вместо метода append(). Это может ускорить распаковку до 2 раз.
- [bpo-29338](https://python-all.ru/3/whatsnew/changelog.html): Справка по встроенному или расширяющему классу теперь включает сигнатуру конструктора, если для класса задан \_\_text\_signature\_\_.
- [bpo-29335](https://python-all.ru/3/whatsnew/changelog.html): Исправлен subprocess.Popen.wait(), когда дочерний процесс перешел в остановленное, а не завершенное состояние (например, при трассировке ptrace).
- [bpo-29290](https://python-all.ru/3/whatsnew/changelog.html): Исправлен регресс в argparse, из-за которого сообщения помощи переносились на неразрывных пробелах.
- [bpo-28735](https://python-all.ru/3/whatsnew/changelog.html): Исправлено сравнение mock.MagickMock с mock.ANY.
- [bpo-29197](https://python-all.ru/3/whatsnew/changelog.html): Удалена устаревшая функция ntpath.splitunc().
- [bpo-29210](https://python-all.ru/3/whatsnew/changelog.html): Удалена поддержка устаревшего аргумента «exclude» в tarfile.TarFile.add().
- [bpo-29219](https://python-all.ru/3/whatsnew/changelog.html): Исправлена бесконечная рекурсия в repr неинициализированных экземпляров ctypes.CDLL.
- [bpo-29192](https://python-all.ru/3/whatsnew/changelog.html): Удалены устаревшие возможности в модуле http.cookies.
- [bpo-29193](https://python-all.ru/3/whatsnew/changelog.html): Аргумент форматной строки для string.Formatter.format() теперь является только позиционным.
- [bpo-29195](https://python-all.ru/3/whatsnew/changelog.html): Удалена поддержка устаревших недокументированных именованных аргументов в методах объектов регулярных выражений.
- [bpo-28969](https://python-all.ru/3/whatsnew/changelog.html): Исправлено состояние гонки в C-реализации functools.lru\_cache. Исключение KeyError могло возникать, когда кэшированная функция с полным кэшем одновременно вызывалась из разных потоков с одинаковыми некэшированными аргументами.
- [bpo-20804](https://python-all.ru/3/whatsnew/changelog.html): Атрибуты unittest.mock.sentinel теперь сохраняют свою идентичность при копировании или сериализации с помощью pickle.
- [bpo-29142](https://python-all.ru/3/whatsnew/changelog.html): В urllib.request суффиксы в переменной окружения no\_proxy с ведущими точками снова могут сопоставляться с соответствующими именами хостов (например, .b.c соответствует a.b.c). Исправление от Milan Oberkirch.
- [bpo-28961](https://python-all.ru/3/whatsnew/changelog.html): Исправлен вспомогательный класс unittest.mock.\_Call: он больше не игнорирует параметр name. Исправление от Jiajun Huang.
- [bpo-15812](https://python-all.ru/3/whatsnew/changelog.html): inspect.getframeinfo() теперь корректно показывает первую строку контекста. Исправление от Sam Breese.
- [bpo-28985](https://python-all.ru/3/whatsnew/changelog.html): Обновлены константы авторизатора в модуле sqlite3. Исправление от Dingyuan Wang.
- [bpo-29079](https://python-all.ru/3/whatsnew/changelog.html): Предотвращён бесконечный цикл в pathlib.resolve() на Windows.
- [bpo-13051](https://python-all.ru/3/whatsnew/changelog.html): Исправлены ошибки рекурсии в больших или изменяющих размер curses.textpad.Textbox. Основано на исправлении от Tycho Andersen.
- [bpo-9770](https://python-all.ru/3/whatsnew/changelog.html): Предикаты curses.ascii теперь корректно работают с отрицательными целыми числами.
- [bpo-28427](https://python-all.ru/3/whatsnew/changelog.html): Старые ключи не должны удалять новые значения из WeakValueDictionary при сборке мусора из другого потока.
- [bpo-28923](https://python-all.ru/3/whatsnew/changelog.html): Удалены артефакты редактора из Tix.py.
- [bpo-28871](https://python-all.ru/3/whatsnew/changelog.html): Исправлен сбой при освобождении глубоко вложенного ElementTree.
- [bpo-19542](https://python-all.ru/3/whatsnew/changelog.html): Исправлены ошибки в WeakValueDictionary.setdefault() и WeakValueDictionary.pop(), когда сборка мусора происходит в другом потоке.
- [bpo-20191](https://python-all.ru/3/whatsnew/changelog.html): Исправлен сбой в resource.prlimit() при передаче последовательности, которая не владеет своими элементами, в качестве ограничений.
- [bpo-16255](https://python-all.ru/3/whatsnew/changelog.html): subprocess.Popen использует /system/bin/sh на Android в качестве оболочки, вместо /bin/sh.
- [bpo-28779](https://python-all.ru/3/whatsnew/changelog.html): multiprocessing.set\_forkserver\_preload() вызывал сбой процесса forkserver, если предварительно загруженный модуль создавал некоторые объекты multiprocessing, такие как блокировки.
- [bpo-26937](https://python-all.ru/3/whatsnew/changelog.html): Метод chown() класса tarfile.TarFile теперь не вызывает ошибку, когда модуль grp не может быть импортирован, например на платформе Android.
- [bpo-28847](https://python-all.ru/3/whatsnew/changelog.html): dbm.dumb теперь поддерживает чтение файлов только для чтения и больше не записывает индексный файл, если он не был изменён. Теперь выводится предупреждение об устаревании, если индексный файл отсутствует и создаётся заново в режимах 'r' и 'w' (в будущих версиях Python это станет ошибкой).
- [bpo-27030](https://python-all.ru/3/whatsnew/changelog.html): Неизвестные управляющие последовательности, состоящие из `'\'` и буквы ASCII в шаблонах замены re.sub() и регулярных выражениях теперь являются ошибками.
- [bpo-28835](https://python-all.ru/3/whatsnew/changelog.html): Исправление регрессии, внесённой в warnings.catch\_warnings(): теперь вызывается warnings.showwarning(), если она была переопределена внутри менеджера контекста.
- [bpo-27172](https://python-all.ru/3/whatsnew/changelog.html): В помощь при обновлении с версии 2.7 ранее задокументированное устаревание `inspect.getfullargspec()` было отменено. Это решение может быть пересмотрено после того, как ветка Python 2.7 перестанет официально поддерживаться.
- [bpo-28740](https://python-all.ru/3/whatsnew/changelog.html): Добавлена функция sys.getandroidapilevel(): возвращает версию Android API на момент сборки в виде целого числа. Функция доступна только на Android.
- [bpo-26273](https://python-all.ru/3/whatsnew/changelog.html): Добавлены новые константы `socket.TCP_CONGESTION` (Linux 2.6.13) и `socket.TCP_USER_TIMEOUT` (Linux 2.6.37). Исправление от Omar Sandoval.
- [bpo-28752](https://python-all.ru/3/whatsnew/changelog.html): Восстановлены методы \_\_reduce\_\_() объектов datetime.
- [bpo-28727](https://python-all.ru/3/whatsnew/changelog.html): Шаблоны регулярных выражений, объекты \_sre.SRE\_Pattern, созданные re.compile(), стали сравнимыми (только операторы x==y и x!=y). Это изменение должно исправить [bpo-18383](https://python-all.ru/3/whatsnew/changelog.html): не дублировать фильтры предупреждений при перезагрузке модуля warnings (обычно это делается только в модульных тестах).
- [bpo-20572](https://python-all.ru/3/whatsnew/changelog.html): Удалён параметр endtime у subprocess.Popen.wait. Он был объявлен устаревшим в версии 3.4, а до этого не был документирован.
- [bpo-25659](https://python-all.ru/3/whatsnew/changelog.html): В ctypes предотвращён сбой при вызове методов from\_buffer() и from\_buffer\_copy() для абстрактных классов, таких как Array.
- [bpo-28548](https://python-all.ru/3/whatsnew/changelog.html): В модуле http.server теперь разбирается версия протокола, если это возможно, чтобы избежать использования HTTP 0.9 в некоторых ответах об ошибках.
- [bpo-19717](https://python-all.ru/3/whatsnew/changelog.html): Path.resolve() теперь успешно выполняется для путей, которые не существуют. Исправление от Vajrasky Kok.
- [bpo-28563](https://python-all.ru/3/whatsnew/changelog.html): Исправлена возможная DoS-атака и выполнение произвольного кода при обработке выбора форм множественного числа в модуле gettext. Теперь парсер выражений поддерживает точный синтаксис, поддерживаемый GNU gettext.
- [bpo-28387](https://python-all.ru/3/whatsnew/changelog.html): Исправлена возможная ошибка в деаллокаторе \_io.TextIOWrapper при вызове сборщика мусора в другом потоке. Основано на патче Sebastian Cufre.
- [bpo-27517](https://python-all.ru/3/whatsnew/changelog.html): Компрессор и декомпрессор LZMA больше не вызывают исключения при двукратной передаче пустых данных. Патч от Benjamin Fogle.
- [bpo-28549](https://python-all.ru/3/whatsnew/changelog.html): Исправлен segfault в curses.addch() с ncurses6.
- [bpo-28449](https://python-all.ru/3/whatsnew/changelog.html): tarfile.open() с режимом «r» или «r:» теперь сначала пытается открыть tar-файл со сжатием, и только потом – без сжатия. Иначе в 50% случаев возникала ошибка при ignore\_zeros=True.
- [bpo-23262](https://python-all.ru/3/whatsnew/changelog.html): Модуль webbrowser теперь поддерживает Firefox 36+ и производные браузеры. Основано на патче Oleg Broytman.
- [bpo-24241](https://python-all.ru/3/whatsnew/changelog.html): В среде X webbrowser теперь предпочитает напрямую использовать браузер по умолчанию. Кроме того, функция webbrowser.register() теперь имеет документированный аргумент 'preferred', позволяющий указать браузеры, возвращаемые get() без аргументов. Патч от David Steele.
- [bpo-27939](https://python-all.ru/3/whatsnew/changelog.html): Исправлены ошибки в tkinter.ttk.LabeledScale и tkinter.Scale, вызванные представлением шкалы в виде числа с плавающей точкой внутри Tk. tkinter.IntVar теперь работает, если в нижележащую переменную Tk установлено значение с плавающей точкой.
- [bpo-28255](https://python-all.ru/3/whatsnew/changelog.html): calendar.TextCalendar.prweek() больше не выводит пробел после календаря недели. calendar.TextCalendar.pryear() больше не выводит лишний перевод строки после календаря года. Основано на патче Xiang Zhang.
- [bpo-28255](https://python-all.ru/3/whatsnew/changelog.html): calendar.TextCalendar.prmonth() больше не выводит пробел в начале новой строки после печати календаря месяца. Патч от Xiang Zhang.
- [bpo-20491](https://python-all.ru/3/whatsnew/changelog.html): Класс textwrap.TextWrapper теперь учитывает неразрывные пробелы. Основано на патче Kaarle Ritvanen.
- [bpo-28353](https://python-all.ru/3/whatsnew/changelog.html): os.fwalk() больше не завершается ошибкой на битых ссылках.
- [bpo-28430](https://python-all.ru/3/whatsnew/changelog.html): Исправлен итератор асинхронного Future, реализованного на C: теперь он не принимает значение, отличное от None, при передаче в it.send(val).
- [bpo-27025](https://python-all.ru/3/whatsnew/changelog.html): Сгенерированные имена виджетов Tkinter теперь начинаются с префикса «!» для удобочитаемости.
- [bpo-25464](https://python-all.ru/3/whatsnew/changelog.html): Исправлена HList.header\_exists() в модуле tkinter.tix путём добавления обходного решения для ошибки библиотеки Tix.
- [bpo-28488](https://python-all.ru/3/whatsnew/changelog.html): shutil.make\_archive() больше не добавляет запись «./» в ZIP-архив.
- [bpo-25953](https://python-all.ru/3/whatsnew/changelog.html): re.sub() теперь вызывает ошибку для неверной числовой ссылки на группу в шаблоне замены, даже если шаблон не найден в строке. Сообщение об ошибке для неверной ссылки на группу теперь включает индекс группы и позицию ссылки. Основано на патче SilentGhost.
- [bpo-28469](https://python-all.ru/3/whatsnew/changelog.html): timeit теперь использует последовательность 1, 2, 5, 10, 20, 50,… вместо 1, 10, 100,… для автоопределения диапазона.
- [bpo-28115](https://python-all.ru/3/whatsnew/changelog.html): Интерфейс командной строки модуля zipfile теперь использует argparse. Добавлена поддержка длинных опций.
- [bpo-18219](https://python-all.ru/3/whatsnew/changelog.html): Оптимизирован csv.DictWriter для большого числа столбцов. Патч от Mariatta Wijaya.
- [bpo-28448](https://python-all.ru/3/whatsnew/changelog.html): Исправлено: реализованный на C asyncio.Future не работал в Windows.
- [bpo-23214](https://python-all.ru/3/whatsnew/changelog.html): В модуле «io» аргумент методов read1() классов BufferedReader и BytesIO теперь является опциональным и может быть -1, что соответствует спецификации BufferedIOBase.
- [bpo-28480](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка сборки модуля socket при отключённой многопоточности.
- [bpo-28240](https://python-all.ru/3/whatsnew/changelog.html): timeit: удалены опции командной строки `-c/--clock` и `-t/--time`, которые были устаревшими с Python 3.3.
- [bpo-28240](https://python-all.ru/3/whatsnew/changelog.html): timeit теперь повторяет замеры 5 раз вместо 3, чтобы повысить их надёжность.
- [bpo-28240](https://python-all.ru/3/whatsnew/changelog.html): timeit autorange теперь использует одну итерацию цикла, если замер занимает менее 10 секунд, вместо 10 итераций. «python3 -m timeit -s 'import time' 'time.sleep(1)'» теперь выполняется за 4 секунды вместо 40.
- Distutils.sdist теперь ищет файлы README и setup.py с учётом регистра символов. Это поведение соответствует тому, что принято в Setuptools 6.0 и более поздних версиях. Обоснование см. в [setuptools 100](https://python-all.ru/3/whatsnew/changelog.html).
- [bpo-24452](https://python-all.ru/3/whatsnew/changelog.html): Добавлена поддержка Chrome в модуле webbrowser на Mac OS X. Патч от Ned Batchelder.
- [bpo-20766](https://python-all.ru/3/whatsnew/changelog.html): Исправлена утечка ссылок в pdb при обработке обработчиков SIGINT.
- [bpo-27998](https://python-all.ru/3/whatsnew/changelog.html): Исправлена поддержка путей в виде байтов в os.scandir() на Windows. Патч от Eryk Sun.
- [bpo-28317](https://python-all.ru/3/whatsnew/changelog.html): Дизассемблер теперь декодирует аргумент FORMAT\_VALUE.
- [bpo-28380](https://python-all.ru/3/whatsnew/changelog.html): Функции autospec в unittest.mock Mock теперь корректно поддерживают assert\_called, assert\_not\_called и assert\_called\_once.
- [bpo-28229](https://python-all.ru/3/whatsnew/changelog.html): Модуль lzma теперь поддерживает pathlib.
- [bpo-28321](https://python-all.ru/3/whatsnew/changelog.html): Исправлена запись символов вне BMP в бинарном формате в plistlib.
- [bpo-28225](https://python-all.ru/3/whatsnew/changelog.html): Модуль bz2 теперь поддерживает pathlib. Первоначальный патч от Ethan Furman.
- [bpo-28227](https://python-all.ru/3/whatsnew/changelog.html): gzip теперь поддерживает pathlib. Патч от Ethan Furman.
- [bpo-28332](https://python-all.ru/3/whatsnew/changelog.html): Устарело неявное усечение в socket.htons и socket.ntohs. Оригинальный патч от Oren Milman.
- [bpo-27358](https://python-all.ru/3/whatsnew/changelog.html): Оптимизировано слияние var-keyword аргументов и улучшено сообщение об ошибке при передаче не-отображения в качестве var-keyword аргумента.
- [bpo-28257](https://python-all.ru/3/whatsnew/changelog.html): Улучшено сообщение об ошибке при передаче не-итерируемого объекта в качестве var-positional аргумента. Добавлен опкод BUILD\_TUPLE\_UNPACK\_WITH\_CALL.
- [bpo-28322](https://python-all.ru/3/whatsnew/changelog.html): Исправлены возможные аварийные завершения при десериализации объектов itertools из некорректных pickle-данных. Основано на патче от John Leitch.
- [bpo-28228](https://python-all.ru/3/whatsnew/changelog.html): imghdr теперь поддерживает pathlib.
- [bpo-28226](https://python-all.ru/3/whatsnew/changelog.html): compileall теперь поддерживает pathlib.
- [bpo-28314](https://python-all.ru/3/whatsnew/changelog.html): Исправлено объявление функции (флаги C) для метода getiterator() xml.etree.ElementTree.Element.
- [bpo-28148](https://python-all.ru/3/whatsnew/changelog.html): Прекращено использование localtime() и gmtime() в модуле time. Внедрён кроссплатформенный API \_PyTime\_localtime, похожий на POSIX localtime\_r, но доступный на всех платформах. Патч от Ed Schouten.
- [bpo-28253](https://python-all.ru/3/whatsnew/changelog.html): Исправлены функции календаря для крайних месяцев: 0001-01 и 9999-12. Методы itermonthdays() и itermonthdays2() перереализованы так, чтобы они не вызывали itermonthdates(), что могло приводить к переполнению/потере значимости datetime.date.
- [bpo-28275](https://python-all.ru/3/whatsnew/changelog.html): Исправлено возможное использование после освобождения в методах decompress() классов LZMADecompressor и BZ2Decompressor. Оригинальный патч от John Leitch.
- [bpo-27897](https://python-all.ru/3/whatsnew/changelog.html): Исправлено возможное аварийное завершение в sqlite3.Connection.create\_collation() при передаче некорректного строкоподобного объекта в качестве имени. Патч от Xiang Zhang.
- [bpo-18844](https://python-all.ru/3/whatsnew/changelog.html): random.choices() теперь принимает k только как ключевой аргумент для улучшения читаемости в типичных случаях и приведения к сигнатуре, используемой в других языках.
- [bpo-18893](https://python-all.ru/3/whatsnew/changelog.html): Исправлена некорректная обработка исключений в Lib/ctypes/macholib/dyld.py. Патч от Madison May.
- [bpo-27611](https://python-all.ru/3/whatsnew/changelog.html): Исправлена поддержка окна корневого по умолчанию в модуле tkinter.tix. Добавлен параметр master в конструкторе DisplayStyle.
- [bpo-27348](https://python-all.ru/3/whatsnew/changelog.html): В модуле traceback восстановлено форматирование сообщений об исключениях вроде «Exception: None». Это исправляет регресс, внесённый в 3.5a2.
- [bpo-25651](https://python-all.ru/3/whatsnew/changelog.html): Разрешено использование ложных значений для параметра msg метода subTest().
- [bpo-27778](https://python-all.ru/3/whatsnew/changelog.html): Исправлена утечка памяти в os.getrandom() при прерывании getrandom() сигналом и возбуждении исключения Python в обработчике сигнала.
- [bpo-28200](https://python-all.ru/3/whatsnew/changelog.html): Исправлена утечка памяти в Windows в модуле os (исправление функции path\_converter()).
- [bpo-25400](https://python-all.ru/3/whatsnew/changelog.html): RobotFileParser теперь корректно возвращает значения по умолчанию для crawl\_delay и request\_rate. Первоначальный патч от Peter Wirtz.
- [bpo-27932](https://python-all.ru/3/whatsnew/changelog.html): Предотвращена утечка памяти в win32\_ver().
- Исправлен UnboundLocalError в socket.\_sendfile\_use\_sendfile.
- [bpo-28075](https://python-all.ru/3/whatsnew/changelog.html): Добавлена проверка ERROR\_ACCESS\_DENIED в реализации os.stat() для Windows. Патч от Eryk Sun.
- [bpo-22493](https://python-all.ru/3/whatsnew/changelog.html): Предупреждение, выдаваемое при использовании встроенных флагов в середине регулярного выражения, теперь содержит (усечённый) шаблон. Патч от Tim Graham.
- [bpo-25270](https://python-all.ru/3/whatsnew/changelog.html): Предотвращено возбуждение SystemError в codecs.escape\_encode() при передаче пустой байтовой строки.
- [bpo-28181](https://python-all.ru/3/whatsnew/changelog.html): Получение antigravity по HTTPS. Патч от Kaartic Sivaraam.
- [bpo-25895](https://python-all.ru/3/whatsnew/changelog.html): Включена поддержка схем URL WebSocket в urllib.parse.urljoin. Патч от Gergely Imreh и Markus Holtermann.
- [bpo-28114](https://python-all.ru/3/whatsnew/changelog.html): Исправлено аварийное завершение в parse\_envlist(), когда env содержит байтовые строки. Патч от Eryk Sun.
- [bpo-27599](https://python-all.ru/3/whatsnew/changelog.html): Исправлено переполнение буфера в binascii.b2a\_qp() и binascii.a2b\_qp().
- [bpo-27906](https://python-all.ru/3/whatsnew/changelog.html): Исправлена проблема исчерпания сокетов accept при высокой нагрузке TCP. Патч от Kevin Conway.
- [bpo-28174](https://python-all.ru/3/whatsnew/changelog.html): Обработка ситуации, когда SO\_REUSEPORT не поддерживается должным образом. Патч от Seth Michael Larson.
- [bpo-26654](https://python-all.ru/3/whatsnew/changelog.html): Инспекция functools.partial в asyncio.Handle.\_\_repr\_\_. Патч от iceboy.
- [bpo-26909](https://python-all.ru/3/whatsnew/changelog.html): Исправлена медленная работа с каналами в asyncio. Патч от INADA Naoki.
- [bpo-28176](https://python-all.ru/3/whatsnew/changelog.html): Исправлена гонка колбэков в asyncio.SelectorLoop.sock\_connect.
- [bpo-27759](https://python-all.ru/3/whatsnew/changelog.html): Исправлено некорректное удержание недействительных файловых дескрипторов в селекторах. Патч от Mark Williams.
- [bpo-28325](https://python-all.ru/3/whatsnew/changelog.html): Удалён рудиментарный модуль macurl2path для MacOS 9 и его тесты.
- [bpo-28368](https://python-all.ru/3/whatsnew/changelog.html): Отказ от мониторинга процессов, если к наблюдателю за дочерними процессами не прикреплён цикл. Патч от Vincent Michel.
- [bpo-28369](https://python-all.ru/3/whatsnew/changelog.html): Возбуждается RuntimeError, когда файловый дескриптор транспорта используется с add\_reader, add\_writer и т.д.
- [bpo-28370](https://python-all.ru/3/whatsnew/changelog.html): Ускорение asyncio.StreamReader.readexactly. Патч от Коренберг Марк.
- [bpo-28371](https://python-all.ru/3/whatsnew/changelog.html): Устарело передавать asyncio.Handles в run\_in\_executor.
- [bpo-28372](https://python-all.ru/3/whatsnew/changelog.html): Исправлена поддержка форматирования не-Python корутин в asyncio.
- [bpo-28399](https://python-all.ru/3/whatsnew/changelog.html): Удаление UNIX-сокета из файловой системы перед привязкой. Патч от Коренберг Марк.
- [bpo-27972](https://python-all.ru/3/whatsnew/changelog.html): Запрещено задачам ожидать самих себя.
- [bpo-24142](https://python-all.ru/3/whatsnew/changelog.html): Чтение повреждённого конфигурационного файла оставляло configparser в недействительном состоянии. Оригинальный патч от Florian Höch.
- [bpo-29581](https://python-all.ru/3/whatsnew/changelog.html): ABCMeta.\_\_new\_\_ теперь принимает `**kwargs`, что позволяет абстрактным базовым классам использовать именованные параметры в \_\_init\_subclass\_\_. Патч от Nate Soares.
- [bpo-25532](https://python-all.ru/3/whatsnew/changelog.html): inspect.unwrap() теперь будет пытаться развернуть объект только sys.getrecursionlimit() раз, чтобы защититься от объектов, которые создают новый объект при каждом доступе к атрибуту.
- [bpo-30177](https://python-all.ru/3/whatsnew/changelog.html): path.resolve(strict=False) больше не обрезает путь после первого элемента, отсутствующего в файловой системе. Патч от Antoine Pietri.

### Документация

- [bpo-31294](https://python-all.ru/3/whatsnew/changelog.html): Исправлен неполный фрагмент кода в примерах ZeroMQSocketListener и ZeroMQSocketHandler, а также адаптация под Python 3.
- [bpo-21649](https://python-all.ru/3/whatsnew/changelog.html): Добавлены ссылки на RFC 7525 и Mozilla server side TLS в документацию по SSL.
- [bpo-31128](https://python-all.ru/3/whatsnew/changelog.html): Разрешена привязка pydoc-сервера к произвольным именам хостов.
- [bpo-30803](https://python-all.ru/3/whatsnew/changelog.html): Уточнение документации по проверке истинности. Оригинальный патч от Peter Thomassen.
- [bpo-30176](https://python-all.ru/3/whatsnew/changelog.html): Добавлены отсутствующие константы, связанные с атрибутами, в документацию curses.
- [bpo-30052](https://python-all.ru/3/whatsnew/changelog.html): Целевые ссылки для [`bytes()`](https://python-all.ru/3/library/stdtypes.html#bytes) и [`bytearray()`](https://python-all.ru/3/library/stdtypes.html#bytearray) теперь ведут на соответствующие определения типов, а не на записи встроенных функций. Используйте [bytes](https://python-all.ru/3/library/functions.html#func-bytes) и [bytearray](https://python-all.ru/3/library/functions.html#func-bytearray) для ссылок на последние. Чтобы обеспечить автоматическое применение этой и будущих обновлений перекрёстных ссылок, ежедневные сборки документации теперь отключают стандартное кэширование вывода в Sphinx.
- [bpo-26985](https://python-all.ru/3/whatsnew/changelog.html): Добавлена недостающая информация об объекте кода в документацию inspect.
- [bpo-19824](https://python-all.ru/3/whatsnew/changelog.html): Улучшена документация по шаблонным строкам и ссылки на них, с акцентом на их полезность для интернационализации и уточнением некоторых ограничений использования. (См. также: [bpo-20314](https://python-all.ru/3/whatsnew/changelog.html), [bpo-12518](https://python-all.ru/3/whatsnew/changelog.html))
- [bpo-28929](https://python-all.ru/3/whatsnew/changelog.html): Привязка документации к её исходному файлу на GitHub.
- [bpo-25008](https://python-all.ru/3/whatsnew/changelog.html): Документирование smtpd.py как фактически устаревшего и добавление указателя на aiosmtpd – стороннюю замену на основе asyncio.
- [bpo-26355](https://python-all.ru/3/whatsnew/changelog.html): Добавлена каноническая ссылка в заголовке каждой страницы на соответствующую основную версию документации. Патч от Matthias Bussonnier.
- [bpo-29349](https://python-all.ru/3/whatsnew/changelog.html): Исправлен синтаксис Python 2 в коде для сборки документации.
- [bpo-23722](https://python-all.ru/3/whatsnew/changelog.html): Справочник по модели данных и раздел о переносе в руководстве «Что нового в Python 3.6» теперь покрывают дополнительную обработку `__classcell__`, требуемую пользовательскими метаклассами для полной поддержки [**PEP 487**](https://python-all.ru/3/whatsnew/changelog.html) и `super()` без аргументов.
- [bpo-28513](https://python-all.ru/3/whatsnew/changelog.html): Документирован интерфейс командной строки модуля zipfile.

### Тесты

- [bpo-29639](https://python-all.ru/3/whatsnew/changelog.html): test.support.HOST теперь «localhost», добавлена новая константа HOSTv4 для нужд `127.0.0.1`, аналогично существующей константе HOSTv6.
- [bpo-31320](https://python-all.ru/3/whatsnew/changelog.html): Убрана трассировка в test\_ssl
- [bpo-31346](https://python-all.ru/3/whatsnew/changelog.html): Для SSLContext теперь предпочтительны протоколы PROTOCOL\_TLS\_CLIENT и PROTOCOL\_TLS\_SERVER.
- [bpo-25674](https://python-all.ru/3/whatsnew/changelog.html): Удалён ssl-тест sha256.tbs-internet.com
- [bpo-30715](https://python-all.ru/3/whatsnew/changelog.html): Учтены изменения колбэка ALPN для OpenSSL 1.1.0f. Последняя версия ведёт себя как OpenSSL 1.0.2 и больше не прерывает рукопожатие.
- [bpo-30822](https://python-all.ru/3/whatsnew/changelog.html): regrtest: исключён tzdata из regrtest --all. При запуске набора тестов с --use=all / -u all tzdata исключается, так как он делает test\_datetime слишком медленным (15–20 минут на некоторых сборочных ботах), из-за чего тест на них истекает по времени. Также исправлен парсер командной строки regrtest для возможности передачи -u extralargefile при запуске test\_zipfile64.
- [bpo-30695](https://python-all.ru/3/whatsnew/changelog.html): Добавлены функции `set_nomemory(start, stop)` и `remove_mem_hooks()` в модуль `_testcapi`.
- [bpo-30357](https://python-all.ru/3/whatsnew/changelog.html): test\_thread: setUp() теперь использует support.threading\_setup() и support.threading\_cleanup() для ожидания завершения потоков, чтобы избежать случайных побочных эффектов на последующие тесты. Первоначальный патч написан Гжегожем Гживачем.
- [bpo-30197](https://python-all.ru/3/whatsnew/changelog.html): Улучшены функции swap\_attr() и swap\_item() в модуле test.support. Теперь они работают при удалении заменённого атрибута или элемента внутри оператора with. Старое значение атрибута или элемента (или None, если его не существовало) теперь будет присвоено цели предложения “as”, если она есть.
- [bpo-24932](https://python-all.ru/3/whatsnew/changelog.html): Использован правильный разбор командной строки в \_testembed
- [bpo-28950](https://python-all.ru/3/whatsnew/changelog.html): Запрещено комбинировать -j0 с -T/-l в аргументах командной строки regrtest.
- [bpo-28683](https://python-all.ru/3/whatsnew/changelog.html): Исправлены тесты, которые привязывают unix-сокет и вызывают PermissionError на Android для пользователя без root.
- [bpo-26936](https://python-all.ru/3/whatsnew/changelog.html): Исправлены ошибки test\_socket на Android – getservbyname(), getservbyport() и getaddrinfo() некорректны на некоторых уровнях API Android.
- [bpo-28666](https://python-all.ru/3/whatsnew/changelog.html): Теперь test.support.rmtree может удалять недоступные для записи или чтения каталоги.
- [bpo-23839](https://python-all.ru/3/whatsnew/changelog.html): Различные кеши теперь очищаются перед запуском каждого тестового файла.
- [bpo-26944](https://python-all.ru/3/whatsnew/changelog.html): Исправлен test\_posix для Android, где 'id -G' полностью неверен или отсутствует эффективный gid.
- [bpo-28409](https://python-all.ru/3/whatsnew/changelog.html): regrtest: исправлен парсер аргументов командной строки.
- [bpo-28217](https://python-all.ru/3/whatsnew/changelog.html): Добавлен модуль \_testconsole для тестирования ввода с консоли.
- [bpo-26939](https://python-all.ru/3/whatsnew/changelog.html): Добавлена функция support.setswitchinterval() для исправления зависания test\_functools на эмуляторе Android armv7 qemu.

### Сборка

- [bpo-31354](https://python-all.ru/3/whatsnew/changelog.html): Разрешено использование `--with-lto` на всех сборках, а не только на `make profile-opt`.
- [bpo-31370](https://python-all.ru/3/whatsnew/changelog.html): Удалена поддержка сборки --without-threads. Эта опция больше не актуальна в XXI веке. Удаление множества условных путей позволяет упростить кодовую базу, включая сложный в сопровождении низкоуровневый внутренний код.
- [bpo-31341](https://python-all.ru/3/whatsnew/changelog.html): В соответствии с [**PEP 11**](https://python-all.ru/3/whatsnew/changelog.html) поддержка операционной системы IRIX была удалена.
- [bpo-30854](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка компиляции при сборке --without-threads. Патч от Масаюки Ямамото.
- [bpo-30687](https://python-all.ru/3/whatsnew/changelog.html): При сборке на Windows теперь используется msbuild.exe вместо vcvarsall.bat
- [bpo-20210](https://python-all.ru/3/whatsnew/changelog.html): Добавлена поддержка маркера *disabled* в файлах Setup. Модули расширения, перечисленные после этого маркера, не собираются ни Makefile, ни setup.py.
- [bpo-29941](https://python-all.ru/3/whatsnew/changelog.html): Добавлен флаг configure `--with-assertions` для явного включения проверок `assert()` в C. По умолчанию выключен. `--with-pydebug` подразумевает `--with-assertions`.
- [bpo-28787](https://python-all.ru/3/whatsnew/changelog.html): Исправлена сборка Python вне дерева исходников при конфигурации с `--with--dtrace`.
- [bpo-29243](https://python-all.ru/3/whatsnew/changelog.html): Предотвращена излишняя пересборка Python при `make test`, `make install` и некоторых других целях make, если конфигурация выполнена с `--enable-optimizations`.
- [bpo-23404](https://python-all.ru/3/whatsnew/changelog.html): Сгенерированные файлы больше не пересоздаются на основе времени изменения: теперь это действие явное. Замените `make touch` на `make regen-all`.
- [bpo-29643](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка, из-за которой `--enable-optimization` не работал.
- [bpo-27593](https://python-all.ru/3/whatsnew/changelog.html): sys.version, а также функции python\_build(), python\_branch() и python\_revision() из модуля platform теперь используют информацию из git вместо hg при сборке из репозитория.
- [bpo-29572](https://python-all.ru/3/whatsnew/changelog.html): Обновлены установщики для Windows и OS X для использования OpenSSL 1.0.2k.
- [bpo-27659](https://python-all.ru/3/whatsnew/changelog.html): Запрещены неявные объявления функций C: где возможно, используйте `-Werror=implicit-function-declaration` (GCC и Clang, но это зависит от версии компилятора). Патч написан Chi Hsuan Yen.
- [bpo-29384](https://python-all.ru/3/whatsnew/changelog.html): Удалены старые вспомогательные скрипты для Be OS.
- [bpo-26851](https://python-all.ru/3/whatsnew/changelog.html): Установлены флаги компиляции и компоновки для Android.
- [bpo-28768](https://python-all.ru/3/whatsnew/changelog.html): Исправлено неявное объявление функции \_setmode. Патч от Masayuki Yamamoto.
- [bpo-29080](https://python-all.ru/3/whatsnew/changelog.html): Устранена жёсткая зависимость от hg.exe в PCBuild/build.bat.
- [bpo-23903](https://python-all.ru/3/whatsnew/changelog.html): Добавлены пропущенные имена в PC/python3.def.
- [bpo-28762](https://python-all.ru/3/whatsnew/changelog.html): lockf() доступна на Android API level 24, но макрос F\_LOCK не определён в android-ndk-r13.
- [bpo-28538](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка компиляции, возникающая из-за того, что if\_nameindex() доступна на Android API level 24, но структура if\_nameindex не определена.
- [bpo-20211](https://python-all.ru/3/whatsnew/changelog.html): Каталог для установки заголовочных файлов C и каталог для установки библиотек объектного кода не добавляются в пути поиска кросс-компиляции. Оригинальный патч от Thomas Petazzoni.
- [bpo-28849](https://python-all.ru/3/whatsnew/changelog.html): Не определять sys.implementation.\_multiarch на Android.
- [bpo-10656](https://python-all.ru/3/whatsnew/changelog.html): Исправлена сборка вне дерева исходников на AIX. Патч от Tristan Carel и Michael Haubenwallner.
- [bpo-26359](https://python-all.ru/3/whatsnew/changelog.html): Переименован флаг –with-optimiations в –enable-optimizations.
- [bpo-28444](https://python-all.ru/3/whatsnew/changelog.html): Исправлена проблема с отсутствующими модулями расширений при кросс-компиляции.
- [bpo-28208](https://python-all.ru/3/whatsnew/changelog.html): Обновлены установщики для Windows и OS X для использования SQLite 3.14.2.
- [bpo-28248](https://python-all.ru/3/whatsnew/changelog.html): Обновлены установщики для Windows и OS X для использования OpenSSL 1.0.2j.
- [bpo-21124](https://python-all.ru/3/whatsnew/changelog.html): Исправлена сборка модуля \_struct на Cygwin: теперь в PyVarObject\_HEAD\_INIT передаётся `NULL` вместо `&PyType_Type`. Патч от Masayuki Yamamoto.
- [bpo-13756](https://python-all.ru/3/whatsnew/changelog.html): Исправлена сборка модулей расширений на Cygwin. Патч от Roumen Petrov на основе оригинального патча от Jason Tishler.
- [bpo-21085](https://python-all.ru/3/whatsnew/changelog.html): Добавлена проверка configure для siginfo\_t.si\_band, который не предоставляется Cygwin. Патч от Masayuki Yamamoto с рецензией и перебазированием от Erik Bray.
- [bpo-28258](https://python-all.ru/3/whatsnew/changelog.html): Исправлена сборка с локалью эстонского языка (цели python-config и distclean в Makefile). Патч от Arfrever Frehtes Taifersar Arahesis.
- [bpo-26661](https://python-all.ru/3/whatsnew/changelog.html): setup.py теперь определяет системную libffi с обёрткой multiarch.
- [bpo-27979](https://python-all.ru/3/whatsnew/changelog.html): Полная копия libffi больше не поставляется для сборки \_ctypes на UNIX-платформах, отличных от OSX. Теперь для сборки \_ctypes на таких платформах требуется установленная копия libffi.
- [bpo-15819](https://python-all.ru/3/whatsnew/changelog.html): Удалена избыточная опция пути поиска include для сборки вне дерева исходников.
- [bpo-28676](https://python-all.ru/3/whatsnew/changelog.html): Предотвращено предупреждение об отсутствующем объявлении ‘getentropy’ на macOS. Патч от Gareth Rees.

### Windows

- [bpo-31392](https://python-all.ru/3/whatsnew/changelog.html): Обновлена сборка Windows для использования OpenSSL 1.1.0f
- [bpo-30389](https://python-all.ru/3/whatsnew/changelog.html): Добавлено определение Visual Studio 2017 в distutils на Windows.
- [bpo-31358](https://python-all.ru/3/whatsnew/changelog.html): zlib больше не входит в исходники CPython; вместо этого он загружается по требованию, как и bz2, lzma, OpenSSL, Tcl/Tk и SQLite.
- [bpo-31340](https://python-all.ru/3/whatsnew/changelog.html): Переход на сборку с MSVC v141 (входит в состав Visual Studio 2017)
- [bpo-30581](https://python-all.ru/3/whatsnew/changelog.html): os.cpu\_count() теперь возвращает корректное количество процессоров в Windows, когда число логических процессоров превышает 64.
- [bpo-30916](https://python-all.ru/3/whatsnew/changelog.html): предварительная сборка OpenSSL, Tcl и Tk и включение их бинарных файлов в сборку.
- [bpo-30731](https://python-all.ru/3/whatsnew/changelog.html): добавлен отсутствующий xmlns в python.manifest для соответствия схеме.
- [bpo-30291](https://python-all.ru/3/whatsnew/changelog.html): добавлена возможность запрашивать 64-разрядные интерпретаторы в py.exe с помощью суффикса -64. Автор: Steve (Gadget) Barnes.
- [bpo-30362](https://python-all.ru/3/whatsnew/changelog.html): добавлены опции списка (-0, -0p) в программу запуска py.exe. Автор: Steve Barnes.
- [bpo-23451](https://python-all.ru/3/whatsnew/changelog.html): исправлены предупреждения об устаревании сокетов в socketmodule.c. Патч от Segev Finer.
- [bpo-30450](https://python-all.ru/3/whatsnew/changelog.html): процесс сборки в Windows больше не зависит от Subversion; внешний код теперь загружается с GitHub через скрипт Python. Если Python 3.6 не найден в системе (через `py -3.6`), для загрузки 32-разрядной копии Python используется NuGet.
- [bpo-29579](https://python-all.ru/3/whatsnew/changelog.html): удалён readme.txt из установщика.
- [bpo-25778](https://python-all.ru/3/whatsnew/changelog.html): winreg не урезает строку корректно (патч от Eryk Sun)
- [bpo-28896](https://python-all.ru/3/whatsnew/changelog.html): объявлен устаревшим WindowsRegistryFinder; по умолчанию отключён
- [bpo-28522](https://python-all.ru/3/whatsnew/changelog.html): исправлена некорректная обработка перераспределения буфера в getpathp.c
- [bpo-28402](https://python-all.ru/3/whatsnew/changelog.html): добавлены подписанные каталоговые файлы для стандартной библиотеки в Windows.
- [bpo-28333](https://python-all.ru/3/whatsnew/changelog.html): включена поддержка Unicode для приглашений ps1/ps2 и input(). (патч от Eryk Sun)
- [bpo-28251](https://python-all.ru/3/whatsnew/changelog.html): улучшения в справочных руководствах Windows.
- [bpo-28110](https://python-all.ru/3/whatsnew/changelog.html): launcher.msi имеет разные коды продукта для 32-разрядной и 64-разрядной версий
- [bpo-28161](https://python-all.ru/3/whatsnew/changelog.html): открытие CON для записи завершается ошибкой
- [bpo-28162](https://python-all.ru/3/whatsnew/changelog.html): WindowsConsoleIO.readall() завершается ошибкой, если первая строка начинается с Ctrl+Z
- [bpo-28163](https://python-all.ru/3/whatsnew/changelog.html): WindowsConsoleIO.fileno() передаёт неверные флаги в \_open\_osfhandle
- [bpo-28164](https://python-all.ru/3/whatsnew/changelog.html): \_PyIO\_get\_console\_type завершается ошибкой для различных путей
- [bpo-28137](https://python-all.ru/3/whatsnew/changelog.html): файл пути Windows переименован в .\_pth
- [bpo-28138](https://python-all.ru/3/whatsnew/changelog.html): файл .\_pth в Windows должен разрешать импорт модуля site

### IDLE

- [bpo-31493](https://python-all.ru/3/whatsnew/changelog.html): контекст кода IDLE – исправлены таймеры обновления кода и шрифта. Отмена таймеров предотвращает появление предупреждения при завершении test\_idle.
- [bpo-31488](https://python-all.ru/3/whatsnew/changelog.html): IDLE – обновлены неклавишные параметры в бывших классах расширений. При применении изменений в configdialog вызывается .reload для каждого класса функций. ParenMatch изменён так, чтобы обновлённые параметры влияли на существующие экземпляры, прикреплённые к открытым окнам редактора.
- [bpo-31477](https://python-all.ru/3/whatsnew/changelog.html): IDLE – улучшен пункт rstrip в документации. Удаление завершающих пробельных символов затрагивает не только пробелы. Многострочные строковые литералы не пропускаются.
- [bpo-31480](https://python-all.ru/3/whatsnew/changelog.html): IDLE – обеспечено прохождение тестов с расширением zzdummy, отключённым по умолчанию.
- [bpo-31421](https://python-all.ru/3/whatsnew/changelog.html): документировано, как IDLE запускает программы tkinter. IDLE вызывает обновление tcl/tk в фоне, чтобы упростить интерактивное взаимодействие и эксперименты с приложениями tkinter.
- [bpo-31414](https://python-all.ru/3/whatsnew/changelog.html): IDLE – исправлены тесты поля ввода tk: сначала выполняется удаление. Добавление в целочисленное поле не эквивалентно удалению и вставке, так как int(‘’) завершится ошибкой.
- [bpo-31051](https://python-all.ru/3/whatsnew/changelog.html): перегруппировка страницы GenPage диалога настроек IDLE на разделы «Окно», «Редактор» и «Справка».
- [bpo-30617](https://python-all.ru/3/whatsnew/changelog.html): IDLE – добавлены строки документации и тесты для outwin (подкласса редактора). Некоторые данные и функции перенесены из класса на уровень модуля. Патч от Cheryl Sabella.
- [bpo-31287](https://python-all.ru/3/whatsnew/changelog.html): IDLE – не изменять tkinter.message в test\_configdialog.
- [bpo-27099](https://python-all.ru/3/whatsnew/changelog.html): преобразование встроенных «расширений» IDLE в обычные функции. Около 10 функций IDLE были реализованы как якобы необязательные расширения. Их разное поведение могло сбивать пользователей с толку или создавать проблемы в сопровождении, поэтому было выполнено преобразование. Основное отличие для пользователей: привязки клавиш, настраиваемые пользователем для встроенных функций, теперь обрабатываются единообразно. Теперь редактирование привязки в наборе клавиш влияет только на её значение в этом наборе. Все привязки определяются вместе в системных наборах клавиш по умолчанию в файле config-extensions.def. Все пользовательские наборы клавиш сохраняются целиком в config-extension.cfg. Они вступают в силу сразу после нажатия «Применить» или «ОК». Затронутые события: ‘\<\<force-open-completions\>\>’, ‘\<\<expand-word\>\>’, ‘\<\<force-open-calltip\>\>’, ‘\<\<flash-paren\>\>’, ‘\<\<format-paragraph\>\>’, ‘\<\<run-module\>\>’, ‘\<\<check-module\>\>’ и ‘\<\<zoom-height\>\>’. Любые (глобальные) настройки, сделанные до версии 3.6.3, не будут влиять на настройки, определённые для конкретного набора клавиш после 3.6.3, и наоборот. Первоначальный патч от Charles Wohlganger.
- [bpo-31206](https://python-all.ru/3/whatsnew/changelog.html): IDLE: класс HighPage(Frame) вынесен из ConfigDialog. Патч от Cheryl Sabella.
- [bpo-31001](https://python-all.ru/3/whatsnew/changelog.html): Добавлены тесты для вкладки подсветки в configdialog. Патч от Cheryl Sabella.
- [bpo-31205](https://python-all.ru/3/whatsnew/changelog.html): IDLE: Выделен класс KeysPage(Frame) из ConfigDialog. Слегка изменённые тесты продолжают проходить. Патч от Cheryl Sabella.
- [bpo-31130](https://python-all.ru/3/whatsnew/changelog.html): IDLE – устранение утечек в test\_configdialog. Первоначальный патч от Victor Stinner.
- [bpo-31002](https://python-all.ru/3/whatsnew/changelog.html): Добавлены тесты для вкладки клавиш configdialog. Патч от Cheryl Sabella.
- [bpo-19903](https://python-all.ru/3/whatsnew/changelog.html): IDLE: Подсказки вызовов теперь используют `inspect.signature` вместо `inspect.getfullargspec`. Это улучшает подсказки для встроенных функций, конвертированных для использования Argument Clinic. Патч от Louie Lu.
- [bpo-31083](https://python-all.ru/3/whatsnew/changelog.html): IDLE – добавлена схема класса TabPage в configdialog. Существующие классы обновлены в соответствии со схемой. Первоначальный патч от Cheryl Sabella.
- [bpo-31050](https://python-all.ru/3/whatsnew/changelog.html): Выделен класс GenPage(Frame) из ConfigDialog. Слегка изменённые тесты продолжают проходить. Патч от Cheryl Sabella.
- [bpo-31004](https://python-all.ru/3/whatsnew/changelog.html): IDLE – выделен класс FontPage(Frame) из ConfigDialog. Слегка изменённые тесты продолжают проходить. Исправлены тесты General. Патч в основном от Cheryl Sabella.
- [bpo-30781](https://python-all.ru/3/whatsnew/changelog.html): IDLE – использование виджетов ttk в ConfigDialog. Патчи от Terry Jan Reedy и Cheryl Sabella.
- [bpo-31060](https://python-all.ru/3/whatsnew/changelog.html): IDLE – завершена перестановка методов ConfigDialog. Группировка методов, относящихся к каждой вкладке и кнопкам, поможет в написании тестов и улучшении вкладок, а также позволит разбить группы на классы.
- [bpo-30853](https://python-all.ru/3/whatsnew/changelog.html): IDLE – выделен класс VarTrace из ConfigDialog. Экземпляр tracers управляет парами, состоящими из tk-переменной и функции обратного вызова. Когда трассировка включена, установка переменной вызывает функцию. Покрытие тестами нового класса составляет 100%.
- [bpo-31003](https://python-all.ru/3/whatsnew/changelog.html): IDLE: Добавлены дополнительные тесты для вкладки General.
- [bpo-30993](https://python-all.ru/3/whatsnew/changelog.html): IDLE – улучшена страница шрифтов в configdialog и тесты. В configdialog: документирование причинно-следственных связей в docstring функции create\_font\_tab. Упрощены некоторые имена атрибутов. Вызовы set\_samples перемещены в var\_changed\_font (идея от Cheryl Sabella). Соответствующие функции перемещены на позиции после функции создания виджетов. В test\_configdialog: исправлен test\_font\_set, чтобы он не зависел от порядка. Исправлен переименованный test\_indent\_scale, чтобы он тестировал виджет. Скорректированы тесты для перемещения вызова set\_samples. Добавлены тесты для функций загрузки. Все тесты шрифтов помещены в один класс, а тесты отступов вкладок – в другой. За исключением двух строк, эти тесты полностью покрывают соответствующие функции.
- [bpo-30981](https://python-all.ru/3/whatsnew/changelog.html): IDLE – добавлены дополнительные тесты страницы шрифтов configdialog.
- [bpo-28523](https://python-all.ru/3/whatsnew/changelog.html): IDLE: замена 'colour' на 'color' в configdialog.
- [bpo-30917](https://python-all.ru/3/whatsnew/changelog.html): Добавлены тесты для idlelib.config.IdleConf. Увеличение покрытия с 46% до 96%. Патч от Louie Lu.
- [bpo-30934](https://python-all.ru/3/whatsnew/changelog.html): Документирование деталей покрытия для тестов idlelib. Добавлен раздел в idlelib/idle-test/README.txt. Включена проверка, что ветви выполняются в обоих направлениях. Исключён код, специфичный для IDLE, который не выполняется во время модульных тестов.
- [bpo-30913](https://python-all.ru/3/whatsnew/changelog.html): IDLE: документирование tk-переменных, методов и виджетов ConfigDialog в строках документации. Это облегчит улучшение диалога и разделение класса. Первоначальный патч от Cheryl Sabella.
- [bpo-30899](https://python-all.ru/3/whatsnew/changelog.html): IDLE: Добавлены тесты для подклассов ConfigParser в config. Патч от Louie Lu.
- [bpo-30881](https://python-all.ru/3/whatsnew/changelog.html): IDLE: Добавлены строки документации в browser.py. Патч от Cheryl Sabella.
- [bpo-30851](https://python-all.ru/3/whatsnew/changelog.html): IDLE: Удалены неиспользуемые переменные в configdialog. Одна является дубликатом, другая устанавливается, но не может быть изменена пользователями. Патч от Cheryl Sabella.
- [bpo-30870](https://python-all.ru/3/whatsnew/changelog.html): IDLE: В диалоге настроек выбор шрифта с помощью клавиш Up, Down, а также мыши. Первоначальный патч от Louie Lu.
- [bpo-8231](https://python-all.ru/3/whatsnew/changelog.html): IDLE: вызов config.IdleConf.GetUserCfgDir только один раз.
- [bpo-30779](https://python-all.ru/3/whatsnew/changelog.html): IDLE: Выделен класс ConfigChanges из configdialog, помещён в config; добавлены тесты. \* В config код тестового дампа помещён в функцию; запуск её и unittest в 'if \_\_name\_\_ == '\_\_main\_\_''. \* Добавлен класс config.ConfigChanges на основе changes\_class\_v4.py из тикета bpo. \* Добавлен класс test\_config.ChangesTest, частично использующий configdialog\_tests\_v1.py. \* Переработан configdialog для использования ConfigChanges; см. сообщение трекера msg297804. \* Переработан test\_configdialog в соответствии с изменениями configdialog. \* Удалены функции configdialog, неиспользуемые или перемещённые в ConfigChanges. Cheryl Sabella внесла части патча.
- [bpo-30777](https://python-all.ru/3/whatsnew/changelog.html): IDLE: configdialog – добавлены строки документации и исправлены комментарии. Патч от Cheryl Sabella.
- [bpo-30495](https://python-all.ru/3/whatsnew/changelog.html): IDLE: Улучшено textview: добавлены строки документации, имена в стиле PEP8 и дополнительные тесты. Патч от Cheryl Sabella.
- [bpo-30723](https://python-all.ru/3/whatsnew/changelog.html): IDLE: Внесены улучшения в parenmatch. Добавлен стиль 'parens' для подсветки открывающей и закрывающей скобки. Стиль 'default', который не является стилем по умолчанию, сделан синонимом 'opener'. Задержка по времени работает одинаково со всеми стилями. Добавлена справка для вкладки расширений диалога настроек, включая справку по parenmatch. Добавлены новые тесты. Первоначальный патч от Charles Wohlganger.
- [bpo-30674](https://python-all.ru/3/whatsnew/changelog.html): IDLE: добавлены строки документации в модуль grep. Патч от Cheryl Sabella
- [bpo-21519](https://python-all.ru/3/whatsnew/changelog.html): Базовый диалог настройки пользовательских клавиш IDLE теперь корректно обнаруживает дубликаты. Первоначальный патч от Saimadhav Heblikar.
- [bpo-29910](https://python-all.ru/3/whatsnew/changelog.html): IDLE больше не удаляет символ после комментирования региона с помощью горячей клавиши. Добавлен `return 'break'` для этого и других возможных конфликтов между IDLE и стандартными привязками клавиш.
- [bpo-30728](https://python-all.ru/3/whatsnew/changelog.html): Пересмотр и изменение имён в idlelib.configdialog. Имена методов и атрибутов приведены к нижнему регистру. Замена 'colour' на 'color', расшифровка слишком загадочных имён, удаление ненужных подчёркиваний. Замена `import *` на конкретные импорты. Патчи от Cheryl Sabella.
- [bpo-6739](https://python-all.ru/3/whatsnew/changelog.html): IDLE: проверка введённых пользователем последовательностей клавиш путём попытки привязки их через tk. Добавлены тесты для всех 3 функций проверки. Первоначальный патч от G Polo. Тесты добавлены Cheryl Sabella.
- [bpo-15786](https://python-all.ru/3/whatsnew/changelog.html): Исправлено несколько проблем с окном автодополнения IDLE. Теперь должна работать: клик по элементам окна выбора, использование полосы прокрутки, выбор элемента нажатием Return. Зависания на MacOSX больше не должны происходить. Патч от Louie Lu.
- [bpo-25514](https://python-all.ru/3/whatsnew/changelog.html): Добавлен подраздел документации о неудачном запуске IDLE. Всплывающее сообщение об отсутствии соединения направляет пользователей в этот раздел.
- [bpo-30642](https://python-all.ru/3/whatsnew/changelog.html): Исправлены утечки ссылок в тестах IDLE. Патчи от Louie Lu и Terry Jan Reedy.
- [bpo-30495](https://python-all.ru/3/whatsnew/changelog.html): Добавлены докстринги для textview.py и использованы именования по PEP8. Патчи от Cheryl Sabella и Terry Jan Reedy.
- [bpo-30290](https://python-all.ru/3/whatsnew/changelog.html): Help-about: использованы именования по PEP8 и добавлены тесты. Покрытие увеличено до 100%. Патчи от Louie Lu, Cheryl Sabella и Terry Jan Reedy.
- [bpo-30303](https://python-all.ru/3/whatsnew/changelog.html): Добавлена опция \_utest в textview; добавлены новые тесты. Покрытие увеличено до 100%. Патчи от Louie Lu и Terry Jan Reedy.
- [bpo-29071](https://python-all.ru/3/whatsnew/changelog.html): IDLE раскрашивает префиксы f-строк (но не недопустимые префиксы ur).
- [bpo-28572](https://python-all.ru/3/whatsnew/changelog.html): Покрытие test\_configdialog IDLE увеличено на 10%. Обновлено и дополнено описание системы конфигурации.

### Tools/Demos

- [bpo-30983](https://python-all.ru/3/whatsnew/changelog.html): Команды интеграции с gdb (py-bt и др.) теперь работают и в оптимизированных сборках с общими библиотеками. [**PEP 523**](https://python-all.ru/3/whatsnew/changelog.html) ввёл \_PyEval\_EvalFrameDefault, который встраивает PyEval\_EvalFrameEx в неотладочных сборках с общими библиотеками. Это нарушило возможность использования py-bt, py-up и некоторых других интеграций gdb, специфичных для Python. Проблема исправлена поиском только кадров \_PyEval\_EvalFrameDefault в python-gdb.py. Оригинальный патч от Bruno “Polaco” Penteado.
- [bpo-29748](https://python-all.ru/3/whatsnew/changelog.html): В Argument Clinic добавлен конвертер индексов среза.
- [bpo-24037](https://python-all.ru/3/whatsnew/changelog.html): Argument Clinic теперь использует конвертер `bool(accept={int})` вместо `int` для семантических булевых значений. Это позволяет не повторять значение по умолчанию для Python и C и поможет в будущем при переходе на `bool`.
- [bpo-29367](https://python-all.ru/3/whatsnew/changelog.html): python-gdb.py теперь также поддерживает объекты `method-wrapper` (`wrapperobject`).
- [bpo-28023](https://python-all.ru/3/whatsnew/changelog.html): Исправлена проблема: python-gdb.py не поддерживал новую реализацию словаря.
- [bpo-15369](https://python-all.ru/3/whatsnew/changelog.html): Микробенчмарки pybench и pystone удалены из Tools. Используйте новый набор бенчмарков Python [https://github.com/python/pyperformance](https://python-all.ru/3/whatsnew/changelog.html), который более надёжен и включает портативную версию pybench, работающую на Python 2 и Python 3.
- [bpo-28102](https://python-all.ru/3/whatsnew/changelog.html): CLI модуля zipfile теперь выводит справку в stderr. Патч от Stephen J. Turnbull.

### C API

- [bpo-31338](https://python-all.ru/3/whatsnew/changelog.html): Добавлен макрос `Py_UNREACHABLE()` для участков кода, которые никогда не должны достигаться. Этот и несколько других полезных макросов теперь документированы в руководстве по C API.
- [bpo-30832](https://python-all.ru/3/whatsnew/changelog.html): Удалена собственная реализация локального хранилища потоков. CPython предоставлял собственную реализацию TLS в Python/thread.c, которая использовалась в случае отсутствия нативной TLS на платформе. Однако в настоящее время все поддерживаемые платформы (Windows и pthreads) предоставляют нативную TLS и безусловно определяют макрос Py\_HAVE\_NATIVE\_TLS.
- [bpo-30708](https://python-all.ru/3/whatsnew/changelog.html): PyUnicode\_AsWideCharString() теперь возбуждает ValueError, если второй аргумент равен NULL и строка wchar\_t\* содержит нулевые символы.
- [bpo-16500](https://python-all.ru/3/whatsnew/changelog.html): Объявлена устаревшей PyOS\_AfterFork() и добавлены PyOS\_BeforeFork(), PyOS\_AfterFork\_Parent() и PyOS\_AfterFork\_Child().
- [bpo-6532](https://python-all.ru/3/whatsnew/changelog.html): Тип результатов PyThread\_start\_new\_thread() и PyThread\_get\_thread\_ident(), а также параметра id в PyThreadState\_SetAsyncExc() изменён с “long” на “unsigned long”.
- [bpo-27867](https://python-all.ru/3/whatsnew/changelog.html): Функция PySlice\_GetIndicesEx() объявлена устаревшей и заменена макросом, если Py\_LIMITED\_API не установлен или установлен в значение от 0x03050400 до 0x03060000 (не включая) или 0x03060100 и выше. Добавлены функции PySlice\_Unpack() и PySlice\_AdjustIndices().
- [bpo-29083](https://python-all.ru/3/whatsnew/changelog.html): Исправлено объявление некоторых функций публичного API. PyArg\_VaParse() и PyArg\_VaParseTupleAndKeywords() были недоступны в ограниченном API. PyArg\_ValidateKeywordArguments(), PyArg\_UnpackTuple() и Py\_BuildValue() были недоступны в ограниченном API версии \< 3.3 при определённом PY\_SSIZE\_T\_CLEAN.
- [bpo-28769](https://python-all.ru/3/whatsnew/changelog.html): Результат PyUnicode\_AsUTF8AndSize() и PyUnicode\_AsUTF8() теперь имеет тип `const char *`, а не `char *`.
- [bpo-29058](https://python-all.ru/3/whatsnew/changelog.html): Все расширения стабильного API, добавленные после Python 3.2, теперь доступны только если Py\_LIMITED\_API установлен в значение PY\_VERSION\_HEX минимальной версии Python, поддерживающей это API.
- [bpo-28822](https://python-all.ru/3/whatsnew/changelog.html): Параметры индекса *start* и *end* функции PyUnicode\_FindChar() теперь настроены так, чтобы вести себя как `str[start:end]`.
- [bpo-28808](https://python-all.ru/3/whatsnew/changelog.html): PyUnicode\_CompareWithASCIIString() теперь никогда не возбуждает исключений.
- [bpo-28761](https://python-all.ru/3/whatsnew/changelog.html): Поля name и doc структур PyMemberDef, PyGetSetDef, PyStructSequence\_Field, PyStructSequence\_Desc и wrapperbase теперь имеют тип `const char *`, а не `char *`.
- [bpo-28748](https://python-all.ru/3/whatsnew/changelog.html): Приватная переменная \_Py\_PackageContext теперь имеет тип `const char *`, а не `char *`.
- [bpo-19569](https://python-all.ru/3/whatsnew/changelog.html): Теперь выдаются предупреждения компилятора при использовании большинства устаревших функций.
- [bpo-28426](https://python-all.ru/3/whatsnew/changelog.html): Объявлены устаревшими недокументированные функции PyUnicode\_AsEncodedObject(), PyUnicode\_AsDecodedObject(), PyUnicode\_AsDecodedUnicode() и PyUnicode\_AsEncodedUnicode().

## Python 3.6.6 финальный

*Дата выпуска: 2018-06-27*

В версии 3.6.6 не было новых изменений.

## Python 3.6.6 кандидат в релизы 1

*Дата выпуска: 2018-06-11*

### Ядро и встроенные модули

- [bpo-33786](https://python-all.ru/3/whatsnew/changelog.html): Исправлена обработка GeneratorExit в athrow() для асинхронных генераторов.
- [bpo-30654](https://python-all.ru/3/whatsnew/changelog.html): Исправлен сброс обработчика SIGINT на SIG\_DFL при завершении интерпретатора, даже если ранее был установлен пользовательский обработчик. Исправление от Philipp Kerling.
- [bpo-33622](https://python-all.ru/3/whatsnew/changelog.html): Исправлена утечка, когда сборщик мусора не может добавить объект с методом `__del__` или объект, на который он ссылается, в список [`gc.garbage`](https://python-all.ru/3/library/gc.html#gc.garbage). Теперь [`PyGC_Collect()`](https://python-all.ru/3/c-api/gcsupport.html#c.PyGC_Collect) можно вызывать, когда установлено исключение, и он его сохраняет.
- [bpo-31849](https://python-all.ru/3/whatsnew/changelog.html): Исправлено предупреждение о сравнении знаковых/беззнаковых типов в pyhash.c.
- [bpo-33391](https://python-all.ru/3/whatsnew/changelog.html): Исправлена утечка в set\_symmetric\_difference().
- [bpo-28055](https://python-all.ru/3/whatsnew/changelog.html): Исправлены невыровненные обращения в siphash24(). Исправление от Rolf Eike Beer.
- [bpo-33231](https://python-all.ru/3/whatsnew/changelog.html): Исправлена потенциальная утечка памяти в `normalizestring()`.
- [bpo-29922](https://python-all.ru/3/whatsnew/changelog.html): Улучшены сообщения об ошибках в ‘async with’, когда `__aenter__()` или `__aexit__()` возвращают неожидаемый объект.
- [bpo-33199](https://python-all.ru/3/whatsnew/changelog.html): Исправлено: `ma_version_tag` в реализации dict не инициализируется при копировании из key-sharing dict.
- [bpo-33041](https://python-all.ru/3/whatsnew/changelog.html): Исправлен переход, когда функция содержит цикл `async for`.
- [bpo-32282](https://python-all.ru/3/whatsnew/changelog.html): Исправлен лишний ifdef в include VersionHelpers.h в socketmodule на Windows.
- [bpo-21983](https://python-all.ru/3/whatsnew/changelog.html): Исправлен сбой в `ctypes.cast()`, если аргумент типа является структурированным типом данных ctypes. Исправление от Eryk Sun и Oren Milman.

### Библиотека

- [bpo-30167](https://python-all.ru/3/whatsnew/changelog.html): Предотвращено исключение в site.main(), если установлен PYTHONSTARTUP. Исправление от Steve Weber.
- [bpo-33812](https://python-all.ru/3/whatsnew/changelog.html): Экземпляр datetime d с не-None tzinfo, но с d.tzinfo.utcoffset(d), возвращающим None, теперь считается наивным методом astimezone().
- [bpo-30805](https://python-all.ru/3/whatsnew/changelog.html): Устранено состояние гонки при ведении отладочного журнала.
- [bpo-33767](https://python-all.ru/3/whatsnew/changelog.html): Операции конкатенации (`+`) и повторения (`*`) последовательностей теперь вызывают [`TypeError`](https://python-all.ru/3/library/exceptions.html#TypeError) вместо [`SystemError`](https://python-all.ru/3/library/exceptions.html#SystemError) при выполнении над объектами [`mmap.mmap`](https://python-all.ru/3/library/mmap.html#mmap.mmap). Исправление от Zackery Spytz.
- [bpo-32684](https://python-all.ru/3/whatsnew/changelog.html): Исправлено: gather теперь распространяет отмену самой себя даже с return\_exceptions.
- [bpo-33674](https://python-all.ru/3/whatsnew/changelog.html): Исправлено состояние гонки в SSLProtocol.connection\_made() из asyncio.sslproto: запускать рукопожатие немедленно, а не через call\_soon(). Ранее data\_received() мог быть вызван до начала рукопожатия, что приводило к зависанию или сбою рукопожатия.
- [bpo-31647](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка, при которой вызов write\_eof() на \_SelectorSocketTransport после его закрытия вызывал AttributeError.
- [bpo-33672](https://python-all.ru/3/whatsnew/changelog.html): Исправлен сбой Task.\_\_repr\_\_ с некорректными корутинами Cython.
- [bpo-33469](https://python-all.ru/3/whatsnew/changelog.html): Исправлен RuntimeError после закрытия цикла, который использовал run\_in\_executor.
- [bpo-11874](https://python-all.ru/3/whatsnew/changelog.html): Использовать улучшенное регулярное выражение при разбиении usage на части для переноса. Избегает ложных ошибок утверждения из пользовательских строк metavar.
- [bpo-30877](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка в Python-реализации декодера JSON, которая препятствовала очистке кэша разобранных строк после завершения декодирования. Основано на исправлении от c-fos.
- [bpo-33548](https://python-all.ru/3/whatsnew/changelog.html): tempfile.\_candidate\_tempdir\_list должен учитывать общие расположения TEMP
- [bpo-33542](https://python-all.ru/3/whatsnew/changelog.html): Предотвратить использование `uuid.get_node` DUID вместо MAC на Windows. Исправление от Zvi Effron
- [bpo-26819](https://python-all.ru/3/whatsnew/changelog.html): Исправлено состояние гонки с `ReadTransport.resume_reading` в цикле событий Windows proactor.
- [bpo-28556](https://python-all.ru/3/whatsnew/changelog.html): Небольшие исправления в модуле typing: добавлены аннотации к `NamedTuple.__new__`, передаются `*args` и `**kwds` в `Generic.__new__`. Оригинальные PR от Paulius Šarka и Chad Dombrova.
- [bpo-20087](https://python-all.ru/3/whatsnew/changelog.html): Обновлено соответствие алиасов с учётом локалей, поддерживаемых glibc 2.27.
- [bpo-33422](https://python-all.ru/3/whatsnew/changelog.html): Исправлено удаление завершающих кавычек при поиске буквальных значений байтов/строк в pydoc. Патч от Andrés Delfino.
- [bpo-33197](https://python-all.ru/3/whatsnew/changelog.html): Обновлено сообщение об ошибке при создании недопустимого inspect.Parameters. Патч от Donghee Na.
- [bpo-33383](https://python-all.ru/3/whatsnew/changelog.html): Исправлен сбой в методе get() объекта базы данных [`dbm.ndbm`](https://python-all.ru/3/library/dbm.html#module-dbm.ndbm) при вызове с одним аргументом.
- [bpo-33329](https://python-all.ru/3/whatsnew/changelog.html): Исправлена регрессия модуля multiprocessing на новых версиях glibc
- [bpo-991266](https://python-all.ru/3/whatsnew/changelog.html): Исправлено экранирование атрибута `Comment` [`http.cookies.SimpleCookie`](https://python-all.ru/3/library/http.cookies.html#http.cookies.SimpleCookie).
- [bpo-33131](https://python-all.ru/3/whatsnew/changelog.html): Обновлена встроенная версия pip до 10.0.1.
- [bpo-33308](https://python-all.ru/3/whatsnew/changelog.html): Исправлен сбой в модуле `parser` при преобразовании объекта ST в дерево кортежей или списков с помощью `line_info=False` и `col_info=True`.
- [bpo-33263](https://python-all.ru/3/whatsnew/changelog.html): Исправлена утечка файловых дескрипторов в `_SelectorSocketTransport`. Патч от Vlad Starostin.
- [bpo-33256](https://python-all.ru/3/whatsnew/changelog.html): Исправлено отображение вызова `<module>` в HTML, созданном `cgitb.html()`. Патч от Stéphane Blondon.
- [bpo-33203](https://python-all.ru/3/whatsnew/changelog.html): `random.Random.choice()` теперь последовательно вызывает `IndexError` для пустых последовательностей, даже при вызове из подклассов без реализации `getrandbits()`.
- [bpo-33224](https://python-all.ru/3/whatsnew/changelog.html): Обновлён difflib.mdiff() в соответствии с [**PEP 479**](https://python-all.ru/3/whatsnew/changelog.html). Непойманное StopIteration в генераторе преобразуется в return.
- [bpo-33209](https://python-all.ru/3/whatsnew/changelog.html): Завершение фрейминга в конце C-реализации [`pickle.Pickler.dump()`](https://python-all.ru/3/library/pickle.html#pickle.Pickler.dump).
- [bpo-32861](https://python-all.ru/3/whatsnew/changelog.html): Представление `__str__` в urllib.robotparser теперь включает записи с подстановочными символами и поля «Crawl-delay» и «Request-rate». Патч от Michael Lazar.
- [bpo-33096](https://python-all.ru/3/whatsnew/changelog.html): Разрешена вставка iid с ложным булевым значением в ttk.Treeview.insert. Обратите внимание, что iid=0 и iid=False будут одинаковы. Патч от Garvit Khatri.
- [bpo-33127](https://python-all.ru/3/whatsnew/changelog.html): Модуль ssl теперь компилируется с LibreSSL 2.7.1.
- [bpo-33021](https://python-all.ru/3/whatsnew/changelog.html): Освобождение GIL при вызовах fstat(), что предотвращает зависание всех потоков при вызове mmap.mmap(), os.urandom() и random.seed(). Патч от Nir Soffer.
- [bpo-27683](https://python-all.ru/3/whatsnew/changelog.html): Исправлена регрессия в [`ipaddress`](https://python-all.ru/3/library/ipaddress.html#module-ipaddress), из-за которой результат `hosts()` оказывался пустым, когда сеть строится из кортежа, содержащего целочисленную маску и только 1 бит для адресов.
- [bpo-32844](https://python-all.ru/3/whatsnew/changelog.html): Исправлена некорректная перенаправление низкого дескриптора (0 или 1) в stderr в подпроцессе, если другой низкий дескриптор закрыт.
- [bpo-31908](https://python-all.ru/3/whatsnew/changelog.html): Исправлен вывод файлов покрытия для инструмента командной строки модуля `trace`. Ранее файлы покрытия создавались только при использовании опции `--missing`. Патч от Michael Selik.
- [bpo-31457](https://python-all.ru/3/whatsnew/changelog.html): При использовании вложенных адаптеров логов внутренние методы `process()` больше не пропускаются.
- [bpo-16865](https://python-all.ru/3/whatsnew/changelog.html): Поддержка массивов размером \>=2 ГБ в [`ctypes`](https://python-all.ru/3/library/ctypes.html#module-ctypes). Патч от Segev Finer.
- [bpo-31238](https://python-all.ru/3/whatsnew/changelog.html): pydoc: метод stop() приватного класса ServerThread теперь ожидает завершения DocServer.serve\_until\_quit(), после чего явно устанавливает атрибут docserver в None для разрыва цикла ссылок.

### Документация

- [bpo-33503](https://python-all.ru/3/whatsnew/changelog.html): Исправлена битая ссылка на PyPI
- [bpo-33421](https://python-all.ru/3/whatsnew/changelog.html): Добавлена недостающая документация для `typing.AsyncContextManager`.
- [bpo-33378](https://python-all.ru/3/whatsnew/changelog.html): Добавлен переключатель на корейский язык для [https://docs.python.org/3/](https://python-all.ru/3/index.html)
- [bpo-33276](https://python-all.ru/3/whatsnew/changelog.html): Уточнено, что атрибут `__path__` у модулей не может быть произвольным значением.
- [bpo-33201](https://python-all.ru/3/whatsnew/changelog.html): Модернизация документации по написанию C-расширений типов.
- [bpo-33195](https://python-all.ru/3/whatsnew/changelog.html): Помечено как устаревшее использование `Py_UNICODE` в документе `c-api/arg`. Связанные с `Py_UNICODE` API устарели начиная с Python 3.3, но это было пропущено в документе.
- [bpo-33126](https://python-all.ru/3/whatsnew/changelog.html): Документирована функция PyBuffer\_ToContiguous().
- [bpo-27212](https://python-all.ru/3/whatsnew/changelog.html): Изменена документация рецепта `islice()`, чтобы он потреблял начальные значения до начального индекса.
- [bpo-28247](https://python-all.ru/3/whatsnew/changelog.html): Обновлена документация [`zipapp`](https://python-all.ru/3/library/zipapp.html#module-zipapp) с описанием создания автономных приложений.
- [bpo-18802](https://python-all.ru/3/whatsnew/changelog.html): Изменения в документации для ipaddress. Патч от Jon Foster и Berker Peksag.
- [bpo-27428](https://python-all.ru/3/whatsnew/changelog.html): Обновлена документация, чтобы уточнить, что `WindowsRegistryFinder` реализует `MetaPathFinder`. (Патч от Himanshu Lakhara)
- [bpo-8243](https://python-all.ru/3/whatsnew/changelog.html): Добавлено примечание об исключениях curses.addch и curses.addstr при записи за пределами окна или pad.
- [bpo-31432](https://python-all.ru/3/whatsnew/changelog.html): Уточнено значение флагов CERT\_NONE, CERT\_OPTIONAL и CERT\_REQUIRED для ssl.SSLContext.verify\_mode.

### Тесты

- [bpo-33655](https://python-all.ru/3/whatsnew/changelog.html): Игнорировать сбои test\_posix\_fallocate на платформах BSD, которые могут быть связаны с работой на ZFS.
- [bpo-19417](https://python-all.ru/3/whatsnew/changelog.html): Добавлен test\_bdb.py.

### Сборка

- [bpo-5755](https://python-all.ru/3/whatsnew/changelog.html): Переместить параметр `-Wstrict-prototypes` в `CFLAGS_NODIST` из `OPT`. Этот параметр выдавал раздражающие предупреждения при сборке расширений, написанных на C++.
- [bpo-33614](https://python-all.ru/3/whatsnew/changelog.html): Обеспечивает корректное пересоздание файлов определений модулей для стабильного ABI на Windows.
- [bpo-33522](https://python-all.ru/3/whatsnew/changelog.html): Включены сборки CI на Visual Studio Team Services на [https://python.visualstudio.com/cpython](https://python-all.ru/3/whatsnew/changelog.html)
- [bpo-33012](https://python-all.ru/3/whatsnew/changelog.html): Добавлен `-Wno-cast-function-type` для gcc 8 для подавления предупреждений о приведении типов функций, например, приведении к PyCFunction в списках определений методов.
- [bpo-33394](https://python-all.ru/3/whatsnew/changelog.html): Включён подробный вывод сборки для модулей расширения, когда в GNU make передаются макросы из командной строки.

### Windows

- [bpo-33184](https://python-all.ru/3/whatsnew/changelog.html): Обновлён установщик Windows до OpenSSL 1.0.2o.

### macOS

- [bpo-33184](https://python-all.ru/3/whatsnew/changelog.html): Обновлён установщик macOS до OpenSSL 1.0.2o.

### IDLE

- [bpo-33656](https://python-all.ru/3/whatsnew/changelog.html): В Windows добавлен вызов API, указывающий, что tk масштабирует под DPI. На Windows 8.1+ или 10, если свойства совместимости DPI двоичного файла Python не изменены, а разрешение монитора больше 96 DPI, это должно сделать текст и линии более чёткими. В остальных случаях эффекта не будет.
- [bpo-33768](https://python-all.ru/3/whatsnew/changelog.html): Щелчок по строке контекста перемещает эту строку в начало окна редактора.
- [bpo-33763](https://python-all.ru/3/whatsnew/changelog.html): IDLE: используется виджет только для чтения для контекста кода вместо виджета метки.
- [bpo-33664](https://python-all.ru/3/whatsnew/changelog.html): Прокрутка текста редактора IDLE по строкам. Раньше колесо мыши и ползунок полосы прокрутки перемещали текст на фиксированное количество пикселей, в результате чего в верхней части окна редактора отображались неполные строки. Это изменение также применяется к окнам оболочки и вывода grep, но не к текстовым представлениям только для чтения.
- [bpo-33679](https://python-all.ru/3/whatsnew/changelog.html): Включена конфигурация цветов для контекста кода, зависящая от темы. Используйте вкладку Highlights, чтобы увидеть настройки для встроенных тем или добавить настройки в пользовательские темы.
- [bpo-33642](https://python-all.ru/3/whatsnew/changelog.html): Отображать до maxlines непустых строк для контекста кода. Если текущий контекст отсутствует, показывать одну пустую строку.
- [bpo-33628](https://python-all.ru/3/whatsnew/changelog.html): IDLE: очистка codecontext.py и его теста.
- [bpo-33564](https://python-all.ru/3/whatsnew/changelog.html): Контекст кода IDLE теперь распознаёт async как открывающий блок.
- [bpo-29706](https://python-all.ru/3/whatsnew/changelog.html): IDLE теперь подсвечивает async и await как ключевые слова в 3.6. Они становятся полноценными ключевыми словами в 3.7.
- [bpo-21474](https://python-all.ru/3/whatsnew/changelog.html): Обновлено определение слова/идентификатора с ascii до unicode. В текстовых полях и полях ввода это влияет на выделение двойным щелчком, перемещение влево/вправо с помощью Control+влево/вправо и удаление влево/вправо с помощью Control+BACKSPACE/DEL.
- [bpo-33204](https://python-all.ru/3/whatsnew/changelog.html): IDLE: последовательно подсвечивать недопустимые префиксы строк. Префикс строки ‘u’ не может сочетаться с ‘r’ или ‘f’. Последовательно подсвечивать столько символов префикса, начиная справа, сколько является допустимым. Исправлен и расширен тест раскраски.
- [bpo-32831](https://python-all.ru/3/whatsnew/changelog.html): Добавлены докстринги и тесты для codecontext.

### Tools/Demos

- [bpo-33189](https://python-all.ru/3/whatsnew/changelog.html): **pygettext.py** теперь распознает только строковые литералы как докстринги и переводимые строки, и отвергает байтовые литералы и f-строковые выражения.
- [bpo-31920](https://python-all.ru/3/whatsnew/changelog.html): Исправлена обработка каталогов как аргументов в скрипте `pygettext`. Основано на патче Олега Красникова.
- [bpo-29673](https://python-all.ru/3/whatsnew/changelog.html): Исправлены макросы pystackv и pystack gdbinit.
- [bpo-32885](https://python-all.ru/3/whatsnew/changelog.html): Добавлен флаг `-n` для `Tools/scripts/pathfix.py`, чтобы отключить автоматическое создание резервных копий (файлы с суффиксом `~`).
- [bpo-31583](https://python-all.ru/3/whatsnew/changelog.html): Исправлена работа 2to3 при использовании с опцией –add-suffix без опции –output-dir для относительного пути к файлам в текущем каталоге.

### C API

- [bpo-32374](https://python-all.ru/3/whatsnew/changelog.html): Документировано, что m\_traverse для модулей, инициализируемых в несколько этапов, может вызываться с m\_state=NULL, и добавлена проверка корректности.

## Python 3.6.5 final

*Дата выпуска: 2018-03-28*

### Тесты

- [bpo-32872](https://python-all.ru/3/whatsnew/changelog.html): Устранена проблема совместимости regrtest с пакетами пространств имен.

### Сборка

- [bpo-33163](https://python-all.ru/3/whatsnew/changelog.html): Обновлены pip до 9.0.3 и setuptools до v39.0.1.

## Python 3.6.5 release candidate 1

*Дата выпуска: 2018-03-13*

### Безопасность

- [bpo-33001](https://python-all.ru/3/whatsnew/changelog.html): Минимальное исправление для предотвращения переполнения буфера в os.symlink в Windows.
- [bpo-32981](https://python-all.ru/3/whatsnew/changelog.html): Регулярные выражения в difflib и poplib были уязвимы для катастрофического обратного отслеживания. Эти регулярные выражения представляли потенциальные векторы DOS (REDOS). Они были реорганизованы. Это исправляет [**CVE 2018-1060**](https://python-all.ru/3/whatsnew/changelog.html) и [**CVE 2018-1061**](https://python-all.ru/3/whatsnew/changelog.html). Патч от Jamie Davis.

### Ядро и встроенные функции

- [bpo-33026](https://python-all.ru/3/whatsnew/changelog.html): Исправлен выход из блока “with” путем установки f\_lineno.
- [bpo-17288](https://python-all.ru/3/whatsnew/changelog.html): Предотвращены переходы из событий трассировки 'возврат' и 'исключение'.
- [bpo-32889](https://python-all.ru/3/whatsnew/changelog.html): Обновлен список подавления Valgrind с учетом переименования `Py_ADDRESS_IN_RANG` в `address_in_range`.
- [bpo-32650](https://python-all.ru/3/whatsnew/changelog.html): Pdb и другие отладчики, зависящие от bdb.py, теперь корректно выполняют шаг (команда next) через нативные корутины. Патч от Pablo Galindo.
- [bpo-32685](https://python-all.ru/3/whatsnew/changelog.html): Улучшено предложение, когда форма оператора print из Python 2 находится на той же строке, что и заголовок составного оператора, или завершается точкой с запятой вместо перевода строки. Патч от Nitish Chandra.
- [bpo-32583](https://python-all.ru/3/whatsnew/changelog.html): Исправлена возможная аварийная остановка встроенных декодеров Unicode, вызванная ошибками записи за границы при использовании пользовательских обработчиков ошибок декодирования.
- [bpo-26163](https://python-all.ru/3/whatsnew/changelog.html): Улучшен хеш frozenset() для создания более различающихся значений хеша при работе с наборами данных, содержащими много похожих значений.
- [bpo-27169](https://python-all.ru/3/whatsnew/changelog.html): Константа `__debug__` теперь оптимизируется на этапе компиляции. Это также исправляет [bpo-22091](https://python-all.ru/3/whatsnew/changelog.html).
- [bpo-32329](https://python-all.ru/3/whatsnew/changelog.html): `sys.flags.hash_randomization` теперь корректно устанавливается в 0, когда рандомизация хеша отключена с помощью `PYTHONHASHSEED=0`.
- [bpo-30416](https://python-all.ru/3/whatsnew/changelog.html): Оптимизатор теперь защищен от затрат значительного времени на выполнение сложных вычислений и потребления большого объема памяти при создании больших констант в процессе свертки констант.
- [bpo-18533](https://python-all.ru/3/whatsnew/changelog.html): `repr()` для словаря, содержащего свой собственный `values()` или `items()`, больше не вызывает `RecursionError`; аналогично для OrderedDict. Вместо этого используйте `...`, как и для других рекурсивных структур. Патч от Ben North.
- [bpo-32028](https://python-all.ru/3/whatsnew/changelog.html): Начальные пробелы теперь корректно игнорируются при генерации подсказок для преобразования операторов print из Python 2 во встроенную функцию print в Python 3. Исправление от Sanyam Khurana.
- [bpo-32137](https://python-all.ru/3/whatsnew/changelog.html): Представление (repr) глубоко вложенного словаря теперь вызывает RecursionError вместо аварийного завершения из-за переполнения стека.

### Библиотека

- [bpo-33064](https://python-all.ru/3/whatsnew/changelog.html): lib2to3 теперь корректно поддерживает завершающие запятые после `*args` и `**kwargs` в сигнатурах функций.
- [bpo-31804](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка в multiprocessing.Process, если стандартные потоки были закрыты или равны None при завершении.
- [bpo-33037](https://python-all.ru/3/whatsnew/changelog.html): Пропуск отправки/получения данных после закрытия SSL-транспорта.
- [bpo-30353](https://python-all.ru/3/whatsnew/changelog.html): Исправлена передача структур по значению в ctypes на 64-разрядных Cygwin/MinGW.
- [bpo-33009](https://python-all.ru/3/whatsnew/changelog.html): Исправлена работа inspect.signature() для partialmethod с одним параметром.
- [bpo-32969](https://python-all.ru/3/whatsnew/changelog.html): Открыт доступ к нескольким отсутствовавшим константам в zlib и исправлена соответствующая документация.
- [bpo-32713](https://python-all.ru/3/whatsnew/changelog.html): Исправлена обработка выходящих за границы значений с плавающей запятой в tarfile.itn. Исправление от Joffrey Fuhrer.
- [bpo-30622](https://python-all.ru/3/whatsnew/changelog.html): Модуль ssl теперь обнаруживает отсутствие поддержки NPN в LibreSSL.
- [bpo-32922](https://python-all.ru/3/whatsnew/changelog.html): dbm.open() теперь кодирует имя файла с использованием кодировки файловой системы вместо кодировки по умолчанию.
- [bpo-32859](https://python-all.ru/3/whatsnew/changelog.html): В `os.dup2` больше не проверяется каждый вызов на существование системного вызова `dup3`.
- [bpo-21060](https://python-all.ru/3/whatsnew/changelog.html): Запутанное сообщение от setup.py upload переписано с «No dist file created in earlier command» на более понятное «Must create and upload files in one command».
- [bpo-32857](https://python-all.ru/3/whatsnew/changelog.html): В [`tkinter`](https://python-all.ru/3/library/tkinter.html#module-tkinter), `after_cancel(None)` теперь вызывает [`ValueError`](https://python-all.ru/3/library/exceptions.html#ValueError) вместо отмены первой запланированной функции. Исправление от Cheryl Sabella.
- [bpo-32852](https://python-all.ru/3/whatsnew/changelog.html): Обеспечено сохранение sys.argv в виде списка при запуске trace.
- [bpo-32841](https://python-all.ru/3/whatsnew/changelog.html): Исправлена проблема `asyncio.Condition`, которая молча игнорировала отмену после уведомления и отмены условной блокировки. Исправление от Bar Harel.
- [bpo-31787](https://python-all.ru/3/whatsnew/changelog.html): Исправлены утечки ссылок (refleaks) методов `__init__()` в различных модулях. (Вклад от Oren Milman)
- [bpo-30157](https://python-all.ru/3/whatsnew/changelog.html): Исправлено угадывание символа кавычек и разделителя в csv.Sniffer.sniff(), когда только последнее поле заключено в кавычки. Исправление от Jake Davis.
- [bpo-32394](https://python-all.ru/3/whatsnew/changelog.html): socket: удаление флагов TCP\_FASTOPEN, TCP\_KEEPCNT в старых версиях Windows во время выполнения.
- [bpo-32777](https://python-all.ru/3/whatsnew/changelog.html): Исправлена редкая, но потенциальная взаимоблокировка дочернего процесса перед exec в подпроцессе на системах POSIX при пометке файловых дескрипторов наследуемыми при exec в дочернем процессе. Эта ошибка, по-видимому, была введена в 3.4.
- [bpo-32647](https://python-all.ru/3/whatsnew/changelog.html): Модуль ctypes ранее зависел от косвенной компоновки для dlopen. Теперь общее расширение явно компонуется с libdl на платформах, где есть dl.
- [bpo-32734](https://python-all.ru/3/whatsnew/changelog.html): Исправлена проблема безопасности `asyncio.Lock()`, которая позволяла захватывать и блокировать одну и ту же блокировку несколько раз, не освобождая её. Исправление от Bar Harel.
- [bpo-32727](https://python-all.ru/3/whatsnew/changelog.html): Не включать поле name в адрес отправителя SMTP-конверта. Исправление от Stéphane Wirtel.
- [bpo-27931](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка парсинга заголовка email-адреса, когда имя пользователя – пустая строка в кавычках. Исправление от Xiang Zhang.
- [bpo-32304](https://python-all.ru/3/whatsnew/changelog.html): Команда upload из distutils больше не повреждает tar-файлы, заканчивающиеся байтом CR, и больше не пытается преобразовывать CR в CRLF в любых текстовых полях загрузки.
- [bpo-32502](https://python-all.ru/3/whatsnew/changelog.html): uuid.uuid1 больше не вызывает исключение при обнаружении 64-битного аппаратного адреса.
- [bpo-31848](https://python-all.ru/3/whatsnew/changelog.html): Исправлена обработка ошибок в Aifc\_read.initfp(), когда не найден блок SSND. Исправление от Zackery Spytz.
- [bpo-32555](https://python-all.ru/3/whatsnew/changelog.html): На FreeBSD и Solaris os.strerror() теперь всегда декодирует байтовую строку из текущей кодировки локали, вместо использования ASCII/surrogateescape в некоторых случаях.
- [bpo-32521](https://python-all.ru/3/whatsnew/changelog.html): Модуль nis теперь совместим с новыми libnsl и расположением заголовочных файлов.
- [bpo-32473](https://python-all.ru/3/whatsnew/changelog.html): Улучшена читаемость вывода ABCMeta.\_dump\_registry()
- [bpo-32521](https://python-all.ru/3/whatsnew/changelog.html): glibc удалил Sun RPC. Используйте замену – заголовки и библиотеку libtirpc в модуле nis.
- [bpo-32228](https://python-all.ru/3/whatsnew/changelog.html): Обеспечено сохранение `truncate()` позиции в файле (как сообщает `tell()`) после записи длиннее размера буфера.
- [bpo-26133](https://python-all.ru/3/whatsnew/changelog.html): При завершении интерпретатора больше не отписываться от сигналов в цикле событий asyncio UNIX.
- [bpo-32185](https://python-all.ru/3/whatsnew/changelog.html): Модуль SSL больше не отправляет IP-адреса в расширении SNI TLS на платформах с OpenSSL 1.0.2+ или inet\_pton.
- [bpo-32323](https://python-all.ru/3/whatsnew/changelog.html): [`urllib.parse.urlsplit()`](https://python-all.ru/3/library/urllib.parse.html#urllib.parse.urlsplit) теперь не преобразует zone-id (scope) в нижний регистр для scoped IPv6-адресов в именах хостов.
- [bpo-32302](https://python-all.ru/3/whatsnew/changelog.html): Исправление bdist\_wininst из distutils для CRT v142: теперь он бинарно совместим с CRT v140.
- [bpo-32255](https://python-all.ru/3/whatsnew/changelog.html): Одно пустое поле теперь всегда заключается в кавычки при записи в CSV-файл. Это позволяет отличить пустую строку от строки, состоящей из одного пустого поля. Патч от Licht Takeuchi.
- [bpo-32277](https://python-all.ru/3/whatsnew/changelog.html): Возбуждать `NotImplementedError` вместо `SystemError` на платформах, где `chmod(..., follow_symlinks=False)` не поддерживается. Патч от Anthony Sottile.
- [bpo-32199](https://python-all.ru/3/whatsnew/changelog.html): Геттер ip в getnode() теперь использует «ip link» вместо «ip link list».
- [bpo-27456](https://python-all.ru/3/whatsnew/changelog.html): Обеспечена установка TCP\_NODELAY на Linux. Тесты от Victor Stinner.
- [bpo-31900](https://python-all.ru/3/whatsnew/changelog.html): Функция [`locale.localeconv()`](https://python-all.ru/3/library/locale.html#locale.localeconv) теперь временно устанавливает локаль `LC_CTYPE` на локаль `LC_NUMERIC` для декодирования байтовых строк `decimal_point` и `thousands_sep`, если они не-ASCII или длиннее 1 байта, и локаль `LC_NUMERIC` отличается от локали `LC_CTYPE`. Это временное изменение затрагивает другие потоки. Аналогичное изменение для метода [`str.format()`](https://python-all.ru/3/library/stdtypes.html#str.format) при форматировании числа ([`int`](https://python-all.ru/3/library/functions.html#int), [`float`](https://python-all.ru/3/library/functions.html#float), `float` и подклассы) с типом `n` (например, `'{:n}'.format(1234)`).
- [bpo-31802](https://python-all.ru/3/whatsnew/changelog.html): Импорт нативного модуля путей (`posixpath`, `ntpath`) теперь работает, даже если модуль `os` ещё не импортирован.

### Документация

- [bpo-17232](https://python-all.ru/3/whatsnew/changelog.html): Уточнена документация для -O и -OO. Патч от Terry Reedy.
- [bpo-32800](https://python-all.ru/3/whatsnew/changelog.html): Обновлена ссылка на документ w3c для пространств имён XML по умолчанию.
- [bpo-8722](https://python-all.ru/3/whatsnew/changelog.html): Документировать поведение `__getattr__()`, когда метод свойства `get()` возбуждает [`AttributeError`](https://python-all.ru/3/library/exceptions.html#AttributeError).
- [bpo-32614](https://python-all.ru/3/whatsnew/changelog.html): Изменены примеры регулярных выражений в документации для использования сырых строк во избежание [`DeprecationWarning`](https://python-all.ru/3/library/exceptions.html#DeprecationWarning), и добавлен текст в REGEX HOWTO, чтобы подчеркнуть устаревание.
- [bpo-31972](https://python-all.ru/3/whatsnew/changelog.html): Улучшены строки документации для подклассов `pathlib.PurePath`.
- [bpo-17799](https://python-all.ru/3/whatsnew/changelog.html): Объяснить реальное поведение sys.settrace и sys.setprofile и их аналогов из C API относительно того, какие типы событий принимаются в каждой функции. Патч от Pablo Galindo Salgado.

### Тесты

- [bpo-32517](https://python-all.ru/3/whatsnew/changelog.html): Исправлен сбой `test_asyncio` на macOS 10.12.2+, возникший из-за того, что транспорт цикла `KqueueSelector` не закрывался.
- [bpo-32721](https://python-all.ru/3/whatsnew/changelog.html): Исправлен test\_hashlib, чтобы он не падал, если модуль \_md5 не собран.
- [bpo-32252](https://python-all.ru/3/whatsnew/changelog.html): Исправлена faulthandler\_suppress\_crash\_report(), используемая для предотвращения файлов core dump при тестировании аварийных завершений. getrlimit() возвращает ноль при успехе.
- [bpo-31518](https://python-all.ru/3/whatsnew/changelog.html): В Debian Unstable отключены TLS 1.0 и 1.1 для SSLv23\_METHOD(). Изменён протокол TLS/SSL некоторых тестов на PROTOCOL\_TLS или PROTOCOL\_TLSv1\_2, чтобы они проходили на Debian.

### Сборка

- [bpo-32635](https://python-all.ru/3/whatsnew/changelog.html): Исправлено падение (segfault) модуля crypt, когда в системе предоставляется libxcrypt вместо libcrypt.

### Windows

- [bpo-33016](https://python-all.ru/3/whatsnew/changelog.html): Исправлено потенциальное использование неинициализированной памяти в nt.\_getfinalpathname.
- [bpo-32903](https://python-all.ru/3/whatsnew/changelog.html): Исправлена утечка памяти в os.chdir() на Windows, если текущий каталог задан через UNC-путь.
- [bpo-31966](https://python-all.ru/3/whatsnew/changelog.html): Исправлен WindowsConsoleIO.write() для записи пустых данных.
- [bpo-32409](https://python-all.ru/3/whatsnew/changelog.html): Обеспечена возможность activate.bat обрабатывать содержимое в Юникоде.
- [bpo-32457](https://python-all.ru/3/whatsnew/changelog.html): Улучшена обработка денормализованного пути к исполняемому файлу при запуске Python.
- [bpo-32370](https://python-all.ru/3/whatsnew/changelog.html): Использовать правильную кодировку для вывода ipconfig в модуле uuid. Патч от Segev Finer.
- [bpo-29248](https://python-all.ru/3/whatsnew/changelog.html): Исправлена [`os.readlink()`](https://python-all.ru/3/library/os.html#os.readlink) в Windows, которая ошибочно tрактовала поле `PrintNameOffset` буфера данных reparse как количество символов вместо количества байтов. Патч от Craig Holmquist и SSE4.
- [bpo-32588](https://python-all.ru/3/whatsnew/changelog.html): Создан отдельный модуль \_distutils\_findvs.

### macOS

- [bpo-32726](https://python-all.ru/3/whatsnew/changelog.html): Предоставлен дополнительный, более современный вариант установщика macOS, поддерживающий системы macOS 10.9+ только в 64-битном режиме. Выполнено обновление поставляемых сторонних библиотек до OpenSSL 1.0.2n, XZ 5.2.3 и SQLite 3.22.0. Установщик для 10.9+ теперь связывается и поставляет собственную копию Tcl/Tk 8.6.8.

### IDLE

- [bpo-32984](https://python-all.ru/3/whatsnew/changelog.html): Установка `__file__` во время выполнения файла запуска. Как и Python, IDLE опционально выполняет один файл запуска в окне Shell перед выводом первого интерактивного приглашения. Для IDLE `-s` запускает файл, указанный в переменной окружения `IDLESTARTUP` или [`PYTHONSTARTUP`](https://python-all.ru/3/using/cmdline.html#envvar-PYTHONSTARTUP); `-r file` запускает `file`. Python устанавливает `__file__` в имя файла запуска перед его выполнением и сбрасывает его перед первым приглашением. Теперь IDLE делает то же самое при нормальном запуске, без опции `-n`.
- [bpo-32940](https://python-all.ru/3/whatsnew/changelog.html): Упрощение и переименование StringTranslatePseudoMapping в pyparse.
- [bpo-32916](https://python-all.ru/3/whatsnew/changelog.html): Изменение `str` на `code` в pyparse.
- [bpo-32905](https://python-all.ru/3/whatsnew/changelog.html): Удаление неиспользуемого кода в модуле pyparse.
- [bpo-32874](https://python-all.ru/3/whatsnew/changelog.html): Добавлены тесты для pyparse.
- [bpo-32837](https://python-all.ru/3/whatsnew/changelog.html): Использование системной и зависимой от локали кодировки по умолчанию для open() – плохая идея для системно-независимых файлов IDLE.
- [bpo-32826](https://python-all.ru/3/whatsnew/changelog.html): Добавлено “encoding=utf-8” для open() в тесте test\_help\_about IDLE. GUI-тест test\_file\_buttons() проверяет только начальные строки, содержащие исключительно ascii, но завершался ошибкой в системах, где open() по умолчанию использует ‘ascii’, поскольку readline() внутренне читает и декодирует достаточно далеко, чтобы встретить не-ascii символ в CREDITS.txt.
- [bpo-32765](https://python-all.ru/3/whatsnew/changelog.html): Обновлена docstring вкладки General в configdialog для добавления новых виджетов в список виджетов.

### Tools/Demos

- [bpo-24960](https://python-all.ru/3/whatsnew/changelog.html): 2to3 и lib2to3 теперь могут читать сериализованные файлы грамматик с помощью pkgutil.get\_data() вместо обращения к файловой системе. Это позволяет 2to3 и lib2to3 работать при запуске из zip-файла.
- [bpo-32222](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка pygettext, не извлекавшей docstrings для функций с аннотированными типами аргументов. Патч от Toby Harradine.

### C API

- [bpo-29084](https://python-all.ru/3/whatsnew/changelog.html): Незадокументированный C API для OrderedDict был исключён из ограниченного C API. Он был добавлен по ошибке и фактически никогда не работал в ограниченном C API.

## Python 3.6.4 final

*Дата выхода: 2017-12-18*

В версии 3.6.4 по сравнению с v3.6.4rc1 не было внесено никаких новых изменений кода.

## Python 3.6.4 release candidate 1

*Дата выхода: 2017-12-05*

### Ядро и встроенные функции

- [bpo-32176](https://python-all.ru/3/whatsnew/changelog.html): co\_flags.CO\_NOFREE теперь всегда корректно устанавливается конструктором объекта кода на основе freevars и cellvars, вместо необходимости корректной установки вызывающим кодом. Это гарантирует, что он будет автоматически сброшен при добавлении дополнительных cell-ссылок в изменённый объект кода и функцию.
- [bpo-31949](https://python-all.ru/3/whatsnew/changelog.html): Исправлено несколько проблем при выводе трассировок (PyTraceBack\_Print()). Установка sys.tracebacklimit в 0 или меньше теперь подавляет вывод трассировок. Установка sys.tracebacklimit в None теперь приводит к использованию лимита по умолчанию. Установка sys.tracebacklimit в целое число больше LONG\_MAX теперь означает использование лимита LONG\_MAX вместо лимита по умолчанию. Исправлены целочисленные переполнения в случае более чем `2**31` элементов трассировки в Windows. Исправлена обработка ошибок вывода.
- [bpo-30696](https://python-all.ru/3/whatsnew/changelog.html): Исправлено бесконечное зацикливание интерактивного интерпретатора при нехватке памяти.
- [bpo-20047](https://python-all.ru/3/whatsnew/changelog.html): Методы bytearray partition() и rpartition() теперь принимают в качестве разделителя только байтоподобные объекты, как и документировано. В частности, теперь они вызывают TypeError, а не возвращают ошибочный результат, если в качестве разделителя передан целое число.
- [bpo-31852](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка сегментации, возникавшая из-за комбинации мягкого ключевого слова async и строк продолжения.
- [bpo-21720](https://python-all.ru/3/whatsnew/changelog.html): BytesWarning больше не выводится, когда аргумент *fromlist* `__import__()` или атрибут `__all__` модуля содержат экземпляры bytes.
- [bpo-31825](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка OverflowError в кодировке ‘unicode-escape’ и в codecs.escape\_decode() при декодировании экранированного не-ascii байта.
- [bpo-28603](https://python-all.ru/3/whatsnew/changelog.html): Вывод полной цепочки контекста/причины исключений при завершении интерпретатора, даже если какое-либо исключение в цепочке не может быть хешировано или сравнивается как равное с последующими. Патч от Zane Bitter.
- [bpo-31786](https://python-all.ru/3/whatsnew/changelog.html): Исправлено округление таймаута в модуле select для корректного округления отрицательных таймаутов между -1.0 и 0.0. Функции теперь блокируются в ожидании событий как и ожидалось. Ранее вызов некорректно не блокировался. Патч от Pablo Galindo.
- [bpo-31642](https://python-all.ru/3/whatsnew/changelog.html): Восстановлена блокировка при импорте "from package import module" путем установки sys.modules\["package.module"\] в None.
- [bpo-31626](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка в отладочном распределителе памяти. Производилась запись в освобожденную память после уменьшения блока памяти.
- [bpo-31619](https://python-all.ru/3/whatsnew/changelog.html): Исправлен ValueError при преобразовании строки с большим количеством символов подчеркивания в целое число с двоичным основанием.
- [bpo-31592](https://python-all.ru/3/whatsnew/changelog.html): Исправлен сбой утверждения в парсере Python в случае некорректного `unicodedata.normalize()`. Патч от Oren Milman.
- [bpo-31588](https://python-all.ru/3/whatsnew/changelog.html): Возвращается `TypeError` с понятным сообщением об ошибке, когда создание класса завершается неудачей из-за метакласса с некорректным методом `__prepare__()`. Патч от Oren Milman.
- [bpo-31566](https://python-all.ru/3/whatsnew/changelog.html): Исправлен сбой утверждения в `_warnings.warn()` в случае некорректной глобальной переменной `__name__`. Патч от Oren Milman.
- [bpo-31505](https://python-all.ru/3/whatsnew/changelog.html): Исправлен сбой утверждения в `json`, когда `_json.make_encoder()` получил некорректный аргумент `encoder()`. Патч от Oren Milman.
- [bpo-31492](https://python-all.ru/3/whatsnew/changelog.html): Исправлены сбои утверждения в случае неудачного импорта из модуля с некорректным атрибутом `__name__`, а также в случае неудачного доступа к атрибуту такого модуля. Патч от Oren Milman.
- [bpo-31490](https://python-all.ru/3/whatsnew/changelog.html): Исправлен сбой утверждения в определении класса `ctypes`, когда у класса есть атрибут, имя которого указано в `_anonymous_`, но не в `_fields_`. Патч от Oren Milman.
- [bpo-31478](https://python-all.ru/3/whatsnew/changelog.html): Исправлен сбой утверждения в `_random.Random.seed()`, если аргумент имеет некорректный метод `__abs__()`. Патч от Oren Milman.
- [bpo-31315](https://python-all.ru/3/whatsnew/changelog.html): Исправлен сбой утверждения в imp.create\_dynamic(), когда spec.name не является строкой. Патч от Oren Milman.
- [bpo-31311](https://python-all.ru/3/whatsnew/changelog.html): Исправлен сбой в методе `__setstate__()` класса `ctypes._CData` в случае некорректного `__dict__`. Патч от Oren Milman.
- [bpo-31293](https://python-all.ru/3/whatsnew/changelog.html): Исправлены сбои при истинном делении и умножении объекта timedelta на число с плавающей запятой с некорректным методом as\_integer\_ratio(). Патч от Oren Milman.
- [bpo-31285](https://python-all.ru/3/whatsnew/changelog.html): Исправлен сбой утверждения в `warnings.warn_explicit`, когда возвращаемое значение метода `get_source()` полученного загрузчика имеет некорректный метод `splitlines()`. Патч от Oren Milman.
- [bpo-30817](https://python-all.ru/3/whatsnew/changelog.html): `PyErr_PrintEx()` теперь очищает игнорируемое исключение, которое может быть вызвано `_PySys_SetObjectId()`, например, при нехватке памяти.

### Библиотека

- [bpo-28556](https://python-all.ru/3/whatsnew/changelog.html): Два мелких исправления для модуля `typing`: разрешено поверхностное копирование экземпляров обобщенных классов, улучшено взаимодействие `__init_subclass__` с обобщениями. Оригинальные PR от Ivan Levkivskyi.
- [bpo-27240](https://python-all.ru/3/whatsnew/changelog.html): Алгоритм сворачивания заголовков для новых политик email был переписан, что также исправляет [bpo-30788](https://python-all.ru/3/whatsnew/changelog.html), [bpo-31831](https://python-all.ru/3/whatsnew/changelog.html) и [bpo-32182](https://python-all.ru/3/whatsnew/changelog.html). В частности, сворачивание RFC2231 теперь выполняется корректно.
- [bpo-32186](https://python-all.ru/3/whatsnew/changelog.html): Методы io.FileIO.readall() и io.FileIO.read() теперь освобождают GIL при получении размера файла. Исправлено зависание всех потоков при недоступном NFS-сервере. Патч от Nir Soffer.
- [bpo-12239](https://python-all.ru/3/whatsnew/changelog.html): Сделать `msilib.SummaryInformation.GetProperty()`, чтобы он возвращал `None`, когда значение свойства равно `VT_EMPTY`. Первоначальный патч от Mark Mc Mahon.
- [bpo-31325](https://python-all.ru/3/whatsnew/changelog.html): Исправлено некорректное использование [`collections.namedtuple()`](https://python-all.ru/3/library/collections.html#collections.namedtuple) в методе [`RobotFileParser.parse()`](https://python-all.ru/3/library/urllib.robotparser.html#urllib.robotparser.RobotFileParser.parse). Первоначальный патч от Robin Wellner.
- [bpo-12382](https://python-all.ru/3/whatsnew/changelog.html): `msilib.OpenDatabase()` теперь генерирует более понятное сообщение об исключении, когда не удается открыть или создать MSI-файл. Первоначальный патч от William Tisäter.
- [bpo-32110](https://python-all.ru/3/whatsnew/changelog.html): `codecs.StreamReader.read(n)` теперь возвращает не более *n* символов/байт для неотрицательного *n*. Это делает его совместимым с методами `read()` других файлоподобных объектов.
- [bpo-32072](https://python-all.ru/3/whatsnew/changelog.html): Исправлены проблемы с бинарными plist-файлами: исправлено сохранение объектов bytearray. Идентичные объекты сохраняются только один раз. Равные ссылки загружаются как идентичные объекты. Добавлена поддержка сохранения и загрузки рекурсивных структур данных.
- [bpo-32034](https://python-all.ru/3/whatsnew/changelog.html): asyncio.IncompleteReadError и LimitOverrunError теперь сериализуемы с помощью pickle.
- [bpo-32015](https://python-all.ru/3/whatsnew/changelog.html): Исправлена проблема с циклом событий asyncio при повторном подключении сокета во время ожидания асинхронного чтения/записи из/в сокет.
- [bpo-32011](https://python-all.ru/3/whatsnew/changelog.html): Восстановлена поддержка загрузки marshal-файлов с кодом TYPE\_INT64. Такие файлы могут быть созданы в Python 2.7.
- [bpo-31970](https://python-all.ru/3/whatsnew/changelog.html): Снижены накладные расходы на производительность отладочного режима asyncio.
- [bpo-9678](https://python-all.ru/3/whatsnew/changelog.html): Исправлено определение MAC-адреса в модуле uuid: используется ifconfig на NetBSD и OpenBSD; arp на Linux, FreeBSD, NetBSD и OpenBSD. Основано на патче от Takayuki Shimizukawa.
- [bpo-30057](https://python-all.ru/3/whatsnew/changelog.html): Исправлена потенциальная потеря сигнала в signal.signal().
- [bpo-31933](https://python-all.ru/3/whatsnew/changelog.html): Исправлены параметры Blake2 leaf\_size и node\_offset на платформах с обратным порядком байт. Патч от Jack O'Connor.
- [bpo-31927](https://python-all.ru/3/whatsnew/changelog.html): Исправлена компиляция модуля socket на NetBSD 8. Исправлен сбой утверждения или чтение произвольных данных при разборе адреса AF\_BLUETOOTH на NetBSD и DragonFly BSD.
- [bpo-27666](https://python-all.ru/3/whatsnew/changelog.html): Исправлено повреждение стека в curses.box() и curses.ungetmouse(), когда размер типов chtype или mmask\_t меньше размера C long. curses.box() теперь принимает символы в качестве аргументов. Основано на патче Стива Финка.
- [bpo-31897](https://python-all.ru/3/whatsnew/changelog.html): plistlib теперь перехватывает больше ошибок при чтении бинарных plist-файлов и возбуждает InvalidFileException вместо неожиданных исключений.
- [bpo-25720](https://python-all.ru/3/whatsnew/changelog.html): Исправлен метод проверки состояния pad окна curses WINDOW. Патч от Масаюки Ямамото.
- [bpo-31893](https://python-all.ru/3/whatsnew/changelog.html): Исправлена структура kqueue\_event на OpenBSD и NetBSD. Исправлено сравнение объектов kqueue\_event.
- [bpo-31891](https://python-all.ru/3/whatsnew/changelog.html): Исправлена сборка модуля curses на NetBSD.
- [bpo-28416](https://python-all.ru/3/whatsnew/changelog.html): Экземпляры подкласса pickle.Pickler с методом persistent\_id() и подкласса pickle.Unpickler с методом persistent\_load() больше не создают циклические ссылки.
- [bpo-28326](https://python-all.ru/3/whatsnew/changelog.html): Исправлен multiprocessing.Process, когда stdout и/или stderr закрыты или равны None.
- [bpo-31457](https://python-all.ru/3/whatsnew/changelog.html): Если используются вложенные адаптеры логирования, внутренние методы `process()` больше не пропускаются.
- [bpo-31457](https://python-all.ru/3/whatsnew/changelog.html): Свойство `manager` у объектов LoggerAdapter теперь можно корректно устанавливать.
- [bpo-31806](https://python-all.ru/3/whatsnew/changelog.html): Исправлено округление таймаута в time.sleep(), threading.Lock.acquire() и socket.socket.settimeout() для корректного округления отрицательных таймаутов между -1.0 и 0.0. Функции теперь блокируются в ожидании событий, как и ожидалось. Ранее вызов был некорректно неблокирующим. Патч от Пабло Галиндо.
- [bpo-28603](https://python-all.ru/3/whatsnew/changelog.html): traceback: Исправлен TypeError, возникавший при печати трассировок исключений, когда текущее исключение или исключение в цепочке контекста/причины было нехешируемым. Патч от Зейна Биттера.
- [bpo-30058](https://python-all.ru/3/whatsnew/changelog.html): Исправлено переполнение буфера в select.kqueue.control().
- [bpo-31770](https://python-all.ru/3/whatsnew/changelog.html): Предотвращение сбоя при вызове метода `__init__()` объекта `sqlite3.Cursor` более одного раза. Патч от Орена Милмана.
- [bpo-31672](https://python-all.ru/3/whatsnew/changelog.html): `idpattern` в `string.Template` сопоставлялся с некоторыми не-ASCII символами. Теперь используется локальный флаг регулярного выражения `-i` для избежания не-ASCII символов.
- [bpo-31764](https://python-all.ru/3/whatsnew/changelog.html): Предотвращение сбоя в `sqlite3.Cursor.close()` в случае, если объект `Cursor` не инициализирован. Патч от Орена Милмана.
- [bpo-31752](https://python-all.ru/3/whatsnew/changelog.html): Исправлен возможный сбой в конструкторе timedelta, вызываемом с пользовательскими целыми числами.
- [bpo-31701](https://python-all.ru/3/whatsnew/changelog.html): На Windows faulthandler.enable() теперь игнорирует исключения MSC и COM.
- [bpo-31728](https://python-all.ru/3/whatsnew/changelog.html): Предотвращение сбоев в `_elementtree` из-за небезопасной очистки `Element.text` и `Element.tail`. Патч от Орена Милмана.
- [bpo-31620](https://python-all.ru/3/whatsnew/changelog.html): пустая asyncio.Queue больше не допускает утечку памяти при истечении таймаута опросов queue.get
- [bpo-31632](https://python-all.ru/3/whatsnew/changelog.html): Исправлен метод set\_protocol() класса \_SSLProtocolTransport в модуле asyncio. Ранее этот метод изменял неправильную ссылку на протокол.
- [bpo-31675](https://python-all.ru/3/whatsnew/changelog.html): Исправлены утечки памяти в методах Tkinter splitlist() и split() при передаче строки размером более 2 ГБ.
- [bpo-31673](https://python-all.ru/3/whatsnew/changelog.html): Исправлена опечатка в названии метода Tkinter adderrorinfo().
- [bpo-30806](https://python-all.ru/3/whatsnew/changelog.html): Исправлено строковое представление объекта netrc.
- [bpo-15037](https://python-all.ru/3/whatsnew/changelog.html): Добавлен обходной путь для getkey() в curses для ncurses 5.7 и ранее.
- [bpo-25351](https://python-all.ru/3/whatsnew/changelog.html): Предотвращение сбоев активации venv с неопределёнными переменными
- [bpo-25532](https://python-all.ru/3/whatsnew/changelog.html): inspect.unwrap() теперь будет пытаться развернуть объект только sys.getrecursionlimit() раз, для защиты от объектов, которые создают новый объект при каждом доступе к атрибуту.
- [bpo-30347](https://python-all.ru/3/whatsnew/changelog.html): Прекращение сбоев при параллельной итерации по итераторам itertools.groupby().
- [bpo-31516](https://python-all.ru/3/whatsnew/changelog.html): `threading.current_thread()` не должен возвращать фиктивный поток при завершении работы.
- [bpo-31351](https://python-all.ru/3/whatsnew/changelog.html): python -m ensurepip теперь завершается с ненулевым кодом возврата, если начальная загрузка pip завершилась неудачно.
- [bpo-31482](https://python-all.ru/3/whatsnew/changelog.html): `random.seed()` теперь работает с bytes в version=1
- [bpo-31334](https://python-all.ru/3/whatsnew/changelog.html): Исправлен `poll.poll([timeout])` в модуле `select` для произвольных отрицательных таймаутов на всех ОС, где он может быть только неотрицательным целым числом или -1. Патч от Риккардо Коччоли.
- [bpo-31310](https://python-all.ru/3/whatsnew/changelog.html): отслеживатель семафоров multiprocessing должен запускаться снова, если\\nпроизошёл сбой.
- [bpo-31308](https://python-all.ru/3/whatsnew/changelog.html): сделать процесс forkserver модуля multiprocessing устойчивым к Ctrl-C и\\nдругим пользовательским прерываниям. Если он аварийно завершится, перезапускать его при необходимости.

### Документация

- [bpo-32105](https://python-all.ru/3/whatsnew/changelog.html): Добавлен asyncio.BaseEventLoop.connect\_accepted\_socket\\nмаркер versionadded.
- [bpo-31537](https://python-all.ru/3/whatsnew/changelog.html): Исправлено неверное использование `get_history_length` в readline\\nпримере кода документации. Патч от Брэда Смита.
- [bpo-30085](https://python-all.ru/3/whatsnew/changelog.html): Для ясности предпочтительны функции оператора без двойного подчёркивания.\\nФункции с подчёркиваниями сохранены только для\\nобратной совместимости.

### Тесты

- [bpo-31380](https://python-all.ru/3/whatsnew/changelog.html): Пропускать test\_httpservers и test\_undecodable\_file на macOS: завершаются ошибкой на APFS.
- [bpo-31705](https://python-all.ru/3/whatsnew/changelog.html): Пропускать test\_socket.test\_sha256() на ядре Linux старше 4.5.\\nТест завершается ошибкой с ENOKEY на ядре 3.10 (на ppc64le). Исправление было включено\\nв ядро 4.5.
- [bpo-31174](https://python-all.ru/3/whatsnew/changelog.html): Исправлен test\_tools.test\_unparse: DirectoryTestCase теперь сохраняет\\nобразцы имён для того, чтобы всегда тестировать одни и те же файлы. Это предотвращает ложные срабатывания при\\nпоиске утечек ссылок.
- [bpo-30695](https://python-all.ru/3/whatsnew/changelog.html): Добавлены функции `set_nomemory(start, stop)` и\\n`remove_mem_hooks()` в модуль `_testcapi`.

### Сборка

- [bpo-32059](https://python-all.ru/3/whatsnew/changelog.html): `detect_modules()` в `setup.py` теперь также выполняет поиск\\nпутей sysroot при кросс-компиляции.
- [bpo-31957](https://python-all.ru/3/whatsnew/changelog.html): Исправлено определение версии Windows SDK при сборке для Windows.
- [bpo-31609](https://python-all.ru/3/whatsnew/changelog.html): Исправлены кавычки в PCbuild/clean.bat
- [bpo-31934](https://python-all.ru/3/whatsnew/changelog.html): Прерывать сборку при сборке из нечистого дерева исходников.
- [bpo-31926](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ситуация, когда Argument Clinic иногда вызывал ошибки компиляции, если\\nв .c-файле было более одной функции и/или метода с одинаковым\\nименем.
- [bpo-28791](https://python-all.ru/3/whatsnew/changelog.html): Обновлены сборки Windows для использования SQLite 3.21.0.
- [bpo-28791](https://python-all.ru/3/whatsnew/changelog.html): Обновлён установщик OS X для использования SQLite 3.21.0.
- [bpo-22140](https://python-all.ru/3/whatsnew/changelog.html): Предотвращена двойная подстановка префикса в python-config.sh.
- [bpo-31536](https://python-all.ru/3/whatsnew/changelog.html): Избегать полной пересборки после `make regen-all`, если ничего не\\nизменилось.

### Windows

- [bpo-1102](https://python-all.ru/3/whatsnew/changelog.html): Возвращать `None` в случае, когда `View.Fetch()` возвращает `ERROR_NO_MORE_ITEMS` вместо возбуждения `MSIError`. Первоначальный патч от Anthony Tuininga.
- [bpo-31944](https://python-all.ru/3/whatsnew/changelog.html): Исправлена кнопка «Изменить» в диалоге «Приложения и возможности».

### macOS

- [bpo-31392](https://python-all.ru/3/whatsnew/changelog.html): Обновлён установщик macOS для использования OpenSSL 1.0.2m

### IDLE

- [bpo-32207](https://python-all.ru/3/whatsnew/changelog.html): Улучшена трассировка исключений событий tk в IDLE. Когда обработка событий tk\\nуправляется циклом выполнения IDLE, к трассировке исключений событий tk больше не добавляется\\nсбивающий с толку и отвлекающий контекст трассировки queue.EMPTY.\\nТеперь трассировка такая же, как когда обработка событий\\nуправляется пользовательским кодом. Патч основан на предложении Serhiy Storchaka.
- [bpo-32164](https://python-all.ru/3/whatsnew/changelog.html): Удалён неиспользуемый файл idlelib/tabbedpages.py. Использование TabbedPageSet\\nв configdialog заменено на ttk.Notebook.
- [bpo-32100](https://python-all.ru/3/whatsnew/changelog.html): IDLE: Исправлены старые и новые ошибки в pathbrowser; улучшены тесты. Патч\\nв основном от Cheryl Sabella.
- [bpo-31858](https://python-all.ru/3/whatsnew/changelog.html): IDLE – ограничить манипуляции с приглашением оболочки только самой оболочкой. Редактор\\nи окна вывода видят только пустую последнюю строку приглашения. Это упрощает\\nкод и исправляет незначительную ошибку при вставке перевода строки. Sys.ps1, если\\nприсутствует, считывается при запуске оболочки, но не устанавливается и не изменяется.
- [bpo-31860](https://python-all.ru/3/whatsnew/changelog.html): Образец шрифта в диалоге настройки IDLE теперь можно редактировать.\\nИзменения сохраняются, пока IDLE открыт.
- [bpo-31836](https://python-all.ru/3/whatsnew/changelog.html): Test\_code\_module теперь проходит, если запущен после test\_idle, который устанавливает ps1. Модуль code использует sys.ps1, если он присутствует, или устанавливает его в ‘\>\>\> ‘, если нет. Test\_code\_module теперь корректно проверяет оба поведения. Аналогично для ps2.
- [bpo-28603](https://python-all.ru/3/whatsnew/changelog.html): Исправлен TypeError, вызывавший перезапуск оболочки при выводе трассировки, содержащей исключение, которое не является хешируемым. Патч от Zane Bitter.
- [bpo-13802](https://python-all.ru/3/whatsnew/changelog.html): В образце шрифтов в настройках IDLE используются нелатинские символы. Даже если выбран шрифт, определяющий ограниченное подмножество символов unicode Basic Multilingual Plane, tcl/tk будет использовать другие шрифты, определяющие символ. Расширенный пример дает пользователям нелатинских символов лучшее представление о том, что они могут увидеть в оболочке и редакторах IDLE. Чтобы освободить место для расширенного примера, фреймы на вкладке Font были переупорядочены. Справка Font/Tabs немного объясняет эти добавления.
- [bpo-31460](https://python-all.ru/3/whatsnew/changelog.html): Упрощение API браузера модулей IDLE. Передача виджета вместо flist с корневым виджетом открывает возможность создания фрейма браузера, который является только частью окна. Передача полного имени файла вместо частей, предполагаемых из файла .py, открывает возможность просмотра файлов python, которые не заканчиваются на .py.
- [bpo-31649](https://python-all.ru/3/whatsnew/changelog.html): IDLE – сделать параметры \_htest, \_utest только именованными.
- [bpo-31559](https://python-all.ru/3/whatsnew/changelog.html): Устранение зависимости от порядка тестов в idle\_test.test\_browser.
- [bpo-31459](https://python-all.ru/3/whatsnew/changelog.html): Переименование браузера модулей IDLE из Class Browser в Module Browser. Исходный браузер классов и методов на уровне модуля стал браузером модулей с добавлением функций уровня модуля много лет назад. Вложенные классы и функции были добавлены вчера. Для обратной совместимости виртуальное событие \<\<open-class-browser\>\>, которое появляется на вкладке Keys диалога Settings, не изменено. Патч от Cheryl Sabella.
- [bpo-31500](https://python-all.ru/3/whatsnew/changelog.html): Шрифты по умолчанию теперь масштабируются на дисплеях HiDPI.
- [bpo-1612262](https://python-all.ru/3/whatsnew/changelog.html): Браузер модулей IDLE теперь показывает вложенные классы и функции. Исходные патчи для кода и тестов от Guilherme Polo и Cheryl Sabella соответственно.

### Инструменты/Демонстрации

- [bpo-30722](https://python-all.ru/3/whatsnew/changelog.html): Сделать redemo работающим с Python 3.6 и новее. Также удалить опцию `LOCALE`, поскольку она не работает со строковыми шаблонами в Python 3. Патч от Christoph Sarnowski.

### C API

- [bpo-20891](https://python-all.ru/3/whatsnew/changelog.html): Исправление PyGILState\_Ensure(). Когда PyGILState\_Ensure() вызывается в потоке, не являющемся Python, до вызова PyEval\_InitThreads(), вызывать PyEval\_InitThreads() только после вызова PyThreadState\_New() для предотвращения аварийного завершения.
- [bpo-31532](https://python-all.ru/3/whatsnew/changelog.html): Исправление повреждения памяти из-за смешивания аллокаторов в getpath.c между Py\_GetPath() и Py\_SetPath().
- [bpo-30697](https://python-all.ru/3/whatsnew/changelog.html): Синглтон `PyExc_RecursionErrorInst` удален, и `PyErr_NormalizeException()` больше его не использует. Этот синглтон является постоянным, и его элементы никогда не очищаются, что может вызвать segfault во время финализации интерпретатора. Смотрите также [bpo-22898](https://python-all.ru/3/whatsnew/changelog.html).

## Python 3.6.3 финальный

*Дата выпуска: 2017-10-03*

### Библиотека

- [bpo-31641](https://python-all.ru/3/whatsnew/changelog.html): Снова разрешить произвольные итерабельные объекты в `concurrent.futures.as_completed()`. Исправление регрессии в 3.6.3rc1.

### Сборка

- [bpo-31662](https://python-all.ru/3/whatsnew/changelog.html): Исправление опечаток в скрипте Windows `uploadrelease.bat`. Исправление проблем сборки документации Windows в `Doc/make.bat`.
- [bpo-31423](https://python-all.ru/3/whatsnew/changelog.html): Исправление сборки PDF-документации с новыми версиями Sphinx.

## Python 3.6.3 release candidate 1

*Дата выпуска: 2017-09-18*

### Безопасность

- [bpo-29781](https://python-all.ru/3/whatsnew/changelog.html): SSLObject.version() теперь корректно возвращает None, когда квитирование через BIO еще не было выполнено.
- [bpo-30947](https://python-all.ru/3/whatsnew/changelog.html): Обновление встроенной копии libexpat с версии 2.2.1 до 2.2.3 для получения исправлений безопасности.

### Ядро и встроенные

- [bpo-31471](https://python-all.ru/3/whatsnew/changelog.html): Исправление ошибки утверждения в `subprocess.Popen()` на Windows, в случае если аргумент env имеет неправильный метод `keys()`. Патч от Oren Milman.
- [bpo-31418](https://python-all.ru/3/whatsnew/changelog.html): Исправление ошибки утверждения в `PyErr_WriteUnraisable()` в случае исключения с неправильным атрибутом `__module__`. Патч от Oren Milman.
- [bpo-31416](https://python-all.ru/3/whatsnew/changelog.html): Исправление ошибок утверждения в случае некорректного warnings.filters или warnings.defaultaction. Патч от Oren Milman.
- [bpo-31411](https://python-all.ru/3/whatsnew/changelog.html): Вызывать TypeError вместо SystemError в случае, если warnings.onceregistry не является словарем. Патч от Oren Milman.
- [bpo-31373](https://python-all.ru/3/whatsnew/changelog.html): Исправлено несколько возможных случаев неопределённого поведения из-за понижения точности чисел с плавающей запятой.
- [bpo-30465](https://python-all.ru/3/whatsnew/changelog.html): Информация о расположении (`lineno` и `col_offset`) в f-строках теперь (почти) корректна. Это исправляет такие инструменты, как flake8, которые показывали предупреждения не на той строке (обычно на первой строке файла).
- [bpo-31343](https://python-all.ru/3/whatsnew/changelog.html): Добавлен sys/sysmacros.h для major(), minor() и makedev(). Библиотека GNU C планирует удалить эти функции из sys/types.h.
- [bpo-31291](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка утверждения в `zipimport.zipimporter.get_data` в Windows, когда возвращаемое значение `pathname.replace('/','\\')` не является строкой. Патч от Орен Милмана.
- [bpo-31271](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка утверждения в методе `write()` класса `io.TextIOWrapper`, когда кодировщик не возвращает объект bytes. Патч от Орен Милмана.
- [bpo-31243](https://python-all.ru/3/whatsnew/changelog.html): Исправлен сбой в некоторых методах `io.TextIOWrapper`, когда состояние декодера недействительно. Патч от Орен Милмана.
- [bpo-30721](https://python-all.ru/3/whatsnew/changelog.html): `print` теперь показывает правильную подсказку для использования синтаксиса перенаправления вывода в Python 2. Патч от Саньяма Хураны.
- [bpo-31070](https://python-all.ru/3/whatsnew/changelog.html): Исправлено состояние гонки в importlib \_get\_module\_lock().
- [bpo-31095](https://python-all.ru/3/whatsnew/changelog.html): Исправлен потенциальный сбой во время сборки мусора, вызванный `tp_dealloc`, который не вызывает `PyObject_GC_UnTrack()`.
- [bpo-31071](https://python-all.ru/3/whatsnew/changelog.html): Исправлено маскирование исходного TypeError при вызове с распаковкой \*, когда передаются другие аргументы.
- [bpo-30978](https://python-all.ru/3/whatsnew/changelog.html): str.format\_map() теперь передаёт исключения поиска ключей. Ранее любое исключение заменялось KeyError.
- [bpo-30808](https://python-all.ru/3/whatsnew/changelog.html): Использование \_Py\_atomic API для чувствительного к конкурентности состояния сигналов.
- [bpo-30876](https://python-all.ru/3/whatsnew/changelog.html): Относительный импорт из выгруженного пакета теперь повторно импортирует пакет, а не завершается ошибкой SystemError. Относительный импорт из не-пакета теперь завершается ошибкой ImportError, а не SystemError.
- [bpo-30703](https://python-all.ru/3/whatsnew/changelog.html): Улучшена доставка сигналов. Избегается использование Py\_AddPendingCall из обработчика сигналов, чтобы не вызывать функции, небезопасные для сигналов. Тесты, которые я добавляю здесь, не проходят без остальной части патча в Linux и OS X. Это означает, что наша логика доставки сигналов имела дефекты (некоторые сигналы могли теряться).
- [bpo-30765](https://python-all.ru/3/whatsnew/changelog.html): Избегается блокировка в pthread\_mutex\_lock(), когда PyThread\_acquire\_lock() запускается без блокировки.
- [bpo-31161](https://python-all.ru/3/whatsnew/changelog.html): Обеспечено, что сообщение об ошибке синтаксиса «Missing parentheses» применяется только к SyntaxError, а не к подклассам. Патч от Мартейна Питерса.
- [bpo-30814](https://python-all.ru/3/whatsnew/changelog.html): Исправлено состояние гонки при импорте подмодуля из пакета.
- [bpo-30597](https://python-all.ru/3/whatsnew/changelog.html): `print` теперь показывает ожидаемый ввод в пользовательском сообщении об ошибке при использовании в качестве оператора Python 2. Патч от Саньяма Хураны.

### Библиотечные модули

- [bpo-31499](https://python-all.ru/3/whatsnew/changelog.html): xml.etree: Исправлен сбой, когда парсер является частью цикла ссылок.
- [bpo-28556](https://python-all.ru/3/whatsnew/changelog.html): typing.get\_type\_hints теперь находит правильное пространство имён globalns для классов и модулей по умолчанию (когда вызывающий не указал `globalns`).
- [bpo-28556](https://python-all.ru/3/whatsnew/changelog.html): Ускорение модуля `typing`. Оригинальные PR от Ивана Левкивского и Митяра.
- [bpo-31544](https://python-all.ru/3/whatsnew/changelog.html): Модуль-ускоритель C в ElementTree игнорировал исключения, возникающие при поиске целевых методов TreeBuilder в XMLParser().
- [bpo-31234](https://python-all.ru/3/whatsnew/changelog.html): socket.create\_connection() теперь вручную разрывает цикл ссылок: при успехе очищает переменную, хранящую последнее исключение.
- [bpo-31457](https://python-all.ru/3/whatsnew/changelog.html): Объекты LoggerAdapter теперь можно вкладывать друг в друга.
- [bpo-31400](https://python-all.ru/3/whatsnew/changelog.html): Улучшена обработка ошибок SSL, чтобы не терялись коды ошибок.
- [bpo-28958](https://python-all.ru/3/whatsnew/changelog.html): ssl.SSLContext() теперь использует информацию об ошибках OpenSSL, когда не удаётся создать контекст.
- [bpo-27340](https://python-all.ru/3/whatsnew/changelog.html): SSLSocket.sendall() теперь использует memoryview для создания срезов данных. Это обеспечивает поддержку всех байтоподобных объектов. Кроме того, это более эффективно и позволяет избежать дорогостоящего копирования.
- [bpo-31178](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка конкатенации строк в редком пути обработки ошибок в модуле subprocess.
- [bpo-31350](https://python-all.ru/3/whatsnew/changelog.html): Микрооптимизация `asyncio._get_running_loop()` для повышения производительности до 10%.
- [bpo-31170](https://python-all.ru/3/whatsnew/changelog.html): expat: Обновление libexpat с 2.2.3 до 2.2.4. Исправлено копирование частичных символов для входных данных UTF-8 (ошибка libexpat 115): [https://github.com/libexpat/libexpat/issues/115](https://python-all.ru/3/whatsnew/changelog.html)
- [bpo-29136](https://python-all.ru/3/whatsnew/changelog.html): Добавлены наборы шифров TLS 1.3 и OP\_NO\_TLSv1\_3.
- [bpo-29212](https://python-all.ru/3/whatsnew/changelog.html): Исправлена работа потоков ThreadPoolExecutor из concurrent.futures.thread: теперь по умолчанию, если не указан thread\_name\_prefix, имена потоков не основаны на repr(). Потоки теперь идентифицируют себя как «ThreadPoolExecutor-y\_n».
- [bpo-9146](https://python-all.ru/3/whatsnew/changelog.html): Исправлено нарушение сегментации в \_hashopenssl, когда в подключённой библиотеке OpenSSL недоступны стандартные хэш-функции, такие как md5. Например, в некоторых специальных средах сборки FIPS-140.
- [bpo-27144](https://python-all.ru/3/whatsnew/changelog.html): Итераторы `map()` и `as_completed()` в `concurrent.futures` теперь не сохраняют ссылку на возвращаемые объекты.
- [bpo-10746](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка ctypes, приводящая к неправильным кодам типов [**PEP 3118**](https://python-all.ru/3/whatsnew/changelog.html) для целочисленных типов.
- [bpo-22536](https://python-all.ru/3/whatsnew/changelog.html): Модуль подпроцесс теперь устанавливает имя файла при возникновении FileNotFoundError на системах POSIX, если не найден исполняемый файл или рабочая директория (cwd).
- [bpo-31249](https://python-all.ru/3/whatsnew/changelog.html): concurrent.futures: метод WorkItem.run(), используемый ThreadPoolExecutor, теперь разрывает циклическую ссылку между объектом исключения и объектом WorkItem.
- [bpo-31247](https://python-all.ru/3/whatsnew/changelog.html): xmlrpc.server теперь явно разрывает циклические ссылки при использовании sys.exc\_info() в коде обработки исключений.
- [bpo-30102](https://python-all.ru/3/whatsnew/changelog.html): Модули ssl и hashlib теперь вызывают OPENSSL\_add\_all\_algorithms\_noconf() для OpenSSL версии ниже 1.1.0. Эта функция определяет возможности процессора и включает оптимизации на некоторых архитектурах, таких как POWER8. Патч основан на исследовании Густаво Серры Скалета.
- [bpo-31185](https://python-all.ru/3/whatsnew/changelog.html): Исправлены различные ошибки в модуле ускорения asyncio.
- [bpo-31135](https://python-all.ru/3/whatsnew/changelog.html): ttk: исправлен метод destroy() классов LabeledScale и OptionMenu. Теперь вызывается родительский метод destroy(), даже если используемый атрибут не существует. Метод LabeledScale.destroy() также теперь явно очищает атрибуты label и scale, чтобы помочь сборщику мусора уничтожить все виджеты.
- [bpo-31107](https://python-all.ru/3/whatsnew/changelog.html): Исправлено вычисление искажённого атрибута `copyreg._slotnames()` для классов, имя которых начинается с подчёркивания. Патч от Шейна Харви.
- [bpo-31061](https://python-all.ru/3/whatsnew/changelog.html): Исправлен сбой при использовании asyncio и потоков.
- [bpo-30502](https://python-all.ru/3/whatsnew/changelog.html): Исправлена обработка длинных OID в ssl. На основе патча Кристиана Хаймса.
- [bpo-30119](https://python-all.ru/3/whatsnew/changelog.html): ftplib.FTP.putline() теперь вызывает ValueError для команд, содержащих CR или LF. Патч от Донхи На.
- [bpo-30595](https://python-all.ru/3/whatsnew/changelog.html): multiprocessing.Queue.get() с таймаутом теперь опрашивает свой читатель в неблокирующем режиме, если удалось захватить блокировку, но захват занял больше времени, чем таймаут.
- [bpo-29403](https://python-all.ru/3/whatsnew/changelog.html): Исправлена автозамена (autospec) `unittest.mock`, чтобы она не давала сбой на встроенных функциях, привязанных к методам. Патч от Аарона Галлахера.
- [bpo-30961](https://python-all.ru/3/whatsnew/changelog.html): Исправлено уменьшение счётчика заимствованной ссылки в tracemalloc.
- [bpo-25684](https://python-all.ru/3/whatsnew/changelog.html): Изменены `ttk.OptionMenu` радиокнопки так, чтобы они были уникальными для всех экземпляров `OptionMenu`.
- [bpo-30886](https://python-all.ru/3/whatsnew/changelog.html): Исправлен multiprocessing.Queue.join\_thread(): теперь он ожидает завершения потока, даже если поток был запущен тем же процессом, который создал очередь.
- [bpo-29854](https://python-all.ru/3/whatsnew/changelog.html): Исправлен сбой сегментации в readline при использовании опции history-size. Патч от Нира Соффера.
- [bpo-30319](https://python-all.ru/3/whatsnew/changelog.html): socket.close() теперь игнорирует ошибку ECONNRESET.
- [bpo-30828](https://python-all.ru/3/whatsnew/changelog.html): Исправлена запись за границы в `asyncio.CFuture.remove_done_callback()`.
- [bpo-30807](https://python-all.ru/3/whatsnew/changelog.html): signal.setitimer() может отключать таймер при передаче очень малого значения. Очень малые значения (например, 1e-6) являются допустимыми ненулевыми значениями для setitimer(), которая, согласно спецификации, принимает интервалы с точностью до микросекунд. Однако на некоторых платформах процедура преобразования могла превратить 1e-6 в нулевой интервал, отключая таймер вместо его (пере)установки.
- [bpo-30441](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка при изменении os.environ во время итерации по нему.
- [bpo-30532](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка в парсере значений заголовков email, при которой в определённых случаях отбрасывались пробелы переноса (folding white space).
- [bpo-30879](https://python-all.ru/3/whatsnew/changelog.html): os.listdir() и os.scandir() теперь возвращают имена в виде bytes, если вызваны с аргументом, подобным bytes.
- [bpo-30746](https://python-all.ru/3/whatsnew/changelog.html): Запрещён символ ‘=’ в именах переменных окружения в `os.putenv()` и `os.spawn*()`.
- [bpo-29755](https://python-all.ru/3/whatsnew/changelog.html): Исправлено семейство функций lgettext() в модуле gettext. Теперь они всегда возвращают bytes.

### Документация

- [bpo-31294](https://python-all.ru/3/whatsnew/changelog.html): Исправлен неполный фрагмент кода в примерах ZeroMQSocketListener и ZeroMQSocketHandler, выполнена их адаптация для Python 3.
- [bpo-21649](https://python-all.ru/3/whatsnew/changelog.html): Добавлены ссылки на RFC 7525 и рекомендации Mozilla по серверному TLS в документацию по SSL.
- [bpo-30803](https://python-all.ru/3/whatsnew/changelog.html): Уточнена документация по проверке истинности значений. Оригинальный патч от Петера Томассена.

### Тесты

- [bpo-31320](https://python-all.ru/3/whatsnew/changelog.html): Подавление traceback в test\_ssl
- [bpo-25674](https://python-all.ru/3/whatsnew/changelog.html): Удаление ssl-теста sha256.tbs-internet.com
- [bpo-30715](https://python-all.ru/3/whatsnew/changelog.html): Учтены изменения ALPN-колбэка для OpenSSL 1.1.0f. Последняя версия ведёт себя как OpenSSL 1.0.2 и больше не прерывает рукопожатие.
- [bpo-30822](https://python-all.ru/3/whatsnew/changelog.html): regrtest: Исключение tzdata из regrtest –all. При запуске набора тестов с параметром –use=all / -u all исключать tzdata, так как из-за него test\_datetime выполняется слишком долго (15–20 минут на некоторых сборочных фермах), что приводит к тайм-ауту на некоторых сборочных фермах. Также исправлен парсер командной строки regrtest, чтобы можно было передавать -u extralargefile для запуска test\_zipfile64.

### Сборка

- [bpo-30854](https://python-all.ru/3/whatsnew/changelog.html): Исправление ошибки компиляции при сборке с –without-threads. Патч от Masayuki Yamamoto.

### Windows

- [bpo-30389](https://python-all.ru/3/whatsnew/changelog.html): Добавлено обнаружение Visual Studio 2017 в distutils на Windows.
- [bpo-31340](https://python-all.ru/3/whatsnew/changelog.html): Переход на сборку с MSVC v141 (входит в Visual Studio 2017)
- [bpo-30581](https://python-all.ru/3/whatsnew/changelog.html): os.cpu\_count() теперь возвращает правильное количество процессоров в Windows, когда число логических процессоров больше 64.
- [bpo-30731](https://python-all.ru/3/whatsnew/changelog.html): Добавлен отсутствующий xmlns в python.manifest для соответствия схеме.

### IDLE

- [bpo-31493](https://python-all.ru/3/whatsnew/changelog.html): IDLE code context – исправлены таймеры обновления кода и шрифта. Отмена таймеров предотвращает появление предупреждения при завершении test\_idle.
- [bpo-31488](https://python-all.ru/3/whatsnew/changelog.html): IDLE – обновление неключевых параметров в бывших классах расширений. При применении изменений в configdialog вызывать .reload для каждого класса функций. Изменение ParenMatch так, чтобы обновлённые параметры влияли на существующие экземпляры, прикреплённые к существующим окнам редактора.
- [bpo-31477](https://python-all.ru/3/whatsnew/changelog.html): IDLE – улучшение записи rstrip в документации. Удаление завершающих пробелов удаляет больше, чем просто пробелы. Многострочные строковые литералы не пропускаются.
- [bpo-31480](https://python-all.ru/3/whatsnew/changelog.html): IDLE – обеспечение прохождения тестов с отключённым по умолчанию расширением zzdummy.
- [bpo-31421](https://python-all.ru/3/whatsnew/changelog.html): Документирование того, как IDLE запускает программы tkinter. IDLE вызывает обновление tcl/tk в фоне, чтобы сделать живое взаимодействие и эксперименты с приложениями tkinter намного проще.
- [bpo-31414](https://python-all.ru/3/whatsnew/changelog.html): IDLE – исправление тестов поля ввода tk путём предварительного удаления. Добавление в целочисленное поле ввода отличается от удаления и вставки, потому что int('') завершится ошибкой.
- [bpo-31051](https://python-all.ru/3/whatsnew/changelog.html): Перегруппировка GenPage диалога конфигурации IDLE в разделы Window, Editor и Help.
- [bpo-30617](https://python-all.ru/3/whatsnew/changelog.html): IDLE – добавление строк документации и тестов для подкласса окна вывода редактора. Перенос некоторых данных и функций из класса на уровень модуля. Патч от Cheryl Sabella.
- [bpo-31287](https://python-all.ru/3/whatsnew/changelog.html): IDLE – не изменять tkinter.message в test\_configdialog.
- [bpo-27099](https://python-all.ru/3/whatsnew/changelog.html): Преобразование встроенных «расширений» IDLE в обычные функции. Около 10 функций IDLE были реализованы как якобы опциональные расширения. Их разное поведение могло сбивать с толку или быть хуже для пользователей и плохо для поддержки. Поэтому преобразование. Основное отличие для пользователей: настраиваемые пользователем привязки клавиш для встроенных функций теперь обрабатываются единообразно. Теперь редактирование привязки в наборе клавиш влияет только на её значение в этом наборе. Все привязки определены вместе в системно-зависимых наборах клавиш по умолчанию в config-extensions.def. Все пользовательские наборы клавиш сохраняются целиком в config-extension.cfg. Все они вступают в силу сразу после нажатия Apply или Ok. Затронутые события: ‘\<\<force-open-completions\>\>’, ‘\<\<expand-word\>\>’, ‘\<\<force-open-calltip\>\>’, ‘\<\<flash-paren\>\>’, ‘\<\<format-paragraph\>\>’, ‘\<\<run-module\>\>’, ‘\<\<check-module\>\>’ и ‘\<\<zoom-height\>\>’. Любые (глобальные) настройки, сделанные до 3.6.3, не повлияют на настройки для конкретного набора клавиш после 3.6.3, и наоборот. Первоначальный патч от Charles Wohlganger.
- [bpo-31206](https://python-all.ru/3/whatsnew/changelog.html): IDLE: Выделение класса HighPage(Frame) из ConfigDialog. Патч от Cheryl Sabella.
- [bpo-31001](https://python-all.ru/3/whatsnew/changelog.html): Добавление тестов для вкладки highlight в configdialog. Патч от Cheryl Sabella.
- [bpo-31205](https://python-all.ru/3/whatsnew/changelog.html): IDLE: Выделение класса KeysPage(Frame) из ConfigDialog. Слегка изменённые тесты продолжают проходить. Патч от Cheryl Sabella.
- [bpo-31130](https://python-all.ru/3/whatsnew/changelog.html): IDLE – устранение утечек в test\_configdialog. Первоначальный патч от Victor Stinner.
- [bpo-31002](https://python-all.ru/3/whatsnew/changelog.html): Добавление тестов для вкладки keys в configdialog. Патч от Cheryl Sabella.
- [bpo-19903](https://python-all.ru/3/whatsnew/changelog.html): IDLE: Подсказки вызова используют `inspect.signature` вместо `inspect.getfullargspec`. Это улучшает подсказки для встроенных функций, преобразованных для использования Argument Clinic. Патч от Louie Lu.
- [bpo-31083](https://python-all.ru/3/whatsnew/changelog.html): IDLE – добавление наброска класса TabPage в configdialog. Обновление существующих классов в соответствии с наброском. Первоначальный патч от Cheryl Sabella.
- [bpo-31050](https://python-all.ru/3/whatsnew/changelog.html): Выделение класса GenPage(Frame) из ConfigDialog. Слегка изменённые тесты продолжают проходить. Патч от Cheryl Sabella.
- [bpo-31004](https://python-all.ru/3/whatsnew/changelog.html): IDLE – выделение класса FontPage(Frame) из ConfigDialog. Слегка изменённые тесты продолжают проходить. Исправление тестов General. Патч в основном от Cheryl Sabella.
- [bpo-30781](https://python-all.ru/3/whatsnew/changelog.html): IDLE – использование ttk виджетов в ConfigDialog. Патчи от Terry Jan Reedy и Cheryl Sabella.
- [bpo-31060](https://python-all.ru/3/whatsnew/changelog.html): IDLE – завершить перегруппировку методов ConfigDialog. Группировка методов, относящихся к каждой вкладке и кнопкам, поможет писать тесты и улучшать вкладки, а также позволит разделить группы на классы.
- [bpo-30853](https://python-all.ru/3/whatsnew/changelog.html): IDLE – выделить класс VarTrace из ConfigDialog. Экземпляр tracers управляет парами, состоящими из tk-переменной и колбэк-функции. Когда отслеживание включено, присвоение переменной вызывает функцию. Покрытие тестами нового класса – 100%.
- [bpo-31003](https://python-all.ru/3/whatsnew/changelog.html): IDLE – добавить больше тестов для вкладки General.
- [bpo-30993](https://python-all.ru/3/whatsnew/changelog.html): IDLE – улучшить страницу шрифтов в configdialog и тесты. В configdialog: документировать причинно-следственные связи в docstring create\_font\_tab. Упростить некоторые имена атрибутов. Переместить вызовы set\_samples в var\_changed\_font (идея от Cheryl Sabella). Переместить связанные функции в позиции после функции создания виджетов. В test\_configdialog: исправить test\_font\_set, чтобы он не зависел от порядка. Исправить переименованный test\_indent\_scale, чтобы он тестировал виджет. Настроить тесты для перемещения вызова set\_samples. Добавить тесты для функций загрузки. Сгруппировать все тесты шрифтов в один класс, а тесты отступов вкладок – в другой. За исключением двух строк, эти тесты полностью покрывают связанные функции.
- [bpo-30981](https://python-all.ru/3/whatsnew/changelog.html): IDLE – добавить больше тестов страницы шрифтов configdialog.
- [bpo-28523](https://python-all.ru/3/whatsnew/changelog.html): IDLE – заменить ‘colour’ на ‘color’ в configdialog.
- [bpo-30917](https://python-all.ru/3/whatsnew/changelog.html): Добавить тесты для idlelib.config.IdleConf. Увеличить покрытие с 46% до 96%. Патч от Louie Lu.
- [bpo-30934](https://python-all.ru/3/whatsnew/changelog.html): Документировать детали покрытия для тестов idlelib. Добавить раздел в idlelib/idle-test/README.txt. Включить проверку того, что ветки выполняются в обоих направлениях. Исключить специфичный для IDLE код, который не выполняется во время модульных тестов.
- [bpo-30913](https://python-all.ru/3/whatsnew/changelog.html): IDLE – документировать tk Vars, методы и виджеты ConfigDialog в docstrings. Это упростит улучшение диалога и разделение класса. Оригинальный патч от Cheryl Sabella.
- [bpo-30899](https://python-all.ru/3/whatsnew/changelog.html): IDLE – добавить тесты для подклассов ConfigParser в config. Патч от Louie Lu.
- [bpo-30881](https://python-all.ru/3/whatsnew/changelog.html): IDLE – добавить docstrings в browser.py. Патч от Cheryl Sabella.
- [bpo-30851](https://python-all.ru/3/whatsnew/changelog.html): IDLE – удалить неиспользуемые переменные в configdialog. Одна dублируется, другая устанавливается, но пользователи не могут её изменить. Патч от Cheryl Sabella.
- [bpo-30870](https://python-all.ru/3/whatsnew/changelog.html): IDLE – в диалоге настроек выбирать шрифт с помощью клавиш Вверх, Вниз, а также мыши. Начальный патч от Louie Lu.
- [bpo-8231](https://python-all.ru/3/whatsnew/changelog.html): IDLE – вызывать config.IdleConf.GetUserCfgDir только один раз.
- [bpo-30779](https://python-all.ru/3/whatsnew/changelog.html): IDLE – выделить класс ConfigChanges из configdialog, поместить в config; протестировать. \* В config поместить дамп-тестовый код в функцию; запускать его и юниттесты в ‘if \_\_name\_\_ == ‘\_\_main\_\_’. \* Добавить класс config.ConfigChanges на основе changes\_class\_v4.py из тикета bpo. \* Добавить класс test\_config.ChangesTest, частично используя configdialog\_tests\_v1.py. \* Пересмотреть configdialog для использования ConfigChanges; см. tracker msg297804. \* Пересмотреть test\_configdialog в соответствии с изменениями configdialog. \* Удалить функции configdialog, которые не используются или перемещены в ConfigChanges. Cheryl Sabella предоставила части патча.
- [bpo-30777](https://python-all.ru/3/whatsnew/changelog.html): IDLE – configdialog – добавить docstrings и исправить комментарии. Патч от Cheryl Sabella.
- [bpo-30495](https://python-all.ru/3/whatsnew/changelog.html): IDLE – улучшить textview с помощью docstrings, имён по PEP8 и большего количества тестов. Патч от Cheryl Sabella.
- [bpo-30723](https://python-all.ru/3/whatsnew/changelog.html): IDLE – внести несколько улучшений в parenmatch. Добавить стиль ‘parens’ для подсветки открывающей и закрывающей скобок. Сделать стиль ‘default’, который не является по умолчанию, синонимом ‘opener’. Сделать задержку времени одинаковой для всех стилей. Добавить справку для вкладки расширений диалога настроек, включая справку для parenmatch. Добавить новые тесты. Оригинальный патч от Charles Wohlganger.
- [bpo-30674](https://python-all.ru/3/whatsnew/changelog.html): IDLE – добавить docstrings в модуль grep. Патч от Cheryl Sabella
- [bpo-21519](https://python-all.ru/3/whatsnew/changelog.html): Базовый диалог настройки клавиш IDLE теперь правильно обнаруживает dубликаты. Оригинальный патч от Saimadhav Heblikar.
- [bpo-29910](https://python-all.ru/3/whatsnew/changelog.html): IDLE больше не удаляет символ после закомментирования области с помощью сочетания клавиш. Добавить `return 'break'` для этого и других потенциальных конфликтов между IDLE и стандартными привязками клавиш.
- [bpo-30728](https://python-all.ru/3/whatsnew/changelog.html): Пересмотреть и изменить имена в idlelib.configdialog. Привести имена методов и атрибутов к нижнему регистру. Заменить ‘colour’ на ‘color’, расшифровать слишком криптические имена, удалить лишние подчёркивания. Заменить `import *` на конкретные импорты. Патчи от Cheryl Sabella.
- [bpo-6739](https://python-all.ru/3/whatsnew/changelog.html): IDLE – проверять введённые пользователем последовательности клавиш, пытаясь привязать их с помощью tk. Добавить тесты для всех 3 функций валидации. Оригинальный патч от G Polo. Тесты добавлены Cheryl Sabella.

### Tools/Demos

- [bpo-30983](https://python-all.ru/3/whatsnew/changelog.html): Команды интеграции gdb (py-bt и т.д.) теперь работают и на оптимизированных совместно собираемых сборках. [**PEP 523**](https://python-all.ru/3/whatsnew/changelog.html) ввёл \_PyEval\_EvalFrameDefault, который встраивает PyEval\_EvalFrameEx в неотладочных совместно собираемых сборках. Это нарушило возможность использовать py-bt, py-up и некоторые другие интеграции gdb, специфичные для Python. Проблема исправлена поиском только фреймов \_PyEval\_EvalFrameDefault в python-gdb.py. Оригинальный патч от Bruno “Polaco” Penteado.

## Python 3.6.2 final

*Дата выпуска: 2017-07-17*

Без изменений с момента выпуска-кандидата 2

## Python 3.6.2 release candidate 2

*Дата выпуска: 2017-07-07*

### Безопасность

- [bpo-30730](https://python-all.ru/3/whatsnew/changelog.html): Предотвращает внедрение переменных окружения в подпроцессы на Windows. Предотвращает передачу других переменных окружения и аргументов команд.
- [bpo-30694](https://python-all.ru/3/whatsnew/changelog.html): Обновлена копия expat с версии 2.2.0 до 2.2.1 для исправления множества уязвимостей безопасности, включая: [**CVE 2017-9233**](https://python-all.ru/3/whatsnew/changelog.html) (бесконечный цикл DoS при внешней сущности), [**CVE 2016-9063**](https://python-all.ru/3/whatsnew/changelog.html) (переполнение целых чисел, повторное исправление), [**CVE 2016-0718**](https://python-all.ru/3/whatsnew/changelog.html) (исправление регрессионных ошибок из версии 2.2.0 для [**CVE 2016-0718**](https://python-all.ru/3/whatsnew/changelog.html)) и [**CVE 2012-0876**](https://python-all.ru/3/whatsnew/changelog.html) (противодействие хеш-флудингу с помощью SipHash). Примечание: [**CVE 2016-5300**](https://python-all.ru/3/whatsnew/changelog.html) (использование источников энтропии, специфичных для ОС, таких как getrandom) не затрагивает Python, так как Python уже получает энтропию от ОС для установки секрета expat через `XML_SetHashSalt()`.
- [bpo-30500](https://python-all.ru/3/whatsnew/changelog.html): Исправлен парсинг фрагментов в urllib.parse.splithost(). Например, `splithost('//127.0.0.1#@evil.com/')` теперь корректно возвращает хост `127.0.0.1`, вместо того чтобы воспринимать `@evil.com` как хост в аутентификации (`login@host`).

## Python 3.6.2 release candidate 1

*Дата выпуска: 2017-06-17*

### Безопасность

- [bpo-29591](https://python-all.ru/3/whatsnew/changelog.html): Обновлена копия expat с версии 2.1.1 до 2.2.0 для исправления [**CVE 2016-0718**](https://python-all.ru/3/whatsnew/changelog.html) и [**CVE 2016-4472**](https://python-all.ru/3/whatsnew/changelog.html). Подробнее см. [https://sourceforge.net/p/expat/bugs/537/](https://python-all.ru/3/whatsnew/changelog.html).

### Ядро и встроенные объекты

- [bpo-30682](https://python-all.ru/3/whatsnew/changelog.html): Убрано слишком строгое утверждение, которое приводило к ошибке для некоторых f-строк, например, eval("f'\\n'") и eval("f'\\r'").
- [bpo-30604](https://python-all.ru/3/whatsnew/changelog.html): co\_extra\_freefuncs больше не привязан к потоку, чтобы избежать аварийных завершений.
- [bpo-29104](https://python-all.ru/3/whatsnew/changelog.html): Исправлен парсинг обратных слешей в f-строках.
- [bpo-27945](https://python-all.ru/3/whatsnew/changelog.html): Исправлены различные ошибки сегментации в словаре при изменении входных коллекций во время поиска, вставки или сравнения. Патчи предоставлены Дуэйном Гриффином и Тимом Митчеллом.
- [bpo-25794](https://python-all.ru/3/whatsnew/changelog.html): Исправлены type.\_\_setattr\_\_() и type.\_\_delattr\_\_() для неинтернированных имён атрибутов. Основано на патче Eryk Sun.
- [bpo-30039](https://python-all.ru/3/whatsnew/changelog.html): Если KeyboardInterrupt возникает в момент, когда интерпретатор находится в процессе возобновления цепочки вложенных вызовов 'yield from' или 'await', исключение теперь корректно доставляется во внутренний фрейм.
- [bpo-12414](https://python-all.ru/3/whatsnew/changelog.html): sys.getsizeof() для объекта кода теперь возвращает размеры, включающие структуру кода и размеры объектов, на которые он ссылается. Патч от Donghee Na.
- [bpo-29949](https://python-all.ru/3/whatsnew/changelog.html): Исправлена регрессия использования памяти для объектов set и frozenset.
- [bpo-29935](https://python-all.ru/3/whatsnew/changelog.html): Исправлены сообщения об ошибках в методе index() для tuple, list и deque при передаче индексов неверного типа.
- [bpo-29859](https://python-all.ru/3/whatsnew/changelog.html): Показываются корректные сообщения об ошибках при сбое любого из вызовов pthread\_\* в thread\_pthread.h.
- [bpo-28876](https://python-all.ru/3/whatsnew/changelog.html): `bool(range)` работает, даже если `len(range)` вызывает [`OverflowError`](https://python-all.ru/3/library/exceptions.html#OverflowError).
- [bpo-29600](https://python-all.ru/3/whatsnew/changelog.html): Исправлена обёртка возвращаемых значений корутин в StopIteration.
- [bpo-28856](https://python-all.ru/3/whatsnew/changelog.html): Исправлена недоработка: формат %b для bytes должен поддерживать объекты, следующие протоколу буфера.
- [bpo-29714](https://python-all.ru/3/whatsnew/changelog.html): Исправлена регрессия: форматирование bytes могло завершаться ошибкой при наличии нулевых байтов внутри.
- [bpo-29478](https://python-all.ru/3/whatsnew/changelog.html): Если при использовании политики Compat32 указано max\_line\_length=None, это больше не игнорируется. Патч от Mircea Cosbuc.

### Библиотека

- [bpo-30616](https://python-all.ru/3/whatsnew/changelog.html): Функциональный API enum позволяет создавать пустые перечисления. Исправлено Donghee Na.
- [bpo-30038](https://python-all.ru/3/whatsnew/changelog.html): Исправлено состояние гонки между доставкой сигнала и файловым дескриптором пробуждения. Патч от Nathaniel Smith.
- [bpo-23894](https://python-all.ru/3/whatsnew/changelog.html): lib2to3 теперь распознаёт строки `rb'...'` и `f'...'`.
- [bpo-23890](https://python-all.ru/3/whatsnew/changelog.html): unittest.TestCase.assertRaises() теперь вручную разрывает циклическую ссылку, чтобы объекты не оставались в памяти дольше, чем нужно.
- [bpo-30149](https://python-all.ru/3/whatsnew/changelog.html): inspect.signature() теперь поддерживает вызываемые объекты с параметрами переменного числа аргументов, обёрнутыми в partialmethod. Патч от Donghee Na.
- [bpo-30645](https://python-all.ru/3/whatsnew/changelog.html): Исправлено вычисление пути в imp.load\_package() для случаев, когда пакет поставляется только в виде байт-кода. Патч от Alexandru Ardelean.
- [bpo-29931](https://python-all.ru/3/whatsnew/changelog.html): Исправлена проверка сравнения для объектов ipaddress.ip\_interface. Патч от Sanjay Sundaresan.
- [bpo-30605](https://python-all.ru/3/whatsnew/changelog.html): re.compile() больше не вызывает BytesWarning при компиляции экземпляра bytes с неправильно расположенным модификатором внутри строки. Патч от Roy Williams.
- [bpo-24484](https://python-all.ru/3/whatsnew/changelog.html): Избежать состояния гонки при очистке в multiprocessing (#2159)
- [bpo-28994](https://python-all.ru/3/whatsnew/changelog.html): Трассировка больше не отображается для SystemExit, возникшего в колбэке, зарегистрированном через atexit.
- [bpo-30508](https://python-all.ru/3/whatsnew/changelog.html): Не записывать исключения, если был вызван метод cancel() у задачи или future.
- [bpo-28556](https://python-all.ru/3/whatsnew/changelog.html): Обновления модуля typing: добавлен generic AsyncContextManager, добавлена поддержка ContextManager во всех версиях. Оригинальные PR от Jelle Zijlstra и Ivan Levkivskyi.
- [bpo-29870](https://python-all.ru/3/whatsnew/changelog.html): Исправлены утечки SSL-сокетов при прерывании соединения в реализации asyncio/ssl. Патч от Michaël Sghaïer.
- [bpo-29743](https://python-all.ru/3/whatsnew/changelog.html): Закрытие транспорта во время рукопожатия приводит к утечке открытого сокета. Патч от Nikolay Kim.
- [bpo-27585](https://python-all.ru/3/whatsnew/changelog.html): Исправлена отмена ожидания в asyncio.Lock. Патч от Mathieu Sornay.
- [bpo-30418](https://python-all.ru/3/whatsnew/changelog.html): В Windows subprocess.Popen.communicate() теперь также игнорирует EINVAL на stdin.write(), если дочерний процесс всё ещё работает, но закрыл канал.
- [bpo-29822](https://python-all.ru/3/whatsnew/changelog.html): inspect.isabstract() теперь работает во время \_\_init\_subclass\_\_. Патч от Nate Soares.
- [bpo-29581](https://python-all.ru/3/whatsnew/changelog.html): ABCMeta.\_\_new\_\_ теперь принимает `**kwargs`, что позволяет абстрактным базовым классам использовать именованные параметры в \_\_init\_subclass\_\_. Патч от Nate Soares.
- [bpo-30557](https://python-all.ru/3/whatsnew/changelog.html): faulthandler теперь корректно фильтрует и отображает коды исключений в Windows.
- [bpo-30378](https://python-all.ru/3/whatsnew/changelog.html): Исправлена проблема, из-за которой logging.handlers.SysLogHandler не мог обрабатывать IPv6-адреса.
- [bpo-29960](https://python-all.ru/3/whatsnew/changelog.html): Сохранять состояние генератора, когда \_random.Random.setstate() возбуждает исключение. Патч от Bryan Olson.
- [bpo-30414](https://python-all.ru/3/whatsnew/changelog.html): Фоновый поток multiprocessing.Queue.\_feed не выходит из основного цикла при исключении.
- [bpo-30003](https://python-all.ru/3/whatsnew/changelog.html): Исправлена обработка escape-символов в кодировке HZ. Основано на патче от Ma Lin.
- [bpo-30301](https://python-all.ru/3/whatsnew/changelog.html): Исправлен AttributeError при использовании SimpleQueue.empty() в методах запуска *spawn* и *forkserver*.
- [bpo-30329](https://python-all.ru/3/whatsnew/changelog.html): imaplib и poplib теперь перехватывают ошибку Windows socket WSAEINVAL (код 10022) при shutdown(SHUT\_RDWR): была предпринята недопустимая операция. Эта ошибка иногда возникает при SSL-соединениях.
- [bpo-30375](https://python-all.ru/3/whatsnew/changelog.html): Предупреждения, выдаваемые при компиляции регулярного выражения, теперь всегда указывают на строку в пользовательском коде. Ранее они могли указывать на внутренности модуля re, если выдавались изнутри групп или условных конструкций.
- [bpo-30048](https://python-all.ru/3/whatsnew/changelog.html): Исправлено: `Task.cancel()` может игнорироваться, когда задача выполняет корутину и корутина завершилась без дополнительных `await`.
- [bpo-30266](https://python-all.ru/3/whatsnew/changelog.html): contextlib.AbstractContextManager теперь поддерживает анти-регистрацию путём установки \_\_enter\_\_ = None или \_\_exit\_\_ = None, следуя шаблону, введённому в [bpo-25958](https://python-all.ru/3/whatsnew/changelog.html). Патч от Jelle Zijlstra.
- [bpo-30298](https://python-all.ru/3/whatsnew/changelog.html): Ослаблено условие выдачи предупреждений об устаревании для встроенных модификаторов. Теперь разрешено несколько последовательных встроенных модификаторов в начале шаблона (например, `'(?i)(?s)...'`). В подробном режиме пробелы и комментарии теперь допускаются до и между встроенными модификаторами (например, `'(?x) (?i) (?s)...'`).
- [bpo-29990](https://python-all.ru/3/whatsnew/changelog.html): Исправлена проверка диапазона в декодере GB18030. Оригинальный патч от Ma Lin.
- [bpo-26293](https://python-all.ru/3/whatsnew/changelog.html): Изменение произошло из-за поломки zipfile. (См. также: [bpo-29094](https://python-all.ru/3/whatsnew/changelog.html))
- [bpo-30243](https://python-all.ru/3/whatsnew/changelog.html): Удалены методы \_\_init\_\_ у сканера и кодировщика \_json. Неправильное их использование могло привести к утечкам памяти или сбоям. Теперь объекты сканера и кодировщика полностью инициализируются в методах \_\_new\_\_.
- [bpo-30185](https://python-all.ru/3/whatsnew/changelog.html): Избежать трассировки KeyboardInterrupt во вспомогательном процессе forkserver при получении Ctrl-C.
- [bpo-28556](https://python-all.ru/3/whatsnew/changelog.html): Различные обновления модуля typing: добавлен тип typing.NoReturn, используется WrapperDescriptorType, небольшие исправления ошибок. Оригинальные PR от Jim Fasarakis-Hilliard и Ivan Levkivskyi.
- [bpo-30205](https://python-all.ru/3/whatsnew/changelog.html): Исправлен getsockname() для несвязанных AF\_UNIX-сокетов в Linux.
- [bpo-30070](https://python-all.ru/3/whatsnew/changelog.html): Исправлены утечки и сбои при обработке ошибок в модуле парсера.
- [bpo-30061](https://python-all.ru/3/whatsnew/changelog.html): Исправлены сбои в методах IOBase \_\_next\_\_() и readlines(), когда readline() или \_\_next\_\_() соответственно возвращают объект, не поддерживающий size. Исправлены возможные другие ошибки, вызванные отсутствием проверки результатов PyObject\_Size(), PySequence\_Size() или PyMapping\_Size().
- [bpo-30017](https://python-all.ru/3/whatsnew/changelog.html): Разрешено многократное вызов метода close() у объекта записи zip-записи. Запись в закрытый writer теперь всегда вызывает ValueError.
- [bpo-30068](https://python-all.ru/3/whatsnew/changelog.html): \_io.\_IOBase.readlines будет проверять, закрыт ли он, если присутствует подсказка (hint).
- [bpo-29694](https://python-all.ru/3/whatsnew/changelog.html): Исправлено состояние гонки в pathlib mkdir с флагами parents=True. Патч от Armin Rigo.
- [bpo-29692](https://python-all.ru/3/whatsnew/changelog.html): Исправлено произвольное разрывание цепочки исключений RuntimeError в contextlib.contextmanager. Патч от Siddharth Velankar.
- [bpo-29998](https://python-all.ru/3/whatsnew/changelog.html): При сериализации (pickle) и копировании ImportError теперь сохраняются атрибуты name и path.
- [bpo-29953](https://python-all.ru/3/whatsnew/changelog.html): Исправлены утечки памяти в методе replace() объектов datetime и time при передаче аргумента fold вне допустимого диапазона.
- [bpo-29942](https://python-all.ru/3/whatsnew/changelog.html): Исправлен сбой в itertools.chain.from\_iterable при обработке длинных последовательностей пустых итерабельных объектов.
- [bpo-27863](https://python-all.ru/3/whatsnew/changelog.html): Исправлены множественные сбои в ElementTree, вызванные состояниями гонки и некорректными типами.
- [bpo-28699](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка в пулах multiprocessing.pool, из-за которой исключение, возникшее на самом первом элементе итерабельного объекта, могло подавляться или приводить к зависанию программы. Патч от Davin Potts и Xiang Zhang.
- [bpo-25803](https://python-all.ru/3/whatsnew/changelog.html): Устранены некорректные ошибки, возникающие при вызове Path.mkdir(exist\_ok=True), когда операционная система отдаёт приоритет ошибкам типа EACCES над EEXIST.
- [bpo-29861](https://python-all.ru/3/whatsnew/changelog.html): В multiprocessing.Pool ссылки на задачи, их аргументы и результаты освобождаются сразу после завершения задачи.
- [bpo-29884](https://python-all.ru/3/whatsnew/changelog.html): faulthandler: восстановление старого sigaltstack при завершении работы. Патч от Christophe Zeitouny.
- [bpo-25455](https://python-all.ru/3/whatsnew/changelog.html): Исправлены сбои в repr рекурсивных буферизованных файлоподобных объектов.
- [bpo-29800](https://python-all.ru/3/whatsnew/changelog.html): Исправлены сбои в partial.\_\_repr\_\_ при нестроковых ключах в partial.keywords. Патч от Michael Seifert.
- [bpo-29742](https://python-all.ru/3/whatsnew/changelog.html): get\_extra\_info() теперь вызывает исключение при вызове на закрытом ssl-транспорте. Патч от Nikolay Kim.
- [bpo-8256](https://python-all.ru/3/whatsnew/changelog.html): Исправлена возможность ошибок или сбоя input(), если атрибуты “encoding” или “errors” sys.stdin или sys.stdout не заданы или не являются строками.
- [bpo-28298](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка, из-за которой массивы ‘Q’, ‘L’ и ‘I’ не принимали большие целые объекты (объекты с \_\_int\_\_) в качестве элементов. Патч от Oren Milman.
- [bpo-28231](https://python-all.ru/3/whatsnew/changelog.html): Модуль zipfile теперь принимает path-like объекты для внешних путей.
- [bpo-26915](https://python-all.ru/3/whatsnew/changelog.html): Методы index() и count() collections.abc.Sequence теперь при сравнении сначала проверяют идентичность, а затем равенство.
- [bpo-29615](https://python-all.ru/3/whatsnew/changelog.html): SimpleXMLRPCDispatcher больше не добавляет в цепочку KeyError (или любое другое исключение) к исключениям, возникшим в диспетчеризуемых методах. Патч от Petr Motejlek.
- [bpo-30177](https://python-all.ru/3/whatsnew/changelog.html): path.resolve(strict=False) больше не обрезает путь после первого элемента, отсутствующего в файловой системе. Патч от Antoine Pietri.

### IDLE

- [bpo-15786](https://python-all.ru/3/whatsnew/changelog.html): Исправлено несколько проблем с окном автодополнения IDLE. Теперь должны работать: щелчок по элементам списка, использование полосы прокрутки, выбор элемента нажатием Enter. Зависания на MacOSX больше не должны происходить. Патч от Louie Lu.
- [bpo-25514](https://python-all.ru/3/whatsnew/changelog.html): Добавлен подраздел документации о невозможности запуска IDLE. Всплывающее сообщение об отсутствии соединения направляет пользователей в этот раздел.
- [bpo-30642](https://python-all.ru/3/whatsnew/changelog.html): Исправлены утечки ссылок в тестах IDLE. Патчи от Louie Lu и Terry Jan Reedy.
- [bpo-30495](https://python-all.ru/3/whatsnew/changelog.html): Добавлены докстринги для textview.py и приведены имена к стандарту PEP8. Патчи от Cheryl Sabella и Terry Jan Reedy.
- [bpo-30290](https://python-all.ru/3/whatsnew/changelog.html): Help-about: приведены имена к стандарту PEP8, добавлены тесты. Покрытие увеличено до 100%. Патчи от Louie Lu, Cheryl Sabella и Terry Jan Reedy.
- [bpo-30303](https://python-all.ru/3/whatsnew/changelog.html): Добавлена опция \_utest в textview; добавлены новые тесты. Покрытие увеличено до 100%. Патчи от Louie Lu и Terry Jan Reedy.

### C API

- [bpo-27867](https://python-all.ru/3/whatsnew/changelog.html): Функция PySlice\_GetIndicesEx() больше не заменяется макросом, если Py\_LIMITED\_API не установлен.

### Build

- [bpo-29941](https://python-all.ru/3/whatsnew/changelog.html): Add `--with-assertions` configure flag to explicitly enable C `assert()` checks. Defaults to off. `--with-pydebug` implies `--with-assertions`.
- [bpo-28787](https://python-all.ru/3/whatsnew/changelog.html): Fix out-of-tree builds of Python when configured with `--with--dtrace`.
- [bpo-29243](https://python-all.ru/3/whatsnew/changelog.html): Prevent unnecessary rebuilding of Python during `make test`, `make install` and some other make targets when configured with `--enable-optimizations`.
- [bpo-23404](https://python-all.ru/3/whatsnew/changelog.html): Don’t regenerate generated files based on file modification time anymore: the action is now explicit. Replace `make touch` with `make regen-all`.
- [bpo-29643](https://python-all.ru/3/whatsnew/changelog.html): Исправление `--enable-optimization` не работало.

### Документация

- [bpo-30176](https://python-all.ru/3/whatsnew/changelog.html): Добавление отсутствующих констант, связанных с атрибутами, в curses документацию.
- [bpo-30052](https://python-all.ru/3/whatsnew/changelog.html): цели ссылок для [`bytes()`](https://python-all.ru/3/library/stdtypes.html#bytes) и [`bytearray()`](https://python-all.ru/3/library/stdtypes.html#bytearray) теперь указывают на их соответствующие определения типов, а не на соответствующие записи встроенных функций. Используйте [bytes](https://python-all.ru/3/library/functions.html#func-bytes) и [bytearray](https://python-all.ru/3/library/functions.html#func-bytearray) для ссылки на последние. Чтобы гарантировать, что это и будущие обновления перекрёстных ссылок применяются автоматически, ежедневные сборки документации теперь отключают стандартные функции кэширования вывода в Sphinx.
- [bpo-26985](https://python-all.ru/3/whatsnew/changelog.html): Добавить отсутствующую информацию об объекте кода в документацию inspect.

### Инструменты/Демонстрации

- [bpo-29367](https://python-all.ru/3/whatsnew/changelog.html): python-gdb.py теперь также поддерживает объекты `method-wrapper` (`wrapperobject`).

### Тесты

- [bpo-30357](https://python-all.ru/3/whatsnew/changelog.html): test\_thread: setUp() теперь использует support.threading\_setup() и support.threading\_cleanup() для ожидания завершения потоков, чтобы избежать случайных побочных эффектов на последующих тестах. Первоначальный патч написан Grzegorz Grzywacz.
- [bpo-30197](https://python-all.ru/3/whatsnew/changelog.html): Улучшены функции swap\_attr() и swap\_item() в модуле test.support. Теперь они работают при удалении заменённого атрибута или элемента внутри оператора with. Старое значение атрибута или элемента (или None, если его нет) теперь будет присвоено цели предложения “as” , если она есть.

### Windows

- [bpo-30687](https://python-all.ru/3/whatsnew/changelog.html): Поиск msbuild.exe на Windows при сборке вместо vcvarsall.bat.
- [bpo-30450](https://python-all.ru/3/whatsnew/changelog.html): Процесс сборки на Windows больше не зависит от Subversion, вместо этого он получает внешний код из GitHub через Python-скрипт. Если Python 3.6 не найден в системе (через `py -3.6`), NuGet используется для загрузки копии 32-битного Python.

## Python 3.6.1 final

*Дата выпуска: 2017-03-21*

### Ядро и встроенные модули

- [bpo-29723](https://python-all.ru/3/whatsnew/changelog.html): Изменение инициализации `sys.path[0]` для [bpo-29139](https://python-all.ru/3/whatsnew/changelog.html) вызвало регрессию, выявив несоответствие в том, как инициализируется sys.path при выполнении `__main__` из zip-файла, каталога или другого места импорта. Интерпретатор теперь последовательно избегает добавления родительского каталога места импорта в `sys.path`, и гарантирует, что никакие другие записи `sys.path` не изменяются непреднамеренно при вставке места импорта, указанного в командной строке.

### Сборка

- [bpo-27593](https://python-all.ru/3/whatsnew/changelog.html): исправление формата информации git, используемой в sys.version
- Исправление несовместимого комментария в python.h

## Python 3.6.1 release candidate 1

*Дата выпуска: 2017-03-04*

### Ядро и встроенные модули

- [bpo-28893](https://python-all.ru/3/whatsnew/changelog.html): Установка правильного \_\_cause\_\_ для ошибок о недопустимых ожидаемых объектах, возвращаемых из \_\_aiter\_\_ и \_\_anext\_\_.
- [bpo-29683](https://python-all.ru/3/whatsnew/changelog.html): Исправления выделения памяти в \_PyCode\_SetExtra. Патч от Brian Coleman.
- [bpo-29684](https://python-all.ru/3/whatsnew/changelog.html): Исправление незначительной регрессии PyEval\_CallObjectWithKeywords. Должен вызывать TypeError, если kwargs не является dict. Но мог приводить к сбою сегментации при args=NULL и kwargs не является dict.
- [bpo-28598](https://python-all.ru/3/whatsnew/changelog.html): Поддержка \_\_rmod\_\_ для подклассов str, вызываемого перед str.\_\_mod\_\_. Патч от Martijn Pieters.
- [bpo-29607](https://python-all.ru/3/whatsnew/changelog.html): Исправление вычисления stack\_effect для CALL\_FUNCTION\_EX. Патч от Matthieu Dartiailh.
- [bpo-29602](https://python-all.ru/3/whatsnew/changelog.html): Исправление некорректной обработки знаковых нулей в конструкторе complex для подклассов complex и для входных данных, имеющих метод \_\_complex\_\_. Патч от Serhiy Storchaka.
- [bpo-29347](https://python-all.ru/3/whatsnew/changelog.html): Исправлено возможное разыменование неопределённых указателей при создании объектов weakref.
- [bpo-29438](https://python-all.ru/3/whatsnew/changelog.html): Исправлена проблема use-after-free в dict разделения ключей.
- [bpo-29319](https://python-all.ru/3/whatsnew/changelog.html): Предотвращение перезаписи sys.path\[0\] функцией RunMainFromImporter.
- [bpo-29337](https://python-all.ru/3/whatsnew/changelog.html): Исправлена возможная ошибка BytesWarning при сравнении объектов кода. Предупреждения могли возникать на этапе компиляции.
- [bpo-29327](https://python-all.ru/3/whatsnew/changelog.html): Исправлено падение при передаче итерируемого именованного аргумента в sorted().
- [bpo-29034](https://python-all.ru/3/whatsnew/changelog.html): Исправлена утечка памяти и use-after-free в модуле os (path\_converter).
- [bpo-29159](https://python-all.ru/3/whatsnew/changelog.html): Исправлена регрессия в bytes(x), когда x.\_\_index\_\_() вызывает исключение.
- [bpo-28932](https://python-all.ru/3/whatsnew/changelog.html): Не включать \<sys/random.h\>, если его не существует.
- [bpo-25677](https://python-all.ru/3/whatsnew/changelog.html): Исправлено позиционирование курсора синтаксической ошибки для блоков с отступом. Основано на патче Майкла Лейзелла.
- [bpo-29000](https://python-all.ru/3/whatsnew/changelog.html): Исправлено форматирование байтов для восьмеричных чисел с нулевым дополнением в альтернативной форме.
- [bpo-26919](https://python-all.ru/3/whatsnew/changelog.html): На Android системные данные теперь всегда кодируются/декодируются в/из UTF-8, а не в кодировке локали, чтобы избежать несоответствий с os.fsencode() и os.fsdecode(), которые уже используют UTF-8.
- [bpo-28991](https://python-all.ru/3/whatsnew/changelog.html): functools.lru\_cache() была подвержена трудновоспроизводимой ошибке реентерабельности, возникающей из-за модифицированной функции len().
- [bpo-28739](https://python-all.ru/3/whatsnew/changelog.html): f-строковые выражения больше не принимаются в качестве докстрингов и функцией ast.literal\_eval(), даже если они не содержат выражений.
- [bpo-28512](https://python-all.ru/3/whatsnew/changelog.html): Исправлена установка атрибута offset в SyntaxError функциями PyErr\_SyntaxLocationEx() и PyErr\_SyntaxLocationObject().
- [bpo-28918](https://python-all.ru/3/whatsnew/changelog.html): Исправлена кросс-компиляция xxlimited, когда Python был собран с определённым Py\_DEBUG.
- [bpo-28731](https://python-all.ru/3/whatsnew/changelog.html): Оптимизирован \_PyDict\_NewPresized() для создания словаря правильного размера. Увеличена скорость словарного литерала с константными ключами до 30%.

### Библиотека

- [bpo-29169](https://python-all.ru/3/whatsnew/changelog.html): Обновлён zlib до версии 1.2.11.
- [bpo-29623](https://python-all.ru/3/whatsnew/changelog.html): Разрешено использование путеподобного объекта в качестве единственного аргумента в ConfigParser.read(). Патч Дэвида Эллиса.
- [bpo-28963](https://python-all.ru/3/whatsnew/changelog.html): Исправлен выход за границы итерации в asyncio.Future.remove\_done\_callback, реализованном на C.
- [bpo-29704](https://python-all.ru/3/whatsnew/changelog.html): asyncio.subprocess.SubprocessStreamProtocol больше не закрывается до того, как все каналы будут закрыты.
- [bpo-29271](https://python-all.ru/3/whatsnew/changelog.html): Исправлено, что Task.current\_task и Task.all\_tasks, реализованные на C, принимают аргумент None, как и их реализация на чистом Python.
- [bpo-29703](https://python-all.ru/3/whatsnew/changelog.html): Исправлен asyncio для поддержки создания новых циклов событий в дочерних процессах.
- [bpo-29376](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка утверждения в threading.\_DummyThread.is\_alive().
- [bpo-28624](https://python-all.ru/3/whatsnew/changelog.html): Добавлен тест, проверяющий, что параметр cwd в Popen() принимает объекты PathLike. Патч Саяна Чоудхури.
- [bpo-28518](https://python-all.ru/3/whatsnew/changelog.html): Транзакция теперь неявно начинается перед DML-инструкцией. Патч Авива Паливоды.
- [bpo-29532](https://python-all.ru/3/whatsnew/changelog.html): Изменение словаря kwargs, переданного в functools.partial(), больше не влияет на объект partial после его создания.
- [bpo-29110](https://python-all.ru/3/whatsnew/changelog.html): Исправлена утечка файлового объекта в aifc.open(), когда файл задан как путь в файловой системе и не имеет корректного формата AIFF. Патч Энтони Чжана.
- [bpo-28556](https://python-all.ru/3/whatsnew/changelog.html): Различные обновления модуля typing: typing.Counter, typing.ChainMap, улучшенное кэширование ABC и другое. Оригинальные PR от Йелле Зейлстры, Ивана Левкивского, Мануэля Креббера и Лукаша Ланги.
- [bpo-29100](https://python-all.ru/3/whatsnew/changelog.html): Исправлена регрессия в datetime.fromtimestamp(), появившаяся в Python 3.6.0: проверка минимального и максимального годов.
- [bpo-29519](https://python-all.ru/3/whatsnew/changelog.html): Исправлена генерация исключений weakref во время завершения интерпретатора при использовании с редким сочетанием multiprocessing и пользовательских кодеков.
- [bpo-29416](https://python-all.ru/3/whatsnew/changelog.html): Предотвращён бесконечный цикл в pathlib.Path.mkdir
- [bpo-29444](https://python-all.ru/3/whatsnew/changelog.html): Исправлен выход за границы буфера в методе group() объекта совпадения. Основано на патче WGH.
- [bpo-29335](https://python-all.ru/3/whatsnew/changelog.html): Исправлено subprocess.Popen.wait(), когда дочерний процесс завершился в состояние остановки, а не завершения (например, при ptrace).
- [bpo-29290](https://python-all.ru/3/whatsnew/changelog.html): Исправлена регрессия в argparse, из-за которой сообщения справки переносились на неразрывных пробелах.
- [bpo-28735](https://python-all.ru/3/whatsnew/changelog.html): Исправлено сравнение mock.MagickMock с mock.ANY.
- [bpo-29316](https://python-all.ru/3/whatsnew/changelog.html): Восстановлен предварительный статус модуля typing, добавлено соответствующее примечание в документацию. Исправление от Ivan L.
- [bpo-29219](https://python-all.ru/3/whatsnew/changelog.html): Исправлена бесконечная рекурсия в repr неинициализированных экземпляров ctypes.CDLL.
- [bpo-29011](https://python-all.ru/3/whatsnew/changelog.html): Исправлено важное упущение: добавлен Deque в модуль typing.
- [bpo-28969](https://python-all.ru/3/whatsnew/changelog.html): Исправлено состояние гонки в C-реализации functools.lru\_cache. Возникала ошибка KeyError при одновременном вызове закэшированной функции с полным кэшем из разных потоков с одинаковыми незакэшированными аргументами.
- [bpo-29142](https://python-all.ru/3/whatsnew/changelog.html): В urllib.request суффиксы в переменной окружения no\_proxy с точкой в начале снова могут сопоставляться с соответствующими именами хостов (например, .b.c соответствует a.b.c). Исправление от Milan Oberkirch.
- [bpo-28961](https://python-all.ru/3/whatsnew/changelog.html): Исправлен хелпер unittest.mock.\_Call: параметр name больше не игнорируется. Исправление от Jiajun Huang.
- [bpo-29203](https://python-all.ru/3/whatsnew/changelog.html): functools.lru\_cache() теперь соблюдает [**PEP 468**](https://python-all.ru/3/whatsnew/changelog.html) и сохраняет порядок именованных аргументов. f(a=1, b=2) теперь кэшируется отдельно от f(b=2, a=1), так как оба вызова могут потенциально давать разные результаты.
- [bpo-15812](https://python-all.ru/3/whatsnew/changelog.html): inspect.getframeinfo() теперь корректно показывает первую строку контекста. Исправление от Sam Breese.
- [bpo-29094](https://python-all.ru/3/whatsnew/changelog.html): Смещения в ZIP-файле, созданном с внешним файловым объектом и режимами «w» и «x», теперь задаются относительно начала файла.
- [bpo-29085](https://python-all.ru/3/whatsnew/changelog.html): Разрешено random.Random.seed() использовать высококачественные случайные данные ОС вместо pid и времени.
- [bpo-29061](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка в secrets.randbelow(), из-за которой функция зависала при передаче отрицательного аргумента. Исправление от Brendan Donegan.
- [bpo-29079](https://python-all.ru/3/whatsnew/changelog.html): Предотвращён бесконечный цикл в pathlib.resolve() на Windows
- [bpo-13051](https://python-all.ru/3/whatsnew/changelog.html): Исправлены ошибки рекурсии в больших или изменивших размер объектах curses.textpad.Textbox. На основе исправления от Tycho Andersen.
- [bpo-29119](https://python-all.ru/3/whatsnew/changelog.html): Исправлены слабые ссылки в чисто-питоновской версии метода collections.OrderedDict move\_to\_end(). Вклад от Andra Bogildea.
- [bpo-9770](https://python-all.ru/3/whatsnew/changelog.html): Предикаты curses.ascii теперь корректно работают с отрицательными целыми числами.
- [bpo-28427](https://python-all.ru/3/whatsnew/changelog.html): Старые ключи не должны удалять новые значения из WeakValueDictionary при сборке из другого потока.
- [bpo-28923](https://python-all.ru/3/whatsnew/changelog.html): Удалены артефакты редактора из Tix.py.
- [bpo-29055](https://python-all.ru/3/whatsnew/changelog.html): Улучшено сообщение об ошибке при пустой выборке в random.choice() путём подавления исходного исключения.
- [bpo-28871](https://python-all.ru/3/whatsnew/changelog.html): Исправлен сбой при освобождении глубокого ElementTree.
- [bpo-19542](https://python-all.ru/3/whatsnew/changelog.html): Исправлены ошибки в WeakValueDictionary.setdefault() и WeakValueDictionary.pop(), случающиеся при сборке мусора в другом потоке.
- [bpo-20191](https://python-all.ru/3/whatsnew/changelog.html): Исправлен сбой в resource.prlimit() при передаче последовательности, которая не владеет своими элементами, в качестве лимитов.
- [bpo-28779](https://python-all.ru/3/whatsnew/changelog.html): multiprocessing.set\_forkserver\_preload() приводил к сбою процесса forkserver, если предварительно загруженный модуль создавал некоторые объекты multiprocessing, такие как блокировки.
- [bpo-28847](https://python-all.ru/3/whatsnew/changelog.html): dbm.dumb теперь поддерживает чтение файлов только для чтения и больше не записывает индексный файл, если он не изменился.
- [bpo-26937](https://python-all.ru/3/whatsnew/changelog.html): Метод chown() класса tarfile.TarFile теперь не завершается ошибкой, если модуль grp не может быть импортирован (например, на платформе Android).

### IDLE

- [bpo-29071](https://python-all.ru/3/whatsnew/changelog.html): IDLE подсвечивает префиксы f-строк (но не недопустимые префиксы ur).
- [bpo-28572](https://python-all.ru/3/whatsnew/changelog.html): Добавлено 10% к покрытию тестами test\_configdialog в IDLE. Обновлено и расширено описание системы конфигурации.

### Windows

- [bpo-29579](https://python-all.ru/3/whatsnew/changelog.html): Удалён readme.txt из установщика
- [bpo-29326](https://python-all.ru/3/whatsnew/changelog.html): Игнорируются пустые строки в файлах .\_pth (исправление от Alexey Izbyshev)
- [bpo-28164](https://python-all.ru/3/whatsnew/changelog.html): Корректная обработка специальных имён файлов консоли (исправление от Eryk Sun)
- [bpo-29409](https://python-all.ru/3/whatsnew/changelog.html): реализован [**PEP 529**](https://python-all.ru/3/whatsnew/changelog.html) для io.FileIO (патч от Eryk Sun)
- [bpo-29392](https://python-all.ru/3/whatsnew/changelog.html): исправлен сбой при передаче недопустимых аргументов в модуль msvcrt.
- [bpo-25778](https://python-all.ru/3/whatsnew/changelog.html): winreg некорректно обрезает строки (патч от Eryk Sun)
- [bpo-28896](https://python-all.ru/3/whatsnew/changelog.html): WindowsRegistryFinder объявлен устаревшим и по умолчанию отключён.

### C API

- [bpo-27867](https://python-all.ru/3/whatsnew/changelog.html): функция PySlice\_GetIndicesEx() заменяется макросом, если Py\_LIMITED\_API не задан или задан значением между 0x03050400 и 0x03060000 (не включительно), или 0x03060100 и выше.
- [bpo-29083](https://python-all.ru/3/whatsnew/changelog.html): исправлены объявления некоторых функций публичного API. PyArg\_VaParse() и PyArg\_VaParseTupleAndKeywords() были недоступны в ограниченном API. PyArg\_ValidateKeywordArguments(), PyArg\_UnpackTuple() и Py\_BuildValue() были недоступны в ограниченном API версии \< 3.3, когда определён PY\_SSIZE\_T\_CLEAN.
- [bpo-29058](https://python-all.ru/3/whatsnew/changelog.html): все расширения стабильного API, добавленные после Python 3.2, теперь доступны, только если Py\_LIMITED\_API установлен в значение PY\_VERSION\_HEX минимальной версии Python, поддерживающей это API.

### Документация

- [bpo-28929](https://python-all.ru/3/whatsnew/changelog.html): добавлена ссылка в документации на исходный файл на GitHub.
- [bpo-25008](https://python-all.ru/3/whatsnew/changelog.html): smtpd.py объявлен фактически устаревшим, добавлена ссылка на aiosmtpd, стороннюю замену на основе asyncio.
- [bpo-26355](https://python-all.ru/3/whatsnew/changelog.html): добавлена каноническая ссылка в заголовке на каждой странице на соответствующую основную версию документации. Патч от Matthias Bussonnier.
- [bpo-29349](https://python-all.ru/3/whatsnew/changelog.html): исправлен синтаксис Python 2 в коде для сборки документации.

### Тесты

- [bpo-28087](https://python-all.ru/3/whatsnew/changelog.html): пропуск test\_asyncore и test\_eintr при ошибках poll на macOS. Пропускаются некоторые тесты select.poll при запуске на macOS из-за нерешённых проблем с системной функцией poll на некоторых версиях macOS.
- [bpo-29571](https://python-all.ru/3/whatsnew/changelog.html): для соответствия поведению флага `re.LOCALE` test\_re.test\_locale\_flag теперь использует `locale.getpreferredencoding(False)` для определения кодировки-кандидата для тестового регулярного выражения (что позволяет корректно пропускать тест, когда кодировка локали по умолчанию является многобайтовой).
- [bpo-28950](https://python-all.ru/3/whatsnew/changelog.html): запрещено комбинировать -j0 с -T/-l в аргументах командной строки regrtest.
- [bpo-28683](https://python-all.ru/3/whatsnew/changelog.html): исправлены тесты, которые используют bind() для unix-сокета и вызывают PermissionError на Android для пользователя без прав root.
- [bpo-26939](https://python-all.ru/3/whatsnew/changelog.html): добавлена функция support.setswitchinterval() для исправления зависания test\_functools на эмуляторе Android armv7 qemu.

### Сборка

- [bpo-27593](https://python-all.ru/3/whatsnew/changelog.html): sys.version и функции модуля platform python\_build(), python\_branch() и python\_revision() теперь используют информацию из git, а не из hg при сборке из репозитория.
- [bpo-29572](https://python-all.ru/3/whatsnew/changelog.html): обновлены установщики Windows и OS X для использования OpenSSL 1.0.2k.
- [bpo-26851](https://python-all.ru/3/whatsnew/changelog.html): установлены флаги компиляции и компоновки для Android.
- [bpo-28768](https://python-all.ru/3/whatsnew/changelog.html): исправлено неявное объявление функции \_setmode. Патч от Masayuki Yamamoto
- [bpo-29080](https://python-all.ru/3/whatsnew/changelog.html): удалена жёсткая зависимость от hg.exe в PCBuild/build.bat
- [bpo-23903](https://python-all.ru/3/whatsnew/changelog.html): добавлены пропущенные имена в PC/python3.def.
- [bpo-28762](https://python-all.ru/3/whatsnew/changelog.html): lockf() доступна на Android API level 24, но макрос F\_LOCK не определён в android-ndk-r13.
- [bpo-28538](https://python-all.ru/3/whatsnew/changelog.html): исправлена ошибка компиляции, возникающая из-за того, что if\_nameindex() доступна на Android API level 24, но структура if\_nameindex не определена.
- [bpo-20211](https://python-all.ru/3/whatsnew/changelog.html): не добавлять каталог для установки заголовочных файлов C и каталог для установки библиотек объектного кода в пути поиска кросскомпиляции. Оригинальный патч от Thomas Petazzoni.
- [bpo-28849](https://python-all.ru/3/whatsnew/changelog.html): не определять sys.implementation.\_multiarch на Android.

## Python 3.6.0 финальная

*Дата выпуска: 2016-12-23*

Изменений по сравнению с кандидатом в релиз 2 нет.

## Python 3.6.0. Кандидат в релиз 2

*Дата релиза: 2016-12-16*

### Ядро и встроенные модули

- [bpo-28147](https://python-all.ru/3/whatsnew/changelog.html): Исправлена утечка памяти в split-table словарях: setattr() не должен преобразовывать комбинированную таблицу в split-таблицу. Патч написан INADA Naoki.
- [bpo-28990](https://python-all.ru/3/whatsnew/changelog.html): Исправлена проблема зависания asyncio SSL при закрытии соединения до завершения рукопожатия. (Патч от HoHo-Ho)

### Инструменты и демонстрации

- [bpo-28770](https://python-all.ru/3/whatsnew/changelog.html): Исправлен python-gdb.py для fastcalls.

### Windows

- [bpo-28896](https://python-all.ru/3/whatsnew/changelog.html): Устарел WindowsRegistryFinder.

### Сборка

- [bpo-28898](https://python-all.ru/3/whatsnew/changelog.html): Предотвращены ошибки сборки gdb из-за переопределения HAVE\_LONG\_LONG.

## Python 3.6.0. Кандидат в релиз 1

*Дата релиза: 2016-12-06*

### Ядро и встроенные модули

- [bpo-23722](https://python-all.ru/3/whatsnew/changelog.html): Вместо того чтобы молча создавать класс, не поддерживающий вызов `super()` без аргументов в методах, теперь, если новая запись пространства имён `__classcell__` не передаётся в `type.__new__`, это приводит к `DeprecationWarning` и классу, который поддерживает `super()` без аргументов.
- [bpo-28797](https://python-all.ru/3/whatsnew/changelog.html): Изменение \_\_dict\_\_ класса внутри метода \_\_set\_name\_\_ дескриптора, используемого в этом классе, больше не препятствует вызову метода \_\_set\_name\_\_ других дескрипторов.
- [bpo-28782](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка в реализации `yield from` при проверке, является ли следующая инструкция YIELD\_FROM. Регрессия внесена WORDCODE ([bpo-26647](https://python-all.ru/3/whatsnew/changelog.html)).

### Библиотека

- [bpo-27030](https://python-all.ru/3/whatsnew/changelog.html): Неизвестные экранирования в шаблоне замены re.sub() снова разрешены. Но они по-прежнему считаются устаревшими и будут отключены в 3.7.
- [bpo-28835](https://python-all.ru/3/whatsnew/changelog.html): Исправлена регрессия, внесённая в warnings.catch\_warnings(): теперь вызывается warnings.showwarning(), если он был переопределён внутри менеджера контекста.
- [bpo-27172](https://python-all.ru/3/whatsnew/changelog.html): Для облегчения обновления с версии 2.7 ранее задокументированное объявление `inspect.getfullargspec()` устаревшим было отменено. Это решение может быть пересмотрено после прекращения официальной поддержки ветки Python 2.7.
- [bpo-26273](https://python-all.ru/3/whatsnew/changelog.html): Добавлены новые константы `socket.TCP_CONGESTION` (Linux 2.6.13) и `socket.TCP_USER_TIMEOUT` (Linux 2.6.37). Патч написан Omar Sandoval.
- [bpo-24142](https://python-all.ru/3/whatsnew/changelog.html): Чтение повреждённого конфигурационного файла оставляло configparser в недопустимом состоянии. Исходный патч от Florian Höch.
- [bpo-28843](https://python-all.ru/3/whatsnew/changelog.html): Исправлена обработка \_\_traceback\_\_ исключений в C-задаче asyncio.

### C API

- [bpo-28808](https://python-all.ru/3/whatsnew/changelog.html): PyUnicode\_CompareWithASCIIString() теперь никогда не вызывает исключений.

### Документация

- [bpo-23722](https://python-all.ru/3/whatsnew/changelog.html): Справочник по модели данных и раздел о переносе в руководстве What’s New теперь описывают дополнительную обработку `__classcell__`, необходимую для того, чтобы пользовательские метаклассы полностью поддерживали [**PEP 487**](https://python-all.ru/3/whatsnew/changelog.html) и вызов `super()` без аргументов.

### Инструменты и демонстрации

- [bpo-28023](https://python-all.ru/3/whatsnew/changelog.html): Исправлена проблема: python-gdb.py не поддерживал новую реализацию dict.

## Python 3.6.0. Бета-версия 4

*Дата выпуска: 2016-11-21*

### Ядро и встроенные модули

- [bpo-28532](https://python-all.ru/3/whatsnew/changelog.html): Показывать sys.version при двукратном указании флага -V.
- [bpo-27100](https://python-all.ru/3/whatsnew/changelog.html): Оператор with теперь сначала проверяет \_\_enter\_\_, а затем \_\_exit\_\_. Это даёт менее запутанные сообщения об ошибках, если оба метода отсутствуют. Патч от Джонатана Эллингтона.
- [bpo-28746](https://python-all.ru/3/whatsnew/changelog.html): Исправлен метод файлового дескриптора set\_inheritable() на платформах, не имеющих команд ioctl FIOCLEX и FIONCLEX.
- [bpo-26920](https://python-all.ru/3/whatsnew/changelog.html): Исправлена проблема получения кодировки локали при инициализации интерпретатора на платформах без langinfo.
- [bpo-28648](https://python-all.ru/3/whatsnew/changelog.html): Исправлен крах Py\_DecodeLocale() в отладочной сборке на Mac OS X при декодировании астральных символов. Патч от Xiang Zhang.
- [bpo-19398](https://python-all.ru/3/whatsnew/changelog.html): Лишний слеш больше не добавляется к компонентам sys.path, если на этапе компиляции компоненты PYTHONPATH пусты.
- [bpo-28665](https://python-all.ru/3/whatsnew/changelog.html): Увеличена производительность байткода STORE\_DEREF на 40%.
- [bpo-28583](https://python-all.ru/3/whatsnew/changelog.html): PyDict\_SetDefault не объединял split-таблицу при необходимости. Патч от Xiang Zhang.
- [bpo-27243](https://python-all.ru/3/whatsnew/changelog.html): Изменено PendingDeprecationWarning -\> DeprecationWarning. Согласно решению в обсуждении, возвращение корутины из \_\_aiter\_\_ должно приводить к PendingDeprecationWarning в 3.5 и к DeprecationWarning в 3.6.
- [bpo-26182](https://python-all.ru/3/whatsnew/changelog.html): Исправлена утечка ссылок в коде, который вызывает DeprecationWarning.
- [bpo-28721](https://python-all.ru/3/whatsnew/changelog.html): Исправлена обработка распространения StopAsyncIteration в асинхронных генераторах aclose() и athrow().

### Библиотека

- [bpo-28752](https://python-all.ru/3/whatsnew/changelog.html): Восстановлены методы \_\_reduce\_\_() объектов datetime.
- [bpo-28727](https://python-all.ru/3/whatsnew/changelog.html): Объекты регулярных выражений \_sre.SRE\_Pattern, создаваемые re.compile(), стали сравнимыми (только операторы == и !=). Это изменение должно исправить [bpo-18383](https://python-all.ru/3/whatsnew/changelog.html): дублирование фильтров предупреждений при перезагрузке модуля warnings (обычно делается только в юнит-тестах).
- [bpo-20572](https://python-all.ru/3/whatsnew/changelog.html): Незадокументированный параметр endtime метода subprocess.Popen.wait теперь вызывает DeprecationWarning.
- [bpo-25659](https://python-all.ru/3/whatsnew/changelog.html): В ctypes предотвращён крах при вызове методов from\_buffer() и from\_buffer\_copy() для абстрактных классов, таких как Array.
- [bpo-19717](https://python-all.ru/3/whatsnew/changelog.html): Path.resolve() теперь успешно выполняется для несуществующих путей. Патч от Vajrasky Kok.
- [bpo-28563](https://python-all.ru/3/whatsnew/changelog.html): Исправлена возможная DoS-атака и выполнение произвольного кода при обработке выбора множественных форм в модуле gettext. Парсер выражений теперь поддерживает точный синтаксис GNU gettext.
- [bpo-28387](https://python-all.ru/3/whatsnew/changelog.html): Исправлен возможный крах в деаллокаторе \_io.TextIOWrapper при вызове сборщика мусора из другого потока. Основано на патче Sebastian Cufre.
- [bpo-28600](https://python-all.ru/3/whatsnew/changelog.html): Оптимизирован loop.call\_soon.
- [bpo-28613](https://python-all.ru/3/whatsnew/changelog.html): Исправлено: get\_event\_loop() возвращает текущий цикл, если вызван из корутин/колбэков.
- [bpo-28634](https://python-all.ru/3/whatsnew/changelog.html): Исправлен asyncio.isfuture() для поддержки unittest.Mock.
- [bpo-26081](https://python-all.ru/3/whatsnew/changelog.html): Исправлена утечка ссылок в \_asyncio.Future.\_\_iter\_\_().throw.
- [bpo-28639](https://python-all.ru/3/whatsnew/changelog.html): Исправлен inspect.isawaitable: теперь всегда возвращает bool. Патч от Justin Mayfield.
- [bpo-28652](https://python-all.ru/3/whatsnew/changelog.html): Методы цикла событий теперь отвергают типы сокетов, которые они не поддерживают.
- [bpo-28653](https://python-all.ru/3/whatsnew/changelog.html): Исправлена утечка ссылок в functools.lru\_cache.
- [bpo-28703](https://python-all.ru/3/whatsnew/changelog.html): Исправлен asyncio.iscoroutinefunction для обработки Mock-объектов.
- [bpo-28704](https://python-all.ru/3/whatsnew/changelog.html): Исправлен create\_unix\_server для поддержки Path-подобных объектов (PEP 519).
- [bpo-28720](https://python-all.ru/3/whatsnew/changelog.html): Добавлен collections.abc.AsyncGenerator.

### Документация

- [bpo-28513](https://python-all.ru/3/whatsnew/changelog.html): Документирован интерфейс командной строки zipfile.

### Тесты

- [bpo-28666](https://python-all.ru/3/whatsnew/changelog.html): Теперь test.support.rmtree может удалять недоступные для записи или чтения каталоги.
- [bpo-23839](https://python-all.ru/3/whatsnew/changelog.html): Теперь различные кеши очищаются перед запуском каждого тестового файла.

### Сборка

- [bpo-10656](https://python-all.ru/3/whatsnew/changelog.html): Исправлена сборка вне дерева исходников на AIX. Патч от Tristan Carel и Michael Haubenwallner.
- [bpo-26359](https://python-all.ru/3/whatsnew/changelog.html): Переименовано –with-optimizations в –enable-optimizations.
- [bpo-28676](https://python-all.ru/3/whatsnew/changelog.html): Предотвращено предупреждение о пропущенном объявлении ‘getentropy’ на macOS. Патч от Gareth Rees.

## Python 3.6.0 beta 3

*Дата выпуска: 2016-10-31*

### Ядро и встроенные функции

- [bpo-28128](https://python-all.ru/3/whatsnew/changelog.html): Предупреждение об устаревании для недопустимых escape-последовательностей в str и byte теперь выводит более точную информацию о месте ошибки. Патч от Serhiy Storchaka и Eric Smith.
- [bpo-28509](https://python-all.ru/3/whatsnew/changelog.html): dict.update() больше не выделяет излишне много памяти.
- [bpo-28426](https://python-all.ru/3/whatsnew/changelog.html): Исправлена возможная ошибка сегментации в PyUnicode\_AsDecodedObject() в отладочной сборке.
- [bpo-28517](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка «off-by-one» в peephole-оптимизаторе, из-за которой сохранялся недостижимый код.
- [bpo-28214](https://python-all.ru/3/whatsnew/changelog.html): Улучшено отображение исключений для проблемных атрибутов \_\_set\_name\_\_.
- [bpo-23782](https://python-all.ru/3/whatsnew/changelog.html): Исправлена возможная утечка памяти в \_PyTraceback\_Add() и потеря исключения в PyTraceBack\_Here().
- [bpo-28471](https://python-all.ru/3/whatsnew/changelog.html): Исправлено падение с сообщением «Python memory allocator called without holding the GIL» в socket.setblocking.

### Библиотека

- [bpo-27517](https://python-all.ru/3/whatsnew/changelog.html): Сжатие и распаковка LZMA больше не вызывают исключений при двукратной передаче пустых данных. Патч от Benjamin Fogle.
- [bpo-28549](https://python-all.ru/3/whatsnew/changelog.html): Исправлен segfault в curses.addch() при использовании ncurses6.
- [bpo-28449](https://python-all.ru/3/whatsnew/changelog.html): tarfile.open() с режимом “r” или “r:” теперь сначала пытается открыть tar-файл со сжатием, а затем без сжатия. Раньше в 50% случаев это приводило к ошибке при ignore\_zeros=True.
- [bpo-23262](https://python-all.ru/3/whatsnew/changelog.html): Модуль webbrowser теперь поддерживает Firefox 36+ и производные браузеры. На основе патча от Oleg Broytman.
- [bpo-27939](https://python-all.ru/3/whatsnew/changelog.html): Исправлены ошибки в tkinter.ttk.LabeledScale и tkinter.Scale, вызванные внутренним представлением шкалы в виде числа с плавающей запятой в Tk. tkinter.IntVar теперь работает, если в базовую переменную Tk установлено значение с плавающей запятой.
- [bpo-18844](https://python-all.ru/3/whatsnew/changelog.html): Различные способы задания весов для random.choices() теперь дают одинаковые последовательности результатов.
- [bpo-28255](https://python-all.ru/3/whatsnew/changelog.html): calendar.TextCalendar().prmonth() больше не выводит пробел в начале новой строки после календаря месяца. Патч от Xiang Zhang.
- [bpo-20491](https://python-all.ru/3/whatsnew/changelog.html): Класс textwrap.TextWrapper теперь учитывает неразрывные пробелы. На основе патча от Kaarle Ritvanen.
- [bpo-28353](https://python-all.ru/3/whatsnew/changelog.html): os.fwalk() больше не завершается ошибкой на битых ссылках.
- [bpo-28430](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка в итераторе реализованного на C asyncio.Future: он не принимал значение, отличное от None, при вызове it.send(val).
- [bpo-27025](https://python-all.ru/3/whatsnew/changelog.html): Сгенерированные имена для виджетов Tkinter теперь начинаются с префикса “!” для удобочитаемости.
- [bpo-25464](https://python-all.ru/3/whatsnew/changelog.html): Исправлен HList.header\_exists() в модуле tkinter.tix путем добавления обходного решения ошибки библиотеки Tix.
- [bpo-28488](https://python-all.ru/3/whatsnew/changelog.html): shutil.make\_archive() больше не добавляет запись “./” в ZIP-архив.
- [bpo-25953](https://python-all.ru/3/whatsnew/changelog.html): re.sub() теперь вызывает ошибку для недопустимой числовой ссылки на группу в шаблоне замены, даже если шаблон не найден в строке. Сообщение об ошибке для недопустимой ссылки на группу теперь содержит индекс группы и позицию ссылки. На основе патча от SilentGhost.
- [bpo-18219](https://python-all.ru/3/whatsnew/changelog.html): Оптимизация csv.DictWriter для большого количества столбцов. Патч от Mariatta Wijaya.
- [bpo-28448](https://python-all.ru/3/whatsnew/changelog.html): Исправление: реализованный на C asyncio.Future не работал в Windows.
- [bpo-28480](https://python-all.ru/3/whatsnew/changelog.html): Исправление ошибки сборки модуля socket при отключённой многопоточности.
- [bpo-24452](https://python-all.ru/3/whatsnew/changelog.html): Добавлена поддержка Chrome в webbrowser на Mac OS X.
- [bpo-20766](https://python-all.ru/3/whatsnew/changelog.html): Исправление утечки ссылок в pdb при обработке обработчиков SIGINT.
- [bpo-28492](https://python-all.ru/3/whatsnew/changelog.html): Исправление способа возбуждения исключения StopIteration в \_asyncio.Future.
- [bpo-28500](https://python-all.ru/3/whatsnew/changelog.html): Исправление asyncio для корректной обработки сборки мусора асинхронных генераторов из другого потока.
- [bpo-26923](https://python-all.ru/3/whatsnew/changelog.html): Исправление asyncio.Gather: отказ от отмены после завершения всех дочерних задач. Патч от Johannes Ebke.
- [bpo-26796](https://python-all.ru/3/whatsnew/changelog.html): Не настраивать количество рабочих потоков для исполнителя threadpool по умолчанию. Первоначальный патч от Hans Lawrenz.
- [bpo-28544](https://python-all.ru/3/whatsnew/changelog.html): Реализация asyncio.Task на C.

### Windows

- [bpo-28522](https://python-all.ru/3/whatsnew/changelog.html): Исправление некорректного перераспределения буфера в getpathp.c

### Build

- [bpo-28444](https://python-all.ru/3/whatsnew/changelog.html): Исправление отсутствующих модулей расширений при кросс-компиляции.
- [bpo-28208](https://python-all.ru/3/whatsnew/changelog.html): Обновление сборки Windows и установщиков OS X для использования SQLite 3.14.2.
- [bpo-28248](https://python-all.ru/3/whatsnew/changelog.html): Обновление сборки Windows и установщиков OS X для использования OpenSSL 1.0.2j.

### Tests

- [bpo-26944](https://python-all.ru/3/whatsnew/changelog.html): Исправление test\_posix для Android, где ‘id -G’ полностью неверен или отсутствует эффективный gid.
- [bpo-28409](https://python-all.ru/3/whatsnew/changelog.html): regrtest: исправление парсера аргументов командной строки.

## Python 3.6.0 beta 2

*Дата выпуска: 2016-10-10*

### Core and Builtins

- [bpo-28183](https://python-all.ru/3/whatsnew/changelog.html): Оптимизация и очистка итерации по словарю.
- [bpo-26081](https://python-all.ru/3/whatsnew/changelog.html): Добавлена реализация asyncio.Future на C. Оригинальный патч от Yury Selivanov.
- [bpo-28379](https://python-all.ru/3/whatsnew/changelog.html): Добавлены проверки корректности и тесты для PyUnicode\_CopyCharacters(). Патч от Xiang Zhang.
- [bpo-28376](https://python-all.ru/3/whatsnew/changelog.html): Тип long range iterator теперь зарегистрирован как Iterator. Патч от Oren Milman.
- [bpo-28376](https://python-all.ru/3/whatsnew/changelog.html): Создание экземпляров range\_iterator вызовом типа range\_iterator теперь устарело. Патч от Oren Milman.
- [bpo-28376](https://python-all.ru/3/whatsnew/changelog.html): Конструктор range\_iterator теперь проверяет, что шаг не равен 0. Патч от Oren Milman.
- [bpo-26906](https://python-all.ru/3/whatsnew/changelog.html): Разрешение специальных методов неинициализированного типа теперь вызывает неявную инициализацию типа вместо ошибки.
- [bpo-18287](https://python-all.ru/3/whatsnew/changelog.html): PyType\_Ready() теперь проверяет, что tp\_name не NULL. Оригинальный патч от Niklas Koep.
- [bpo-24098](https://python-all.ru/3/whatsnew/changelog.html): Исправлена возможная ошибка сегментации при изменении AST в процессе компиляции.
- [bpo-28201](https://python-all.ru/3/whatsnew/changelog.html): Словарь уменьшает возможность второго конфликта в хеш-таблице, когда хеши имеют одинаковые младшие биты.
- [bpo-28350](https://python-all.ru/3/whatsnew/changelog.html): Строковые константы с нулевым символом больше не интернируются.
- [bpo-26617](https://python-all.ru/3/whatsnew/changelog.html): Исправлен сбой при запуске сборщика мусора во время колбэков слабых ссылок.
- [bpo-27942](https://python-all.ru/3/whatsnew/changelog.html): Строковые константы теперь интернируются рекурсивно в кортежах и frozenset.
- [bpo-21578](https://python-all.ru/3/whatsnew/changelog.html): Исправлено вводящее в заблуждение сообщение об ошибке при вызове ImportError с недопустимыми именованными аргументами.
- [bpo-28203](https://python-all.ru/3/whatsnew/changelog.html): Исправлен неверный тип в сообщении об ошибке complex(1.0, {2:3}). Исправление от Soumya Sharma.
- [bpo-28086](https://python-all.ru/3/whatsnew/changelog.html): Одиночный позиционный аргумент-вариадик подтипа кортежа передавался без изменений в функцию, определённую на C. Теперь он преобразуется в точный кортеж.
- [bpo-28214](https://python-all.ru/3/whatsnew/changelog.html): Теперь \_\_set\_name\_\_ ищется в классе, а не в экземпляре.
- [bpo-27955](https://python-all.ru/3/whatsnew/changelog.html): Используется резервный вариант чтения устройства /dev/urandom, когда системный вызов getrandom() завершается с ошибкой EPERM, например, при блокировке SECCOMP.
- [bpo-28192](https://python-all.ru/3/whatsnew/changelog.html): Не импортировать readline в изолированном режиме.
- Обновление внутренних баз данных Unicode до версии 9.0.0.
- [bpo-28131](https://python-all.ru/3/whatsnew/changelog.html): Исправлен регресс в compile\_source() модуля zipimport. zipimport должен использовать тот же уровень оптимизации, что и интерпретатор.
- [bpo-28126](https://python-all.ru/3/whatsnew/changelog.html): Замена Py\_MEMCPY на memcpy(). Visual Studio может корректно оптимизировать memcpy().
- [bpo-28120](https://python-all.ru/3/whatsnew/changelog.html): Исправлен dict.pop() для разделённого словаря при попытке удалить «ожидающий ключ» (ещё не вставленный в split-table). Исправление от Xiang Zhang.
- [bpo-26182](https://python-all.ru/3/whatsnew/changelog.html): Выдаётся DeprecationWarning, когда ключевые слова async и await используются в качестве имени переменной/атрибута/класса/функции.

### Библиотека

- [bpo-27998](https://python-all.ru/3/whatsnew/changelog.html): Исправлена поддержка путей в виде bytes в os.scandir() на Windows. Исправление от Eryk Sun.
- [bpo-28317](https://python-all.ru/3/whatsnew/changelog.html): Дизассемблер теперь декодирует аргумент FORMAT\_VALUE.
- [bpo-26293](https://python-all.ru/3/whatsnew/changelog.html): Исправлена запись ZIP-файлов, начинающихся не с начала файла. Смещения в ZIP-файле теперь задаются относительно начала архива в соответствии со спецификацией.
- [bpo-28380](https://python-all.ru/3/whatsnew/changelog.html): Функции unittest.mock Mock с autospec теперь корректно поддерживают assert\_called, assert\_not\_called и assert\_called\_once.
- [bpo-27181](https://python-all.ru/3/whatsnew/changelog.html): удалить statistics.geometric\_mean и отложить до версии 3.7.
- [bpo-28229](https://python-all.ru/3/whatsnew/changelog.html): Модуль lzma теперь поддерживает pathlib.
- [bpo-28321](https://python-all.ru/3/whatsnew/changelog.html): Исправлена запись символов вне BMP в двоичном формате в plistlib.
- [bpo-28225](https://python-all.ru/3/whatsnew/changelog.html): Модуль bz2 теперь поддерживает pathlib. Первоначальное исправление от Ethan Furman.
- [bpo-28227](https://python-all.ru/3/whatsnew/changelog.html): gzip теперь поддерживает pathlib. Исправление от Ethan Furman.
- [bpo-27358](https://python-all.ru/3/whatsnew/changelog.html): Оптимизировано слияние аргументов \*\*kwargs и улучшено сообщение об ошибке при передаче не-отображения в качестве \*\*kwargs.
- [bpo-28257](https://python-all.ru/3/whatsnew/changelog.html): Улучшено сообщение об ошибке при передаче неитерируемого объекта в качестве позиционного аргумента-вариадика. Добавлен опкод BUILD\_TUPLE\_UNPACK\_WITH\_CALL.
- [bpo-28322](https://python-all.ru/3/whatsnew/changelog.html): Исправлены возможные сбои при распаковке объектов itertools из некорректных данных pickle. На основе исправления от John Leitch.
- [bpo-28228](https://python-all.ru/3/whatsnew/changelog.html): imghdr теперь поддерживает pathlib.
- [bpo-28226](https://python-all.ru/3/whatsnew/changelog.html): compileall теперь поддерживает pathlib.
- [bpo-28314](https://python-all.ru/3/whatsnew/changelog.html): Исправлено объявление функции (флаги C) для метода getiterator() класса xml.etree.ElementTree.Element.
- [bpo-28148](https://python-all.ru/3/whatsnew/changelog.html): Прекращено использование localtime() и gmtime() в модуле time. Введён платформенно-независимый API \_PyTime\_localtime, похожий на POSIX localtime\_r, но доступный на всех платформах. Исправление от Ed Schouten.
- [bpo-28253](https://python-all.ru/3/whatsnew/changelog.html): Исправлены функции календаря для крайних месяцев: 0001-01 и 9999-12. Методы itermonthdays() и itermonthdays2() переписаны, чтобы они не вызывали itermonthdates(), что могло приводить к переполнению или опустошению datetime.date.
- [bpo-28275](https://python-all.ru/3/whatsnew/changelog.html): Исправлена возможная ошибка доступа к освобождённой памяти в методах decompress() классов LZMADecompressor и BZ2Decompressor. Оригинальный патч от John Leitch.
- [bpo-27897](https://python-all.ru/3/whatsnew/changelog.html): Исправлен возможный сбой в sqlite3.Connection.create\_collation() при передаче недопустимого строкоподобного объекта в качестве имени. Патч от Xiang Zhang.
- [bpo-18844](https://python-all.ru/3/whatsnew/changelog.html): Теперь random.choices() использует k как аргумент только по ключу (keyword-only argument), чтобы повысить читаемость в типовых случаях и привести к единообразию с сигнатурами, используемыми в других языках.
- [bpo-18893](https://python-all.ru/3/whatsnew/changelog.html): Исправлена некорректная обработка исключений в Lib/ctypes/macholib/dyld.py. Патч от Madison May.
- [bpo-27611](https://python-all.ru/3/whatsnew/changelog.html): Исправлена поддержка корневого окна по умолчанию в модуле tkinter.tix. Добавлен параметр master в конструктор DisplayStyle.
- [bpo-27348](https://python-all.ru/3/whatsnew/changelog.html): В модуле traceback восстановлено форматирование сообщений об исключениях вида «Исключение: None». Это исправляет регрессию, появившуюся в 3.5a2.
- [bpo-25651](https://python-all.ru/3/whatsnew/changelog.html): Разрешено использовать ложные (false) значения для параметра msg функции subTest().
- [bpo-27778](https://python-all.ru/3/whatsnew/changelog.html): Исправлена утечка памяти в os.getrandom(), когда вызов getrandom() прерывается сигналом, а обработчик сигнала возбуждает исключение Python.
- [bpo-28200](https://python-all.ru/3/whatsnew/changelog.html): Исправлена утечка памяти в Windows в модуле os (исправлена функция path\_converter()).
- [bpo-25400](https://python-all.ru/3/whatsnew/changelog.html): RobotFileParser теперь корректно возвращает значения по умолчанию для crawl\_delay и request\_rate. Первоначальный патч от Peter Wirtz.
- [bpo-27932](https://python-all.ru/3/whatsnew/changelog.html): Предотвращена утечка памяти в win32\_ver().
- Исправлен UnboundLocalError в socket.\_sendfile\_use\_sendfile.
- [bpo-28075](https://python-all.ru/3/whatsnew/changelog.html): Добавлена проверка ERROR\_ACCESS\_DENIED в реализацию os.stat() для Windows. Патч от Eryk Sun.
- [bpo-22493](https://python-all.ru/3/whatsnew/changelog.html): Предупреждение, возникающее при использовании встроенных флагов в середине регулярного выражения, теперь содержит (усечённый) шаблон регулярного выражения. Патч от Tim Graham.
- [bpo-25270](https://python-all.ru/3/whatsnew/changelog.html): Предотвращено возбуждение SystemError в codecs.escape\_encode() при передаче пустой байтовой строки.
- [bpo-28181](https://python-all.ru/3/whatsnew/changelog.html): Получение антигравитации (antigravity) по HTTPS. Патч от Kaartic Sivaraam.
- [bpo-25895](https://python-all.ru/3/whatsnew/changelog.html): Включена поддержка схем URL WebSocket в urllib.parse.urljoin. Патч от Gergely Imreh и Markus Holtermann.
- [bpo-28114](https://python-all.ru/3/whatsnew/changelog.html): Исправлен сбой в parse\_envlist(), когда env содержит байтовые строки. Патч от Eryk Sun.
- [bpo-27599](https://python-all.ru/3/whatsnew/changelog.html): Исправлено переполнение буфера в binascii.b2a\_qp() и binascii.a2b\_qp().
- [bpo-27906](https://python-all.ru/3/whatsnew/changelog.html): Исправлено истощение ресурсов при приёме сокетов при высокой нагрузке TCP. Патч от Kevin Conway.
- [bpo-28174](https://python-all.ru/3/whatsnew/changelog.html): Обработана ситуация, когда SO\_REUSEPORT не поддерживается должным образом. Патч от Seth Michael Larson.
- [bpo-26654](https://python-all.ru/3/whatsnew/changelog.html): Добавлена обработка functools.partial в asyncio.Handle.\_\_repr\_\_. Патч от iceboy.
- [bpo-26909](https://python-all.ru/3/whatsnew/changelog.html): Исправлена медленная работа с каналами (pipes) в asyncio. Патч от INADA Naoki.
- [bpo-28176](https://python-all.ru/3/whatsnew/changelog.html): Исправлено состояние гонки колбэков в asyncio.SelectorLoop.sock\_connect.
- [bpo-27759](https://python-all.ru/3/whatsnew/changelog.html): Исправлено некорректное удержание недействительных файловых дескрипторов в селекторах. Патч от Mark Williams.
- [bpo-28368](https://python-all.ru/3/whatsnew/changelog.html): Отказ от наблюдения за процессами, если к наблюдателю дочерних процессов не присоединён цикл событий. Патч от Vincent Michel.
- [bpo-28369](https://python-all.ru/3/whatsnew/changelog.html): Возбуждение RuntimeError при использовании файлового дескриптора транспорта с add\_reader, add\_writer и т.п.
- [bpo-28370](https://python-all.ru/3/whatsnew/changelog.html): Ускорен asyncio.StreamReader.readexactly. Патч от Коренберг Марк.
- [bpo-28371](https://python-all.ru/3/whatsnew/changelog.html): Устарела передача объектов asyncio.Handle в run\_in\_executor.
- [bpo-28372](https://python-all.ru/3/whatsnew/changelog.html): Исправлен asyncio для поддержки форматирования не-Python корутин.
- [bpo-28399](https://python-all.ru/3/whatsnew/changelog.html): Удаление UNIX-сокета из файловой системы перед привязкой. Патч от Коренберг Марк.
- [bpo-27972](https://python-all.ru/3/whatsnew/changelog.html): Запрещено задачам выполнять await для самих себя.

### Windows

- [bpo-28402](https://python-all.ru/3/whatsnew/changelog.html): Добавлены подписанные файлы каталогов для stdlib в Windows.
- [bpo-28333](https://python-all.ru/3/whatsnew/changelog.html): Включена поддержка Unicode для приглашений ps1/ps2 и input(). (Патч от Eryk Sun)
- [bpo-28251](https://python-all.ru/3/whatsnew/changelog.html): Улучшения справочных руководств в Windows.
- [bpo-28110](https://python-all.ru/3/whatsnew/changelog.html): launcher.msi имеет разные коды продукта для 32-разрядной и 64-разрядной версий.
- [bpo-28161](https://python-all.ru/3/whatsnew/changelog.html): Открытие CON для записи завершается ошибкой
- [bpo-28162](https://python-all.ru/3/whatsnew/changelog.html): WindowsConsoleIO.readall() завершается ошибкой, если первая строка начинается с Ctrl+Z
- [bpo-28163](https://python-all.ru/3/whatsnew/changelog.html): WindowsConsoleIO.fileno() передаёт неверные флаги в \_open\_osfhandle
- [bpo-28164](https://python-all.ru/3/whatsnew/changelog.html): \_PyIO\_get\_console\_type не работает для различных путей
- [bpo-28137](https://python-all.ru/3/whatsnew/changelog.html): Переименование файла пути Windows в .\_pth
- [bpo-28138](https://python-all.ru/3/whatsnew/changelog.html): Файл .\_pth в Windows должен разрешать импорт site

### C API

- [bpo-28426](https://python-all.ru/3/whatsnew/changelog.html): Объявлены устаревшими недокументированные функции PyUnicode\_AsEncodedObject(), PyUnicode\_AsDecodedObject(), PyUnicode\_AsDecodedUnicode() и PyUnicode\_AsEncodedUnicode().

### Сборка

- [bpo-28258](https://python-all.ru/3/whatsnew/changelog.html): Исправлена сборка с эстонской локалью (цели python-config и distclean в Makefile). Патч от Arfrever Frehtes Taifersar Arahesis.
- [bpo-26661](https://python-all.ru/3/whatsnew/changelog.html): setup.py теперь определяет системную libffi с multiarch wrapper.
- [bpo-15819](https://python-all.ru/3/whatsnew/changelog.html): Удаление избыточной опции каталога поиска include для сборки вне исходного дерева.

### Тесты

- [bpo-28217](https://python-all.ru/3/whatsnew/changelog.html): Добавлен модуль \_testconsole для тестирования ввода с консоли.

## Python 3.6.0 beta 1

*Дата выпуска: 2016-09-12*

### Ядро и встроенные объекты

- [bpo-23722](https://python-all.ru/3/whatsnew/changelog.html): Ячейка \_\_class\_\_, используемая super() без аргументов, теперь инициализируется из type.\_\_new\_\_ вместо \_\_build\_class\_\_, поэтому методы класса, полагающиеся на это, теперь будут корректно работать при вызове из методов метакласса во время создания класса. Патч от Martin Teichmann.
- [bpo-25221](https://python-all.ru/3/whatsnew/changelog.html): Исправление повреждённого результата PyLong\_FromLong(0) при компиляции Python с NSMALLPOSINTS = 0.
- [bpo-27080](https://python-all.ru/3/whatsnew/changelog.html): Реализована поддержка форматирования для [**PEP 515**](https://python-all.ru/3/whatsnew/changelog.html). Первоначальный патч от Chris Angelico.
- [bpo-27199](https://python-all.ru/3/whatsnew/changelog.html): В tarfile добавлена возможность задавать размер буфера copyfileobj для повышения пропускной способности. Патч от Jason Fried.
- [bpo-27948](https://python-all.ru/3/whatsnew/changelog.html): В f-строках обратные слеши разрешены только внутри фигурных скобок (где находятся выражения). Это критическое изменение по сравнению с альфа-версиями 3.6, где обратные слеши допускались в любом месте f-строки. Кроме того, выражения внутри f-строк должны заключаться в фигурные скобки, а не в управляющие последовательности, такие как `f'\x7b"hi"\x7d'`.
- [bpo-28046](https://python-all.ru/3/whatsnew/changelog.html): Удаление платформенно-зависимых каталогов из sys.path.
- [bpo-28071](https://python-all.ru/3/whatsnew/changelog.html): Добавлен ранний выход при вычислении разности с пустым множеством.
- [bpo-25758](https://python-all.ru/3/whatsnew/changelog.html): Предотвращение ненужного кодирования имени файла в zipimport (патч от Eryk Sun)
- [bpo-25856](https://python-all.ru/3/whatsnew/changelog.html): Атрибут \_\_module\_\_ классов расширений и функций теперь интернируется. Это приводит к более компактным данным pickle при использовании протокола 4.
- [bpo-27213](https://python-all.ru/3/whatsnew/changelog.html): Переработаны опкоды CALL\_FUNCTION\* для получения более короткого и эффективного байткода. Патч от Demur Rumed, дизайн от Serhiy Storchaka, рецензировано Serhiy Storchaka и Victor Stinner.
- [bpo-26331](https://python-all.ru/3/whatsnew/changelog.html): Реализована поддержка токенизации для [**PEP 515**](https://python-all.ru/3/whatsnew/changelog.html). Патч от Georg Brandl.
- [bpo-27999](https://python-all.ru/3/whatsnew/changelog.html): Использование «global после использования» теперь вызывает SyntaxError, то же самое для nonlocal. Патч от Ivan Levkivskyi.
- [bpo-28003](https://python-all.ru/3/whatsnew/changelog.html): Реализована [**PEP 525**](https://python-all.ru/3/whatsnew/changelog.html) – асинхронные генераторы.
- [bpo-27985](https://python-all.ru/3/whatsnew/changelog.html): Реализована [**PEP 526**](https://python-all.ru/3/whatsnew/changelog.html) – синтаксис аннотаций переменных. Патч от Ivan Levkivskyi.
- [bpo-26058](https://python-all.ru/3/whatsnew/changelog.html): Добавлена новая приватная версия во встроенный тип dict, увеличиваемая при каждом создании словаря и каждом его изменении. Реализация PEP 509.
- [bpo-27364](https://python-all.ru/3/whatsnew/changelog.html): Пара обратный слеш-символ, не являющаяся корректной escape-последовательностью, теперь генерирует DeprecationWarning. Патч от Emanuel Barry.
- [bpo-27350](https://python-all.ru/3/whatsnew/changelog.html): Реализация `dict` изменена наподобие PyPy. Она стала более компактной и сохраняет порядок вставки. (Концепция разработана Raymond Hettinger, патч от Inada Naoki.)
- [bpo-27911](https://python-all.ru/3/whatsnew/changelog.html): Удалены лишние проверки ошибок в `exec_builtin_or_dynamic()`.
- [bpo-27078](https://python-all.ru/3/whatsnew/changelog.html): Добавлен опкод BUILD\_STRING. Оптимизировано вычисление f-строк.
- [bpo-17884](https://python-all.ru/3/whatsnew/changelog.html): Python теперь требует системы с inttypes.h и stdint.h.
- [bpo-27961](https://python-all.ru/3/whatsnew/changelog.html): Требовать от платформ поддержки `long long`. Python уже много лет не компилировался без `long long`, так что это в основном формальность.
- [bpo-27355](https://python-all.ru/3/whatsnew/changelog.html): Удалена поддержка Windows CE. Она никогда не была завершена, и Windows CE больше не является актуальной платформой для Python.
- Реализован [**PEP 523**](https://python-all.ru/3/whatsnew/changelog.html).
- [bpo-27870](https://python-all.ru/3/whatsnew/changelog.html): Сдвиг влево нуля на большое целое число больше не пытается выделить большие объёмы памяти.
- [bpo-25402](https://python-all.ru/3/whatsnew/changelog.html): В преобразовании целого числа в десятичную строку улучшена оценка требуемой промежуточной памяти и удалена излишне строгая проверка переполнения. Патч от Serhiy Storchaka.
- [bpo-27214](https://python-all.ru/3/whatsnew/changelog.html): В long\_invert более аккуратно обрабатывается модификация объекта, возвращённого long\_add, и удалена лишняя проверка для малых long. Спасибо Oren Milman за анализ и патч.
- [bpo-27506](https://python-all.ru/3/whatsnew/changelog.html): Поддержка передачи аргумента «delete» метода bytes/bytearray.translate() по ключевому слову.
- [bpo-27812](https://python-all.ru/3/whatsnew/changelog.html): Корректно очищать обратную ссылку фрейма генератора на сам генератор для предотвращения сбоев в frame.clear().
- [bpo-27811](https://python-all.ru/3/whatsnew/changelog.html): Исправлен сбой, когда корутина, которая не была ожидана (awaited), завершается при включённом режиме warnings-as-errors.
- [bpo-27587](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ещё одна проблема, найденная PVS-Studio: проверка нулевого указателя после использования ‘def’ в \_PyState\_AddModule(). Первоначальный патч от Christian Heimes.
- [bpo-27792](https://python-all.ru/3/whatsnew/changelog.html): Операция взятия остатка, применяемая к `bool` и другим подклассам `int`, теперь всегда возвращает `int`. Ранее тип результата зависел от входных значений. Патч от Xiang Zhang.
- [bpo-26984](https://python-all.ru/3/whatsnew/changelog.html): int() теперь всегда возвращает экземпляр точного int.
- [bpo-25604](https://python-all.ru/3/whatsnew/changelog.html): Исправлена незначительная ошибка в целочисленном истинном делении; эта ошибка могла потенциально приводить к результатам с ошибкой в один ulp на платформах с ненадёжными реализациями ldexp.
- [bpo-24254](https://python-all.ru/3/whatsnew/changelog.html): Пространство имён определения класса теперь по умолчанию упорядоченное.
- [bpo-27662](https://python-all.ru/3/whatsnew/changelog.html): Исправлена проверка переполнения в `List_New`: исходный код проверял `Py_SIZE_MAX` вместо корректной верхней границы `Py_SSIZE_T_MAX`. Патч от Xiang Zhang.
- [bpo-27782](https://python-all.ru/3/whatsnew/changelog.html): Многофазный импорт модулей расширения теперь корректно позволяет использовать поле `m_methods` для добавления функций уровня модуля к экземплярам типов, не являющихся модулями, возвращаемым из `Py_create_mod`. Патч от Xiang Zhang.
- [bpo-27936](https://python-all.ru/3/whatsnew/changelog.html): Функция round() принимала второй аргумент None для одних типов, но не для других. Устранена эта непоследовательность: теперь None принимается для всех числовых типов.
- [bpo-27487](https://python-all.ru/3/whatsnew/changelog.html): Выводить предупреждение, если аргумент-подмодуль для «python -m» или runpy.run\_module() найден в sys.modules после импорта родительских пакетов, но до выполнения подмодуля.
- [bpo-27157](https://python-all.ru/3/whatsnew/changelog.html): Только сам type() теперь принимает форму с одним аргументом. Патч от Eryk Sun и Emanuel Barry.
- [bpo-27558](https://python-all.ru/3/whatsnew/changelog.html): Исправлена SystemError в реализации оператора raise. В только что созданном потоке выбрасывается RuntimeError, так как нет активного исключения для повторного возбуждения. Патч написан Xiang Zhang.
- [bpo-28008](https://python-all.ru/3/whatsnew/changelog.html): Реализована [**PEP 530**](https://python-all.ru/3/whatsnew/changelog.html) – асинхронные включения.
- [bpo-27942](https://python-all.ru/3/whatsnew/changelog.html): Исправлена утечка памяти в codeobject.c

### Библиотека

- [bpo-28732](https://python-all.ru/3/whatsnew/changelog.html): Исправлен сбой в os.spawnv() при пустом списке args
- [bpo-28485](https://python-all.ru/3/whatsnew/changelog.html): Всегда выбрасывать ValueError для отрицательного параметра compileall.compile\_dir(workers=…), даже если многопоточность недоступна.
- [bpo-28037](https://python-all.ru/3/whatsnew/changelog.html): Использовать sqlite3\_get\_autocommit() вместо ручной установки Connection-\>inTransaction.
- [bpo-25283](https://python-all.ru/3/whatsnew/changelog.html): Атрибуты tm\_gmtoff и tm\_zone теперь доступны на всех платформах в возвращаемых значениях time.localtime() и time.gmtime().
- [bpo-24454](https://python-all.ru/3/whatsnew/changelog.html): Группы объекта сопоставления регулярного выражения теперь доступны через \_\_getitem\_\_. “mo\[x\]” эквивалентно “mo.group(x)”.
- [bpo-10740](https://python-all.ru/3/whatsnew/changelog.html): sqlite3 больше не выполняет неявный коммит открытой транзакции перед DDL-выражениями.
- [bpo-17941](https://python-all.ru/3/whatsnew/changelog.html): Добавлен параметр *module* в collections.namedtuple().
- [bpo-22493](https://python-all.ru/3/whatsnew/changelog.html): Инлайновые флаги теперь следует использовать только в начале регулярного выражения. Выдаётся предупреждение об устаревании, если они используются в середине регулярного выражения.
- [bpo-26885](https://python-all.ru/3/whatsnew/changelog.html): xmlrpc теперь поддерживает десериализацию дополнительных типов данных, используемых реализацией Apache XML-RPC для чисел и None.
- [bpo-28070](https://python-all.ru/3/whatsnew/changelog.html): Исправлен разбор инлайнового флага verbose в регулярных выражениях.
- [bpo-19500](https://python-all.ru/3/whatsnew/changelog.html): Добавлено возобновление SSL-сессии на стороне клиента в модуль ssl.
- [bpo-28022](https://python-all.ru/3/whatsnew/changelog.html): Устарели аргументы, связанные с ssl, в пользу SSLContext. Устаревание включает ручное создание SSLSocket и certfile/keyfile (или аналогичных) в ftplib, httplib, imaplib, smtplib, poplib и urllib.
- [bpo-28043](https://python-all.ru/3/whatsnew/changelog.html): SSLContext имеет улучшенные настройки по умолчанию: OP\_NO\_SSLv2, OP\_NO\_SSLv3, OP\_NO\_COMPRESSION, OP\_CIPHER\_SERVER\_PREFERENCE, OP\_SINGLE\_DH\_USE, OP\_SINGLE\_ECDH\_USE и шифры HIGH без MD5.
- [bpo-24693](https://python-all.ru/3/whatsnew/changelog.html): Изменены некоторые RuntimeError в модуле zipfile на более подходящие типы. Улучшены некоторые сообщения об ошибках и отладочный вывод.
- [bpo-17909](https://python-all.ru/3/whatsnew/changelog.html): `json.load` и `json.loads` теперь поддерживают бинарный ввод, закодированный как UTF-8, UTF-16 или UTF-32. Патч от Serhiy Storchaka.
- [bpo-27137](https://python-all.ru/3/whatsnew/changelog.html): чистая реализация на Python для `functools.partial` теперь соответствует поведению ускоренной C-реализации в отношении создания подклассов, сериализации и текстового представления. Патч от Emanuel Barry и Serhiy Storchaka.
- Исправлены возможные целочисленные переполнения и сбои в модуле mmap при необычных паттернах использования.
- [bpo-1703178](https://python-all.ru/3/whatsnew/changelog.html): Исправлена возможность передачи опции –link-objects в команду build\_ext из distutils.
- [bpo-28019](https://python-all.ru/3/whatsnew/changelog.html): itertools.count() больше не округляет нецелый шаг в диапазоне между 1.0 и 2.0 до 1.
- [bpo-18401](https://python-all.ru/3/whatsnew/changelog.html): Pdb теперь поддерживает именованный аргумент ‘readrc’ для управления тем, следует ли читать файлы .pdbrc. Патч от Martin Matusiak и Sam Kimbrel.
- [bpo-25969](https://python-all.ru/3/whatsnew/changelog.html): Обновлена грамматика lib2to3 для поддержки обобщений распаковки, добавленных в 3.5.
- [bpo-14977](https://python-all.ru/3/whatsnew/changelog.html): mailcap теперь соблюдает порядок строк в файлах mailcap («первое совпадение»), как того требует RFC 1542. Патч от Michael Lazar.
- [bpo-28082](https://python-all.ru/3/whatsnew/changelog.html): Константы флагов re преобразованы в IntFlag.
- [bpo-28025](https://python-all.ru/3/whatsnew/changelog.html): Все константы модуля ssl преобразованы в IntEnum и IntFlags. Свойства SSLContext теперь возвращают флаги и перечисления.
- [bpo-23591](https://python-all.ru/3/whatsnew/changelog.html): Добавлены Flag, IntFlag и auto() в модуль enum.
- [bpo-433028](https://python-all.ru/3/whatsnew/changelog.html): Добавлена поддержка модифицирующих диапазонов в регулярных выражениях.
- [bpo-24594](https://python-all.ru/3/whatsnew/changelog.html): Проверка параметра persist при открытии базы данных MSI
- [bpo-17582](https://python-all.ru/3/whatsnew/changelog.html): xml.etree.ElementTree теперь сохраняет пробелы в атрибутах (Патч от Duane Griffin. Проверено и одобрено Stefan Behnel.)
- [bpo-28047](https://python-all.ru/3/whatsnew/changelog.html): Исправлен расчёт длины строки, используемой для base64 CTE в новых политиках email.
- [bpo-27576](https://python-all.ru/3/whatsnew/changelog.html): Исправлен порядок вызовов в OrderedDict.\_\_init\_\_().
- email.generator.DecodedGenerator теперь поддерживает ключевое слово policy.
- [bpo-28027](https://python-all.ru/3/whatsnew/changelog.html): Удалить недокументированные модули из `Lib/plat-*`: IN, CDROM, DLFCN, TYPES, CDIO и STROPTS.
- [bpo-27445](https://python-all.ru/3/whatsnew/changelog.html): Не передавайте str(\_charset) в MIMEText.set\_payload(). Исправление от Claude Paroz.
- [bpo-24277](https://python-all.ru/3/whatsnew/changelog.html): Новое API email больше не экспериментальное, документация переработана и переписана с акцентом на новое API.
- [bpo-22450](https://python-all.ru/3/whatsnew/changelog.html): urllib теперь включает заголовок `Accept: */*` среди заголовков по умолчанию. Это делает результаты запросов REST API более согласованными и предсказуемыми, особенно при использовании прокси-серверов.
- lib2to3.pgen3.driver.load\_grammar() теперь создаёт стабильный кэш-файл между запусками для одного и того же входного файла Grammar.txt независимо от настройки рандомизации хэша.
- [bpo-28005](https://python-all.ru/3/whatsnew/changelog.html): Разрешить распространение ImportErrors в реализации кодировки.
- [bpo-26667](https://python-all.ru/3/whatsnew/changelog.html): Поддержка path-подобных объектов в importlib.util.
- [bpo-27570](https://python-all.ru/3/whatsnew/changelog.html): Избегать вызовов memcpy() и т.п. нулевой длины с нулевыми указателями источника в модулях «ctypes» и «array».
- [bpo-22233](https://python-all.ru/3/whatsnew/changelog.html): Разбивать строки заголовков email *только* по символам CR и LF, указанным в RFC, а не по произвольным символам разрыва строки Unicode. Это также исправляет ошибку в разборе заголовков HTTP.
- [bpo-27331](https://python-all.ru/3/whatsnew/changelog.html): Классы email.mime теперь все принимают необязательный аргумент policy.
- [bpo-27988](https://python-all.ru/3/whatsnew/changelog.html): Исправлено некорректное изменение списка полезной нагрузки в email.iter\_attachments.
- [bpo-16113](https://python-all.ru/3/whatsnew/changelog.html): Добавлена поддержка SHA-3 и SHAKE в модуль hashlib.
- Устранено предупреждение о тавтологическом сравнении указателей в \_scproxy.c.
- [bpo-27776](https://python-all.ru/3/whatsnew/changelog.html): Функция [`os.urandom()`](https://python-all.ru/3/library/os.html#os.urandom) теперь блокируется на Linux 3.17 и новее до инициализации пула энтропии системного urandom для повышения безопасности. Это изменение является частью [**PEP 524**](https://python-all.ru/3/whatsnew/changelog.html).
- [bpo-27778](https://python-all.ru/3/whatsnew/changelog.html): Предоставить системный вызов Linux `getrandom()` в качестве новой функции [`os.getrandom()`](https://python-all.ru/3/library/os.html#os.getrandom). Это изменение является частью [**PEP 524**](https://python-all.ru/3/whatsnew/changelog.html).
- [bpo-27691](https://python-all.ru/3/whatsnew/changelog.html): Исправлен разбор модулем ssl полей GEN\_RID альтернативного имени субъекта в сертификатах X.509.
- [bpo-18844](https://python-all.ru/3/whatsnew/changelog.html): Добавлена функция random.choices().
- [bpo-25761](https://python-all.ru/3/whatsnew/changelog.html): Улучшено сообщение об ошибке при усечённых данных pickle в C-реализации unpickler. Теперь в некоторых случаях вызывается UnpicklingError вместо AttributeError и ValueError.
- [bpo-26798](https://python-all.ru/3/whatsnew/changelog.html): Добавлен BLAKE2 (blake2b и blake2s) в hashlib.
- [bpo-26032](https://python-all.ru/3/whatsnew/changelog.html): Оптимизирован поиск по шаблону в pathlib с помощью os.scandir(); теперь он примерно в 1,5–4 раза быстрее.
- [bpo-25596](https://python-all.ru/3/whatsnew/changelog.html): Оптимизированы функции glob() и iglob() в модуле glob; теперь они примерно в 3–6 раз быстрее.
- [bpo-27928](https://python-all.ru/3/whatsnew/changelog.html): Добавлен scrypt (функция формирования ключа на основе пароля) в модуль hashlib (требуется OpenSSL 1.1.0).
- [bpo-27850](https://python-all.ru/3/whatsnew/changelog.html): Удалён 3DES из списка шифров по умолчанию модуля ssl для противодействия атаке sweet32 ([**CVE 2016-2183**](https://python-all.ru/3/whatsnew/changelog.html)).
- [bpo-27766](https://python-all.ru/3/whatsnew/changelog.html): Добавлен ChaCha20 Poly1305 в список шифров по умолчанию модуля ssl. (Требуется OpenSSL 1.1.0 или LibreSSL).
- [bpo-25387](https://python-all.ru/3/whatsnew/changelog.html): Проверять возвращаемое значение winsound.MessageBeep.
- [bpo-27866](https://python-all.ru/3/whatsnew/changelog.html): Добавлен метод SSLContext.get\_ciphers() для получения списка всех включённых шифров.
- [bpo-27744](https://python-all.ru/3/whatsnew/changelog.html): Добавлен AF\_ALG (криптография ядра Linux) в модуль socket.
- [bpo-26470](https://python-all.ru/3/whatsnew/changelog.html): Перенесены модули ssl и hashlib на OpenSSL 1.1.0.
- [bpo-11620](https://python-all.ru/3/whatsnew/changelog.html): Исправлена поддержка SND\_MEMORY в winsound.PlaySound. На основе патча от Tim Lesher.
- [bpo-11734](https://python-all.ru/3/whatsnew/changelog.html): Добавлена поддержка 16-разрядных чисел с плавающей запятой стандарта IEEE 754 в модуль struct. На основе патча от Eli Stevens.
- [bpo-27919](https://python-all.ru/3/whatsnew/changelog.html): Помечена опция `extra_path` в distutils packaging как устаревшая.
- [bpo-23229](https://python-all.ru/3/whatsnew/changelog.html): Добавлены новые константы `cmath`: `cmath.inf` и `cmath.nan` для соответствия `math.inf` и `math.nan`, а также `cmath.infj` и `cmath.nanj` для соответствия формату complex repr.
- [bpo-27842](https://python-all.ru/3/whatsnew/changelog.html): csv.DictReader теперь возвращает строки типа OrderedDict. (Автор: Steve Holden.)
- Удалена поддержка передачи файлового дескриптора в os.access. Это никогда не работало, но ранее исключение не вызывалось.
- [bpo-12885](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка при обнаружении distutils символической ссылки.
- [bpo-27881](https://python-all.ru/3/whatsnew/changelog.html): Исправлены возможные ошибки при установке sqlite3.Connection.isolation\_level. На основе патча от Xiang Zhang.
- [bpo-27861](https://python-all.ru/3/whatsnew/changelog.html): Исправлено падение в sqlite3.Connection.cursor(), когда фабрика создаёт не курсор. Патч от Xiang Zhang.
- [bpo-19884](https://python-all.ru/3/whatsnew/changelog.html): Устранён ложный вывод на OS X при использовании Gnu Readline.
- [bpo-27706](https://python-all.ru/3/whatsnew/changelog.html): Восстановлено детерминированное поведение random.Random().seed() для строковых seeds при использовании версии seeding 1. Позволяет последовательностям вызовов random() точно совпадать с теми, что были в Python 2. Патч от Nofar Schnider.
- [bpo-10513](https://python-all.ru/3/whatsnew/changelog.html): Исправлена регрессия в Connection.commit(). Операторы не должны сбрасываться после коммита.
- [bpo-12319](https://python-all.ru/3/whatsnew/changelog.html): Добавлена поддержка передачи с разделением на фрагменты (chunked transfer encoding) для запросов http.client.HTTPConnection. Класс urllib.request.AbstractHTTPHandler больше не требует заголовка Content-Length. Если HTTP-запрос имеет тело в виде файла или итератора, но без заголовка Content-Length, библиотека теперь использует chunked transfer-encoding.
- Новая версия typing.py из [https://github.com/python/typing](https://python-all.ru/3/whatsnew/changelog.html): - Collection (только для 3.6) ([bpo-27598](https://python-all.ru/3/whatsnew/changelog.html)) - Добавлен FrozenSet в \_\_all\_\_ (upstream #261) - исправлено падение в \_get\_type\_vars() (upstream #259) - Удалено ограничение на dict в ForwardRef.\_eval\_type (upstream #252)
- [bpo-27832](https://python-all.ru/3/whatsnew/changelog.html): Сделать параметр `_normalize` конструктора `Fraction` только ключевым (keyword-only), так что `Fraction(2, 3, 4)` теперь вызывает `TypeError`.
- [bpo-27539](https://python-all.ru/3/whatsnew/changelog.html): Исправлен ненормализованный результат `Fraction.__pow__` при отрицательной степени и отрицательном основании.
- [bpo-21718](https://python-all.ru/3/whatsnew/changelog.html): cursor.description теперь доступен для запросов с CTE.
- [bpo-27819](https://python-all.ru/3/whatsnew/changelog.html): В distutils sdists теперь на всех платформах по умолчанию создаются дистрибутивы в формате “gztar” (gzipped tar), если не указан параметр “formats”.
- [bpo-2466](https://python-all.ru/3/whatsnew/changelog.html): posixpath.ismount теперь корректно распознает точки монтирования, к которым у пользователя нет доступа.
- [bpo-9998](https://python-all.ru/3/whatsnew/changelog.html): На Linux ctypes.util.find\_library теперь ищет разделяемые библиотеки в LD\_LIBRARY\_PATH.
- [bpo-27573](https://python-all.ru/3/whatsnew/changelog.html): Сообщение при выходе из code.interact теперь настраивается.
- [bpo-27930](https://python-all.ru/3/whatsnew/changelog.html): Улучшено поведение logging.handlers.QueueListener. Благодарим Paulo Andrade и Petr Viktorin за анализ и патч.
- [bpo-6766](https://python-all.ru/3/whatsnew/changelog.html): Добавлен распределённый подсчёт ссылок в multiprocessing для поддержки вложенности разделяемых значений / proxy-объектов.
- [bpo-21201](https://python-all.ru/3/whatsnew/changelog.html): Улучшена читаемость сообщений об ошибках multiprocessing. Благодарность Wojciech Walczak за патч.
- asyncio: Добавлены set\_protocol / get\_protocol в Transports.
- [bpo-27456](https://python-all.ru/3/whatsnew/changelog.html): asyncio: Установка TCP\_NODELAY по умолчанию.

### IDLE

- [bpo-15308](https://python-all.ru/3/whatsnew/changelog.html): Добавлена команда «прервать выполнение» (^C) в меню Shell. Патч от Roger Serwy, обновлено Bayard Randel.
- [bpo-27922](https://python-all.ru/3/whatsnew/changelog.html): Тесты IDLE больше не вызывают мерцание GUI-виджетов на экране.
- [bpo-27891](https://python-all.ru/3/whatsnew/changelog.html): Импорты в модулях idlelib теперь единообразно сгруппированы и отсортированы.
- [bpo-17642](https://python-all.ru/3/whatsnew/changelog.html): Добавлены более крупные размеры шрифтов для проекции в аудитории.
- Добавлена версия в заголовок окна справки IDLE.
- [bpo-25564](https://python-all.ru/3/whatsnew/changelog.html): В разделе о различиях между IDLE и консолью упомянуто, что использование exec означает, что \_\_builtins\_\_ определён для каждого выражения.
- [bpo-27821](https://python-all.ru/3/whatsnew/changelog.html): Исправлена регрессия в 3.6.0a3, которая не позволяла выбрать пользовательские наборы клавиш, если не была определена пользовательская тема.

### C API

- [bpo-26900](https://python-all.ru/3/whatsnew/changelog.html): Excluded underscored names and other private API from limited API.
- [bpo-26027](https://python-all.ru/3/whatsnew/changelog.html): Add support for path-like objects in PyUnicode\_FSConverter() & PyUnicode\_FSDecoder().

### Tests

- [bpo-27427](https://python-all.ru/3/whatsnew/changelog.html): Additional tests for the math module. Patch by Francisco Couzo.
- [bpo-27953](https://python-all.ru/3/whatsnew/changelog.html): Skip math and cmath tests that fail on OS X 10.4 due to a poor libm implementation of tan.
- [bpo-26040](https://python-all.ru/3/whatsnew/changelog.html): Improve test\_math and test\_cmath coverage and rigour. Patch by Jeff Allen.
- [bpo-27787](https://python-all.ru/3/whatsnew/changelog.html): Call gc.collect() before checking each test for “dangling threads”, since the dangling threads are weak references.

### Build

- [bpo-27566](https://python-all.ru/3/whatsnew/changelog.html): Fix clean target in freeze makefile (patch by Lisa Roach)
- [bpo-27705](https://python-all.ru/3/whatsnew/changelog.html): Update message in validate\_ucrtbase.py
- [bpo-27976](https://python-all.ru/3/whatsnew/changelog.html): Deprecate building \_ctypes with the bundled copy of libffi on non-OSX UNIX platforms.
- [bpo-27983](https://python-all.ru/3/whatsnew/changelog.html): Отсутствие инструмента llvm-profdata при использовании clang, необходимого для PGO-линковки, теперь вызывает ошибку на этапе конфигурации, а не сборки, когда включён `--with-optimizations`. Также улучшена возможность поиска llvm-profdata на macOS и некоторых версиях Linux.
- [bpo-21590](https://python-all.ru/3/whatsnew/changelog.html): Support for DTrace and SystemTap probes.
- [bpo-26307](https://python-all.ru/3/whatsnew/changelog.html): The profile-opt build now applies PGO to the built-in modules.
- [bpo-26359](https://python-all.ru/3/whatsnew/changelog.html): Add the –with-optimizations flag to turn on LTO and PGO build support when available.
- [bpo-27917](https://python-all.ru/3/whatsnew/changelog.html): Установлены триплеты платформы для сборок Android.
- [bpo-25825](https://python-all.ru/3/whatsnew/changelog.html): Update references to the $(LIBPL) installation path on AIX. This path was changed in 3.2a4.
- Обновлён установщик OS X для использования SQLite 3.14.1 и XZ 5.2.2.
- [bpo-21122](https://python-all.ru/3/whatsnew/changelog.html): Fix LTO builds on OS X.
- [bpo-17128](https://python-all.ru/3/whatsnew/changelog.html): 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.

### Tools/Demos

- [bpo-27952](https://python-all.ru/3/whatsnew/changelog.html): Исправлена работа Tools/scripts/fixcid.py с Python 3 и текущим модулем «re», устранены недопустимые escape-последовательности обратной косой черты в Python и исправлена ошибка при разборе экранированных кавычек C.

### Windows

- [bpo-28065](https://python-all.ru/3/whatsnew/changelog.html): Update xz dependency to 5.2.2 and build it from source.
- [bpo-25144](https://python-all.ru/3/whatsnew/changelog.html): Ensures TargetDir is set before continuing with custom install.
- [bpo-1602](https://python-all.ru/3/whatsnew/changelog.html): Windows console doesn’t input or print Unicode (PEP 528)
- [bpo-27781](https://python-all.ru/3/whatsnew/changelog.html): Change file system encoding on Windows to UTF-8 (PEP 529)
- [bpo-27731](https://python-all.ru/3/whatsnew/changelog.html): Opt-out of MAX\_PATH on Windows 10
- [bpo-6135](https://python-all.ru/3/whatsnew/changelog.html): Adds encoding and errors parameters to subprocess.
- [bpo-27959](https://python-all.ru/3/whatsnew/changelog.html): Adds oem encoding, alias ansi to mbcs, move aliasmbcs to codec lookup.
- [bpo-27982](https://python-all.ru/3/whatsnew/changelog.html): The functions of the winsound module now accept keyword arguments.
- [bpo-20366](https://python-all.ru/3/whatsnew/changelog.html): Build full text search support into SQLite on Windows.
- [bpo-27756](https://python-all.ru/3/whatsnew/changelog.html): Добавлены новые иконки для файлов и процессов Python в Windows. Дизайн – Cherry Wang.
- [bpo-27883](https://python-all.ru/3/whatsnew/changelog.html): Обновление sqlite до 3.14.1.0 на Windows.

## Python 3.6.0 alpha 4

*Дата выпуска: 2016-08-15*

### Ядро и встроенные модули

- [bpo-27704](https://python-all.ru/3/whatsnew/changelog.html): Оптимизировано создание bytes и bytearray из байтоподобных объектов и итерируемых объектов. Скорость увеличена до 3 раз для коротких объектов. Оригинальный патч от Naoki Inada.
- [bpo-26823](https://python-all.ru/3/whatsnew/changelog.html): Большие блоки повторяющихся строк в traceback теперь сокращаются как «\[Предыдущая строка повторена еще {count} раз\]» во встроенном отображении traceback. Патч от Emanuel Barry.
- [bpo-27574](https://python-all.ru/3/whatsnew/changelog.html): Уменьшены накладные расходы на разбор именованных аргументов в функциях, реализованных с помощью Argument Clinic.
- [bpo-22557](https://python-all.ru/3/whatsnew/changelog.html): Теперь импорт уже импортированных модулей выполняется до 2,5 раз быстрее.
- [bpo-17596](https://python-all.ru/3/whatsnew/changelog.html): Добавлен \<wincrypt.h\> для поддержки сборки с Min GW.
- [bpo-17599](https://python-all.ru/3/whatsnew/changelog.html): В Windows переименована внутренняя структура REPARSE\_DATA\_BUFFER для устранения конфликта с определением из Min GW.
- [bpo-27507](https://python-all.ru/3/whatsnew/changelog.html): Добавлена проверка целочисленного переполнения в bytearray.extend(). Патч от Xiang Zhang.
- [bpo-27581](https://python-all.ru/3/whatsnew/changelog.html): Не полагаться на циклический перенос для проверки переполнения в PySequence\_Tuple(). Патч от Xiang Zhang.
- [bpo-1621](https://python-all.ru/3/whatsnew/changelog.html): Избегать знакового целочисленного переполнения в операциях со списками и кортежами. Патч от Xiang Zhang.
- [bpo-27419](https://python-all.ru/3/whatsnew/changelog.html): Стандартная функция \_\_import\_\_() больше не ищет «\_\_import\_\_» в globals или builtins при импорте подмодулей или использовании «from import». Исправлена ошибка, приводившая к падению при выводе предупреждения о невозможности разрешения пакета из \_\_spec\_\_ или \_\_package\_\_.
- [bpo-27083](https://python-all.ru/3/whatsnew/changelog.html): Учитывается переменная окружения PYTHONCASEOK в Windows.
- [bpo-27514](https://python-all.ru/3/whatsnew/changelog.html): Слишком большое количество статически вложенных блоков теперь вызывает SyntaxError, а не SystemError.
- [bpo-27366](https://python-all.ru/3/whatsnew/changelog.html): Реализован [**PEP 487**](https://python-all.ru/3/whatsnew/changelog.html) (Упрощённая настройка создания классов). При создании подкласса вызывается метод класса \_\_init\_subclass\_\_ базового класса. Дескрипторы инициализируются с \_\_set\_name\_\_ после создания класса.

### Библиотека

- [bpo-26027](https://python-all.ru/3/whatsnew/changelog.html): Добавлена поддержка [**PEP 519**](https://python-all.ru/3/whatsnew/changelog.html)/\_\_fspath\_\_() в модули os и os.path. Включает код от Jelle Zijlstra. (См. также: [bpo-27524](https://python-all.ru/3/whatsnew/changelog.html))
- [bpo-27598](https://python-all.ru/3/whatsnew/changelog.html): Добавлена коллекция Collections в collections.abc. Патч от Ivan Levkivskyi, документация от Neil Girdhar.
- [bpo-25958](https://python-all.ru/3/whatsnew/changelog.html): Поддержка «анти-регистрации» специальных методов из различных ABC, таких как \_\_hash\_\_, \_\_iter\_\_ или \_\_len\_\_. Все они (и ещё несколько) могут быть установлены в None в классе-реализации, и поведение будет таким, как если бы метод вообще не был определён. (Ранее этот механизм существовал только для \_\_hash\_\_, чтобы сделать изменяемые классы нехешируемыми.) Код предоставлен Andrew Barnert и Ivan Levkivskyi.
- [bpo-16764](https://python-all.ru/3/whatsnew/changelog.html): Поддержка именованных аргументов для zlib.decompress(). Патч от Xiang Zhang.
- [bpo-27736](https://python-all.ru/3/whatsnew/changelog.html): Предотвращение segfault после повторной инициализации интерпретатора из-за проблемы со счётчиком ссылок, внесённой в код для [bpo-27038](https://python-all.ru/3/whatsnew/changelog.html) в версии 3.6.0a3. Патч от Xiang Zhang.
- [bpo-25628](https://python-all.ru/3/whatsnew/changelog.html): Параметры *verbose* и *rename* для collections.namedtuple теперь являются только ключевыми.
- [bpo-12345](https://python-all.ru/3/whatsnew/changelog.html): Добавлена математическая константа tau в math и cmath. См. также [**PEP 628**](https://python-all.ru/3/whatsnew/changelog.html).
- [bpo-26823](https://python-all.ru/3/whatsnew/changelog.html): traceback.StackSummary.format теперь сокращает большие блоки повторяющихся строк как «\[Предыдущая строка повторена еще {count} раз\]» (это изменение также влияет на другие операции отображения traceback в модуле). Патч от Emanuel Barry.
- [bpo-27664](https://python-all.ru/3/whatsnew/changelog.html): Добавлена возможность указания префикса имени потока в concurrent.futures.thread.ThreadPoolExecutor().
- [bpo-27181](https://python-all.ru/3/whatsnew/changelog.html): Добавлены функции geometric\_mean и harmonic\_mean в модуль statistics.
- [bpo-27573](https://python-all.ru/3/whatsnew/changelog.html): code.interact теперь выводит сообщение при выходе.
- [bpo-6422](https://python-all.ru/3/whatsnew/changelog.html): Добавлен метод autorange для объектов timeit.Timer.
- [bpo-27773](https://python-all.ru/3/whatsnew/changelog.html): Исправлены некоторые ошибки управления памятью в server\_hostname в \_ssl.wrap\_socket().
- [bpo-26750](https://python-all.ru/3/whatsnew/changelog.html): unittest.mock.create\_autospec() теперь корректно работает для подклассов property() и других дескрипторов данных. Удалён никогда не публиковавшийся и не документированный кортеж unittest.mock.DescriptorTypes.
- [bpo-26754](https://python-all.ru/3/whatsnew/changelog.html): Недокументированная поддержка произвольных bytes-подобных объектов в качестве пути в compile() и аналогичных функциях теперь считается устаревшей.
- [bpo-26800](https://python-all.ru/3/whatsnew/changelog.html): Недокументированная поддержка произвольных bytes-подобных объектов в качестве путей в функциях os теперь считается устаревшей.
- [bpo-26981](https://python-all.ru/3/whatsnew/changelog.html): Добавлена прослойка совместимости \_order\_ для enum.Enum для кодовых баз Python 2/3.
- [bpo-27661](https://python-all.ru/3/whatsnew/changelog.html): Добавлен именованный аргумент tzinfo в datetime.combine.
- В модуле curses теперь возбуждается ошибка, если в window.getstr() или window.instr() передаётся отрицательное значение.
- [bpo-27783](https://python-all.ru/3/whatsnew/changelog.html): Исправлена возможная работа с неинициализированной памятью в operator.methodcaller.
- [bpo-27774](https://python-all.ru/3/whatsnew/changelog.html): Исправлен возможный вызов Py\_DECREF для не принадлежащего объекта в \_sre.
- [bpo-27760](https://python-all.ru/3/whatsnew/changelog.html): Исправлено возможное целочисленное переполнение в binascii.b2a\_qp.
- [bpo-27758](https://python-all.ru/3/whatsnew/changelog.html): Исправлено возможное целочисленное переполнение в модуле \_csv для больших длин записей.
- [bpo-27568](https://python-all.ru/3/whatsnew/changelog.html): Предотвращена атака HTTPoxy ([**CVE 2016-1000110**](https://python-all.ru/3/whatsnew/changelog.html)). Теперь игнорируется переменная HTTP\_PROXY, когда установлено окружение REQUEST\_METHOD, что указывает на работу скрипта в режиме CGI.
- [bpo-7063](https://python-all.ru/3/whatsnew/changelog.html): Удалён мёртвый код из обработки срезов модуля «array». Патч от Chuck.
- [bpo-27656](https://python-all.ru/3/whatsnew/changelog.html): Больше не предполагается, что sched.h определяет какие-либо константы SCHED\_\*.
- [bpo-27130](https://python-all.ru/3/whatsnew/changelog.html): В модуле «zlib» исправлена обработка больших буферов (обычно 4 ГиБ) при сжатии и распаковке. Ранее входные данные были ограничены 4 ГиБ, а операции сжатия и распаковки не корректно обрабатывали результаты такого же размера.
- [bpo-24773](https://python-all.ru/3/whatsnew/changelog.html): Реализован [**PEP 495**](https://python-all.ru/3/whatsnew/changelog.html) (Устранение неоднозначности местного времени).
- Константа EPOLLEXCLUSIVE (если она определена) теперь доступна в модуле select.
- [bpo-27567](https://python-all.ru/3/whatsnew/changelog.html): Константы EPOLLRDHUP и POLLRDHUP теперь доступны в модуле select.
- [bpo-1621](https://python-all.ru/3/whatsnew/changelog.html): Избегание переполнения при отрицании знакового int в модуле «audioop».
- [bpo-27533](https://python-all.ru/3/whatsnew/changelog.html): Освобождение GIL в nt.\_isdir
- [bpo-17711](https://python-all.ru/3/whatsnew/changelog.html): Исправлена распаковка (unpickling) по постоянному идентификатору с протоколом 0. Оригинальный патч от Alexandre Vassalotti.
- [bpo-27522](https://python-all.ru/3/whatsnew/changelog.html): Избегание непреднамеренного цикла ссылок в email.feedparser.
- [bpo-27512](https://python-all.ru/3/whatsnew/changelog.html): Исправлено падение (segfault) при вызове os.fspath() на методе \_\_fspath\_\_(), который возбуждал исключение. Патч от Xiang Zhang.

### IDLE

- [bpo-27714](https://python-all.ru/3/whatsnew/changelog.html): text\_textview и test\_autocomplete теперь проходят успешно при повторном запуске в том же процессе. Это происходит, когда test\_idle завершается неудачей при запуске с опцией -w, но без -jn. Исправлено предупреждение из test\_config.
- [bpo-27621](https://python-all.ru/3/whatsnew/changelog.html): Сообщения об ошибках валидации ответов запроса теперь выводятся в самом поле запроса, а не в отдельном окне сообщений. Переделаны тесты для соответствия. Добавлены улучшения для Mac OSX. Оригинальный патч от Mark Roseman.
- [bpo-27620](https://python-all.ru/3/whatsnew/changelog.html): Клавиша Escape теперь закрывает окно запроса как отменённое.
- [bpo-27609](https://python-all.ru/3/whatsnew/changelog.html): IDLE: табуляция после начальных пробелов должна именно табулировать, а не вызывать автодополнение. Это исправляет проблему с написанием докстрингов, отступы в которых сделаны как минимум дважды.
- [bpo-27609](https://python-all.ru/3/whatsnew/changelog.html): Явно возвращать None, когда есть также возвраты не-None. В нескольких случаях инвертировано условие и удалён один return.
- [bpo-25507](https://python-all.ru/3/whatsnew/changelog.html): IDLE больше не выполняет ошибочный код из-за своих импортов tkinter. Пользователи должны включать те же импорты, что требуются для запуска непосредственно в Python.
- [bpo-27173](https://python-all.ru/3/whatsnew/changelog.html): Добавлен набор клавиш «IDLE Modern Unix» во встроенные наборы. Набор по умолчанию теперь зависит от платформы. Добавлены тесты для изменений в модуле config.
- [bpo-27452](https://python-all.ru/3/whatsnew/changelog.html): добавлены счётчик строк и crc в дамп теста configHandler в IDLE.

### Tests

- [bpo-25805](https://python-all.ru/3/whatsnew/changelog.html): Пропускает тест в test\_pkgutil, который не работает, когда `__name__ == __main__`. Патч от SilentGhost.
- [bpo-27472](https://python-all.ru/3/whatsnew/changelog.html): Добавляет test.support.unix\_shell как путь к стандартной оболочке.
- [bpo-27369](https://python-all.ru/3/whatsnew/changelog.html): В test\_pyexpat избегает проверки детали сообщения об ошибке, которая изменилась в Expat 2.2.0.
- [bpo-27594](https://python-all.ru/3/whatsnew/changelog.html): Предотвращает ошибку утверждения при запуске test\_ast с включённым покрытием: гарантирует, что объект кода имеет корректный номер первой строки. Патч предложен Иваном Левкивским.

### Windows

- [bpo-27647](https://python-all.ru/3/whatsnew/changelog.html): Обновляет встроенный Tcl/Tk до версии 8.6.6.
- [bpo-27610](https://python-all.ru/3/whatsnew/changelog.html): Добавляет метаданные [**PEP 514**](https://python-all.ru/3/whatsnew/changelog.html) в установщик Windows.
- [bpo-27469](https://python-all.ru/3/whatsnew/changelog.html): Добавляет расширение оболочки в лаунчер, чтобы перетаскивание работало корректно.
- [bpo-27309](https://python-all.ru/3/whatsnew/changelog.html): Включает правильные стили Windows в манифесте python\[w\].exe.

### Сборка

- [bpo-27713](https://python-all.ru/3/whatsnew/changelog.html): Подавляет ложные предупреждения сборки при обновлении файлов начальной загрузки importlib. Патч от Xiang Zhang.
- [bpo-25825](https://python-all.ru/3/whatsnew/changelog.html): Исправляет ссылки на Modules/python.exp, который требуется в AIX. Ссылки были случайно изменены в версии 3.5.0a1.
- [bpo-27453](https://python-all.ru/3/whatsnew/changelog.html): Вызов CPP в configure должен использовать CPPFLAGS. Патч от Chi Hsuan Yen.
- [bpo-27641](https://python-all.ru/3/whatsnew/changelog.html): Сценарий configure теперь вставляет комментарии в makefile, чтобы предотвратить кросс-компиляцию исполняемых файлов pgen и \_freeze\_importlib.
- [bpo-26662](https://python-all.ru/3/whatsnew/changelog.html): Устанавливает PYTHON\_FOR\_GEN в configure как программу Python, используемую для генерации файлов во время сборки.
- [bpo-10910](https://python-all.ru/3/whatsnew/changelog.html): Избегает ошибок компиляции C++ на FreeBSD и OS X. Также обновляет проверки версии FreeBSD для оригинального обходного решения ctype UTF-8.

## Python 3.6.0 alpha 3

*Дата выпуска: 2016-07-11*

### Безопасность

- [bpo-27278](https://python-all.ru/3/whatsnew/changelog.html): Исправляет реализацию os.urandom() с использованием getrandom() на Linux. Обрезает размер до INT\_MAX и повторяет, пока не будет собрано достаточно случайных байтов, вместо прямого приведения Py\_ssize\_t к int.
- [bpo-22636](https://python-all.ru/3/whatsnew/changelog.html): Избегает проблем с внедрением команд оболочки в ctypes.util.find\_library().

### Ядро и встроенные объекты

- [bpo-27473](https://python-all.ru/3/whatsnew/changelog.html): Исправлено возможное целочисленное переполнение при конкатенации bytes и bytearray. Патч от Xiang Zhang.
- [bpo-23034](https://python-all.ru/3/whatsnew/changelog.html): Вывод специальной сборки Python с определёнными макросами COUNT\_ALLOCS, SHOW\_ALLOC\_COUNT или SHOW\_TRACK\_COUNT теперь по умолчанию отключён. Его можно снова включить с помощью опции “-X showalloccount”. Теперь вывод осуществляется в stderr вместо stdout.
- [bpo-27443](https://python-all.ru/3/whatsnew/changelog.html): \_\_length\_hint\_\_() итераторов bytearray больше не возвращает отрицательное целое для изменённого bytearray.
- [bpo-27007](https://python-all.ru/3/whatsnew/changelog.html): Методы класса fromhex() подклассов bytes и bytearray теперь возвращают экземпляр соответствующего подкласса.

### Библиотека

- [bpo-26844](https://python-all.ru/3/whatsnew/changelog.html): Исправляет сообщение об ошибке для imp.find\_module(), чтобы оно ссылалось на ‘path’ вместо ‘name’. Патч от Lev Maximov.
- [bpo-23804](https://python-all.ru/3/whatsnew/changelog.html): Исправляет вызовы recv() нулевой длины в SSL, чтобы они не блокировались и не вызывали ошибку о нечистом EOF.
- [bpo-27466](https://python-all.ru/3/whatsnew/changelog.html): Изменяет формат времени, возвращаемый http.cookie.time2netscape, подтверждая формат cookie Netscape и приводя его в соответствие с dокументацией.
- [bpo-21708](https://python-all.ru/3/whatsnew/changelog.html): Устаревшее поведение dbm.dumb, отличающееся от обычного поведения dbm: создание базы данных в режимах ‘r’ и ‘w’ и изменение базы данных в режиме ‘r’.
- [bpo-26721](https://python-all.ru/3/whatsnew/changelog.html): Изменяет атрибут socketserver.StreamRequestHandler.wfile, чтобы реализовать BufferedIOBase. В частности, метод write() больше не выполняет частичную запись.
- [bpo-22115](https://python-all.ru/3/whatsnew/changelog.html): В класс tkinter.Variable добавлены методы trace\_add, trace\_remove и trace\_info. Они заменяют старые методы trace\_variable, trace, trace\_vdelete и trace\_vinfo, которые используют устаревшие команды Tcl и могут не работать в будущих версиях Tcl. Исправлено поведение старых методов отслеживания: trace\_vdelete() с неправильным режимом больше не ломает отслеживание, trace\_vinfo() теперь всегда возвращает список пар строк, отслеживание в режиме "u" теперь работает.
- [bpo-26243](https://python-all.ru/3/whatsnew/changelog.html): Теперь только аргумент level функции zlib.compress() является именованным. Первый аргумент – только позиционный.
- [bpo-27038](https://python-all.ru/3/whatsnew/changelog.html): Тип DirEntry теперь доступен как os.DirEntry. Патч предоставлен Jelle Zijlstra.
- [bpo-27186](https://python-all.ru/3/whatsnew/changelog.html): Обновлены os.fspath()/PyOS\_FSPath() для проверки, что возвращаемое значение \_\_fspath\_\_() является str или bytes.
- [bpo-18726](https://python-all.ru/3/whatsnew/changelog.html): Все необязательные параметры функций dump(), dumps(), load() и loads(), а также конструкторов классов JSONEncoder и JSONDecoder в модуле json теперь являются только именованными.
- [bpo-27319](https://python-all.ru/3/whatsnew/changelog.html): Методы selection\_set(), selection\_add(), selection\_remove() и selection\_toggle() виджета ttk.TreeView теперь позволяют передавать несколько элементов как отдельные аргументы вместо передачи в виде кортежа. Объявлена устаревшей недокументированная возможность вызова метода selection() с аргументами.
- [bpo-27079](https://python-all.ru/3/whatsnew/changelog.html): Исправлены функции curses.ascii isblank(), iscntrl() и ispunct().
- [bpo-27294](https://python-all.ru/3/whatsnew/changelog.html): Числовое состояние в repr для объектов событий Tkinter теперь представляется как комбинация известных флагов.
- [bpo-27177](https://python-all.ru/3/whatsnew/changelog.html): Объекты Match в модуле re теперь поддерживают объекты, подобные индексам, в качестве индексов групп. Основано на патчах Jeroen Demeyer и Xiang Zhang.
- [bpo-26754](https://python-all.ru/3/whatsnew/changelog.html): Некоторые функции (compile() и др.) принимали аргумент filename, закодированный как итерируемый объект из целых чисел. Теперь принимаются только строки и байтоподобные объекты.
- [bpo-26536](https://python-all.ru/3/whatsnew/changelog.html): socket.ioctl теперь поддерживает SIO\_LOOPBACK\_FAST\_PATH. Патч от Daniel Stokes.
- [bpo-27048](https://python-all.ru/3/whatsnew/changelog.html): Предотвращает сбой distutils в Windows, когда переменные окружения содержат не-ASCII символы.
- [bpo-27330](https://python-all.ru/3/whatsnew/changelog.html): Исправлены возможные утечки в модуле ctypes.
- [bpo-27238](https://python-all.ru/3/whatsnew/changelog.html): Избавление от голых except в модуле turtle. Оригинальный патч от Jelle Zijlstra.
- [bpo-27122](https://python-all.ru/3/whatsnew/changelog.html): Когда исключение возбуждается внутри контекста, управляемого contextlib.ExitStack(), и один из генераторов стека выхода перехватывает и возбуждает его в цепочке, не следует повторно возбуждать исходное исключение при выходе, а позволить пройти новому цепочечному. Это позволяет избежать ошибки [**PEP 479**](https://python-all.ru/3/whatsnew/changelog.html), описанной в issue25782.
- [bpo-16864](https://python-all.ru/3/whatsnew/changelog.html): sqlite3.Cursor.lastrowid теперь поддерживает оператор REPLACE. Первоначальный патч от Alex LordThorsen.
- [bpo-26386](https://python-all.ru/3/whatsnew/changelog.html): Исправлены операции выбора ttk.TreeView с идентификаторами элементов, содержащими пробелы.
- [bpo-8637](https://python-all.ru/3/whatsnew/changelog.html): Учитывать программу постраничного просмотра, заданную переменной окружения MANPAGER (в приоритете над заданной переменной PAGER).
- [bpo-16182](https://python-all.ru/3/whatsnew/changelog.html): Исправлены различные функции в модуле "readline" для использования кодировки локали, а также исправлены get\_begidx() и get\_endidx(), чтобы возвращать индексы кодовых точек.
- [bpo-27392](https://python-all.ru/3/whatsnew/changelog.html): Добавлен метод loop.connect\_accepted\_socket(). Патч от Jim Fulton.

### IDLE

- [bpo-27477](https://python-all.ru/3/whatsnew/changelog.html): Диалоги поиска IDLE теперь используют ttk-виджеты.
- [bpo-27173](https://python-all.ru/3/whatsnew/changelog.html): Добавлен 'IDLE Modern Unix' во встроенные наборы клавиш. Набор по умолчанию теперь зависит от платформы. Добавлены тесты для изменений в модуле config.
- [bpo-27452](https://python-all.ru/3/whatsnew/changelog.html): Исправлена работа командной строки "idle-test\> python test\_help.py". \_\_file\_\_ теперь относителен, когда python запускается в каталоге файла.
- [bpo-27452](https://python-all.ru/3/whatsnew/changelog.html): Добавлены счетчик строк и контрольная сумма в тестовый дамп configHandler в IDLE.
- [bpo-27380](https://python-all.ru/3/whatsnew/changelog.html): IDLE: добавлен query.py с базовым диалогом Query и ttk-виджетами. Модуль содержит подклассы SectionName, ModuleName и HelpSource, которые используются для получения информации от пользователей через configdialog и файл =\>Load Module. Каждый подкласс имеет свои проверки корректности. Использование ModuleName позволяет пользователям редактировать неправильные имена модулей вместо того, чтобы начинать заново. Добавлены тесты и удалены два файла, объединенные в новый.
- [bpo-27372](https://python-all.ru/3/whatsnew/changelog.html): Test\_idle больше не изменяет локаль.
- [bpo-27365](https://python-all.ru/3/whatsnew/changelog.html): Разрешены не-ASCII символы в IDLE NEWS.txt для имен авторов.
- [bpo-27245](https://python-all.ru/3/whatsnew/changelog.html): IDLE: чистое удаление пользовательских тем и привязок клавиш. Ранее при запуске IDLE из консоли или через импорт выдавался каскад предупреждений. Патч от Serhiy Storchaka.
- [bpo-24137](https://python-all.ru/3/whatsnew/changelog.html): Запускать IDLE, test\_idle и htest с отключенным корневым окном tkinter по умолчанию. Исправлены код и тесты, не работающие при таком ограничении. Исправлены htest, чтобы не создавать второе избыточное корневое окно и mainloop.
- [bpo-27310](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка запуска IDLE.app на OS X из-за остаточного импорта.

### C API

- [bpo-26754](https://python-all.ru/3/whatsnew/changelog.html): PyUnicode\_FSDecoder() принимал аргумент имени файла, закодированный как итерируемый объект из целых чисел. Теперь принимаются только строки и байтоподобные объекты.

### Сборка

- [bpo-28066](https://python-all.ru/3/whatsnew/changelog.html): Исправлена логика поиска каталогов сборки для сгенерированных файлов заголовков при сборке вне дерева исходного кода.
- [bpo-27442](https://python-all.ru/3/whatsnew/changelog.html): В sysconfig.get\_config\_vars() добавлено значение 'ANDROID\_API\_LEVEL', указывающее уровень API Android, под который собран Python.
- [bpo-27434](https://python-all.ru/3/whatsnew/changelog.html): Интерпретатор, используемый для кросс-сборки и найденный в PATH, теперь должен быть той же основной версии (например, 3.6), что и собираемый исходный код.
- [bpo-26930](https://python-all.ru/3/whatsnew/changelog.html): Сборки для Windows обновлены до использования OpenSSL 1.0.2h.
- [bpo-23968](https://python-all.ru/3/whatsnew/changelog.html): Каталог платформы переименован из plat-$(MACHDEP) в plat-$(PLATFORM\_TRIPLET). Каталог конфигурации (LIBPL) переименован из config-$(LDVERSION) в config-$(LDVERSION)-$(PLATFORM\_TRIPLET). Модуль \_sysconfigdata, специфичный для платформы, устанавливается в каталог платформы и переименовывается с включением ABIFLAGS.
- Не используйте поддержку больших файлов для GNU/Hurd.

### Инструменты/Демонстрации

- [bpo-27332](https://python-all.ru/3/whatsnew/changelog.html): Исправлен тип первого аргумента функций уровня модуля, сгенерированных Argument Clinic. Патч от Petr Viktorin.
- [bpo-27418](https://python-all.ru/3/whatsnew/changelog.html): Исправлен Tools/importbench/importbench.py.

### Документация

- [bpo-19489](https://python-all.ru/3/whatsnew/changelog.html): Поле поиска перемещено с боковой панели в заголовок и подвал каждой страницы. Патч от Ammar Askar.
- [bpo-27285](https://python-all.ru/3/whatsnew/changelog.html): Обновлена документация, чтобы отразить устаревание `pyvenv` и привести к единому термину «виртуальное окружение». Патч от Steve Piercy.

### Тесты

- [bpo-27027](https://python-all.ru/3/whatsnew/changelog.html): Добавлена test.support.is\_android, которая равна True, если это сборка для Android.

## Python 3.6.0 alpha 2

*Дата выпуска: 2016-06-13*

### Безопасность

- [bpo-26556](https://python-all.ru/3/whatsnew/changelog.html): Обновлён expat до 2.1.1, исправляет [**CVE 2015-1283**](https://python-all.ru/3/whatsnew/changelog.html).
- Исправлена уязвимость TLS-stripping в smtplib, [**CVE 2016-0772**](https://python-all.ru/3/whatsnew/changelog.html). Сообщено командой Team Oststrom.
- [bpo-26839](https://python-all.ru/3/whatsnew/changelog.html): В Linux, [`os.urandom()`](https://python-all.ru/3/library/os.html#os.urandom) теперь вызывает `getrandom()` с `GRND_NONBLOCK` для перехода к чтению `/dev/urandom`, если пул энтропии urandom ещё не инициализирован. Патч написан Colm Buckley.

### Ядро и встроенные объекты

- [bpo-27095](https://python-all.ru/3/whatsnew/changelog.html): Упрощён MAKE\_FUNCTION и удалён опкод MAKE\_CLOSURE. Патч от Demur Rumed.
- [bpo-27190](https://python-all.ru/3/whatsnew/changelog.html): Генерировать NotSupportedError, если sqlite3 старше 3.3.1. Патч от Dave Sawyer.
- [bpo-27286](https://python-all.ru/3/whatsnew/changelog.html): Исправлена компиляция опкода BUILD\_MAP\_UNPACK\_WITH\_CALL. Вызов функции с обобщённой распаковкой (PEP 448) и конфликтующими именами ключевых аргументов мог приводить к неопределённому поведению.
- [bpo-27140](https://python-all.ru/3/whatsnew/changelog.html): Добавлен опкод BUILD\_CONST\_KEY\_MAP.
- [bpo-27186](https://python-all.ru/3/whatsnew/changelog.html): Добавлена поддержка os.PathLike объектов в open() (часть [**PEP 519**](https://python-all.ru/3/whatsnew/changelog.html)).
- [bpo-27066](https://python-all.ru/3/whatsnew/changelog.html): Исправлена SystemError, если пользовательский opener (для open()) возвращает отрицательное число без установки исключения.
- [bpo-26983](https://python-all.ru/3/whatsnew/changelog.html): float() теперь всегда возвращает экземпляр точного float. Предупреждение об устаревании выдаётся, если \_\_float\_\_ возвращает экземпляр строгого подкласса float. В будущих версиях Python это может стать ошибкой.
- [bpo-27097](https://python-all.ru/3/whatsnew/changelog.html): Интерпретатор Python теперь примерно на 7% быстрее благодаря оптимизированному декодированию инструкций. На основе патча от Demur Rumed.
- [bpo-26647](https://python-all.ru/3/whatsnew/changelog.html): Интерпретатор Python теперь использует 16-битный wordcode вместо байткода. Патч от Demur Rumed.
- [bpo-23275](https://python-all.ru/3/whatsnew/changelog.html): разрешено присваивание в пустой список целей в круглых скобках: () = iterable.
- [bpo-27243](https://python-all.ru/3/whatsnew/changelog.html): обновлён протокол \_\_aiter\_\_: вместо возврата ожидаемого объекта, который разрешается в асинхронный итератор, теперь следует напрямую возвращать асинхронный итератор. Использование прежнего способа вызовет предупреждение PendingDeprecationWarning.

### Библиотека

- Закомментированы константы сокетов (SO\_REUSEPORT) и модуля posix (O\_SHLOCK, O\_EXLOCK), доступные через API, но не реализованные в GNU/Hurd. Они всё равно не работали бы во время выполнения.
- [bpo-27025](https://python-all.ru/3/whatsnew/changelog.html): генерируемые имена для виджетов Tkinter теперь стали более осмысленными и узнаваемыми.
- [bpo-25455](https://python-all.ru/3/whatsnew/changelog.html): исправлены аварийные завершения в repr рекурсивных объектов ElementTree.Element и functools.partial.
- [bpo-27294](https://python-all.ru/3/whatsnew/changelog.html): улучшено представление repr для объектов событий Tkinter.
- [bpo-20508](https://python-all.ru/3/whatsnew/changelog.html): улучшено сообщение исключения в IPv{4,6}Network.\_\_getitem\_\_. Патч от Gareth Rees.
- [bpo-21386](https://python-all.ru/3/whatsnew/changelog.html): реализовано отсутствующее свойство IPv4Address.is\_global. Оно документировано начиная с коммита 07a5610bae9d. Первоначальный патч от Roger Luethi.
- [bpo-27029](https://python-all.ru/3/whatsnew/changelog.html): удалена устаревшая поддержка универсального режима перевода строк из ZipFile.open().
- [bpo-27030](https://python-all.ru/3/whatsnew/changelog.html): неизвестные экранированные последовательности, состоящие из `'\'` и буквы ASCII в регулярных выражениях, теперь считаются ошибками. Флаг re.LOCALE теперь можно использовать только с байтовыми шаблонами.
- [bpo-27186](https://python-all.ru/3/whatsnew/changelog.html): добавлена поддержка os.PathLike в DirEntry (часть [**PEP 519**](https://python-all.ru/3/whatsnew/changelog.html)). Первоначальный патч от Jelle Zijlstra.
- [bpo-20900](https://python-all.ru/3/whatsnew/changelog.html): команда register модуля distutils теперь корректно декодирует HTTP-ответы. Первоначальный патч от ingrid.
- [bpo-27186](https://python-all.ru/3/whatsnew/changelog.html): добавлена поддержка os.PathLike в pathlib, снят его временный статус (часть PEP 519). Первоначальный патч от Dusty Phillips.
- [bpo-27186](https://python-all.ru/3/whatsnew/changelog.html): добавлена поддержка объектов os.PathLike в os.fsencode() и os.fsdecode() (часть [**PEP 519**](https://python-all.ru/3/whatsnew/changelog.html)).
- [bpo-27186](https://python-all.ru/3/whatsnew/changelog.html): введены os.PathLike и os.fspath() (часть [**PEP 519**](https://python-all.ru/3/whatsnew/changelog.html)).
- Новая версия typing.py предоставляет несколько новых классов и возможностей: @overload вне заглушек, Reversible, DefaultDict, Text, ContextManager, Type\[\], NewType(), TYPE\_CHECKING, а также множество исправлений ошибок (следует учесть: некоторые новые возможности ещё не реализованы в mypy или других статических анализаторах). Также добавлены классы для [**PEP 492**](https://python-all.ru/3/whatsnew/changelog.html) (Awaitable, AsyncIterable, AsyncIterator) – на самом деле они появились ещё в 3.5.1, но не были упомянуты.
- [bpo-25738](https://python-all.ru/3/whatsnew/changelog.html): предотвращена отправка тела сообщения в http.server.BaseHTTPRequestHandler.send\_error() для кода 205 Reset Content. Также не отправляются поля заголовка Content в ответах, не имеющих тела. Патч от Susumu Koshiba.
- [bpo-21313](https://python-all.ru/3/whatsnew/changelog.html): исправлен модуль "platform" для корректной работы, когда sys.version содержит усечённую информацию о сборке.
- [bpo-23883](https://python-all.ru/3/whatsnew/changelog.html): добавлены отсутствующие API в \_\_all\_\_ для соответствия документированным API следующих модулей: cgi, mailbox, mimetypes, plistlib и smtpd. Патчи от Jacek Kołodziej.
- [bpo-27164](https://python-all.ru/3/whatsnew/changelog.html): в модуле zlib разрешена распаковка сырых потоков Deflate с заданным словарём zdict. Основано на патче Xiang Zhang.
- [bpo-24291](https://python-all.ru/3/whatsnew/changelog.html): исправлен wsgiref.simple\_server.WSGIRequestHandler для полной записи данных клиенту. Ранее могла выполняться частичная запись, что приводило к усечению данных. Также wsgiref.handler.ServerHandler теперь может обрабатывать частичную запись в stdout, но эта возможность устарела.
- [bpo-21272](https://python-all.ru/3/whatsnew/changelog.html): используется \_sysconfigdata.py для инициализации distutils.sysconfig.
- [bpo-19611](https://python-all.ru/3/whatsnew/changelog.html): [`inspect`](https://python-all.ru/3/library/inspect.html#module-inspect) теперь сообщает о неявных параметрах `.0`, генерируемых компилятором для областей видимости включений и выражений-генераторов, как если бы это были позиционные параметры с именем `implicit0`. Патч от Jelle Zijlstra.
- [bpo-26809](https://python-all.ru/3/whatsnew/changelog.html): добавлен `__all__` в [`string`](https://python-all.ru/3/library/string.html#module-string). Патч от Emanuel Barry.
- [bpo-26373](https://python-all.ru/3/whatsnew/changelog.html): subprocess.Popen.communicate теперь корректно игнорирует BrokenPipeError, когда дочерний процесс умирает до вызова .communicate() в большем числе (или во всех) случаев.
- Поиск имён констант IntEnum в модулях signal, socket и ssl теперь возвращает согласованное имя для значений, имеющих несколько имён. Например: signal.Signals(6) теперь ссылается на себя как signal.SIGALRM, а не переключается между ним и signal.SIGIOT в зависимости от seed хеш-рандомизации интерпретатора.
- [bpo-27167](https://python-all.ru/3/whatsnew/changelog.html): уточнён текст сообщения об ошибке subprocess.CalledProcessError, когда дочерний процесс завершился из-за сигнала.
- [bpo-25931](https://python-all.ru/3/whatsnew/changelog.html): не определять имена socketserver.Forking\* на платформах, таких как Windows, которые не поддерживают os.fork().
- [bpo-21776](https://python-all.ru/3/whatsnew/changelog.html): distutils.upload теперь корректно обрабатывает HTTPError. Первоначальный патч от Claudiu Popa.
- [bpo-26526](https://python-all.ru/3/whatsnew/changelog.html): замена пользовательской проверки дерева разбора в модуле parser на простой DFA-валидатор.
- [bpo-27114](https://python-all.ru/3/whatsnew/changelog.html): исправлена ошибка PermissionError в SSLContext.\_load\_windows\_store\_certs.
- [bpo-18383](https://python-all.ru/3/whatsnew/changelog.html): При использовании filterwarnings и simplefilter теперь не создаются дублирующиеся фильтры. Основано на патче Алекса Шкопа.
- [bpo-23026](https://python-all.ru/3/whatsnew/changelog.html): winreg.QueryValueEx() теперь возвращает целое число для типа REG\_QWORD.
- [bpo-26741](https://python-all.ru/3/whatsnew/changelog.html): Деструктор subprocess.Popen теперь выводит предупреждение ResourceWarning, если дочерний процесс всё ещё выполняется.
- [bpo-27056](https://python-all.ru/3/whatsnew/changelog.html): Оптимизированы pickle.load() и pickle.loads() – десериализация множества мелких объектов выполняется до 10% быстрее.
- [bpo-21271](https://python-all.ru/3/whatsnew/changelog.html): В вызов reset\_mock добавлены новые только-ключевые параметры.

### IDLE

- [bpo-5124](https://python-all.ru/3/whatsnew/changelog.html): Вставка при выделенном тексте теперь заменяет выделение на X11. Это соответствует тому, как вставка работает в Windows, Mac, большинстве современных приложений Linux и виджетах ttk. Оригинальный патч Серхия Сторчаки.
- [bpo-24750](https://python-all.ru/3/whatsnew/changelog.html): Все полосы прокрутки в IDLE заменены на версии ttk. Там, где необходимо, добавлены минимальные тесты для проверки изменений.
- [bpo-24759](https://python-all.ru/3/whatsnew/changelog.html): IDLE требует tk 8.5 и доступность виджетов ttk. Удалены ставшие ненужными проверки версий tk и код для старых версий. Добавлен тест для раскраски синтаксиса IDLE.
- [bpo-27239](https://python-all.ru/3/whatsnew/changelog.html): Функции idlelib.macosx.isXyzTk инициализируются по мере необходимости.
- [bpo-27262](https://python-all.ru/3/whatsnew/changelog.html): Код отвязки Aqua, включающий контекстные меню, перенесён в macosx.
- [bpo-24759](https://python-all.ru/3/whatsnew/changelog.html): В idlelib.idle\_test.\_\_init\_\_ теперь ясно указано, что каталог является частной реализацией test.test\_idle и инструментом для сопровождающих.
- [bpo-27196](https://python-all.ru/3/whatsnew/changelog.html): Устранены предупреждения ‘ThemeChanged’ при запуске тестов IDLE. Они оставались после подавления других предупреждений в #20567. Применено решение update\_idletasks от Серхия Сторчаки к четырём тестовым файлам. Этот дополнительный совет записан в idle\_test/README.txt.
- [bpo-20567](https://python-all.ru/3/whatsnew/changelog.html): Пересмотрен idle\_test/README.txt с рекомендациями по избежанию предупреждений tk в тестах. Применены советы к нескольким тестам IDLE.
- [bpo-24225](https://python-all.ru/3/whatsnew/changelog.html): Обновлён idlelib/README.txt с новыми именами файлов и обработчиками событий.
- [bpo-27156](https://python-all.ru/3/whatsnew/changelog.html): Удалён устаревший код, не используемый IDLE.
- [bpo-27117](https://python-all.ru/3/whatsnew/changelog.html): Цветовой htest и turtledemo теперь работают с тёмными темами. Код настройки цветов текстовых виджетов перенесён в новую функцию.
- [bpo-24225](https://python-all.ru/3/whatsnew/changelog.html): Переименовано множество файлов `idlelib/*.py` и `idle_test/test_*.py`. Файлы отредактированы для замены старых имён на новые в тех случаях, когда старое имя относилось к модулю, а не к содержащемуся в нём классу. Подробнее см. в описании задачи и разделе IDLE в «Что нового в Python 3.6».
- [bpo-26673](https://python-all.ru/3/whatsnew/changelog.html): Когда tk сообщает размер шрифта 0, он заменяется на размер 10. Такие шрифты в Linux не позволяли открыть диалог настройки.
- [bpo-21939](https://python-all.ru/3/whatsnew/changelog.html): Добавлен тест для перколятора IDLE. Оригинальный патч Саймадхава Хебликара.
- [bpo-21676](https://python-all.ru/3/whatsnew/changelog.html): Добавлен тест для диалога замены IDLE. Оригинальный патч Саймадхава Хебликара.
- [bpo-18410](https://python-all.ru/3/whatsnew/changelog.html): Добавлен тест для диалога поиска IDLE. Оригинальный патч Вестли Мартинеса.
- [bpo-21703](https://python-all.ru/3/whatsnew/changelog.html): Добавлен тест для делегата отмены. Патч в основном от Саймадхава Хебликара.
- [bpo-27044](https://python-all.ru/3/whatsnew/changelog.html): Добавлен ConfigDialog.remove\_var\_callbacks для устранения утечек памяти.
- [bpo-23977](https://python-all.ru/3/whatsnew/changelog.html): В test\_delegator добавлено больше утверждений assert.

### Documentation

- [bpo-16484](https://python-all.ru/3/whatsnew/changelog.html): URL по умолчанию PYTHONDOCS изменён на «https:», исправлены результирующие ссылки на нижний регистр. Патч Шона Родмана, тест Каушика Надикудити.
- [bpo-24136](https://python-all.ru/3/whatsnew/changelog.html): Документирован новый синтаксис распаковки [**PEP 448**](https://python-all.ru/3/whatsnew/changelog.html) версии 3.5.
- [bpo-22558](https://python-all.ru/3/whatsnew/changelog.html): Добавлены оставшиеся ссылки в документации на исходный код модулей на Python. Патч Йони Лави.

### Tests

- [bpo-25285](https://python-all.ru/3/whatsnew/changelog.html): regrtest теперь использует подпроцессы при использовании опции командной строки -j1: каждый тестовый файл выполняется в новом дочернем процессе. Раньше опция -j1 игнорировалась.
- [bpo-25285](https://python-all.ru/3/whatsnew/changelog.html): Скрипт Tools/buildbot/test.bat теперь по умолчанию использует -j1 для выполнения каждого тестового файла в новом дочернем процессе.

### Windows

- [bpo-27064](https://python-all.ru/3/whatsnew/changelog.html): Запускатель py.exe теперь по умолчанию использует Python 3. При интерактивном использовании запускатель Windows `py.exe` больше не отдаёт предпочтение установленной версии Python 2 перед Python 3 по умолчанию.
- [bpo-17500](https://python-all.ru/3/whatsnew/changelog.html): Удалены неиспользуемые и устаревшие значки. (См. также: [https://github.com/python/pythondotorg/issues/945](https://python-all.ru/3/whatsnew/changelog.html))

### Сборка

- [bpo-27229](https://python-all.ru/3/whatsnew/changelog.html): Исправлено правило кросс-компиляции pgen для сборок в дереве исходников. Патч от Xavier de Gaye.
- [bpo-26930](https://python-all.ru/3/whatsnew/changelog.html): Обновлён установщик для OS X 10.5+ (только 32-бит) для сборки и компоновки с OpenSSL 1.0.2h.

### C API

- [bpo-27186](https://python-all.ru/3/whatsnew/changelog.html): Добавлена функция PyOS\_FSPath() (часть [**PEP 519**](https://python-all.ru/3/whatsnew/changelog.html)).
- [bpo-26282](https://python-all.ru/3/whatsnew/changelog.html): PyArg\_ParseTupleAndKeywords() теперь поддерживает только позиционные параметры.

### Инструменты/Примеры

- [bpo-26282](https://python-all.ru/3/whatsnew/changelog.html): Argument Clinic теперь поддерживает только позиционные и именованные параметры в одной функции.

## Python 3.6.0 alpha 1

*Дата выпуска: 2016-05-16*

### Безопасность

- [bpo-26657](https://python-all.ru/3/whatsnew/changelog.html): Исправлена уязвимость обхода каталогов в http.server на Windows. Исправлен регресс, внесённый в версиях 3.3.4rc1 и 3.4.0rc1. Основано на патче от Philipp Hagemeister.
- [bpo-26313](https://python-all.ru/3/whatsnew/changelog.html): ssl.py \_load\_windows\_store\_certs завершается ошибкой, если хранилище сертификатов Windows пусто. Патч от Baji.
- [bpo-25939](https://python-all.ru/3/whatsnew/changelog.html): В Windows хранилище сертификатов в ssl.enum\_certificates открывается только для чтения.

### Ядро и встроенные модули

- [bpo-20041](https://python-all.ru/3/whatsnew/changelog.html): Исправлена TypeError, когда frame.f\_trace установлен в None. Патч от Xavier de Gaye.
- [bpo-26168](https://python-all.ru/3/whatsnew/changelog.html): Исправлены возможные утечки ссылок в Py\_BuildValue() при сбое с форматом «N».
- [bpo-26991](https://python-all.ru/3/whatsnew/changelog.html): Исправлена возможная утечка ссылок при создании функции с аннотациями.
- [bpo-27039](https://python-all.ru/3/whatsnew/changelog.html): Исправлен bytearray.remove() для значений больше 127. Основано на патче от Joe Jevnik.
- [bpo-23640](https://python-all.ru/3/whatsnew/changelog.html): int.from\_bytes() больше не обходит конструкторы подклассов.
- [bpo-27005](https://python-all.ru/3/whatsnew/changelog.html): Оптимизирован классовый метод float.fromhex() для точных чисел с плавающей запятой. Теперь он работает в 2 раза быстрее.
- [bpo-18531](https://python-all.ru/3/whatsnew/changelog.html): Единственный именованный аргумент подтипа dict передавался без изменений в функцию, определённую на C. Теперь он преобразуется в точный dict.
- [bpo-26811](https://python-all.ru/3/whatsnew/changelog.html): gc.get\_objects() больше не содержит повреждённый кортеж с нулевым указателем.
- [bpo-20120](https://python-all.ru/3/whatsnew/changelog.html): Для разбора .pypirc используется RawConfigParser, что убирает поддержку интерполяции, случайно добавленную при переходе на Python 3. Поведение больше не выполняет интерполяцию в файлах .pypirc, что соответствует поведению в Python 2.7 и Setuptools 19.0.
- [bpo-26249](https://python-all.ru/3/whatsnew/changelog.html): Функции управления памятью из домена [`PyMem_Malloc()`](https://python-all.ru/3/c-api/memory.html#c.PyMem_Malloc) ([`PYMEM_DOMAIN_MEM`](https://python-all.ru/3/c-api/memory.html#c.PYMEM_DOMAIN_MEM)) теперь используют распределитель [pymalloc](https://python-all.ru/3/c-api/memory.html#pymalloc), а не системный `malloc()`. Приложения, вызывающие `PyMem_Malloc()` без удержания GIL, теперь могут аварийно завершаться. Используйте переменную окружения `PYTHONMALLOC=debug` для проверки использования распределителей памяти в вашем приложении.
- [bpo-26802](https://python-all.ru/3/whatsnew/changelog.html): Оптимизированы вызовы функций, использующие только распаковку, например `func(*tuple)` (без других позиционных аргументов и без именованных): избегается копирование кортежа. Патч написан Joe Jevnik.
- [bpo-26659](https://python-all.ru/3/whatsnew/changelog.html): Встроенный тип slice теперь поддерживает сборку циклических ссылок.
- [bpo-26718](https://python-all.ru/3/whatsnew/changelog.html): super.\_\_init\_\_ больше не приводит к утечке памяти при многократном вызове. ПРИМЕЧАНИЕ: Прямой вызов super.\_\_init\_\_ не рекомендуется!
- [bpo-27138](https://python-all.ru/3/whatsnew/changelog.html): Исправлен комментарий в документации для FileFinder.find\_spec().
- [bpo-27147](https://python-all.ru/3/whatsnew/changelog.html): Добавлено упоминание [**PEP 420**](https://python-all.ru/3/whatsnew/changelog.html) в документацию importlib.
- [bpo-25339](https://python-all.ru/3/whatsnew/changelog.html): Переменная PYTHONIOENCODING теперь имеет приоритет над локалью при установке обработчика ошибок для stdin и stdout.
- [bpo-26494](https://python-all.ru/3/whatsnew/changelog.html): Исправлен сбой при итерации истощающих итераторов. Затрагиваемые классы: итераторы обобщённых последовательностей, итераторы str, bytes, bytearray, list, tuple, set, frozenset, dict, OrderedDict, соответствующие представления и итератор os.scandir().
- [bpo-26574](https://python-all.ru/3/whatsnew/changelog.html): Оптимизированы `bytes.replace(b'', b'.')` и `bytearray.replace(b'', b'.')`. Патч написан Джошем Снайдером.
- [bpo-26581](https://python-all.ru/3/whatsnew/changelog.html): Если кодировка указана несколько раз в одной строке файла исходного кода Python, учитывается только первая.
- [bpo-19711](https://python-all.ru/3/whatsnew/changelog.html): Добавлены тесты для перезагрузки пакетов пространства имён.
- [bpo-21099](https://python-all.ru/3/whatsnew/changelog.html): Переведены подходящие тесты importlib на использование API [**PEP 451**](https://python-all.ru/3/whatsnew/changelog.html).
- [bpo-26563](https://python-all.ru/3/whatsnew/changelog.html): Отладочные перехватчики распределителей памяти Python теперь вызывают фатальную ошибку, если функции семейства [`PyMem_Malloc()`](https://python-all.ru/3/c-api/memory.html#c.PyMem_Malloc) вызываются без удержания GIL.
- [bpo-26564](https://python-all.ru/3/whatsnew/changelog.html): При ошибке отладочные перехватчики распределителей памяти Python теперь используют модуль [`tracemalloc`](https://python-all.ru/3/library/tracemalloc.html#module-tracemalloc) для получения трассировки того места, где был выделен блок памяти.
- [bpo-26558](https://python-all.ru/3/whatsnew/changelog.html): Отладочные перехватчики распределителя памяти Python [`PyObject_Malloc()`](https://python-all.ru/3/c-api/memory.html#c.PyObject_Malloc) теперь обнаруживают, когда функции вызываются без удержания GIL.
- [bpo-26516](https://python-all.ru/3/whatsnew/changelog.html): Добавлена переменная окружения [`PYTHONMALLOC`](https://python-all.ru/3/using/cmdline.html#envvar-PYTHONMALLOC) для установки распределителей памяти Python и/или установки отладочных перехватчиков.
- [bpo-26516](https://python-all.ru/3/whatsnew/changelog.html): Функция [`PyMem_SetupDebugHooks()`](https://python-all.ru/3/c-api/memory.html#c.PyMem_SetupDebugHooks) теперь также может использоваться в Python, скомпилированном в режиме выпуска.
- [bpo-26516](https://python-all.ru/3/whatsnew/changelog.html): Переменная окружения [`PYTHONMALLOCSTATS`](https://python-all.ru/3/using/cmdline.html#envvar-PYTHONMALLOCSTATS) теперь также может использоваться в Python, скомпилированном в режиме выпуска. Теперь она не действует, если установлена в пустую строку.
- [bpo-26516](https://python-all.ru/3/whatsnew/changelog.html): В отладочном режиме отладочные перехватчики теперь также устанавливаются для распределителей памяти Python, когда Python сконфигурирован без pymalloc.
- [bpo-26464](https://python-all.ru/3/whatsnew/changelog.html): Исправлена str.translate() для случая, когда строка ASCII, и первая замена удаляет символ, но следующая замена использует не-ASCII символ или строку длиннее 1 символа. Регрессия, внесённая в Python 3.5.0.
- [bpo-22836](https://python-all.ru/3/whatsnew/changelog.html): Обеспечена разумность отчётов об исключениях от PyErr\_Display() и PyErr\_WriteUnraisable() даже в случае, когда их форматирование вызывает вторичные ошибки. Это влияет на отчёты, создаваемые sys.\_\_excepthook\_\_() и когда \_\_del\_\_() вызывает исключение.
- [bpo-26302](https://python-all.ru/3/whatsnew/changelog.html): Исправлено поведение для отклонения запятой как допустимого символа в именах cookie.
- [bpo-26136](https://python-all.ru/3/whatsnew/changelog.html): Повышено предупреждение при возбуждении StopIteration в генераторе с PendingDeprecationWarning до DeprecationWarning. Патч Аниша Шаха.
- [bpo-26204](https://python-all.ru/3/whatsnew/changelog.html): Компилятор теперь игнорирует все константные выражения: bytes, str, int, float, complex, константы-имена (None, False, True), Ellipsis и ast.Constant; не только str и int. Например, `1.0` теперь игнорируется в `def f(): 1.0`.
- [bpo-4806](https://python-all.ru/3/whatsnew/changelog.html): Предотвращено маскирование исходного исключения TypeError при использовании распаковки со звёздочкой (`*`) в вызовах функций. Основано на патче Хагена Фюрстенау и Даниэля Урбана.
- [bpo-26146](https://python-all.ru/3/whatsnew/changelog.html): Добавлен новый тип узла AST: `ast.Constant`. Он может использоваться внешними оптимизаторами AST, но компилятор не генерирует напрямую такой узел.
- [bpo-23601](https://python-all.ru/3/whatsnew/changelog.html): Ускорено выделение объектов ключей словаря за счёт использования распределителя малых объектов Python. (Вклад Джулиана Тейлора.)
- [bpo-18018](https://python-all.ru/3/whatsnew/changelog.html): Импорт вызывает ImportError вместо SystemError, если предпринимается попытка относительного импорта без известного родительского пакета.
- [bpo-25843](https://python-all.ru/3/whatsnew/changelog.html): При компиляции кода не объединять константы, если они равны, но имеют разные типы. Например, `f1, f2 = lambda: 1, lambda: 1.0` теперь правильно компилируется в две разные функции: `f1()` возвращает `1` (`int`) и `f2()` возвращает `1.0` (`float`), даже если `1` и `1.0` равны.
- [bpo-26107](https://python-all.ru/3/whatsnew/changelog.html): Формат атрибута `co_lnotab` объектов кода изменён для поддержки отрицательного смещения номера строки.
- [bpo-26154](https://python-all.ru/3/whatsnew/changelog.html): Добавлена новая приватная функция \_PyThreadState\_UncheckedGet() для получения текущего состояния потока Python, но без вызова фатальной ошибки, если она равна NULL. Эта новая функция должна использоваться вместо прямого доступа к переменной \_PyThreadState\_Current. Эта переменная больше не доступна с Python 3.5.1 для сокрытия точной реализации атомарных C-типов, чтобы избежать проблем с компилятором.
- [bpo-25791](https://python-all.ru/3/whatsnew/changelog.html): Если \_\_package\_\_ != \_\_spec\_\_.parent или если ни \_\_package\_\_, ни \_\_spec\_\_ не определены, то вызывается ImportWarning.
- [bpo-22995](https://python-all.ru/3/whatsnew/changelog.html): \[ОБНОВЛЕНИЕ\] Закомментирован один из тестов на возможность сериализации с помощью pickle в \_PyObject\_GetState() из-за регрессий, наблюдаемых в проектах на Cython.
- [bpo-25961](https://python-all.ru/3/whatsnew/changelog.html): Запрещены нулевые символы в имени типа.
- [bpo-25973](https://python-all.ru/3/whatsnew/changelog.html): Исправлено падение (segfault) при связывании недопустимым оператором nonlocal имени, начинающегося с двух подчёркиваний.
- [bpo-22995](https://python-all.ru/3/whatsnew/changelog.html): Экземпляры типов-расширений с состоянием, которые не являются подклассами list или dict и не реализуют никаких методов, связанных с pickle (\_\_reduce\_\_, \_\_reduce\_ex\_\_, \_\_getnewargs\_\_, \_\_getnewargs\_ex\_\_ или \_\_getstate\_\_), больше не могут быть упакованы с помощью pickle. Включая memoryview.
- [bpo-20440](https://python-all.ru/3/whatsnew/changelog.html): Массовая замена небезопасного кода установки атрибутов на специальный макрос Py\_SETREF.
- [bpo-25766](https://python-all.ru/3/whatsnew/changelog.html): Специальный метод \_\_bytes\_\_() теперь работает в подклассах str.
- [bpo-25421](https://python-all.ru/3/whatsnew/changelog.html): Методы \_\_sizeof\_\_ встроенных типов теперь используют динамический базовый размер. Это позволяет sys.getsize() корректно работать с их подклассами, у которых определён \_\_slots\_\_.
- [bpo-25709](https://python-all.ru/3/whatsnew/changelog.html): Исправлена проблема с конкатенацией строк на месте и кешем UTF-8.
- [bpo-5319](https://python-all.ru/3/whatsnew/changelog.html): Новый API Py\_FinalizeEx(), позволяющий Python устанавливать код возврата 120 при ошибке сброса буферизованных потоков.
- [bpo-25485](https://python-all.ru/3/whatsnew/changelog.html): telnetlib.Telnet теперь является менеджером контекста.
- [bpo-24097](https://python-all.ru/3/whatsnew/changelog.html): Исправлен сбой в object.\_\_reduce\_\_(), если имя слота освобождается внутри \_\_getattr\_\_.
- [bpo-24731](https://python-all.ru/3/whatsnew/changelog.html): Исправлен сбой при преобразовании объектов со специальными методами \_\_bytes\_\_, \_\_trunc\_\_ и \_\_float\_\_, возвращающими экземпляры подклассов bytes, int и float, в подклассы bytes, int и float соответственно.
- [bpo-25630](https://python-all.ru/3/whatsnew/changelog.html): Исправлена возможная ошибка сегментации при разборе аргументов в функциях, которые принимают пути файловой системы.
- [bpo-23564](https://python-all.ru/3/whatsnew/changelog.html): Исправлена частично нарушенная проверка корректности во внутренностях \_posixsubprocess относительно того, как fds\_to\_pass передавались дочернему процессу. Ошибка не имела фактического влияния, так как subprocess.py уже её избегал.
- [bpo-25388](https://python-all.ru/3/whatsnew/changelog.html): Исправлен сбой токенизатора при обработке не декодируемого исходного кода с нулевым байтом.
- [bpo-25462](https://python-all.ru/3/whatsnew/changelog.html): Хеш ключа теперь вычисляется только один раз в большинстве операций в C-реализации OrderedDict.
- [bpo-22995](https://python-all.ru/3/whatsnew/changelog.html): Реализация по умолчанию \_\_reduce\_\_ и \_\_reduce\_ex\_\_ теперь отклоняет встроенные типы, у которых не определён \_\_new\_\_.
- [bpo-24802](https://python-all.ru/3/whatsnew/changelog.html): Предотвращено чтение за пределами буфера, когда int(), float(), compile(), exec() и eval() передаются объекты, подобные байтам. Эти объекты не обязательно завершаются нулевым байтом, но функции предполагали, что это так.
- [bpo-25555](https://python-all.ru/3/whatsnew/changelog.html): Исправлен парсер и AST: заполнение lineno и col\_offset узла “arg” при компиляции AST из объектов Python.
- [bpo-24726](https://python-all.ru/3/whatsnew/changelog.html): Исправлен сбой и утечка NULL в repr() для OrderedDict, который был изменён прямыми вызовами методов dict.
- [bpo-25449](https://python-all.ru/3/whatsnew/changelog.html): Итерация по OrderedDict с ключами, имеющими нестабильный хеш, теперь вызывает KeyError как в C-реализации, так и в реализации на Python.
- [bpo-25395](https://python-all.ru/3/whatsnew/changelog.html): Исправлен сбой при сборке мусора для сильно вложенных структур OrderedDict.
- [bpo-25401](https://python-all.ru/3/whatsnew/changelog.html): Оптимизация bytes.fromhex() и bytearray.fromhex(): теперь они работают от 2 до 3.5 раз быстрее.
- [bpo-25399](https://python-all.ru/3/whatsnew/changelog.html): Оптимизация bytearray % args с использованием нового приватного API \_PyBytesWriter. Форматирование теперь выполняется в 2.5–5 раз быстрее.
- [bpo-25274](https://python-all.ru/3/whatsnew/changelog.html): sys.setrecursionlimit() теперь вызывает RecursionError, если новый предел рекурсии слишком низок с учётом текущей глубины рекурсии. Также изменена формула «нижнего порога» для обеспечения монотонности. Этот порог используется для определения момента сброса флага переполнения состояния потока.
- [bpo-24402](https://python-all.ru/3/whatsnew/changelog.html): Исправлено input() для вывода приглашения в перенаправленный stdout, когда sys.stdout.fileno() завершается ошибкой.
- [bpo-25349](https://python-all.ru/3/whatsnew/changelog.html): Оптимизация bytes % args с использованием нового приватного API \_PyBytesWriter. Форматирование теперь выполняется до 2 раз быстрее.
- [bpo-24806](https://python-all.ru/3/whatsnew/changelog.html): Предотвращение создания подклассов для встроенных типов, которые не разрешено наследовать, через множественное наследование.
- [bpo-25301](https://python-all.ru/3/whatsnew/changelog.html): Декодер UTF-8 теперь работает до 15 раз быстрее для обработчиков ошибок: `ignore`, `replace` и `surrogateescape`.
- [bpo-24848](https://python-all.ru/3/whatsnew/changelog.html): Исправлен ряд ошибок в декодировании UTF-7 некорректных данных.
- [bpo-25267](https://python-all.ru/3/whatsnew/changelog.html): Кодировщик UTF-8 теперь работает до 75 раз быстрее для обработчиков ошибок: `ignore`, `replace`, `surrogateescape`, `surrogatepass`. Патч написан совместно с Serhiy Storchaka.
- [bpo-25280](https://python-all.ru/3/whatsnew/changelog.html): Сообщения трассировки импорта, выводимые в подробном режиме (-v), больше не форматируются дважды.
- [bpo-25227](https://python-all.ru/3/whatsnew/changelog.html): Оптимизация кодировщиков ASCII и latin1 с обработчиком ошибок `surrogateescape`: теперь они работают до 3 раз быстрее. Первоначальный патч написан Serhiy Storchaka.
- [bpo-25003](https://python-all.ru/3/whatsnew/changelog.html): На Solaris 11.3 и новее os.urandom() теперь использует функцию getrandom() вместо getentropy(). Функция getentropy() является блокирующей для генерации очень качественной энтропии, но os.urandom() не требует такой высокой энтропии.
- [bpo-9232](https://python-all.ru/3/whatsnew/changelog.html): Изменена грамматика Python, чтобы разрешить завершающие запятые в списке аргументов объявления функции. Например, “def f(\*, a = 3,): pass” теперь допустимо. Патч от Mark Dickinson.
- [bpo-24965](https://python-all.ru/3/whatsnew/changelog.html): Реализован [**PEP 498**](https://python-all.ru/3/whatsnew/changelog.html) «Литеральная интерполяция строк». Это позволяет встраивать выражения внутри f-строк, которые преобразуются в обычные строки во время выполнения. Если x=3, то f’value={x}’ == ‘value=3’. Патч от Eric V. Smith.
- [bpo-26478](https://python-all.ru/3/whatsnew/changelog.html): Исправлены семантические ошибки при использовании бинарных операторов с представлениями словаря и кортежами.
- [bpo-26171](https://python-all.ru/3/whatsnew/changelog.html): Исправлена возможная проблема переполнения целого числа и повреждения кучи в zipimporter.get\_data().
- [bpo-25660](https://python-all.ru/3/whatsnew/changelog.html): Исправлено поведение клавиши TAB в REPL при использовании readline.
- [bpo-26288](https://python-all.ru/3/whatsnew/changelog.html): Оптимизирована функция PyLong\_AsDouble.
- [bpo-26289](https://python-all.ru/3/whatsnew/changelog.html): Оптимизировано деление с округлением вниз и деление по модулю для однозначных длинных целых. Микротесты показывают ускорение в 2–2,5 раза. Встроенная функция divmod теперь также работает примерно на 10% быстрее. (См. также: [bpo-26315](https://python-all.ru/3/whatsnew/changelog.html))
- [bpo-25887](https://python-all.ru/3/whatsnew/changelog.html): Возбуждается исключение RuntimeError, когда объект корутины ожидается более одного раза.

### Библиотеки

- [bpo-27057](https://python-all.ru/3/whatsnew/changelog.html): Исправлена os.set\_inheritable() на Android: ioctl() блокируется SELinux и завершается с EACCESS. Функция теперь использует fcntl() как запасной вариант. Патч написан Michał Bednarski.
- [bpo-27014](https://python-all.ru/3/whatsnew/changelog.html): Исправлена бесконечная рекурсия при использовании typing.py. Спасибо Kalle Tuure!
- [bpo-27031](https://python-all.ru/3/whatsnew/changelog.html): Удалены фиктивные методы в классах виджетов Tkinter: tk\_menuBar() и tk\_bindForTraversal().
- [bpo-14132](https://python-all.ru/3/whatsnew/changelog.html): Исправлена обработка перенаправлений в urllib.request, когда целевой адрес содержит только строку запроса. Исходное исправление от Ján Janech.
- [bpo-17214](https://python-all.ru/3/whatsnew/changelog.html): Модуль urllib.request теперь процентно кодирует не-ASCII байты, обнаруженные в URL перенаправления. Некоторые серверы отправляют поля заголовка Location с не-ASCII байтами, но http.client требует, чтобы целевой запрос был кодируем в ASCII, иначе возникает UnicodeEncodeError. На основе патча от Christian Heimes.
- [bpo-27033](https://python-all.ru/3/whatsnew/changelog.html): Значение по умолчанию параметра decode\_data для конструкторов smtpd.SMTPChannel и smtpd.SMTPServer изменено на False.
- [bpo-27034](https://python-all.ru/3/whatsnew/changelog.html): Удалён устаревший класс asynchat.fifo.
- [bpo-26870](https://python-all.ru/3/whatsnew/changelog.html): Добавлена функция readline.set\_auto\_history(), которая позволяет запретить автоматическое добавление записей в список истории. На основе патча от Tyler Crompton.
- [bpo-26039](https://python-all.ru/3/whatsnew/changelog.html): zipfile.ZipFile.open() теперь можно использовать для записи данных в ZIP-файл, а не только для извлечения. Патч от Thomas Kluyver.
- [bpo-26892](https://python-all.ru/3/whatsnew/changelog.html): Учитывается флаг debuglevel в urllib.request.HTTPHandler. Патч предоставлен Chi Hsuan Yen.
- [bpo-22274](https://python-all.ru/3/whatsnew/changelog.html): В модуле subprocess разрешено перенаправление stderr в stdout, даже если stdout не перенаправляется. Патч от Akira Li.
- [bpo-26807](https://python-all.ru/3/whatsnew/changelog.html): mock\_open 'files' больше не вызывает ошибку при readline в конце файла. Патч от Yolanda Robla.
- [bpo-25745](https://python-all.ru/3/whatsnew/changelog.html): Исправлена утечка userptr в деструкторе панелей curses.
- [bpo-26977](https://python-all.ru/3/whatsnew/changelog.html): Удалён ненужный и игнорируемый вызов вспомогательной функции суммы квадратов в statistics.pvariance.
- [bpo-26002](https://python-all.ru/3/whatsnew/changelog.html): В statistics.median используется bisect вместо линейного поиска. Патч от Upendra Kuma.
- [bpo-25974](https://python-all.ru/3/whatsnew/changelog.html): Используется новый метод Decimal.as\_integer\_ratio() в модуле statistics. Патч от Stefan Krah.
- [bpo-26996](https://python-all.ru/3/whatsnew/changelog.html): Добавлен модуль secrets, как описано в [**PEP 506**](https://python-all.ru/3/whatsnew/changelog.html).
- [bpo-26881](https://python-all.ru/3/whatsnew/changelog.html): Модуль modulefinder теперь поддерживает расширенные аргументы кода операции.
- [bpo-23815](https://python-all.ru/3/whatsnew/changelog.html): Исправлены сбои, связанные с напрямую созданными экземплярами типов в модулях \_tkinter и curses.panel.
- [bpo-17765](https://python-all.ru/3/whatsnew/changelog.html): weakref.ref() больше не игнорирует молча именованные аргументы. Патч от Georg Brandl.
- [bpo-26873](https://python-all.ru/3/whatsnew/changelog.html): xmlrpc теперь возбуждает ResponseError при неподдерживаемых типах тегов вместо молчаливого возврата неверного результата.
- [bpo-26915](https://python-all.ru/3/whatsnew/changelog.html): Методы \_\_contains\_\_ в абстрактных базовых классах коллекций теперь сначала проверяют идентичность, а затем равенство. Это лучше соответствует поведению конкретных классов, позволяет корректно обрабатывать NaN и упрощает рассуждение об инвариантах контейнеров.
- [bpo-26711](https://python-all.ru/3/whatsnew/changelog.html): Исправлено сравнение plistlib.Data с другими типами.
- [bpo-24114](https://python-all.ru/3/whatsnew/changelog.html): Исправлена неинициализированная переменная в `ctypes.util`. Ошибка проявляется только на SunOS, когда реализация ctypes ищет программу `crle`. Патч от Xiang Zhang. Протестировано на SunOS Kees Bos.
- [bpo-26864](https://python-all.ru/3/whatsnew/changelog.html): В urllib.request проверка обхода прокси для no\_proxy изменена: теперь регистронезависимая и не совпадает с несвязанными именами хостов, которые случайно содержат обходимое имя хоста в качестве суффикса. Патч от Xiang Zhang.
- [bpo-24902](https://python-all.ru/3/whatsnew/changelog.html): Вывод URL сервера при запуске http.server. Исходный патч от Felix Kaiser.
- [bpo-25788](https://python-all.ru/3/whatsnew/changelog.html): fileinput.hook\_encoded() теперь поддерживает аргумент «errors» для передачи в open. Оригинальный патч от Джозефа Хэкмана.
- [bpo-26634](https://python-all.ru/3/whatsnew/changelog.html): recursive\_repr() теперь устанавливает \_\_qualname\_\_ для wrapper. Патч от Сяна Чжана.
- [bpo-26804](https://python-all.ru/3/whatsnew/changelog.html): urllib.request теперь предпочитает переменные окружения прокси в нижнем регистре переменным в ВЕРХНЕМ или Смешанном регистре. Патч предоставлен Хансом-Петером Янсеном.
- [bpo-26837](https://python-all.ru/3/whatsnew/changelog.html): assertSequenceEqual() теперь корректно выводит нестроковые различающиеся элементы (например, байты в режиме -b). Это влияет на assertListEqual() и assertTupleEqual().
- [bpo-26041](https://python-all.ru/3/whatsnew/changelog.html): Удалено «will be removed in Python 3.7» из сообщений об устаревании platform.dist() и platform.linux\_distribution(). Патч от Кумарипабы Миюрусары Атукоралы.
- [bpo-26822](https://python-all.ru/3/whatsnew/changelog.html): объекты itemgetter, attrgetter и methodcaller больше не игнорируют молча именованные аргументы.
- [bpo-26733](https://python-all.ru/3/whatsnew/changelog.html): Дизассемблирование класса теперь дизассемблирует методы класса и статические методы. Патч от Сяна Чжана.
- [bpo-26801](https://python-all.ru/3/whatsnew/changelog.html): Исправлена обработка ошибок в [`shutil.get_terminal_size()`](https://python-all.ru/3/library/shutil.html#shutil.get_terminal_size), теперь перехватывается [`AttributeError`](https://python-all.ru/3/library/exceptions.html#AttributeError) вместо [`NameError`](https://python-all.ru/3/library/exceptions.html#NameError). Патч написан Эмануэлем Барри.
- [bpo-24838](https://python-all.ru/3/whatsnew/changelog.html): форматы ustar и gnu модуля tarfile теперь корректно рассчитывают ограничения полей имени и ссылки для многобайтовых кодировок символов, таких как UTF-8.
- [bpo-26717](https://python-all.ru/3/whatsnew/changelog.html): Прекращено кодирование путей WSGI, приведённых к Latin-1, с помощью UTF-8. Патч от Энтони Соттила.
- [bpo-26782](https://python-all.ru/3/whatsnew/changelog.html): Добавлен STARTUPINFO в subprocess.\_\_all\_\_ в Windows.
- [bpo-26404](https://python-all.ru/3/whatsnew/changelog.html): Добавлен контекстный менеджер в socketserver. Патч от Авива Паливоды.
- [bpo-26735](https://python-all.ru/3/whatsnew/changelog.html): Исправлен [`os.urandom()`](https://python-all.ru/3/library/os.html#os.urandom) на Solaris 11.3 и новее при чтении более 1024 байт: теперь вызывается `getrandom()` несколько раз с ограничением 1024 байта за вызов.
- [bpo-26585](https://python-all.ru/3/whatsnew/changelog.html): Удалён http.server.\_quote\_html() и используется html.escape(quote=False). Патч от Сяна Чжана.
- [bpo-26685](https://python-all.ru/3/whatsnew/changelog.html): Возбуждается OSError, если закрытие сокета завершается ошибкой.
- [bpo-16329](https://python-all.ru/3/whatsnew/changelog.html): Добавлен .webm в mimetypes.types\_map. Патч от Джампаоло Родола.
- [bpo-13952](https://python-all.ru/3/whatsnew/changelog.html): Добавлен .csv в mimetypes.types\_map. Патч от Джеффа Уилсона.
- [bpo-26587](https://python-all.ru/3/whatsnew/changelog.html): модуль site теперь позволяет файлам .pth указывать файлы для добавления в sys.path (например, zip-файлы).
- [bpo-25609](https://python-all.ru/3/whatsnew/changelog.html): Представлены contextlib.AbstractContextManager и typing.ContextManager.
- [bpo-26709](https://python-all.ru/3/whatsnew/changelog.html): Исправлена проблема Y2038 при загрузке двоичных plist-файлов.
- [bpo-23735](https://python-all.ru/3/whatsnew/changelog.html): Обработка изменения размера терминала с Readline 6.3+ путём установки собственного обработчика SIGWINCH. Патч от Эрика Прайса.
- [bpo-25951](https://python-all.ru/3/whatsnew/changelog.html): Изменено SSLSocket.sendall() для возврата None, как явно документировано для обычных сокетов. Патч от Авива Паливоды.
- [bpo-26586](https://python-all.ru/3/whatsnew/changelog.html): В http.server теперь выдаётся ответ «413 Request Header fields too large», если слишком много полей заголовка для разбора, вместо разрыва соединения и возбуждения необработанного исключения. Патч от Сяна Чжана.
- [bpo-26676](https://python-all.ru/3/whatsnew/changelog.html): Добавлен отсутствующий XMLPullParser в ElementTree.\_\_all\_\_.
- [bpo-22854](https://python-all.ru/3/whatsnew/changelog.html): Изменено BufferedReader.writable() и BufferedWriter.readable() для постоянного возврата False.
- [bpo-26492](https://python-all.ru/3/whatsnew/changelog.html): Исчерпанный итератор array.array теперь соответствует поведению итераторов других изменяемых последовательностей: он остаётся исчерпанным, даже если итерируемый массив расширяется.
- [bpo-26641](https://python-all.ru/3/whatsnew/changelog.html): doctest.DocFileTest и doctest.testfile() теперь поддерживают пакеты (модуль, разделённый на несколько каталогов) для параметра package.
- [bpo-25195](https://python-all.ru/3/whatsnew/changelog.html): Исправлена регрессия в mock.MagicMock. \_Call является подклассом tuple (изменение 3603bae63c13 работает только для классов), поэтому необходимо реализовать \_\_ne\_\_ самостоятельно. Патч от Эндрю Пламмера.
- [bpo-26644](https://python-all.ru/3/whatsnew/changelog.html): Возбуждается ValueError вместо SystemError, когда отрицательная длина передаётся в SSLSocket.recv() или read().
- [bpo-23804](https://python-all.ru/3/whatsnew/changelog.html): Исправлены методы SSL recv(0) и read(0) для возврата нуля байт вместо до 1024.
- [bpo-26616](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка в методе datetime.astimezone().
- [bpo-26637](https://python-all.ru/3/whatsnew/changelog.html): Модуль [`importlib`](https://python-all.ru/3/library/importlib.html#module-importlib) теперь выдаёт [`ImportError`](https://python-all.ru/3/library/exceptions.html#ImportError) вместо [`TypeError`](https://python-all.ru/3/library/exceptions.html#TypeError), если [`__import__()`](https://python-all.ru/3/library/functions.html#import__) вызывается во время процесса завершения Python, но [`sys.path`](https://python-all.ru/3/library/sys.html#sys.path) уже очищен (установлен в `None`).
- [bpo-21925](https://python-all.ru/3/whatsnew/changelog.html): [`warnings.formatwarning()`](https://python-all.ru/3/library/warnings.html#warnings.formatwarning) теперь перехватывает исключения при вызове [`linecache.getline()`](https://python-all.ru/3/library/linecache.html#linecache.getline) и [`tracemalloc.get_object_traceback()`](https://python-all.ru/3/library/tracemalloc.html#tracemalloc.get_object_traceback), чтобы можно было залогировать [`ResourceWarning`](https://python-all.ru/3/library/exceptions.html#ResourceWarning), возникающие поздно во время завершения работы Python.
- [bpo-23848](https://python-all.ru/3/whatsnew/changelog.html): В Windows faulthandler.enable() теперь также устанавливает обработчик исключений для дампа стека вызовов всех потоков Python при любом исключении Windows, а не только при сигналах UNIX (SIGSEGV, SIGFPE, SIGABRT).
- [bpo-26530](https://python-all.ru/3/whatsnew/changelog.html): Добавлены C-функции `_PyTraceMalloc_Track()` и `_PyTraceMalloc_Untrack()` для отслеживания блоков памяти с помощью модуля [`tracemalloc`](https://python-all.ru/3/library/tracemalloc.html#module-tracemalloc). Добавлен `_PyTraceMalloc_GetTraceback()` для получения стека вызовов объекта.
- [bpo-26588](https://python-all.ru/3/whatsnew/changelog.html): \_tracemalloc теперь поддерживает трассировку выделений памяти в нескольких адресных пространствах (доменах).
- [bpo-24266](https://python-all.ru/3/whatsnew/changelog.html): Ctrl+C во время поиска по истории Readline теперь отменяет режим поиска при компиляции с Readline 7.
- [bpo-26590](https://python-all.ru/3/whatsnew/changelog.html): Реализован безопасный финализатор для типа \_socket.socket. Теперь он освобождает GIL для закрытия сокета.
- [bpo-18787](https://python-all.ru/3/whatsnew/changelog.html): spwd.getspnam() теперь вызывает PermissionError, если у пользователя нет прав.
- [bpo-26560](https://python-all.ru/3/whatsnew/changelog.html): Устранён потенциальный ValueError в BaseHandler.start\_response. Первоначальный патч от Peter Inglesby.
- [bpo-26567](https://python-all.ru/3/whatsnew/changelog.html): Добавлена новая функция [`PyErr_ResourceWarning()`](https://python-all.ru/3/c-api/exceptions.html#c.PyErr_ResourceWarning) для передачи уничтоженного объекта. Добавлен атрибут *source* в `warnings.WarningMessage`. Добавлена warnings.\_showwarnmsg(), которая использует tracemalloc для получения стека вызовов, где был выделен исходный объект.
- [bpo-26569](https://python-all.ru/3/whatsnew/changelog.html): Исправлены [`pyclbr.readmodule()`](https://python-all.ru/3/library/pyclbr.html#pyclbr.readmodule) и [`pyclbr.readmodule_ex()`](https://python-all.ru/3/library/pyclbr.html#pyclbr.readmodule_ex) для поддержки импорта пакетов.
- [bpo-26499](https://python-all.ru/3/whatsnew/changelog.html): Учитывать оставшийся Content-Length в HTTPResponse.readline() и read1(). На основе патча от Silent Ghost. Также документировано, что HTTPResponse теперь поддерживает эти методы.
- [bpo-25320](https://python-all.ru/3/whatsnew/changelog.html): Обрабатывать сокеты в каталогах, которые сканирует unittest discovery. Патч от Victor van den Elzen.
- [bpo-16181](https://python-all.ru/3/whatsnew/changelog.html): cookiejar.http2time() теперь возвращает None, если год больше datetime.MAXYEAR.
- [bpo-26513](https://python-all.ru/3/whatsnew/changelog.html): Исправляет определение модулем platform Windows Server
- [bpo-23718](https://python-all.ru/3/whatsnew/changelog.html): Исправлен разбор времени в неделе 0 до 1 января. Оригинальный патч от Tamás Bence Gedai.
- [bpo-26323](https://python-all.ru/3/whatsnew/changelog.html): Добавлены методы Mock.assert\_called() и Mock.assert\_called\_once() в unittest.mock. Патч написан Amit Saha.
- [bpo-20589](https://python-all.ru/3/whatsnew/changelog.html): Вызов Path.owner() и Path.group() в Windows теперь вызывает NotImplementedError вместо ImportError.
- [bpo-26177](https://python-all.ru/3/whatsnew/changelog.html): Исправлен метод keys() для виджетов Canvas и Scrollbar.
- [bpo-15068](https://python-all.ru/3/whatsnew/changelog.html): Устранена избыточная буферизация в fileinput. Параметр bufsize теперь устарел и игнорируется.
- [bpo-19475](https://python-all.ru/3/whatsnew/changelog.html): Добавлен необязательный аргумент timespec в метод datetime.isoformat() для выбора точности временной компоненты.
- [bpo-2202](https://python-all.ru/3/whatsnew/changelog.html): Исправлен UnboundLocalError в AbstractDigestAuthHandler.get\_algorithm\_impls. Первоначальный патч от Mathieu Dupuy.
- [bpo-26167](https://python-all.ru/3/whatsnew/changelog.html): Минимизированы накладные расходы в copy.copy() и copy.deepcopy(). Оптимизировано копирование и глубокое копирование bytearray, NotImplemented, срезов, коротких списков, кортежей, словарей, множеств.
- [bpo-25718](https://python-all.ru/3/whatsnew/changelog.html): Исправлены сериализация и копирование итератора accumulate() с total=None.
- [bpo-26475](https://python-all.ru/3/whatsnew/changelog.html): Исправлен отладочный вывод для регулярных выражений с флагом (?x).
- [bpo-26482](https://python-all.ru/3/whatsnew/changelog.html): Разрешена сериализация рекурсивных деков.
- [bpo-26335](https://python-all.ru/3/whatsnew/changelog.html): Сделать mmap.write() возвращающим количество записанных байт, как другие методы write. Патч от Jakub Stasiak.
- [bpo-26457](https://python-all.ru/3/whatsnew/changelog.html): Исправлены методы subnets() в классах IP-сетей для случая, когда результирующая длина префикса равна максимальной длине префикса. На основе патча от Xiang Zhang.
- [bpo-26385](https://python-all.ru/3/whatsnew/changelog.html): Удалять файл, если внутренний вызов open() в NamedTemporaryFile() завершается неудачей. Патч от Silent Ghost.
- [bpo-26402](https://python-all.ru/3/whatsnew/changelog.html): Исправлен XML-RPC клиент для повторных попыток, когда сервер закрывает постоянное соединение. Это было регрессией, связанной с новым исключением http.client.RemoteDisconnected в 3.5.0a4.
- [bpo-25913](https://python-all.ru/3/whatsnew/changelog.html): Начальный `<~` теперь необязателен в base64.a85decode() с adobe=True. Патч от Swati Jaiswal.
- [bpo-26186](https://python-all.ru/3/whatsnew/changelog.html): Удалена некорректная проверка типа в importlib.util.LazyLoader.
- [bpo-26367](https://python-all.ru/3/whatsnew/changelog.html): importlib.\_\_import\_\_() вызывает ImportError, как builtins.\_\_import\_\_(), когда указан `level`, но не указан соответствующий пакет.
- [bpo-26309](https://python-all.ru/3/whatsnew/changelog.html): В модуле «socketserver» запрос завершается (закрывается подключённый сокет), если verify\_request() возвращает false. Исправление от Aviv Palivoda.
- [bpo-23430](https://python-all.ru/3/whatsnew/changelog.html): Изменение модуля socketserver – теперь перехватываются только исключения, наследуемые от Exception (а не BaseException). SystemExit и KeyboardInterrupt больше не вызывают метод handle\_error() и теперь останавливают однопоточный сервер.
- [bpo-25995](https://python-all.ru/3/whatsnew/changelog.html): os.walk() больше не использует файловые дескрипторы, пропорциональные глубине дерева.
- [bpo-25994](https://python-all.ru/3/whatsnew/changelog.html): Добавлены метод close() и поддержка протокола менеджера контекста для итератора os.scandir().
- [bpo-23992](https://python-all.ru/3/whatsnew/changelog.html): multiprocessing: MapResult больше не завершается немедленно при исключении.
- [bpo-26243](https://python-all.ru/3/whatsnew/changelog.html): Добавлена поддержка именованных аргументов для zlib.compress(). Исправление от Aviv Palivoda.
- [bpo-26117](https://python-all.ru/3/whatsnew/changelog.html): Итератор os.scandir() теперь закрывает файловый дескриптор не только при завершении итерации, но и при возникновении ошибки.
- [bpo-25949](https://python-all.ru/3/whatsnew/changelog.html): \_\_dict\_\_ для экземпляра OrderedDict теперь создаётся только при необходимости.
- [bpo-25911](https://python-all.ru/3/whatsnew/changelog.html): Восстановлена поддержка путей в виде bytes в os.walk() на Windows.
- [bpo-26045](https://python-all.ru/3/whatsnew/changelog.html): В сообщение об ошибке при отправке строки не в Latin-1 через http.client добавлен совет использовать UTF-8.
- [bpo-26039](https://python-all.ru/3/whatsnew/changelog.html): Добавлены zipfile.ZipInfo.from\_file() и zipfile.ZipInfo.is\_dir(). Исправление от Thomas Kluyver.
- [bpo-12923](https://python-all.ru/3/whatsnew/changelog.html): Счётчик перенаправлений FancyURLopener сбрасывается даже при исключении. На основе исправлений от Brian Brazil и Daniel Rocco.
- [bpo-25945](https://python-all.ru/3/whatsnew/changelog.html): Исправлен сбой при распаковке объекта functools.partial с некорректным состоянием. Исправлена утечка в неудачном конструкторе functools.partial. Атрибуты «args» и «keywords» functools.partial теперь всегда имеют тип tuple и dict соответственно.
- [bpo-26202](https://python-all.ru/3/whatsnew/changelog.html): copy.deepcopy() теперь корректно копирует объекты range() с неатомарными атрибутами.
- [bpo-23076](https://python-all.ru/3/whatsnew/changelog.html): Path.glob() теперь вызывает ValueError при вызове с недопустимым шаблоном. Исправление от Thomas Nyberg.
- [bpo-19883](https://python-all.ru/3/whatsnew/changelog.html): Исправлены возможные целочисленные переполнения в zipimport.
- [bpo-26227](https://python-all.ru/3/whatsnew/changelog.html): На Windows функции getnameinfo(), gethostbyaddr() и gethostbyname\_ex() модуля socket теперь декодируют имя хоста из кодовой страницы ANSI, а не UTF-8.
- [bpo-26099](https://python-all.ru/3/whatsnew/changelog.html): Модуль site теперь записывает ошибку в stderr, если модуль sitecustomize можно импортировать, но его выполнение вызывает ImportError. То же изменение для usercustomize.
- [bpo-26147](https://python-all.ru/3/whatsnew/changelog.html): xmlrpc теперь работает со строками, которые невозможно закодировать используемой не-UTF-8 кодировкой.
- [bpo-25935](https://python-all.ru/3/whatsnew/changelog.html): Сборщик мусора теперь разрывает циклические ссылки с OrderedDict.
- [bpo-16620](https://python-all.ru/3/whatsnew/changelog.html): Исправлен AttributeError в msilib.Directory.glob().
- [bpo-26013](https://python-all.ru/3/whatsnew/changelog.html): Добавлена совместимость с повреждёнными pickle-объектами протокола 2, созданными в старых версиях Python 3 (3.4.3 и ниже).
- [bpo-26129](https://python-all.ru/3/whatsnew/changelog.html): Приём нецелочисленных значений в grp.getgrgid() помечен как устаревший.
- [bpo-25850](https://python-all.ru/3/whatsnew/changelog.html): По умолчанию используется кросс-компиляция для 64-разрядной Windows.
- [bpo-25822](https://python-all.ru/3/whatsnew/changelog.html): Добавлены докстринги к полям результатов urllib.parse. Исправление предоставлено Swati Jaiswal.
- [bpo-22642](https://python-all.ru/3/whatsnew/changelog.html): Механизм разбора опций модуля trace переведён на argparse. Исправление предоставлено SilentGhost.
- [bpo-24705](https://python-all.ru/3/whatsnew/changelog.html): Исправлено: sysconfig.\_parse\_makefile не раскрывал переменные ${}, встречающиеся перед $().
- [bpo-26069](https://python-all.ru/3/whatsnew/changelog.html): Удалены устаревшие API в модуле trace.
- [bpo-22138](https://python-all.ru/3/whatsnew/changelog.html): Исправлено поведение mock.patch при подмене дескрипторов. После подмены восстанавливаются исходные значения. Исправление предоставлено Sean McCully.
- [bpo-25672](https://python-all.ru/3/whatsnew/changelog.html): В модуле ssl включается опция режима SSL\_MODE\_RELEASE\_BUFFERS, если это безопасно.
- [bpo-26012](https://python-all.ru/3/whatsnew/changelog.html): Не переходить по символическим ссылкам для шаблона `**` в pathlib.Path.\[r\]glob().
- [bpo-24120](https://python-all.ru/3/whatsnew/changelog.html): Игнорировать PermissionError при обходе дерева с помощью pathlib.Path.\[r\]glob(). Исправление от Ulrich Petri.
- [bpo-21815](https://python-all.ru/3/whatsnew/changelog.html): В части данных imap-ответов теперь допускаются символы \], чтобы обрабатывать флаги с квадратными скобками, которые принимают и генерируют такие серверы, как gmail.
- [bpo-25447](https://python-all.ru/3/whatsnew/changelog.html): fileinput теперь использует sys.stdin как есть, если у него нет атрибута buffer (восстановлена обратная совместимость).
- [bpo-25971](https://python-all.ru/3/whatsnew/changelog.html): Оптимизировано создание Fractions из чисел с плавающей точкой – в 2 раза быстрее, а из Decimals – в 3 раза.
- [bpo-25802](https://python-all.ru/3/whatsnew/changelog.html): Оставшиеся реализации importlib.abc.Loader.load\_module() задокументированы как устаревшие.
- [bpo-25928](https://python-all.ru/3/whatsnew/changelog.html): Добавлен метод Decimal.as\_integer\_ratio().
- [bpo-25447](https://python-all.ru/3/whatsnew/changelog.html): Копирование объекта-обёртки lru\_cache() теперь всегда работает независимо от типа обёрнутого объекта (возвращается исходный объект без изменений).
- [bpo-25768](https://python-all.ru/3/whatsnew/changelog.html): Функции в compileall теперь возвращают логические значения вместо целых чисел; добавлены документация и тесты для возвращаемых значений.
- [bpo-24103](https://python-all.ru/3/whatsnew/changelog.html): Исправлена возможная проблема use-after-free в ElementTree.XMLPullParser.
- [bpo-25860](https://python-all.ru/3/whatsnew/changelog.html): os.fwalk() больше не пропускает оставшиеся каталоги при возникновении ошибки. Исправление от Samson Lee.
- [bpo-25914](https://python-all.ru/3/whatsnew/changelog.html): Исправлен и упрощён метод OrderedDict.\_\_sizeof\_\_.
- [bpo-25869](https://python-all.ru/3/whatsnew/changelog.html): Оптимизировано глубокое копирование ElementTree – теперь в 20 раз быстрее.
- [bpo-25873](https://python-all.ru/3/whatsnew/changelog.html): Оптимизирован обход ElementTree. Итерация по элементам Element.iter() теперь на 40% быстрее, итерация по тексту Element.itertext() – до 2,5 раз быстрее.
- [bpo-25902](https://python-all.ru/3/whatsnew/changelog.html): Исправлены различные проблемы с подсчётом ссылок при итерации ElementTree.
- [bpo-22227](https://python-all.ru/3/whatsnew/changelog.html): Итератор TarFile переписан с использованием генератора. Эта реализация проще, чем через класс.
- [bpo-25638](https://python-all.ru/3/whatsnew/changelog.html): Оптимизирован ElementTree.iterparse() – теперь в 2 раза быстрее. Оптимизирован разбор ElementTree – теперь на 10% быстрее.
- [bpo-25761](https://python-all.ru/3/whatsnew/changelog.html): Улучшено обнаружение ошибок в повреждённых pickle-данных.
- [bpo-25717](https://python-all.ru/3/whatsnew/changelog.html): Восстановлено прежнее поведение – терпимость к большинству ошибок fstat() при открытии файлов. Это было регрессией в 3.5a1 и мешало работе анонимных временных файлов в особых случаях.
- [bpo-24903](https://python-all.ru/3/whatsnew/changelog.html): Исправлена регрессия в количестве аргументов, которые принимает compileall при указании -d. Проверка количества аргументов полностью убрана, так как она всё равно никогда не работала правильно.
- [bpo-25764](https://python-all.ru/3/whatsnew/changelog.html): В модуле подпроцесса теперь сохраняется любое исключение, вызванное сбоем fork() при использовании preexec\_fn.
- [bpo-25771](https://python-all.ru/3/whatsnew/changelog.html): Уточнено сообщение об исключении в importlib.util.resolve\_name(), когда аргумент package не указан, но необходим.
- [bpo-6478](https://python-all.ru/3/whatsnew/changelog.html): Кэш регулярных выражений \_strptime теперь сбрасывается после смены часового пояса с помощью time.tzset().
- [bpo-14285](https://python-all.ru/3/whatsnew/changelog.html): При выполнении пакета с опцией python -m package и сбое его инициализации теперь выводится полная трассировка. Модуль runpy теперь передаёт исключения от инициализации пакета обратно вызывающему коду, а не возбуждает ImportError.
- [bpo-19771](https://python-all.ru/3/whatsnew/changelog.html): Также в runpy и опции -m убрано несущественное сообщение «… is a package and cannot be directly executed», если пакет не удалось даже инициализировать (например, из-за некорректного файла `*.pyc`).
- [bpo-25177](https://python-all.ru/3/whatsnew/changelog.html): Исправлена проблема с вычислением среднего для очень маленьких и очень больших чисел. Как побочный эффект, statistics.mean и statistics.variance стали значительно быстрее.
- [bpo-25718](https://python-all.ru/3/whatsnew/changelog.html): Исправлено копирование объекта с состоянием, значение которого – False.
- [bpo-10131](https://python-all.ru/3/whatsnew/changelog.html): Исправлено глубокое копирование minidom-документов. Основано на исправлении от Marian Ganisin.
- [bpo-7990](https://python-all.ru/3/whatsnew/changelog.html): dir() для ElementTree.Element теперь выводит свойства: tag, text, tail и attrib. Исправление от Santoso Wijaya.
- [bpo-25725](https://python-all.ru/3/whatsnew/changelog.html): Исправлена утечка ссылки в pickle.loads() при распаковке некорректных данных, содержащих инструкции кортежей.
- [bpo-25663](https://python-all.ru/3/whatsnew/changelog.html): В автодополнении Readline устранён вывод повторяющихся глобальных имён; теперь глобальное пространство имён ищется перед пространством встроенных имён.
- [bpo-25688](https://python-all.ru/3/whatsnew/changelog.html): Исправлена утечка файла в ElementTree.iterparse() при возникновении ошибки.
- [bpo-23914](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка SystemError, возникавшая в распаковщике при обработке повреждённых pickle-данных.
- [bpo-25691](https://python-all.ru/3/whatsnew/changelog.html): Исправлено падение при удалении атрибутов ElementTree.Element.
- [bpo-25624](https://python-all.ru/3/whatsnew/changelog.html): ZipFile теперь всегда записывает заголовок ZIP\_STORED для записей каталогов. Исправление от Dingyuan Wang.
- [bpo-25626](https://python-all.ru/3/whatsnew/changelog.html): Изменены три функции zlib, чтобы они принимали размеры, помещающиеся в Py\_ssize\_t, но внутренне ограничивают эти размеры до UINT\_MAX. Это исправляет регрессию в 3.5, где GzipFile.read() не мог читать блоки больше 2 или 4 ГиБ. Изменение затрагивает параметр max\_length функции zlib.Decompress.decompress(), параметр bufsize функции zlib.decompress() и параметр length функции zlib.Decompress.flush().
- [bpo-25583](https://python-all.ru/3/whatsnew/changelog.html): Предотвращение некорректных ошибок, вызываемых os.makedirs(exist\_ok=True), когда ОС отдаёт приоритет ошибкам типа EACCES над EEXIST.
- [bpo-25593](https://python-all.ru/3/whatsnew/changelog.html): Изменена семантика EventLoop.stop() в asyncio.
- [bpo-6973](https://python-all.ru/3/whatsnew/changelog.html): Если известно, что процесс subprocess.Popen завершился, не позволяйте методам send\_signal(), terminate() или kill() выполнять какие-либо действия, так как они могут случайно отправить сигнал другому процессу.
- [bpo-23883](https://python-all.ru/3/whatsnew/changelog.html): Добавлены недостающие API в \_\_all\_\_ для соответствия документированным API следующих модулей: calendar, csv, enum, fileinput, ftplib, logging, optparse, tarfile, threading и wave. Также добавлен вспомогательный метод test.support.check\_\_all\_\_(). Исправления от Jacek Kołodziej, Mauro S. M. Rodrigues и Joel Taddei.
- [bpo-25590](https://python-all.ru/3/whatsnew/changelog.html): В дополнении Readline теперь getattr() вызывается только один раз для каждого атрибута. Также завершаются имена атрибутов, таких как свойства и слоты, которые перечислены dir(), но ещё не созданы в экземпляре.
- [bpo-25498](https://python-all.ru/3/whatsnew/changelog.html): Исправлен сбой при сборке мусора объектов ctypes, созданных обёртыванием memoryview. Это была регрессия, внесённая в 3.5a1. Основано на патче Eryksun.
- [bpo-25584](https://python-all.ru/3/whatsnew/changelog.html): Добавлена «escape» в список \_\_all\_\_ в модуле glob.
- [bpo-25584](https://python-all.ru/3/whatsnew/changelog.html): Исправлена рекурсивная glob() с шаблонами, начинающимися с `**`.
- [bpo-25446](https://python-all.ru/3/whatsnew/changelog.html): Исправлена регрессия в поддержке AUTH LOGIN в smtplib.
- [bpo-18010](https://python-all.ru/3/whatsnew/changelog.html): Исправлена функция поиска модулей веб-сервера pydoc для обработки исключений при импорте пакетов.
- [bpo-25554](https://python-all.ru/3/whatsnew/changelog.html): Устранены циклические ссылки при разборе регулярных выражений.
- [bpo-18973](https://python-all.ru/3/whatsnew/changelog.html): Интерфейс командной строки модуля calendar теперь использует argparse вместо optparse.
- [bpo-25510](https://python-all.ru/3/whatsnew/changelog.html): fileinput.FileInput.readline() теперь возвращает b'' вместо '' в конце, если FileInput был открыт в бинарном режиме. Исправление от Ryosuke Ito.
- [bpo-25503](https://python-all.ru/3/whatsnew/changelog.html): Исправлен inspect.getdoc() для унаследованных докстрингов свойств. Исходный патч от John Mark Vandenberg.
- [bpo-25515](https://python-all.ru/3/whatsnew/changelog.html): Всегда использовать os.urandom как источник случайности в uuid.uuid4.
- [bpo-21827](https://python-all.ru/3/whatsnew/changelog.html): Исправлен textwrap.dedent() для случая, когда наибольший общий пробел является подстрокой наименьшего начального пробела. Основано на патче Robert Li.
- [bpo-25447](https://python-all.ru/3/whatsnew/changelog.html): Объекты-обёртки lru\_cache() теперь можно копировать и сериализовать (возвращая исходный объект без изменений).
- [bpo-25390](https://python-all.ru/3/whatsnew/changelog.html): typing: не падать на Union\[str, Pattern\].
- [bpo-25441](https://python-all.ru/3/whatsnew/changelog.html): asyncio: вызывать ошибку из drain(), когда сокет закрыт.
- [bpo-25410](https://python-all.ru/3/whatsnew/changelog.html): Проведена очистка и исправлены мелкие ошибки в C-реализации OrderedDict.
- [bpo-25411](https://python-all.ru/3/whatsnew/changelog.html): Улучшена поддержка Unicode в SMTPHandler за счёт лучшего использования пакета email. Спасибо пользователю simon04 за патч.
- Перемещён модуль imp из PendingDeprecationWarning в DeprecationWarning.
- [bpo-25407](https://python-all.ru/3/whatsnew/changelog.html): Удалены упоминания об удалении модуля formatter в Python 3.6.
- [bpo-25406](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка в C-реализации OrderedDict.move\_to\_end(), которая вызывала segmentation fault или зависание при итерации после перемещения нескольких элементов в начало упорядоченного словаря.
- [bpo-25382](https://python-all.ru/3/whatsnew/changelog.html): pickletools.dis() теперь выводит неявный индекс memo для кода операции MEMOIZE.
- [bpo-25357](https://python-all.ru/3/whatsnew/changelog.html): Добавлен необязательный параметр newline в binascii.b2a\_base64(). base64.b64encode() использует его, чтобы избежать копирования памяти.
- [bpo-24164](https://python-all.ru/3/whatsnew/changelog.html): Объекты, которые требуют вызова `__new__` с именованными аргументами, теперь можно сериализовать с помощью протоколов pickle старше версии 4.
- [bpo-25364](https://python-all.ru/3/whatsnew/changelog.html): zipfile теперь работает в сборках с отключёнными потоками.
- [bpo-25328](https://python-all.ru/3/whatsnew/changelog.html): SMTPChannel из smtpd теперь корректно вызывает ValueError, если и decode\_data, и enable\_SMTPUTF8 установлены в true.
- [bpo-16099](https://python-all.ru/3/whatsnew/changelog.html): RobotFileParser теперь поддерживает расширения Crawl-delay и Request-rate. Исправление от Nikolay Bogoychev.
- [bpo-25316](https://python-all.ru/3/whatsnew/changelog.html): distutils теперь выбрасывает OSError вместо DistutilsPlatformError, если MSVC не установлен.
- [bpo-25380](https://python-all.ru/3/whatsnew/changelog.html): Исправлен протокол для опкода STACK\_GLOBAL в pickletools.opcodes.
- [bpo-23972](https://python-all.ru/3/whatsnew/changelog.html): Обновлён метод создания дейтаграмм в asyncio, позволяющий устанавливать опции сокетов reuseport и reuseaddr до привязки сокета. По аналогии с существующим методом asyncio create\_server, опция reuseaddr для дейтаграммных сокетов по умолчанию равна True, если ОС – ‘posix’ (за исключением платформы Cygwin). Патч от Chris Laws.
- [bpo-25304](https://python-all.ru/3/whatsnew/changelog.html): Добавлена asyncio.run\_coroutine\_threadsafe(). Позволяет передать корутину в цикл из другого потока, возвращая concurrent.futures.Future. Автор: Vincent Michel.
- [bpo-25232](https://python-all.ru/3/whatsnew/changelog.html): Исправлен CGIRequestHandler: теперь он разделяет запрос и URL по первому вопросительному знаку (?), а не по последнему. Патч от Xiang Zhang.
- [bpo-24657](https://python-all.ru/3/whatsnew/changelog.html): Предотвращено схлопывание слешей в части запроса URL со стороны CGIRequestHandler, как если бы это был путь. Патч от Xiang Zhang.
- [bpo-25287](https://python-all.ru/3/whatsnew/changelog.html): Не добавлять crypt.METHOD\_CRYPT в crypt.methods, если он не поддерживается. Проверяется поддержка; например, на OpenBSD он может не поддерживаться.
- [bpo-23600](https://python-all.ru/3/whatsnew/changelog.html): Реализация по умолчанию tzinfo.fromutc() в некоторых случаях возвращала неверные результаты.
- [bpo-25203](https://python-all.ru/3/whatsnew/changelog.html): Сбой readline.set\_completer\_delims() больше не оставляет модуль в несогласованном состоянии.
- [bpo-25011](https://python-all.ru/3/whatsnew/changelog.html): rlcompleter теперь пропускает частные и специальные имена атрибутов, если только префикс не начинается с подчёркиваний.
- [bpo-25209](https://python-all.ru/3/whatsnew/changelog.html): rlcompleter теперь может добавлять пробел или двоеточие после завершённого ключевого слова.
- [bpo-22241](https://python-all.ru/3/whatsnew/changelog.html): Имя timezone.utc теперь просто ‘UTC’, а не ‘UTC-00:00’.
- [bpo-23517](https://python-all.ru/3/whatsnew/changelog.html): Методы datetime.datetime fromtimestamp() и utcfromtimestamp() теперь округляют микросекунды до ближайшего целого с разрешением спорных случаев в пользу чётного (ROUND\_HALF\_EVEN), как round(float), вместо округления в сторону минус бесконечности (ROUND\_FLOOR).
- [bpo-23552](https://python-all.ru/3/whatsnew/changelog.html): Timeit теперь выдаёт предупреждение, когда между лучшим и худшим временем существенная разница (в 4 раза). Патч от Serhiy Storchaka.
- [bpo-24633](https://python-all.ru/3/whatsnew/changelog.html): site-packages/README переименован в README.txt.
- [bpo-24879](https://python-all.ru/3/whatsnew/changelog.html): help() и pydoc теперь могут перечислять поля именованных кортежей в порядке их определения, а не в алфавитном. Порядок определяется атрибутом \_fields, если он присутствует.
- [bpo-24874](https://python-all.ru/3/whatsnew/changelog.html): Улучшена скорость itertools.cycle() и сделан его pickle более компактным.
- Исправлена ошибка в itertools.cycle.\_\_setstate\_\_(), возникавшая, когда первый аргумент не был списком.
- [bpo-20059](https://python-all.ru/3/whatsnew/changelog.html): urllib.parse теперь выбрасывает ValueError для всех недопустимых портов. Патч от Martin Panter.
- [bpo-24360](https://python-all.ru/3/whatsnew/changelog.html): Улучшен \_\_repr\_\_ для argparse.Namespace() в случае недопустимых идентификаторов. Патч от Matthias Bussonnier.
- [bpo-23426](https://python-all.ru/3/whatsnew/changelog.html): run\_setup был сломан в distutils. Патч от Alexander Belopolsky.
- [bpo-13938](https://python-all.ru/3/whatsnew/changelog.html): 2to3 преобразует StringTypes в кортеж. Патч от Mark Hammond.
- [bpo-2091](https://python-all.ru/3/whatsnew/changelog.html): open() принимал строку режима ‘U’, содержащую ‘+’, но ‘U’ можно использовать только с ‘r’. Патч от Jeff Balogh и John O’Connor.
- [bpo-8585](https://python-all.ru/3/whatsnew/changelog.html): Улучшены тесты для zipimporter2. Патч от Mark Lawrence.
- [bpo-18622](https://python-all.ru/3/whatsnew/changelog.html): unittest.mock.mock\_open().reset\_mock мог рекурсивно зацикливаться. Патч от Nicola Palumbo и Laurent De Buyst.
- [bpo-24426](https://python-all.ru/3/whatsnew/changelog.html): Оптимизация быстрого поиска в регулярных выражениях теперь работает для шаблонов, начинающихся с захватывающих групп. Теперь эту оптимизацию нельзя отключить во время компиляции.
- [bpo-23661](https://python-all.ru/3/whatsnew/changelog.html): side\_effects в unittest.mock снова могут быть исключениями. Это было регрессией по сравнению с Python 3.4. Патч от Ignacio Rossi.
- [bpo-13248](https://python-all.ru/3/whatsnew/changelog.html): Удалена устаревшая функция inspect.getmoduleinfo.
- [bpo-25578](https://python-all.ru/3/whatsnew/changelog.html): Исправлена (ещё одна) утечка памяти в SSLSocket.getpeercer().
- [bpo-25530](https://python-all.ru/3/whatsnew/changelog.html): Отключён уязвимый протокол SSLv3 по умолчанию при создании ssl.SSLContext.
- [bpo-25569](https://python-all.ru/3/whatsnew/changelog.html): Исправлена утечка памяти в SSLSocket.getpeercert().
- [bpo-25471](https://python-all.ru/3/whatsnew/changelog.html): Сокеты, возвращаемые из accept(), не должны казаться неблокирующими.
- [bpo-25319](https://python-all.ru/3/whatsnew/changelog.html): При повторной инициализации threading.Event в нижележащем условии следует использовать обычную блокировку вместо рекурсивной.
- Пропускать getaddrinfo, если хост уже разрешён. Патч от A. Jesse Jiryu Davis.
- [bpo-26050](https://python-all.ru/3/whatsnew/changelog.html): Добавлен метод asyncio.StreamReader.readuntil(). Патч от Марка Коренберга.
- [bpo-25924](https://python-all.ru/3/whatsnew/changelog.html): Избегать ненужной сериализации вызовов getaddrinfo(3) на OS X версии 10.5 и выше. Оригинальный патч от A. Jesse Jiryu Davis.
- [bpo-26406](https://python-all.ru/3/whatsnew/changelog.html): Избегать ненужной сериализации вызовов getaddrinfo(3) на текущих версиях OpenBSD и NetBSD. Патч от A. Jesse Jiryu Davis.
- [bpo-26848](https://python-all.ru/3/whatsnew/changelog.html): Исправлена обработка пустого ввода в asyncio/subprocess.communicate(). Патч от Jack O’Connor.
- [bpo-27040](https://python-all.ru/3/whatsnew/changelog.html): Добавлен метод loop.get\_exception\_handler
- [bpo-27041](https://python-all.ru/3/whatsnew/changelog.html): asyncio: Добавлен метод loop.create\_future

### IDLE

- [bpo-20640](https://python-all.ru/3/whatsnew/changelog.html): Добавлены тесты для idlelib.configHelpSourceEdit. Патч от Saimadhav Heblikar.
- В разделе «IDLE-console differences» документации IDLE уточнено, как запуск в IDLE влияет на sys.modules и стандартные потоки.
- [bpo-25507](https://python-all.ru/3/whatsnew/changelog.html): Исправлено некорректное изменение в IOBinding, которое мешало печати. Расширен IOBinding htest для включения всех основных функций IOBinding.
- [bpo-25905](https://python-all.ru/3/whatsnew/changelog.html): Отменено нежелательное преобразование символа ' в ’ (правая одиночная кавычка) в README.txt; этот файл и NEWS.txt теперь открываются с кодировкой «ascii». CREDITS.txt перекодирован в utf-8 и открывается с кодировкой «utf-8».
- [bpo-15348](https://python-all.ru/3/whatsnew/changelog.html): Остановка движка отладчика (обычно в пользовательском процессе) перед закрытием окна отладчика (работающего в процессе IDLE). Это предотвращает исключения RuntimeError, которые ранее перехватывались и игнорировались.
- [bpo-24455](https://python-all.ru/3/whatsnew/changelog.html): Предотвращение зависания IDLE при: a) закрытии оболочки при активном отладчике (15347); b) закрытии отладчика кнопкой \[X\] (15348); и c) активации отладчика, когда он уже активен (24455). Патч Марка Роземана делает это двумя изменениями: 1. Приостановка и возобновление метода gui.interaction с помощью механизма tcl vwait, предназначенного для этой цели (вместо root.mainloop и .quit). 2. В gui.run разрешить завершение любого существующего взаимодействия перед началом нового.
- Замена «The program» на «Your program» в сообщении IDLE «kill program?», чтобы было понятнее, что речь идёт о текущей запущенной пользовательской программе, а не об IDLE.
- [bpo-24750](https://python-all.ru/3/whatsnew/changelog.html): Улучшен внешний вид строки состояния окна редактора IDLE. Патч от Mark Roseman.
- [bpo-25313](https://python-all.ru/3/whatsnew/changelog.html): Изменена обработка новых встроенных цветовых схем текста для лучшего решения проблемы совместимости, вызванной добавлением IDLE Dark. Повсеместно в idlelib используется обновлённый idleConf.CurrentTheme.
- [bpo-24782](https://python-all.ru/3/whatsnew/changelog.html): Конфигурация расширений теперь является вкладкой в диалоге настроек IDLE, а не отдельным диалогом. Бывшие вкладки теперь представлены отсортированным списком. Патч от Mark Roseman.
- [bpo-22726](https://python-all.ru/3/whatsnew/changelog.html): Повторно активирована кнопка справки в диалоге настроек с некоторым содержимым о других кнопках и новой теме IDLE Dark.
- [bpo-24820](https://python-all.ru/3/whatsnew/changelog.html): В IDLE теперь есть встроенная цветовая схема текста «IDLE Dark». Она представляет собой инвертированную версию IDLE Classic с кобальтово-синим фоном. Строки, комментарии, ключевые слова и т.д. остаются зелёными, красными, оранжевыми и т.п. Чтобы использовать её с IDLE, выпущенными до ноября 2015 года, нажмите кнопку «Save as New Custom Theme» и введите новое имя, например «Custom Dark». Пользовательская тема будет работать с любой версией IDLE и может быть изменена.
- [bpo-25224](https://python-all.ru/3/whatsnew/changelog.html): README.txt теперь является индексом idlelib для разработчиков IDLE и любопытных пользователей. Предыдущее содержимое для пользователей теперь находится в главе документации IDLE. «IDLE» теперь означает «Integrated Development and Learning Environment».
- [bpo-24820](https://python-all.ru/3/whatsnew/changelog.html): Теперь пользователи могут задавать цвета точек останова в Settings -\> Custom Highlighting. Оригинальный патч от Mark Roseman.
- [bpo-24972](https://python-all.ru/3/whatsnew/changelog.html): Теперь фон неактивного выделения совпадает с фоном активного выделения (как настроено пользователем) на всех системах. Найденные элементы теперь всегда выделяются в Windows. Первоначальный патч от Mark Roseman.
- [bpo-24570](https://python-all.ru/3/whatsnew/changelog.html): IDLE: исправлено отображение подсказок и окон автодополнения на Mac, затронутых регрессией tk. Первоначальный патч от Mark Roseman.
- [bpo-24988](https://python-all.ru/3/whatsnew/changelog.html): Контекстные меню ScrolledList в IDLE (используемые в отладчике) теперь работают на Mac Aqua. Патч от Mark Roseman.
- [bpo-24801](https://python-all.ru/3/whatsnew/changelog.html): Исправлена работа правой кнопки мыши для контекстного меню на Mac Aqua. Патч от Mark Roseman.
- [bpo-25173](https://python-all.ru/3/whatsnew/changelog.html): Диалоговые окна tkinter привязываются к конкретному виджету. На Mac OSX они становятся «листами». Патч от Mark Roseman.
- [bpo-25198](https://python-all.ru/3/whatsnew/changelog.html): Улучшен начальный HTML-просмотрщик, используемый для справки IDLE. Правильно выполнен отступ для текста фиксированной ширины (патч от Mark Roseman). Фрагменты кода получили светло-голубовато-серый фон в стиле Sphinx. Повторно используются начальные ширина и высота, заданные пользователем для оболочки и редактора. При использовании меню оглавления (TOC) заголовок раздела помещается в верхнюю часть экрана.
- [bpo-25225](https://python-all.ru/3/whatsnew/changelog.html): Сокращён и переписан раздел документации IDLE о цветах текста.
- [bpo-21995](https://python-all.ru/3/whatsnew/changelog.html): Пояснены некоторые различия между IDLE и консольным Python.
- [bpo-22820](https://python-all.ru/3/whatsnew/changelog.html): Пояснена необходимость *print* при запуске файла из редактора IDLE.
- [bpo-25224](https://python-all.ru/3/whatsnew/changelog.html): Документация: расширен список возможностей Idle и раздел о работе без подпроцесса.
- [bpo-25219](https://python-all.ru/3/whatsnew/changelog.html): Обновлена документация по параметрам командной строки Idle. Некоторые параметры отсутствовали, а примечания были неверны.
- [bpo-24861](https://python-all.ru/3/whatsnew/changelog.html): Большая часть idlelib является закрытой и может измениться. Используйте idleib.idle.\* для запуска Idle. См. idlelib.\_\_init\_\_.\_\_doc\_\_.
- [bpo-25199](https://python-all.ru/3/whatsnew/changelog.html): Idle: добавлены комментарии по синхронизации для будущих разработчиков.
- [bpo-16893](https://python-all.ru/3/whatsnew/changelog.html): Замена help.txt на help.html для отображения документации Idle. Новый idlelib/help.html – это обработанный rstripped Doc/build/html/library/idle.html. Он выглядит лучше, чем help.txt, и будет лучше документировать Idle в релизе. Просмотрщик tkinter HTML, работающий с этим файлом, написан Роуз Розман. Теперь неиспользуемые класс EditorWindow.HelpDialog и файл helt.txt объявлены устаревшими.
- [bpo-24199](https://python-all.ru/3/whatsnew/changelog.html): Устаревание неиспользуемого idlelib.idlever с возможным удалением в 3.6.
- [bpo-24790](https://python-all.ru/3/whatsnew/changelog.html): Удалён лишний код (который также создавал конфликты между версиями 2 и 3).

### Документация

- [bpo-26736](https://python-all.ru/3/whatsnew/changelog.html): Использование HTTPS для внешних ссылок в документации, где это возможно.
- [bpo-6953](https://python-all.ru/3/whatsnew/changelog.html): Переработана документация модуля Readline: связанные функции сгруппированы, добавлены подробности, например, какие именно функции и переменные нижележащего Readline используются.
- [bpo-23606](https://python-all.ru/3/whatsnew/changelog.html): Добавлено примечание в документацию ctypes относительно cdll.msvcrt.
- [bpo-24952](https://python-all.ru/3/whatsnew/changelog.html): Уточнено значение аргумента size по умолчанию для stack\_size() в модулях «threading» и «\_thread». Патч от Mattip.
- [bpo-26014](https://python-all.ru/3/whatsnew/changelog.html): Обновлена документация по упаковке для 3.x: \* ссылки «См. также» на новую документацию теперь добавлены на старые страницы \* ссылки на документацию setuptools обновлены

### Тесты

- [bpo-21916](https://python-all.ru/3/whatsnew/changelog.html): Добавлены тесты для модуля turtle. Патч от ingrid, Gregory Loyse и Jelle Zijlstra.
- [bpo-26295](https://python-all.ru/3/whatsnew/changelog.html): При использовании «python3 -m test –testdir=TESTDIR» regrtest не добавляет префикс «test.» к именам тестовых модулей.
- [bpo-26523](https://python-all.ru/3/whatsnew/changelog.html): Потоковый пул multiprocessing (multiprocessing.dummy.Pool) не был протестирован.
- [bpo-26015](https://python-all.ru/3/whatsnew/changelog.html): Добавлены новые тесты для сериализации (pickling) итераторов изменяемых последовательностей.
- [bpo-26325](https://python-all.ru/3/whatsnew/changelog.html): Добавлен test.support.check\_no\_resource\_warning() для проверки отсутствия предупреждения ResourceWarning.
- [bpo-25940](https://python-all.ru/3/whatsnew/changelog.html): Изменён test\_ssl: теперь чаще используется внутренний локальный сервер. Это позволяет не полагаться на svn.python.org, который недавно изменил корневой сертификат.
- [bpo-25616](https://python-all.ru/3/whatsnew/changelog.html): Тесты для OrderedDict выделены из test\_collections в отдельный файл test\_ordered\_dict.
- [bpo-25449](https://python-all.ru/3/whatsnew/changelog.html): Добавлены тесты для подклассов OrderedDict.
- [bpo-25188](https://python-all.ru/3/whatsnew/changelog.html): Добавлен -P/–pgo в test.regrtest для подавления вывода ошибок при запуске тестового набора для целей PGO-сборки. Первоначальный патч от Alecsandru Patrascu.
- [bpo-22806](https://python-all.ru/3/whatsnew/changelog.html): Добавлена команда `python -m test --list-tests` для вывода списка тестов.
- [bpo-18174](https://python-all.ru/3/whatsnew/changelog.html): `python -m test --huntrleaks ...` теперь также проверяет утечку файловых дескрипторов. Патч написан Ричардом Оудкерком.
- [bpo-25260](https://python-all.ru/3/whatsnew/changelog.html): Исправлен `python -m test --coverage` в Windows. Удалён список игнорируемых каталогов.
- `PCbuild\rt.bat` теперь принимает неограниченное количество аргументов для передачи в regrtest.py. Ранее было ограничение в 9.
- [bpo-26583](https://python-all.ru/3/whatsnew/changelog.html): Пропущен test\_timestamp\_overflow в test\_import, если файлы байт-кода не могут быть записаны.

### Сборка

- [bpo-21277](https://python-all.ru/3/whatsnew/changelog.html): Не пытаться линковать \_ctypes с библиотекой ffi\_convenience.
- [bpo-26884](https://python-all.ru/3/whatsnew/changelog.html): Исправлена линковка модулей расширения для кросс-сборок. Патч от Xavier de Gaye.
- [bpo-26932](https://python-all.ru/3/whatsnew/changelog.html): Исправлена поддержка констант RTLD\_\*, определённых как значения перечисления, а не через макросы (в частности, на Android). Патч от Chi Hsuan Yen.
- [bpo-22359](https://python-all.ru/3/whatsnew/changelog.html): Отключены правила запуска \_freeze\_importlib и pgen при кросс-компиляции. Вывод этих программ обычно сохраняется вместе с исходным кодом и всё равно перегенерируется при нативной сборке. Исправление от Xavier de Gaye.
- [bpo-21668](https://python-all.ru/3/whatsnew/changelog.html): Модули audioop, \_datetime, \_ctypes\_test теперь линкуются с libm, кроме Mac OS X. Исправление от Chi Hsuan Yen.
- [bpo-25702](https://python-all.ru/3/whatsnew/changelog.html): Добавлен параметр конфигурации –with-lto, который включает оптимизацию времени компоновки при сборке с make profile-opt. Известно, что некоторые компиляторы и инструментальные цепочки могут генерировать нестабильный код при использовании LTO, поэтому перед использованием следует тщательно всё протестировать. Эта оптимизация может дать прирост скорости на несколько процентов по сравнению с обычным profile-opt.
- [bpo-26624](https://python-all.ru/3/whatsnew/changelog.html): Добавлена проверка версии ucrtbase\[d\].dll с предупреждением для старых версий.
- [bpo-17603](https://python-all.ru/3/whatsnew/changelog.html): Устранена ошибка о несуществующем файле fileblocks.o с помощью более низкоуровневой проверки st\_blocks в struct stat.
- [bpo-26079](https://python-all.ru/3/whatsnew/changelog.html): Исправлена папка выходных данных сборки для tix-8.4.3.6. Исправление от Bjoern Thiel.
- [bpo-26465](https://python-all.ru/3/whatsnew/changelog.html): Обновлены сборки Windows: теперь используется OpenSSL 1.0.2g.
- [bpo-25348](https://python-all.ru/3/whatsnew/changelog.html): Добавлены аргументы `--pgo` и `--pgo-job` в `PCbuild\build.bat` для сборки с профильно-ориентированной оптимизацией (PGO). Старый скрипт `PCbuild\build_pgo.bat` удалён.
- [bpo-25827](https://python-all.ru/3/whatsnew/changelog.html): Добавлена поддержка сборки с ICC в `configure`, включая новый флаг `--with-icc`.
- [bpo-25696](https://python-all.ru/3/whatsnew/changelog.html): Исправлена установка Python на UNIX с make -j9.
- [bpo-24986](https://python-all.ru/3/whatsnew/changelog.html): Теперь Python можно собрать на Windows без ошибок, даже если внешние библиотеки недоступны.
- [bpo-24421](https://python-all.ru/3/whatsnew/changelog.html): Файл Modules/\_math.c теперь компилируется один раз, перед сборкой расширений. Ранее он мог некорректно скомпилироваться, если сборка math и cmath выполнялась одновременно.
- [bpo-26465](https://python-all.ru/3/whatsnew/changelog.html): Обновлён установщик для OS X 10.5+ (только 32-бит) для сборки и линковки с OpenSSL 1.0.2g.
- [bpo-26268](https://python-all.ru/3/whatsnew/changelog.html): Обновлены сборки Windows: теперь используется OpenSSL 1.0.2f.
- [bpo-25136](https://python-all.ru/3/whatsnew/changelog.html): Добавлена поддержка новых текстовых заглушек SDK от Apple Xcode 7.
- [bpo-24324](https://python-all.ru/3/whatsnew/changelog.html): Предупреждения о недостижимом коде больше не включаются при использовании gcc, так как эта опция некорректно работала в старых версиях и была молча удалена в gcc-4.5.

### Windows

- [bpo-27053](https://python-all.ru/3/whatsnew/changelog.html): Обновлён скрипт make\_zip.py для корректной генерации ZIP-файла библиотеки.
- [bpo-26268](https://python-all.ru/3/whatsnew/changelog.html): Обновлён скрипт prepare\_ssl.py для обработки выпусков OpenSSL, которые не включают содержимое каталога include (то есть версии 1.0.2e и новее).
- [bpo-26071](https://python-all.ru/3/whatsnew/changelog.html): Собранные с помощью bdist\_wininst бинарные файлы не запускаются и не находят 32-битный Python
- [bpo-26073](https://python-all.ru/3/whatsnew/changelog.html): Обновлён список магических чисел в программе-запускателе (launcher)
- [bpo-26065](https://python-all.ru/3/whatsnew/changelog.html): Исключает venv из библиотеки при генерации встраиваемого дистрибутива.
- [bpo-25022](https://python-all.ru/3/whatsnew/changelog.html): Удалён очень устаревший каталог PC/example\_nt/.

### Tools/Demos

- [bpo-26799](https://python-all.ru/3/whatsnew/changelog.html): Исправлен скрипт python-gdb.py: типы C теперь не запрашиваются один раз при загрузке кода Python, а получаются по требованию. Типы C могут измениться, если python-gdb.py загружается до исполняемого файла Python. Исправление от Thomas Ilsche.
- [bpo-26271](https://python-all.ru/3/whatsnew/changelog.html): Исправлен инструмент Freeze для корректного использования флагов, переданных через configure. Исправление от Daniel Shaulov.
- [bpo-26489](https://python-all.ru/3/whatsnew/changelog.html): Добавлена поддержка распаковки словарей в Tools/parser/unparse.py. Исправление от Guo Ci Teo.
- [bpo-26316](https://python-all.ru/3/whatsnew/changelog.html): Исправлена опечатка в имени переменной в Argument Clinic.
- [bpo-25440](https://python-all.ru/3/whatsnew/changelog.html): Исправлен вывод python-config –extension-suffix.
- [bpo-25154](https://python-all.ru/3/whatsnew/changelog.html): Скрипт pyvenv устарел; вместо него рекомендуется использовать `python3 -m venv`.

### C API

- [bpo-26312](https://python-all.ru/3/whatsnew/changelog.html): Теперь при всех ошибках программирования, связанных с использованием PyArg\_ParseTupleAndKeywords(), возбуждается SystemError. Ранее в некоторых подобных случаях возбуждалось RuntimeError.
- [bpo-26198](https://python-all.ru/3/whatsnew/changelog.html): ValueError теперь возбуждается вместо TypeError при переполнении буфера при разборе строк формата “es#” и “et#”. SystemError теперь возбуждается вместо TypeError при программной ошибке в разборе строки формата.

## Python 3.5.5, финальная версия

*Дата выпуска: 2018-02-04*

Новых изменений в версии 3.5.5 нет.

## Python 3.5.5, кандидат в релизы 1

*Дата выпуска: 2018-01-23*

### Безопасность

- [bpo-32551](https://python-all.ru/3/whatsnew/changelog.html): Изменение инициализации `sys.path[0]` для [bpo-29139](https://python-all.ru/3/whatsnew/changelog.html) вызвало регрессию, выявив несогласованность в том, как инициализируется sys.path при выполнении `__main__` из zip-файла, каталога или другого места импорта. Это считается потенциальной проблемой безопасности, так как может привести к неожиданной загрузке кода привилегированными процессами из каталогов, контролируемых пользователем, в ситуациях, где раньше этого не происходило. Интерпретатор теперь последовательно избегает добавления родительского каталога места импорта в `sys.path` и гарантирует, что никакие другие записи `sys.path` непреднамеренно не изменяются при вставке места импорта, указанного в командной строке. (Изначально сообщено как [bpo-29723](https://python-all.ru/3/whatsnew/changelog.html) для Python 3.6rc1, но в то время было упущено, что предстоящий выпуск Python 3.5.4 также будет затронут)
- [bpo-30657](https://python-all.ru/3/whatsnew/changelog.html): Исправлено возможное целочисленное переполнение в PyBytes\_DecodeEscape, [**CVE 2017-1000158**](https://python-all.ru/3/whatsnew/changelog.html). Оригинальный патч от Jay Bosamiya; адаптирован для Python 3 автором Miro Hrončok.
- [bpo-30947](https://python-all.ru/3/whatsnew/changelog.html): Встроенная копия libexpat обновлена с версии 2.2.1 до 2.2.3 для получения исправлений безопасности.

### Ядро и встроенные модули

- [bpo-31095](https://python-all.ru/3/whatsnew/changelog.html): Исправлен потенциальный сбой во время сборки мусора, вызванный `tp_dealloc`, который не вызывает `PyObject_GC_UnTrack()`.

### Библиотека

- [bpo-32072](https://python-all.ru/3/whatsnew/changelog.html): Исправлены проблемы с двоичными plist-файлами: исправлено сохранение массива байтов. Идентичные объекты будут сохраняться только один раз. Равные ссылки будут загружаться как идентичные объекты. Добавлена поддержка сохранения и загрузки рекурсивных структур данных.
- [bpo-31170](https://python-all.ru/3/whatsnew/changelog.html): expat: обновление libexpat с 2.2.3 до 2.2.4. Исправлено копирование частичных символов для ввода UTF-8 (ошибка libexpat 115): [https://github.com/libexpat/libexpat/issues/115](https://python-all.ru/3/whatsnew/changelog.html)

## Python 3.5.4, финальная версия

*Дата выпуска: 2017-08-07*

### Библиотека

- [bpo-30119](https://python-all.ru/3/whatsnew/changelog.html): ftplib.FTP.putline() теперь возбуждает ValueError для команд, которые содержат CR или LF. Патч от Donghee Na.

## Python 3.5.4, кандидат в релизы 1

*Дата выпуска: 2017-07-23*

### Безопасность

- [bpo-30730](https://python-all.ru/3/whatsnew/changelog.html): Предотвращено внедрение переменных окружения в подпроцессе на Windows. Предотвращена передача других переменных окружения и аргументов командной строки.
- [bpo-30694](https://python-all.ru/3/whatsnew/changelog.html): Копия expat обновлена с 2.2.0 до 2.2.1 для получения исправлений нескольких уязвимостей безопасности, включая: [**CVE 2017-9233**](https://python-all.ru/3/whatsnew/changelog.html) (Бесконечный цикл DoS с внешней сущностью), [**CVE 2016-9063**](https://python-all.ru/3/whatsnew/changelog.html) (Целочисленное переполнение, повторное исправление), [**CVE 2016-0718**](https://python-all.ru/3/whatsnew/changelog.html) (Исправление регрессионных ошибок от исправления в 2.2.0 для [**CVE 2016-0718**](https://python-all.ru/3/whatsnew/changelog.html)) и [**CVE 2012-0876**](https://python-all.ru/3/whatsnew/changelog.html) (Противодействие хеш-флудингу с помощью SipHash). Примечание: [**CVE 2016-5300**](https://python-all.ru/3/whatsnew/changelog.html) (Использование os-специфичных источников энтропии, например getrandom) не влияет на Python, поскольку Python уже получает энтропию от ОС для установки секрета expat с помощью `XML_SetHashSalt()`.
- [bpo-30500](https://python-all.ru/3/whatsnew/changelog.html): Исправлена urllib.parse.splithost() для корректного разбора фрагментов. Например, `splithost('//127.0.0.1#@evil.com/')` теперь корректно возвращает `127.0.0.1` хост, вместо того чтобы рассматривать `@evil.com` как хост в аутентификации (`login@host`).
- [bpo-29591](https://python-all.ru/3/whatsnew/changelog.html): Копия expat обновлена с 2.1.1 до 2.2.0 для получения исправлений [**CVE 2016-0718**](https://python-all.ru/3/whatsnew/changelog.html) и [**CVE 2016-4472**](https://python-all.ru/3/whatsnew/changelog.html). См. [https://sourceforge.net/p/expat/bugs/537/](https://python-all.ru/3/whatsnew/changelog.html) для получения дополнительной информации.

### Ядро и встроенные модули

- [bpo-30876](https://python-all.ru/3/whatsnew/changelog.html): Относительный импорт из незагруженного пакета теперь повторно импортирует пакет вместо того, чтобы завершаться с SystemError. Относительный импорт из не-пакета теперь завершается с ImportError, а не SystemError.
- [bpo-30765](https://python-all.ru/3/whatsnew/changelog.html): Избегание блокировки в pthread\_mutex\_lock(), когда PyThread\_acquire\_lock() запрашивается без блокировки.
- [bpo-27945](https://python-all.ru/3/whatsnew/changelog.html): Исправлены различные ошибки сегментации со словарём при изменении входных коллекций во время поиска, вставки или сравнения. Основано на исправлениях от Duane Griffin и Tim Mitchell.
- [bpo-25794](https://python-all.ru/3/whatsnew/changelog.html): Исправлены type.\_\_setattr\_\_() и type.\_\_delattr\_\_() для неинтернированных имён атрибутов. Основано на патче от Eryk Sun.
- [bpo-29935](https://python-all.ru/3/whatsnew/changelog.html): Исправлены сообщения об ошибках в методе index() кортежа, списка и deque при передаче индексов неверного типа.
- [bpo-28876](https://python-all.ru/3/whatsnew/changelog.html): `bool(range)` работает, даже если `len(range)` вызывает [`OverflowError`](https://python-all.ru/3/library/exceptions.html#OverflowError).
- [bpo-29600](https://python-all.ru/3/whatsnew/changelog.html): Исправлена обёртка возвращаемых значений корутины в StopIteration.
- [bpo-29537](https://python-all.ru/3/whatsnew/changelog.html): Восстановлена совместимость во время выполнения с байткод-файлами, созданными CPython 3.5.0–3.5.2, и изменён цикл выполнения, чтобы избежать проблем, которые могли быть вызваны некорректным вариантом опкода BUILD\_MAP\_UNPACK\_WITH\_CALL, который они могут содержать. Патч от Petr Viktorin, Serhiy Storchaka и Nick Coghlan.
- [bpo-28598](https://python-all.ru/3/whatsnew/changelog.html): Поддержка вызова \_\_rmod\_\_ для подклассов str перед str.\_\_mod\_\_. Патч от Martijn Pieters.
- [bpo-29602](https://python-all.ru/3/whatsnew/changelog.html): Исправлена некорректная обработка знаковых нулей в конструкторе complex для подклассов complex и для входных данных, имеющих метод \_\_complex\_\_. Патч от Serhiy Storchaka.
- [bpo-29347](https://python-all.ru/3/whatsnew/changelog.html): Исправлено возможное разыменование неопределённых указателей при создании объектов weakref.
- [bpo-29438](https://python-all.ru/3/whatsnew/changelog.html): Исправлена проблема use-after-free (использование после освобождения) в словаре совместного использования ключей (key sharing dict).
- [bpo-29319](https://python-all.ru/3/whatsnew/changelog.html): Предотвращение перезаписи sys.path\[0\] функцией RunMainFromImporter.
- [bpo-29337](https://python-all.ru/3/whatsnew/changelog.html): Исправлено возможное BytesWarning при сравнении объектов кода. Предупреждения могли выдаваться во время компиляции.
- [bpo-29478](https://python-all.ru/3/whatsnew/changelog.html): Если указано max\_line\_length=None при использовании политики Compat32, этот параметр больше не игнорируется. Патч от Mircea Cosbuc.

### Библиотека

- [bpo-29403](https://python-all.ru/3/whatsnew/changelog.html): Исправлена автоматическая спецификация (autospec) `unittest.mock`, чтобы она не выдавала ошибку на методах, привязанных к встроенным функциям. Патч от Aaron Gallagher.
- [bpo-30961](https://python-all.ru/3/whatsnew/changelog.html): Исправлено уменьшение счётчика заимствованной ссылки (borrowed reference) в tracemalloc.
- [bpo-30886](https://python-all.ru/3/whatsnew/changelog.html): Исправлена multiprocessing.Queue.join\_thread(): теперь она ждёт завершения потока, даже если поток был запущен тем же процессом, который создал очередь.
- [bpo-29854](https://python-all.ru/3/whatsnew/changelog.html): Исправлено падение (segfault) в readline при использовании опции history-size библиотеки readline. Патч от Nir Soffer.
- [bpo-30807](https://python-all.ru/3/whatsnew/changelog.html): signal.setitimer() может отключать таймер при передаче очень малого значения. Очень малые значения (например, 1e-6) являются допустимыми ненулевыми значениями для setitimer(), который, как указано, принимает интервалы с микросекундным разрешением. Однако на некоторых платформах наша процедура преобразования могла преобразовать 1e-6 в нулевой интервал, тем самым отключая таймер вместо его (пере)планирования.
- [bpo-30441](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка при изменении os.environ во время итерации по нему.
- [bpo-30532](https://python-all.ru/3/whatsnew/changelog.html): Исправлен парсер значений заголовков email, который в определённых случаях удалял сворачиваемые пробельные символы (folding white space).
- [bpo-29169](https://python-all.ru/3/whatsnew/changelog.html): Обновление zlib до версии 1.2.11.
- [bpo-30879](https://python-all.ru/3/whatsnew/changelog.html): os.listdir() и os.scandir() теперь возвращают имена в виде байтов, если были вызваны с аргументом, подобным байтам (bytes-like).
- [bpo-30746](https://python-all.ru/3/whatsnew/changelog.html): Запрещён символ ‘=’ в именах переменных окружения в `os.putenv()` и `os.spawn*()`.
- [bpo-29755](https://python-all.ru/3/whatsnew/changelog.html): Исправлено семейство функций lgettext() в модуле gettext. Теперь они всегда возвращают байты.
- [bpo-30645](https://python-all.ru/3/whatsnew/changelog.html): Исправлено вычисление пути в imp.load\_package() для случаев, когда пакет распространяется только в виде байткода. Патч от Alexandru Ardelean.
- [bpo-23890](https://python-all.ru/3/whatsnew/changelog.html): unittest.TestCase.assertRaises() теперь вручную разрывает циклические ссылки, чтобы объекты не оставались в памяти дольше, чем ожидается.
- [bpo-30149](https://python-all.ru/3/whatsnew/changelog.html): inspect.signature() теперь поддерживает вызываемые объекты с параметрами переменного числа аргументов, обёрнутыми в partialmethod. Патч от Donghee Na.
- [bpo-29931](https://python-all.ru/3/whatsnew/changelog.html): Исправлена проверка сравнения для объектов ipaddress.ip\_interface. Патч от Sanjay Sundaresan.
- [bpo-24484](https://python-all.ru/3/whatsnew/changelog.html): Избежание состояния гонки (race condition) при очистке в multiprocessing.
- [bpo-28994](https://python-all.ru/3/whatsnew/changelog.html): Трассировка (traceback) больше не отображается для SystemExit, возникшего в колбэке, зарегистрированном через atexit.
- [bpo-30508](https://python-all.ru/3/whatsnew/changelog.html): Не логировать исключения при вызове метода “cancel()” задачи/future.
- [bpo-28556](https://python-all.ru/3/whatsnew/changelog.html): Обновления модуля typing: добавлен generic AsyncContextManager, добавлена поддержка ContextManager для всех версий. Оригинальные PR от Jelle Zijlstra и Ivan Levkivskyi.
- [bpo-29870](https://python-all.ru/3/whatsnew/changelog.html): Исправлена утечка SSL-сокетов при прерывании соединения в реализации asyncio/ssl. Патч от Michaël Sghaïer.
- [bpo-29743](https://python-all.ru/3/whatsnew/changelog.html): Закрытие транспорта во время рукопожатия (handshake) приводит к утечке открытого сокета. Патч от Nikolay Kim.
- [bpo-27585](https://python-all.ru/3/whatsnew/changelog.html): Исправлена отмена ожидания (waiter) в asyncio.Lock. Патч от Mathieu Sornay.
- [bpo-30418](https://python-all.ru/3/whatsnew/changelog.html): На Windows subprocess.Popen.communicate() теперь также игнорирует EINVAL на stdin.write(), если дочерний процесс ещё работает, но уже закрыл канал.
- [bpo-30378](https://python-all.ru/3/whatsnew/changelog.html): Исправлена проблема, из-за которой logging.handlers.SysLogHandler не мог обрабатывать IPv6-адреса.
- [bpo-29960](https://python-all.ru/3/whatsnew/changelog.html): Сохранение состояния генератора, когда \_random.Random.setstate() вызывает исключение. Патч от Bryan Olson.
- [bpo-30414](https://python-all.ru/3/whatsnew/changelog.html): Фоновый поток \_feed в multiprocessing.Queue не выходит из главного цикла при исключении.
- [bpo-30003](https://python-all.ru/3/whatsnew/changelog.html): Исправлена обработка escape-символов в кодировке HZ. На основе патча от Ma Lin.
- [bpo-30301](https://python-all.ru/3/whatsnew/changelog.html): Исправлен AttributeError при использовании SimpleQueue.empty() с методами запуска *spawn* и *forkserver*.
- [bpo-30329](https://python-all.ru/3/whatsnew/changelog.html): imaplib и poplib теперь перехватывают ошибку Windows WSAEINVAL (код 10022) на shutdown(SHUT\_RDWR): была предпринята недопустимая операция. Эта ошибка иногда возникает на SSL-соединениях.
- [bpo-30375](https://python-all.ru/3/whatsnew/changelog.html): Предупреждения, выдаваемые при компиляции регулярного выражения, теперь всегда указывают на строку в коде пользователя. Ранее они могли указывать внутрь модуля re, если возникали из групп или условных конструкций.
- [bpo-30048](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ситуация, когда `Task.cancel()` мог игнорироваться, если задача выполняет корутину и корутина вернула управление без дополнительных `await`.
- [bpo-29990](https://python-all.ru/3/whatsnew/changelog.html): Исправлена проверка диапазона в декодере GB18030. Исходный патч от Ma Lin.
- [bpo-26293](https://python-all.ru/3/whatsnew/changelog.html): Изменение вызвано поломкой zipfile. (См. также: [bpo-29094](https://python-all.ru/3/whatsnew/changelog.html))
- [bpo-30243](https://python-all.ru/3/whatsnew/changelog.html): Удалены методы \_\_init\_\_ сканера и кодировщика \_json. Их неправильное использование могло приводить к утечкам памяти или сбоям. Теперь объекты сканера и кодировщика полностью инициализируются в методах \_\_new\_\_.
- [bpo-30185](https://python-all.ru/3/whatsnew/changelog.html): Избежание трассировок KeyboardInterrupt во вспомогательном процессе forkserver при получении Ctrl-C.
- [bpo-28556](https://python-all.ru/3/whatsnew/changelog.html): Различные обновления модуля typing: добавлен тип typing.NoReturn, используется WrapperDescriptorType, мелкие исправления ошибок. Оригинальные PR от Jim Fasarakis-Hilliard и Ivan Levkivskyi.
- [bpo-30205](https://python-all.ru/3/whatsnew/changelog.html): Исправлен getsockname() для непривязанных AF\_UNIX-сокетов на Linux.
- [bpo-30070](https://python-all.ru/3/whatsnew/changelog.html): Исправлены утечки и сбои при обработке ошибок в модуле parser.
- [bpo-30061](https://python-all.ru/3/whatsnew/changelog.html): Исправлены сбои в методах IOBase \_\_next\_\_() и readlines(), когда readline() или \_\_next\_\_() соответственно возвращают объект, не поддерживающий определение размера. Исправлены возможные другие ошибки, вызванные отсутствием проверки результатов PyObject\_Size(), PySequence\_Size() или PyMapping\_Size().
- [bpo-30068](https://python-all.ru/3/whatsnew/changelog.html): \_io.\_IOBase.readlines теперь сначала проверяет, закрыт ли файл, если указана подсказка (hint).
- [bpo-29694](https://python-all.ru/3/whatsnew/changelog.html): Исправлено состояние гонки в pathlib mkdir с флагом parents=True. Патч от Armin Rigo.
- [bpo-29692](https://python-all.ru/3/whatsnew/changelog.html): Исправлено произвольное разрывание цепочки исключений RuntimeError в contextlib.contextmanager. Патч от Siddharth Velankar.
- [bpo-29998](https://python-all.ru/3/whatsnew/changelog.html): Pickling и копирование ImportError теперь сохраняют атрибуты name и path.
- [bpo-29942](https://python-all.ru/3/whatsnew/changelog.html): Исправлен сбой в itertools.chain.from\_iterable при обнаружении длинных последовательностей пустых итераций.
- [bpo-27863](https://python-all.ru/3/whatsnew/changelog.html): Исправлено множество сбоев в ElementTree, вызванных состояниями гонки и неверными типами.
- [bpo-28699](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка в пулах multiprocessing.pool: если исключение возникает в самом начале итерации, оно может быть проглочено или привести к зависанию программы. Патч от Davin Potts и Xiang Zhang.
- [bpo-25803](https://python-all.ru/3/whatsnew/changelog.html): Избежание некорректных ошибок, вызываемых Path.mkdir(exist\_ok=True), когда ОС отдаёт приоритет ошибкам EACCES над EEXIST.
- [bpo-29861](https://python-all.ru/3/whatsnew/changelog.html): Освобождение ссылок на задачи, их аргументы и результаты сразу после завершения в multiprocessing.Pool.
- [bpo-29884](https://python-all.ru/3/whatsnew/changelog.html): faulthandler: восстановление старого sigaltstack при завершении. Патч от Christophe Zeitouny.
- [bpo-25455](https://python-all.ru/3/whatsnew/changelog.html): Исправлены сбои в repr рекурсивных буферизированных файлоподобных объектов.
- [bpo-29800](https://python-all.ru/3/whatsnew/changelog.html): Исправлены сбои в partial.\_\_repr\_\_, если ключи partial.keywords не являются строками. Патч от Michael Seifert.
- [bpo-29742](https://python-all.ru/3/whatsnew/changelog.html): get\_extra\_info() вызывает исключение, если вызывается на закрытом ssl-транспорте. Патч от Nikolay Kim.
- [bpo-8256](https://python-all.ru/3/whatsnew/changelog.html): Исправлена возможная ошибка или сбой input(), если атрибуты 'encoding' или 'errors' sys.stdin или sys.stdout не установлены или не являются строками.
- [bpo-28298](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка, из-за которой массивы ‘Q’, ‘L’ и ‘I’ не принимали большие целые числа (объекты с \_\_int\_\_) в качестве элементов. Исправление от Oren Milman.
- [bpo-29615](https://python-all.ru/3/whatsnew/changelog.html): SimpleXMLRPCDispatcher больше не привязывает KeyError (или любое другое исключение) к исключениям, возникшим в диспетчеризованных методах. Исправление от Petr Motejlek.
- [bpo-29704](https://python-all.ru/3/whatsnew/changelog.html): asyncio.subprocess.SubprocessStreamProtocol больше не закрывается до того, как будут закрыты все каналы.
- [bpo-29703](https://python-all.ru/3/whatsnew/changelog.html): Исправлен asyncio для поддержки создания новых циклов событий в дочерних процессах.
- [bpo-29376](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка утверждения в threading.\_DummyThread.is\_alive().
- [bpo-29110](https://python-all.ru/3/whatsnew/changelog.html): Исправлена утечка объекта файла в aifc.open(), когда файл задан как путь в файловой системе и не является допустимым форматом AIFF. Исправление от Anthony Zhang.
- [bpo-28961](https://python-all.ru/3/whatsnew/changelog.html): Исправлен вспомогательный класс unittest.mock.\_Call: больше не игнорируется параметр name. Исправление от Jiajun Huang.
- [bpo-29532](https://python-all.ru/3/whatsnew/changelog.html): Изменение словаря kwarg, переданного в functools.partial(), больше не влияет на объект partial после его создания.
- [bpo-28556](https://python-all.ru/3/whatsnew/changelog.html): Различные обновления модуля typing: typing.Counter, typing.ChainMap, улучшенное кэширование ABC и другое. Оригинальные PR от Jelle Zijlstra, Ivan Levkivskyi, Manuel Krebber и Łukasz Langa.
- [bpo-29100](https://python-all.ru/3/whatsnew/changelog.html): Исправлена регрессия в datetime.fromtimestamp(), появившаяся в Python 3.6.0: проверка минимального и максимального годов.
- [bpo-29519](https://python-all.ru/3/whatsnew/changelog.html): Исправлено появление исключений в weakref при завершении работы интерпретатора при редком сочетании multiprocessing и пользовательских кодеков.
- [bpo-29416](https://python-all.ru/3/whatsnew/changelog.html): Предотвращение бесконечного цикла в pathlib.Path.mkdir
- [bpo-29444](https://python-all.ru/3/whatsnew/changelog.html): Исправлен выход за границы буфера в методе group() объекта совпадения. На основе патча от WGH.
- [bpo-29335](https://python-all.ru/3/whatsnew/changelog.html): Исправлен subprocess.Popen.wait(), когда дочерний процесс завершился в состоянии остановлен, а не завершён (например, под ptrace).
- [bpo-29290](https://python-all.ru/3/whatsnew/changelog.html): Исправлена регрессия в argparse, из-за которой сообщения помощи переносились на неразрывных пробелах.
- [bpo-28735](https://python-all.ru/3/whatsnew/changelog.html): Исправлено сравнение mock.MagicMock с mock.ANY.
- [bpo-29011](https://python-all.ru/3/whatsnew/changelog.html): Исправлено важное упущение: добавлен Deque в модуль typing.
- [bpo-29219](https://python-all.ru/3/whatsnew/changelog.html): Исправлена бесконечная рекурсия в repr неинициализированных экземпляров ctypes.CDLL.
- [bpo-28969](https://python-all.ru/3/whatsnew/changelog.html): Исправлено состояние гонки в реализации C для functools.lru\_cache. KeyError мог возникать, когда кэшированная функция с полным кэшем одновременно вызывалась из разных потоков с одинаковыми некэшированными аргументами.
- [bpo-29142](https://python-all.ru/3/whatsnew/changelog.html): В urllib.request суффиксы в переменной окружения no\_proxy с ведущими точками снова могут соответствовать связанным именам хостов (например, .b.c соответствует a.b.c). Исправление от Milan Oberkirch.

### Документация

- [bpo-30176](https://python-all.ru/3/whatsnew/changelog.html): Добавлены отсутствующие константы, связанные с атрибутами, в документацию curses.
- [bpo-26985](https://python-all.ru/3/whatsnew/changelog.html): Добавлена отсутствующая информация об объекте кода в документацию inspect.
- [bpo-28929](https://python-all.ru/3/whatsnew/changelog.html): Добавлена ссылка на исходный файл документации на GitHub.
- [bpo-25008](https://python-all.ru/3/whatsnew/changelog.html): Документировать smtpd.py как фактически устаревший и добавить указатель на aiosmtpd, стороннюю замену на основе asyncio.
- [bpo-26355](https://python-all.ru/3/whatsnew/changelog.html): Добавлена каноническая ссылка в заголовке каждой страницы на соответствующую основную версию документации. Исправление от Matthias Bussonnier.
- [bpo-29349](https://python-all.ru/3/whatsnew/changelog.html): Исправлен синтаксис Python 2 в коде для сборки документации.

### Тесты

- [bpo-30822](https://python-all.ru/3/whatsnew/changelog.html): Исправлен парсер командной строки regrtest для возможности передачи -u extralargefile для запуска test\_zipfile64.
- [bpo-30383](https://python-all.ru/3/whatsnew/changelog.html): regrtest: улучшен regrtest и перенесены функции из ветки master. Добавлены опции: –coverage, –testdir, –list-tests (выводит список тестовых файлов, не запуская их), –list-cases (выводит список идентификаторов тестов, не запуская их, [bpo-30523](https://python-all.ru/3/whatsnew/changelog.html)), –matchfile (загружает список фильтров тестов из текстового файла, [bpo-30540](https://python-all.ru/3/whatsnew/changelog.html)), –slowest (псевдоним для –slow). Улучшен вывод: добавлены временная метка, результат теста, текущие выполняемые тесты, сводка “Tests result: xxx” с общей длительностью и т.д. Исправлено обнаружение утечек ссылок в regrtest, –huntrleaks: regrtest теперь прогревает кэши, явно создаёт все внутренние синглтоны, которые создаются по требованию, чтобы предотвратить ложные срабатывания при проверке утечек ссылок. ([bpo-30675](https://python-all.ru/3/whatsnew/changelog.html)).
- [bpo-30357](https://python-all.ru/3/whatsnew/changelog.html): test\_thread: setUp() теперь использует support.threading\_setup() и support.threading\_cleanup() для ожидания завершения потоков, чтобы избежать случайных побочных эффектов на следующие тесты. Первоначальное исправление от Grzegorz Grzywacz.
- [bpo-28087](https://python-all.ru/3/whatsnew/changelog.html): Пропуск test\_asyncore и test\_eintr при сбоях poll на macOS. Пропуск некоторых тестов select.poll при работе на macOS из-за нерешённых проблем с системной функцией poll на некоторых версиях macOS.
- [bpo-30197](https://python-all.ru/3/whatsnew/changelog.html): Улучшены функции swap\_attr() и swap\_item() в модуле test.support. Теперь они работают, когда удаляется заменённый атрибут или элемент внутри оператора with. Старое значение атрибута или элемента (или None, если его не существует) теперь будет присваиваться цели предложения "as", если оно есть.
- [bpo-29571](https://python-all.ru/3/whatsnew/changelog.html): чтобы соответствовать поведению флага `re.LOCALE`, test\_re.test\_locale\_flag теперь использует `locale.getpreferredencoding(False)` для определения кодировки-кандидата для тестового регулярного выражения (что позволяет корректно пропускать тест, когда кодировка локали по умолчанию является многобайтовой).

### Сборка

- [bpo-29243](https://python-all.ru/3/whatsnew/changelog.html): Предотвращает ненужную пересборку Python во время `make test`, `make install` и некоторых других целей make при настройке с `--enable-optimizations`.
- [bpo-23404](https://python-all.ru/3/whatsnew/changelog.html): Больше не выполняется повторная генерация сгенерированных файлов на основе времени изменения файла: теперь это действие явное. Замените `make touch` на `make regen-all`.
- [bpo-29643](https://python-all.ru/3/whatsnew/changelog.html): Исправлено: `--enable-optimization` не работало.

### Windows

- [bpo-30687](https://python-all.ru/3/whatsnew/changelog.html): Поиск msbuild.exe в Windows при сборке вместо vcvarsall.bat.
- [bpo-29392](https://python-all.ru/3/whatsnew/changelog.html): Предотвращение сбоя при передаче недопустимых аргументов в модуль msvcrt.

### C API

- [bpo-27867](https://python-all.ru/3/whatsnew/changelog.html): Функция PySlice\_GetIndicesEx() заменяется макросом, если Py\_LIMITED\_API установлен в значение от 0x03050400 до 0x03060000 (не включая) или 0x03060100 и выше.
- [bpo-29083](https://python-all.ru/3/whatsnew/changelog.html): Исправлено объявление некоторых функций публичного API. PyArg\_VaParse() и PyArg\_VaParseTupleAndKeywords() были недоступны в ограниченном API. PyArg\_ValidateKeywordArguments(), PyArg\_UnpackTuple() и Py\_BuildValue() были недоступны в ограниченном API версии \< 3.3, когда определён PY\_SSIZE\_T\_CLEAN.

## Python 3.5.3 final

*Дата выпуска: 2017-01-17*

Между 3.5.3rc1 и финальной версией 3.5.3 изменений кода не было.

## Python 3.5.3 release candidate 1

*Дата выпуска: 2017-01-02*

### Безопасность

- [bpo-27278](https://python-all.ru/3/whatsnew/changelog.html): Исправление реализации os.urandom() с использованием getrandom() на Linux. Урезание размера до INT\_MAX и циклический сбор случайных байтов до получения достаточного количества, вместо прямого приведения Py\_ssize\_t к int.
- [bpo-22636](https://python-all.ru/3/whatsnew/changelog.html): Устранение проблем внедрения команд оболочки с ctypes.util.find\_library().

### Ядро и встроенные объекты

- [bpo-29073](https://python-all.ru/3/whatsnew/changelog.html): Форматирование bytearray больше не обрезается на первом нулевом байте.
- [bpo-28932](https://python-all.ru/3/whatsnew/changelog.html): Не включать \<sys/random.h\>, если его не существует.
- [bpo-28147](https://python-all.ru/3/whatsnew/changelog.html): Исправление утечки памяти в split-table словарях: setattr() не должен преобразовывать объединённую таблицу в раздельную.
- [bpo-25677](https://python-all.ru/3/whatsnew/changelog.html): Исправление позиционирования каретки синтаксической ошибки для блоков с отступами. Основано на патче Майкла Лейзелла.
- [bpo-29000](https://python-all.ru/3/whatsnew/changelog.html): Исправлено форматирование байтов восьмеричных чисел с нулевым заполнением в альтернативной форме.
- [bpo-28512](https://python-all.ru/3/whatsnew/changelog.html): Исправлена установка атрибута offset у SyntaxError функциями PyErr\_SyntaxLocationEx() и PyErr\_SyntaxLocationObject().
- [bpo-28991](https://python-all.ru/3/whatsnew/changelog.html): functools.lru\_cache() была подвержена трудноуловимой ошибке реентерабельности, вызванной «обезьяньим» патчем функции len().
- [bpo-28648](https://python-all.ru/3/whatsnew/changelog.html): Исправлен сбой в Py\_DecodeLocale() в отладочной сборке на Mac OS X при декодировании астральных символов. Патч от Xiang Zhang.
- [bpo-19398](https://python-all.ru/3/whatsnew/changelog.html): Лишний слеш больше не добавляется к компонентам sys.path в случае пустых компонентов PYTHONPATH во время компиляции.
- [bpo-28426](https://python-all.ru/3/whatsnew/changelog.html): Исправлен потенциальный сбой в PyUnicode\_AsDecodedObject() в отладочной сборке.
- [bpo-23782](https://python-all.ru/3/whatsnew/changelog.html): Исправлена возможная утечка памяти в \_PyTraceback\_Add() и потеря исключения в PyTraceBack\_Here().
- [bpo-28379](https://python-all.ru/3/whatsnew/changelog.html): Добавлены проверки корректности и тесты для PyUnicode\_CopyCharacters(). Исправление от Xiang Zhang.
- [bpo-28376](https://python-all.ru/3/whatsnew/changelog.html): Тип итератора длинных диапазонов теперь зарегистрирован как Iterator. Исправление от Oren Milman.
- [bpo-28376](https://python-all.ru/3/whatsnew/changelog.html): Конструктор range\_iterator теперь проверяет, что шаг (step) не равен 0. Исправление от Oren Milman.
- [bpo-26906](https://python-all.ru/3/whatsnew/changelog.html): Разрешение специальных методов неинициализированного типа теперь вызывает неявную инициализацию типа вместо ошибки.
- [bpo-18287](https://python-all.ru/3/whatsnew/changelog.html): PyType\_Ready() теперь проверяет, что tp\_name не равен NULL. Исходное исправление от Niklas Koep.
- [bpo-24098](https://python-all.ru/3/whatsnew/changelog.html): Исправлена возможная аварийная остановка при изменении AST во время его компиляции.
- [bpo-28350](https://python-all.ru/3/whatsnew/changelog.html): Строковые константы с нулевым символом больше не интернируются.
- [bpo-26617](https://python-all.ru/3/whatsnew/changelog.html): Исправлена аварийная остановка при запуске сборщика мусора во время выполнения колбэков слабых ссылок.
- [bpo-27942](https://python-all.ru/3/whatsnew/changelog.html): Строковые константы теперь интернируются рекурсивно в кортежах и неизменяемых множествах.
- [bpo-21578](https://python-all.ru/3/whatsnew/changelog.html): Исправлено вводящее в заблуждение сообщение об ошибке при вызове ImportError с недопустимыми именованными аргументами.
- [bpo-28203](https://python-all.ru/3/whatsnew/changelog.html): Исправлен неверный тип в сообщении об ошибке из `complex(1.0, {2:3})`. Исправление от Soumya Sharma.
- [bpo-27955](https://python-all.ru/3/whatsnew/changelog.html): Запасной вариант – чтение устройства /dev/urandom, если системный вызов getrandom() завершается с EPERM, например, при блокировке SECCOMP.
- [bpo-28131](https://python-all.ru/3/whatsnew/changelog.html): Исправлена регрессия в zipimport.compile\_source(). zipimport должен использовать тот же уровень оптимизации, что и интерпретатор.
- [bpo-25221](https://python-all.ru/3/whatsnew/changelog.html): Исправлен повреждённый результат PyLong\_FromLong(0) при компиляции Python с NSMALLPOSINTS = 0.
- [bpo-25758](https://python-all.ru/3/whatsnew/changelog.html): Предотвращает излишнее кодирование имени файла в zipimport (исправление от Eryk Sun)
- [bpo-28189](https://python-all.ru/3/whatsnew/changelog.html): dictitems\_contains больше не игнорирует ошибки сравнения. (Исправление от Xiang Zhang)
- [bpo-27812](https://python-all.ru/3/whatsnew/changelog.html): Корректно очищается обратная ссылка на генератор из его фрейма, чтобы предотвратить аварийные остановки в frame.clear().
- [bpo-27811](https://python-all.ru/3/whatsnew/changelog.html): Исправлена аварийная остановка при финализации корутины, которая не была ожидана (awaited), с включённым режимом «предупреждения как ошибки».
- [bpo-27587](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ещё одна проблема, найденная PVS-Studio: проверка нулевого указателя после использования 'def' в \_PyState\_AddModule(). Первоначальное исправление от Christian Heimes.
- [bpo-26020](https://python-all.ru/3/whatsnew/changelog.html): Порядок вычисления литерала множества не соответствовал задокументированному поведению.
- [bpo-27782](https://python-all.ru/3/whatsnew/changelog.html): Импорт модуля-расширения с несколькими фазами теперь корректно позволяет использовать поле `m_methods` для добавления функций уровня модуля в экземпляры типов, не являющихся модулями, возвращаемые из `Py_create_mod`. Исправление от Xiang Zhang.
- [bpo-27936](https://python-all.ru/3/whatsnew/changelog.html): Функция round() принимала второй аргумент None для одних типов, но не для других. Исправлена несогласованность – теперь None принимается для всех числовых типов.
- [bpo-27487](https://python-all.ru/3/whatsnew/changelog.html): Предупреждение, если аргумент подмодуля для «python -m» или runpy.run\_module() найден в sys.modules после импорта родительских пакетов, но до выполнения подмодуля.
- [bpo-27558](https://python-all.ru/3/whatsnew/changelog.html): Исправлена SystemError в реализации оператора «raise». В совершенно новом потоке теперь возбуждается RuntimeError, так как нет активного исключения для повторного возбуждения. Исправление написано Xiang Zhang.
- [bpo-27419](https://python-all.ru/3/whatsnew/changelog.html): Стандартная \_\_import\_\_() больше не ищет «\_\_import\_\_» в globals или builtins для импорта подмодулей или «from import». Исправлена обработка ошибки нестрокового имени пакета.
- [bpo-27083](https://python-all.ru/3/whatsnew/changelog.html): Учтена переменная окружения PYTHONCASEOK в Windows.
- [bpo-27514](https://python-all.ru/3/whatsnew/changelog.html): Слишком много статически вложенных блоков теперь вызывает SyntaxError вместо SystemError.
- [bpo-27473](https://python-all.ru/3/whatsnew/changelog.html): Исправлено возможное целочисленное переполнение при конкатенации bytes и bytearray. Исправление от Xiang Zhang.
- [bpo-27507](https://python-all.ru/3/whatsnew/changelog.html): Добавлена проверка целочисленного переполнения в bytearray.extend(). Исправление от Xiang Zhang.
- [bpo-27581](https://python-all.ru/3/whatsnew/changelog.html): Не полагаться на обёртывание для проверки переполнения в PySequence\_Tuple(). Исправление от Xiang Zhang.
- [bpo-27443](https://python-all.ru/3/whatsnew/changelog.html): \_\_length\_hint\_\_() итераторов bytearray больше не возвращает отрицательное целое число для изменённого bytearray.
- [bpo-27942](https://python-all.ru/3/whatsnew/changelog.html): Исправлена утечка памяти в codeobject.c

### Библиотека

- [bpo-15812](https://python-all.ru/3/whatsnew/changelog.html): inspect.getframeinfo() теперь корректно показывает первую строку контекста. Патч от Sam Breese.
- [bpo-29094](https://python-all.ru/3/whatsnew/changelog.html): Смещения в ZIP-файле, созданном с внешним объектом файла и режимами «w» и «x», теперь отсчитываются от начала файла.
- [bpo-13051](https://python-all.ru/3/whatsnew/changelog.html): Исправлены ошибки рекурсии в большом или изменённом curses.textpad.Textbox. Основано на патче от Tycho Andersen.
- [bpo-29119](https://python-all.ru/3/whatsnew/changelog.html): Исправлены слабые ссылки в чистой реализации Python метода move\_to\_end() в collections.OrderedDict. Предложено Andra Bogildea.
- [bpo-9770](https://python-all.ru/3/whatsnew/changelog.html): Предикаты curses.ascii теперь корректно работают с отрицательными целыми числами.
- [bpo-28427](https://python-all.ru/3/whatsnew/changelog.html): Старые ключи не должны удалять новые значения из WeakValueDictionary при сборке из другого потока.
- [bpo-28923](https://python-all.ru/3/whatsnew/changelog.html): Удалены артефакты редактора из Tix.py.
- [bpo-28871](https://python-all.ru/3/whatsnew/changelog.html): Исправлен сбой при освобождении глубокого ElementTree.
- [bpo-19542](https://python-all.ru/3/whatsnew/changelog.html): Исправлены ошибки в WeakValueDictionary.setdefault() и WeakValueDictionary.pop(), когда сборка мусора происходит в другом потоке.
- [bpo-20191](https://python-all.ru/3/whatsnew/changelog.html): Исправлен сбой в resource.prlimit() при передаче последовательности, не владеющей своими элементами, в качестве ограничений.
- [bpo-28779](https://python-all.ru/3/whatsnew/changelog.html): multiprocessing.set\_forkserver\_preload() приводил к сбою процесса forkserver, если предварительно загруженный модуль создавал экземпляры некоторых объектов multiprocessing, таких как блокировки.
- [bpo-28847](https://python-all.ru/3/whatsnew/changelog.html): dbm.dumb теперь поддерживает чтение файлов только для чтения и больше не записывает индексный файл, если он не был изменён.
- [bpo-25659](https://python-all.ru/3/whatsnew/changelog.html): В ctypes предотвращён сбой при вызове методов from\_buffer() и from\_buffer\_copy() для абстрактных классов, таких как Array.
- [bpo-28732](https://python-all.ru/3/whatsnew/changelog.html): Исправлен сбой в os.spawnv() при отсутствии элементов в args.
- [bpo-28485](https://python-all.ru/3/whatsnew/changelog.html): Всегда вызывать ValueError для отрицательного параметра compileall.compile\_dir(workers=…), даже если многопоточность недоступна.
- [bpo-28387](https://python-all.ru/3/whatsnew/changelog.html): Исправлен возможный сбой в деаллокаторе \_io.TextIOWrapper, когда сборщик мусора вызывается в другом потоке. Основано на патче от Sebastian Cufre.
- [bpo-27517](https://python-all.ru/3/whatsnew/changelog.html): Компрессор и декомпрессор LZMA больше не вызывают исключения при двукратном получении пустых данных. Патч от Benjamin Fogle.
- [bpo-28549](https://python-all.ru/3/whatsnew/changelog.html): Исправлен сегфолт в curses.addch() с ncurses6.
- [bpo-28449](https://python-all.ru/3/whatsnew/changelog.html): tarfile.open() с режимом «r» или «r:» теперь сначала пытается открыть tar-файл со сжатием, а затем без сжатия. В противном случае с ignore\_zeros=True был 50% шанс неудачи.
- [bpo-23262](https://python-all.ru/3/whatsnew/changelog.html): Модуль webbrowser теперь поддерживает Firefox 36+ и производные браузеры. Основано на патче от Oleg Broytman.
- [bpo-27939](https://python-all.ru/3/whatsnew/changelog.html): Исправлены ошибки в tkinter.ttk.LabeledScale и tkinter.Scale, вызванные внутренним представлением шкалы в Tk как значения с плавающей запятой. tkinter.IntVar теперь работает, если для базовой переменной Tk установлено значение с плавающей запятой.
- [bpo-28255](https://python-all.ru/3/whatsnew/changelog.html): calendar.TextCalendar().prmonth() больше не выводит пробел в начале новой строки после печати календаря месяца. Патч от Xiang Zhang.
- [bpo-20491](https://python-all.ru/3/whatsnew/changelog.html): Класс textwrap.TextWrapper теперь учитывает неразрывные пробелы. Основано на патче от Kaarle Ritvanen.
- [bpo-28353](https://python-all.ru/3/whatsnew/changelog.html): os.fwalk() больше не завершается ошибкой на битых ссылках.
- [bpo-25464](https://python-all.ru/3/whatsnew/changelog.html): Исправлен HList.header\_exists() в модуле tkinter.tix путём добавления обходного пути для ошибки библиотеки Tix.
- [bpo-28488](https://python-all.ru/3/whatsnew/changelog.html): shutil.make\_archive() больше не добавляет запись «./» в ZIP-архив.
- [bpo-24452](https://python-all.ru/3/whatsnew/changelog.html): Добавлена поддержка Chrome в webbrowser на Mac OS X.
- [bpo-20766](https://python-all.ru/3/whatsnew/changelog.html): Исправлена утечка ссылок в pdb при обработке обработчиков SIGINT.
- [bpo-26293](https://python-all.ru/3/whatsnew/changelog.html): Исправлена запись ZIP-файлов, которые начинаются не с начала файла. Смещения в ZIP-файле теперь отсчитываются от начала архива в соответствии со спецификацией.
- [bpo-28321](https://python-all.ru/3/whatsnew/changelog.html): Исправлена запись символов не из BMP в бинарном формате в plistlib.
- [bpo-28322](https://python-all.ru/3/whatsnew/changelog.html): Исправлены возможные сбои при распаковке объектов itertools из некорректных данных pickle. Основано на патче от John Leitch.
- Исправлены возможные целочисленные переполнения и крахи в модуле mmap при нестандартных сценариях использования.
- [bpo-1703178](https://python-all.ru/3/whatsnew/changelog.html): Исправлена возможность передачи опции –link-objects команде build\_ext из distutils.
- [bpo-28253](https://python-all.ru/3/whatsnew/changelog.html): Исправлены функции календаря для крайних месяцев: 0001-01 и 9999-12. Методы itermonthdays() и itermonthdays2() переписаны так, что они не вызывают itermonthdates(), что могло приводить к переполнению или потере точности datetime.date.
- [bpo-28275](https://python-all.ru/3/whatsnew/changelog.html): Исправлена возможная ошибка использования после освобождения (use-after-free) в методах decompress() классов LZMADecompressor и BZ2Decompressor. Оригинальный патч от John Leitch.
- [bpo-27897](https://python-all.ru/3/whatsnew/changelog.html): Исправлена возможная аварийная остановка в sqlite3.Connection.create\_collation() при передаче недопустимого строкоподобного объекта в качестве имени. Патч от Xiang Zhang.
- [bpo-18893](https://python-all.ru/3/whatsnew/changelog.html): Исправлена некорректная обработка исключений в Lib/ctypes/macholib/dyld.py. Патч от Madison May.
- [bpo-27611](https://python-all.ru/3/whatsnew/changelog.html): Исправлена поддержка корневого окна по умолчанию в модуле tkinter.tix.
- [bpo-27348](https://python-all.ru/3/whatsnew/changelog.html): В модуле traceback восстановлено форматирование сообщений об исключениях вида «Исключение: None». Это исправляет регрессию, появившуюся в 3.5a2.
- [bpo-25651](https://python-all.ru/3/whatsnew/changelog.html): Разрешено использование ложных значений (false values) для параметра msg в subTest().
- [bpo-27932](https://python-all.ru/3/whatsnew/changelog.html): Предотвращена утечка памяти в win32\_ver().
- Исправлена ошибка UnboundLocalError в socket.\_sendfile\_use\_sendfile.
- [bpo-28075](https://python-all.ru/3/whatsnew/changelog.html): Добавлена проверка на ERROR\_ACCESS\_DENIED в реализации os.stat() для Windows. Патч от Eryk Sun.
- [bpo-25270](https://python-all.ru/3/whatsnew/changelog.html): Предотвращено возбуждение SystemError функцией codecs.escape\_encode() при передаче пустой последовательности байтов.
- [bpo-28181](https://python-all.ru/3/whatsnew/changelog.html): Получение antigravity через HTTPS. Патч от Kaartic Sivaraam.
- [bpo-25895](https://python-all.ru/3/whatsnew/changelog.html): Включение поддержки схем URL WebSocket в urllib.parse.urljoin. Патч от Gergely Imreh и Markus Holtermann.
- [bpo-27599](https://python-all.ru/3/whatsnew/changelog.html): Исправлено переполнение буфера в binascii.b2a\_qp() и binascii.a2b\_qp().
- [bpo-19003](https://python-all.ru/3/whatsnew/changelog.html): Модуль email.generator теперь заменяет только `\r` и/или `\n` окончания строк в соответствии с RFC, вместо всех концов строк Unicode.
- [bpo-28019](https://python-all.ru/3/whatsnew/changelog.html): itertools.count() больше не округляет нецелый шаг в диапазоне от 1.0 до 2.0 до 1.
- [bpo-25969](https://python-all.ru/3/whatsnew/changelog.html): Обновлена грамматика lib2to3 для поддержки обобщённой распаковки, добавленной в Python 3.5.
- [bpo-14977](https://python-all.ru/3/whatsnew/changelog.html): mailcap теперь соблюдает порядок строк в файлах mailcap (принцип «первое совпадение»), как того требует RFC 1542. Патч от Michael Lazar.
- [bpo-24594](https://python-all.ru/3/whatsnew/changelog.html): Выполняется проверка параметра persist при открытии базы данных MSI.
- [bpo-17582](https://python-all.ru/3/whatsnew/changelog.html): xml.etree.ElementTree теперь сохраняет пробелы в атрибутах. (Патч от Duane Griffin. Проверено и одобрено Stefan Behnel.)
- [bpo-28047](https://python-all.ru/3/whatsnew/changelog.html): Исправлен расчет длины строки, используемой для base64 CTE в новых политиках email.
- [bpo-27445](https://python-all.ru/3/whatsnew/changelog.html): Не передавать str(\_charset) в MIMEText.set\_payload(). Патч от Claude Paroz.
- [bpo-22450](https://python-all.ru/3/whatsnew/changelog.html): urllib теперь включает заголовок `Accept: */*` среди заголовков по умолчанию. Это делает результаты запросов REST API более последовательными и предсказуемыми, особенно при использовании прокси-серверов.
- lib2to3.pgen3.driver.load\_grammar() теперь создаёт стабильный файл кэша между запусками при одинаковом входном файле Grammar.txt независимо от настройки рандомизации хеша.
- [bpo-27570](https://python-all.ru/3/whatsnew/changelog.html): Избегать вызовов memcpy() и подобных с нулевой длиной и нулевыми указателями источника в модулях «ctypes» и «array».
- [bpo-22233](https://python-all.ru/3/whatsnew/changelog.html): Разрывать строки заголовков email *только* по символам CR и LF, указанным в RFC, а не по произвольным концовкам строк Unicode. Также исправлена ошибка при парсинге HTTP-заголовков.
- [bpo-27988](https://python-all.ru/3/whatsnew/changelog.html): Исправлена некорректная мутация списка payload в email.iter\_attachments.
- [bpo-27691](https://python-all.ru/3/whatsnew/changelog.html): Исправлен разбор полей GEN\_RID альтернативных имён субъекта в сертификатах X.509 в модуле ssl.
- [bpo-27850](https://python-all.ru/3/whatsnew/changelog.html): Удалить 3DES из списка шифров по умолчанию в модуле ssl для противодействия атаке sweet32 ([**CVE 2016-2183**](https://python-all.ru/3/whatsnew/changelog.html)).
- [bpo-27766](https://python-all.ru/3/whatsnew/changelog.html): Добавить ChaCha20 Poly1305 в список шифров по умолчанию в модуле ssl. (Требуется OpenSSL 1.1.0 или LibreSSL).
- [bpo-26470](https://python-all.ru/3/whatsnew/changelog.html): Перенос модулей ssl и hashlib на OpenSSL 1.1.0.
- Удалена поддержка передачи файлового дескриптора в os.access. Раньше это никогда не работало, но и исключения не вызывало.
- [bpo-12885](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка в distutils при обнаружении символической ссылки.
- [bpo-27881](https://python-all.ru/3/whatsnew/changelog.html): Исправлены возможные ошибки при установке sqlite3.Connection.isolation\_level. Основано на патче Сян Чжана.
- [bpo-27861](https://python-all.ru/3/whatsnew/changelog.html): Исправлен сбой в sqlite3.Connection.cursor(), когда фабрика создаёт не курсор. Патч Сян Чжана.
- [bpo-19884](https://python-all.ru/3/whatsnew/changelog.html): Избегайте ложного вывода в OS X с Gnu Readline.
- [bpo-27706](https://python-all.ru/3/whatsnew/changelog.html): Восстановлено детерминированное поведение random.Random().seed() для строковых начальных значений при использовании версии посева 1. Это позволяет последовательностям вызовов random() точно соответствовать тем, что были в Python 2. Патч Нофар Шнайдер.
- [bpo-10513](https://python-all.ru/3/whatsnew/changelog.html): Исправлена регрессия в Connection.commit(). Операторы не должны сбрасываться после фиксации.
- Новая версия typing.py из [https://github.com/python/typing](https://python-all.ru/3/whatsnew/changelog.html): Collection (только для 3.6) ([bpo-27598](https://python-all.ru/3/whatsnew/changelog.html)). Добавлен FrozenSet в \_\_all\_\_ (upstream #261). Исправлен сбой в \_get\_type\_vars() (upstream #259). Удалено ограничение dict в ForwardRef.\_eval\_type (upstream #252).
- [bpo-27539](https://python-all.ru/3/whatsnew/changelog.html): Исправлен ненормализованный результат `Fraction.__pow__` в случае отрицательного показателя и отрицательного основания.
- [bpo-21718](https://python-all.ru/3/whatsnew/changelog.html): cursor.description теперь доступен для запросов с CTE.
- [bpo-2466](https://python-all.ru/3/whatsnew/changelog.html): posixpath.ismount теперь правильно распознаёт точки монтирования, доступ к которым у пользователя отсутствует.
- [bpo-27773](https://python-all.ru/3/whatsnew/changelog.html): Исправлены некоторые ошибки управления памятью для server\_hostname в \_ssl.wrap\_socket().
- [bpo-26750](https://python-all.ru/3/whatsnew/changelog.html): unittest.mock.create\_autospec() теперь корректно работает для подклассов property() и других дескрипторов данных.
- В модуле curses теперь вызывается ошибка, если в window.getstr() или window.instr() передано отрицательное значение.
- [bpo-27783](https://python-all.ru/3/whatsnew/changelog.html): Исправлена возможная работа с неинициализированной памятью в operator.methodcaller.
- [bpo-27774](https://python-all.ru/3/whatsnew/changelog.html): Исправлен возможный Py\_DECREF на не принадлежащем объекте в \_sre.
- [bpo-27760](https://python-all.ru/3/whatsnew/changelog.html): Исправлено возможное целочисленное переполнение в binascii.b2a\_qp.
- [bpo-27758](https://python-all.ru/3/whatsnew/changelog.html): Исправлено возможное целочисленное переполнение в модуле \_csv для больших длин записей.
- [bpo-27568](https://python-all.ru/3/whatsnew/changelog.html): Предотвращение атаки HTTPoxy ([**CVE 2016-1000110**](https://python-all.ru/3/whatsnew/changelog.html)). Игнорируйте переменную HTTP\_PROXY, если установлено окружение REQUEST\_METHOD, что указывает на выполнение скрипта в режиме CGI.
- [bpo-27656](https://python-all.ru/3/whatsnew/changelog.html): Не предполагать, что sched.h определяет какие-либо константы SCHED\_\*.
- [bpo-27130](https://python-all.ru/3/whatsnew/changelog.html): В модуле «zlib» исправлена работа с большими буферами (обычно 4 ГиБ) при сжатии и распаковке. Ранее входные данные были ограничены 4 ГиБ, а операции сжатия и распаковки не обрабатывали результаты размером 4 ГиБ должным образом.
- [bpo-27533](https://python-all.ru/3/whatsnew/changelog.html): Освобождение GIL в nt.\_isdir
- [bpo-17711](https://python-all.ru/3/whatsnew/changelog.html): Исправлена распаковка по постоянному идентификатору с протоколом 0. Оригинальный патч Алессандро Вассалотти.
- [bpo-27522](https://python-all.ru/3/whatsnew/changelog.html): Избежать непреднамеренной циклической ссылки в email.feedparser.
- [bpo-26844](https://python-all.ru/3/whatsnew/changelog.html): Исправлено сообщение об ошибке для imp.find\_module(), чтобы оно ссылалось на «path» вместо «name». Патч Льва Максимова.
- [bpo-23804](https://python-all.ru/3/whatsnew/changelog.html): Исправлены вызовы recv() с нулевой длиной в SSL: теперь они не блокируются и не вызывают ошибку о нечистом EOF.
- [bpo-27466](https://python-all.ru/3/whatsnew/changelog.html): Изменён формат времени, возвращаемый http.cookie.time2netscape, чтобы соответствовать netscape-формату cookie и быть согласованным с документацией.
- [bpo-26664](https://python-all.ru/3/whatsnew/changelog.html): Исправлен activate.fish – удалено неправильное использование `$`.
- [bpo-22115](https://python-all.ru/3/whatsnew/changelog.html): Исправлена трассировка переменных Tkinter: trace\_vdelete() с неправильным режимом больше не ломает трассировку, trace\_vinfo() теперь всегда возвращает список пар строк, трассировка в режиме «u» теперь работает.
- Исправлена проблема области видимости в importlib.util.LazyLoader, из-за которой возникало UnboundLocalError при ленивой загрузке модуля, уже помещённого в sys.modules.
- [bpo-27079](https://python-all.ru/3/whatsnew/changelog.html): Исправлены функции curses.ascii isblank(), iscntrl() и ispunct().
- [bpo-26754](https://python-all.ru/3/whatsnew/changelog.html): Некоторые функции (compile() и т.д.) принимали аргумент filename, закодированный как итерируемый объект из целых чисел. Теперь принимаются только строки и байтоподобные объекты.
- [bpo-27048](https://python-all.ru/3/whatsnew/changelog.html): Предотвращает сбой distutils в Windows, когда переменные окружения содержат символы, отличные от ASCII.
- [bpo-27330](https://python-all.ru/3/whatsnew/changelog.html): Исправлены возможные утечки в модуле ctypes.
- [bpo-27238](https://python-all.ru/3/whatsnew/changelog.html): Избавление от голых except в модуле turtle. Патч от Jelle Zijlstra.
- [bpo-27122](https://python-all.ru/3/whatsnew/changelog.html): Когда исключение возникает внутри контекста, управляемого contextlib.ExitStack(), и один из генераторов выходного стека перехватывает его и возбуждает в цепочке, не возбуждайте повторно исходное исключение при выходе – пропустите новое цепочечное. Это позволяет избежать ошибки [**PEP 479**](https://python-all.ru/3/whatsnew/changelog.html), описанной в issue25782.
- [bpo-26386](https://python-all.ru/3/whatsnew/changelog.html): Исправлены операции выбора ttk.TreeView с идентификаторами элементов, содержащими пробелы.
- [bpo-16182](https://python-all.ru/3/whatsnew/changelog.html): Исправлены различные функции в модуле «readline» для использования кодировки локали, а также исправлены get\_begidx() и get\_endidx() для возврата индексов кодовых точек.
- [bpo-27392](https://python-all.ru/3/whatsnew/changelog.html): Добавлен метод loop.connect\_accepted\_socket(). Патч от Jim Fulton.
- [bpo-27930](https://python-all.ru/3/whatsnew/changelog.html): Улучшено поведение logging.handlers.QueueListener. Спасибо Paulo Andrade и Petr Viktorin за анализ и патч.
- [bpo-21201](https://python-all.ru/3/whatsnew/changelog.html): Улучшена читаемость сообщения об ошибке multiprocessing. Спасибо Wojciech Walczak за патч.
- [bpo-27456](https://python-all.ru/3/whatsnew/changelog.html): asyncio: установлен TCP\_NODELAY по умолчанию.
- [bpo-27906](https://python-all.ru/3/whatsnew/changelog.html): Исправлено истощение приёма сокетов при высоком TCP-трафике. Патч от Kevin Conway.
- [bpo-28174](https://python-all.ru/3/whatsnew/changelog.html): Обработка случая, когда SO\_REUSEPORT не поддерживается должным образом. Патч от Seth Michael Larson.
- [bpo-26654](https://python-all.ru/3/whatsnew/changelog.html): Добавлена проверка functools.partial в asyncio.Handle.\_\_repr\_\_. Патч от iceboy.
- [bpo-26909](https://python-all.ru/3/whatsnew/changelog.html): Исправлен медленный ввод-вывод каналов в asyncio. Патч от INADA Naoki.
- [bpo-28176](https://python-all.ru/3/whatsnew/changelog.html): Исправлено состояние гонки колбэков в asyncio.SelectorLoop.sock\_connect.
- [bpo-27759](https://python-all.ru/3/whatsnew/changelog.html): Исправлено некорректное удержание недействительных файловых дескрипторов селекторами. Патч от Mark Williams.
- [bpo-28368](https://python-all.ru/3/whatsnew/changelog.html): Отказ от наблюдения за процессами, если к наблюдателю дочерних процессов не прикреплён цикл. Патч от Vincent Michel.
- [bpo-28369](https://python-all.ru/3/whatsnew/changelog.html): Возбуждать RuntimeError, когда файловый дескриптор транспорта используется с add\_reader, add\_writer и т.д.
- [bpo-28370](https://python-all.ru/3/whatsnew/changelog.html): Ускорение asyncio.StreamReader.readexactly. Патч от Коренберг Марк.
- [bpo-28371](https://python-all.ru/3/whatsnew/changelog.html): Помечено как устаревшее передачу asyncio.Handles в run\_in\_executor.
- [bpo-28372](https://python-all.ru/3/whatsnew/changelog.html): Исправлено asyncio для поддержки форматирования не-Python корутин.
- [bpo-28399](https://python-all.ru/3/whatsnew/changelog.html): Удаление UNIX-сокета из файловой системы перед привязкой. Патч от Коренберг Марк.
- [bpo-27972](https://python-all.ru/3/whatsnew/changelog.html): Запрещено задачам ожидать самих себя.
- [bpo-26923](https://python-all.ru/3/whatsnew/changelog.html): Исправлено asyncio.Gather: отказ от отмены после завершения всех дочерних задач. Патч от Johannes Ebke.
- [bpo-26796](https://python-all.ru/3/whatsnew/changelog.html): Не настраивать количество рабочих потоков для исполнителя пула потоков по умолчанию. Первоначальный патч от Hans Lawrenz.
- [bpo-28600](https://python-all.ru/3/whatsnew/changelog.html): Оптимизация loop.call\_soon().
- [bpo-28613](https://python-all.ru/3/whatsnew/changelog.html): Исправлено get\_event\_loop(): возвращает текущий цикл при вызове из корутин/колбэков.
- [bpo-28639](https://python-all.ru/3/whatsnew/changelog.html): Исправлено inspect.isawaitable: всегда возвращает bool. Патч от Justin Mayfield.
- [bpo-28652](https://python-all.ru/3/whatsnew/changelog.html): Методы цикла теперь отклоняют типы сокетов, которые они не поддерживают.
- [bpo-28653](https://python-all.ru/3/whatsnew/changelog.html): Исправлена утечка ссылок в functools.lru\_cache.
- [bpo-28703](https://python-all.ru/3/whatsnew/changelog.html): Исправлено asyncio.iscoroutinefunction для обработки объектов Mock.
- [bpo-24142](https://python-all.ru/3/whatsnew/changelog.html): Чтение повреждённого конфигурационного файла оставляло парсер в нерабочем состоянии. Оригинальный патч от Florian Höch.
- [bpo-28990](https://python-all.ru/3/whatsnew/changelog.html): Исправлена проблема зависания SSL при закрытии соединения до завершения рукопожатия. (Патч от HoHo-Ho)

### IDLE

- [bpo-15308](https://python-all.ru/3/whatsnew/changelog.html): Добавлена команда «прервать выполнение» (^C) в меню Shell. Патч от Roger Serwy, обновлён Bayard Randel.
- [bpo-27922](https://python-all.ru/3/whatsnew/changelog.html): Прекращено мерцание GUI-виджетов в тестах IDLE на экране.
- Добавлена версия в заголовок окна справки IDLE.
- [bpo-25564](https://python-all.ru/3/whatsnew/changelog.html): В разделе о различиях IDLE и консоли упомянуто, что использование exec означает, что \_\_builtins\_\_ определён для каждого оператора.
- [bpo-27714](https://python-all.ru/3/whatsnew/changelog.html): text\_textview и test\_autocomplete теперь проходят при повторном запуске в том же процессе. Это происходит, когда test\_idle падает при запуске с опцией -w, но без -jn. Исправлено предупреждение из test\_config.
- [bpo-25507](https://python-all.ru/3/whatsnew/changelog.html): IDLE больше не выполняет ошибочный код из-за своих импортов tkinter. Пользователи должны включать те же импорты, которые требуются для прямого запуска в Python.
- [bpo-27452](https://python-all.ru/3/whatsnew/changelog.html): Добавлены счётчик строк и CRC в дамп теста configHandler в IDLE.
- [bpo-27365](https://python-all.ru/3/whatsnew/changelog.html): Разрешены не-ASCII символы в IDLE NEWS.txt для имён участников.
- [bpo-27245](https://python-all.ru/3/whatsnew/changelog.html): IDLE: корректное удаление пользовательских тем и привязок клавиш. Ранее при запуске IDLE из консоли или через import выдавался каскад предупреждений. Патч от Serhiy Storchaka.

### C API

- [bpo-28808](https://python-all.ru/3/whatsnew/changelog.html): PyUnicode\_CompareWithASCIIString() теперь никогда не вызывает исключений.
- [bpo-26754](https://python-all.ru/3/whatsnew/changelog.html): PyUnicode\_FSDecoder() принимал аргумент имени файла, закодированный как итерируемый объект из целых чисел. Теперь принимаются только строки и байтоподобные объекты.

### Documentation

- [bpo-28513](https://python-all.ru/3/whatsnew/changelog.html): Документирован интерфейс командной строки zipfile.

### Tests

- [bpo-28950](https://python-all.ru/3/whatsnew/changelog.html): Запрещено комбинировать -j0 с -T/-l/-M в аргументах командной строки regrtest.
- [bpo-28666](https://python-all.ru/3/whatsnew/changelog.html): Теперь test.support.rmtree может удалять каталоги, недоступные для записи или чтения.
- [bpo-23839](https://python-all.ru/3/whatsnew/changelog.html): Различные кеши теперь очищаются перед запуском каждого тестового файла.
- [bpo-28409](https://python-all.ru/3/whatsnew/changelog.html): regrtest: исправлен парсер аргументов командной строки.
- [bpo-27787](https://python-all.ru/3/whatsnew/changelog.html): Вызов gc.collect() перед проверкой каждого теста на «зависшие потоки», поскольку зависшие потоки являются слабыми ссылками.
- [bpo-27369](https://python-all.ru/3/whatsnew/changelog.html): В test\_pyexpat избегаем проверки деталей сообщения об ошибке, которые изменились в Expat 2.2.0.

### Tools/Demos

- [bpo-27952](https://python-all.ru/3/whatsnew/changelog.html): Исправлена работа Tools/scripts/fixcid.py с Python 3 и текущим модулем «re», устранены некорректные экранирования обратной косой чертой в Python, а также исправлена ошибка разбора экранированных кавычек C.
- [bpo-27332](https://python-all.ru/3/whatsnew/changelog.html): Исправлен тип первого аргумента функций уровня модуля, генерируемых Argument Clinic. Патч от Petr Viktorin.
- [bpo-27418](https://python-all.ru/3/whatsnew/changelog.html): Исправлен Tools/importbench/importbench.py.

### Windows

- [bpo-28251](https://python-all.ru/3/whatsnew/changelog.html): Улучшения справочных руководств в Windows.
- [bpo-28110](https://python-all.ru/3/whatsnew/changelog.html): launcher.msi использует разные коды продукта для 32-битной и 64-битной версий
- [bpo-25144](https://python-all.ru/3/whatsnew/changelog.html): Обеспечивает установку TargetDir до продолжения настраиваемой установки.
- [bpo-27469](https://python-all.ru/3/whatsnew/changelog.html): Добавляет расширение оболочки для запускатора, чтобы перетаскивание работало корректно.
- [bpo-27309](https://python-all.ru/3/whatsnew/changelog.html): Включены корректные стили Windows в манифесте python\[w\].exe.

### Сборка

- [bpo-29080](https://python-all.ru/3/whatsnew/changelog.html): Убирает жёсткую зависимость от hg.exe в PCBuild/build.bat
- [bpo-23903](https://python-all.ru/3/whatsnew/changelog.html): Добавлены пропущенные имена в PC/python3.def.
- [bpo-10656](https://python-all.ru/3/whatsnew/changelog.html): Исправлена сборка вне дерева исходников на AIX. Патч от Tristan Carel и Michael Haubenwallner.
- [bpo-26359](https://python-all.ru/3/whatsnew/changelog.html): Переименовать –with-optimiations в –enable-optimizations.
- [bpo-28444](https://python-all.ru/3/whatsnew/changelog.html): Исправляет отсутствующие модули расширений при кросс-компиляции.
- [bpo-28248](https://python-all.ru/3/whatsnew/changelog.html): Обновляет сборку Windows и установщики OS X для использования OpenSSL 1.0.2j.
- [bpo-28258](https://python-all.ru/3/whatsnew/changelog.html): Исправлена сборка с эстонской локалью (цели python-config и distclean в Makefile). Патч от Arfrever Frehtes Taifersar Arahesis.
- [bpo-26661](https://python-all.ru/3/whatsnew/changelog.html): setup.py теперь определяет системную libffi с multiarch wrapper.
- [bpo-28066](https://python-all.ru/3/whatsnew/changelog.html): Исправляет логику поиска каталогов сборки для сгенерированных include-файлов при сборке вне дерева исходников.
- [bpo-15819](https://python-all.ru/3/whatsnew/changelog.html): Удаляет избыточную опцию каталога поиска include для сборки вне дерева исходников.
- [bpo-27566](https://python-all.ru/3/whatsnew/changelog.html): Исправляет цель clean в makefile заморозки (патч от Lisa Roach)
- [bpo-27705](https://python-all.ru/3/whatsnew/changelog.html): Обновляет сообщение в validate\_ucrtbase.py
- [bpo-27983](https://python-all.ru/3/whatsnew/changelog.html): Отсутствие llvm-profdata при использовании clang, необходимого для PGO-линковки, теперь вызывает ошибку на этапе configure, а не на этапе make, когда включен --with-optimizations. Также улучшена возможность поиска llvm-profdata на macOS и некоторых Linux.
- [bpo-26307](https://python-all.ru/3/whatsnew/changelog.html): Сборка profile-opt теперь применяет PGO ко встроенным модулям.
- [bpo-26359](https://python-all.ru/3/whatsnew/changelog.html): Добавить флаг configure –with-optimizations.
- [bpo-27713](https://python-all.ru/3/whatsnew/changelog.html): Подавляет ложные предупреждения сборки при обновлении файлов bootstrap в importlib. Патч от Xiang Zhang
- [bpo-25825](https://python-all.ru/3/whatsnew/changelog.html): Исправляет ссылки на Modules/python.exp и ld\_so\_aix, которые требуются на AIX. Обновляет ссылки на путь установки, изменённый в 3.2a4, и отменяет изменённые ссылки на дерево сборки, сделанные в 3.5.0a1.
- [bpo-27453](https://python-all.ru/3/whatsnew/changelog.html): Вызов CPP в configure должен использовать CPPFLAGS. Патч от Chi Hsuan Yen.
- [bpo-27641](https://python-all.ru/3/whatsnew/changelog.html): Сценарий configure теперь вставляет комментарии в makefile, чтобы предотвратить кросс-компиляцию исполняемых файлов pgen и \_freeze\_importlib.
- [bpo-26662](https://python-all.ru/3/whatsnew/changelog.html): Устанавливает PYTHON\_FOR\_GEN в configure как программу Python, используемую для генерации файлов во время сборки.
- [bpo-10910](https://python-all.ru/3/whatsnew/changelog.html): Избегает ошибок компиляции C++ на FreeBSD и OS X. Также обновляет проверки версий FreeBSD для исходного обходного решения ctype UTF-8.
- [bpo-28676](https://python-all.ru/3/whatsnew/changelog.html): Предотвращает предупреждение о пропущенном объявлении 'getentropy' на macOS. Патч от Gareth Rees.

## Python 3.5.2 final

*Дата выпуска: 2016-06-26*

### Ядро и встроенные модули

- [bpo-26930](https://python-all.ru/3/whatsnew/changelog.html): Обновляет сборки Windows для использования OpenSSL 1.0.2h.

### Тесты

- [bpo-26867](https://python-all.ru/3/whatsnew/changelog.html): В Ubuntu openssl OP\_NO\_SSLv3 принудительно включён по умолчанию; исправлен тест.

### IDLE

- [bpo-27365](https://python-all.ru/3/whatsnew/changelog.html): Разрешено использование не-ASCII символов в idlelib/NEWS.txt – минимальная часть для версии 3.5.2.

## Python 3.5.2, кандидат в релиз 1

*Дата выпуска: 2016-06-12*

### Безопасность

- [bpo-26556](https://python-all.ru/3/whatsnew/changelog.html): Обновление expat до версии 2.1.1, исправляет [**CVE 2015-1283**](https://python-all.ru/3/whatsnew/changelog.html).
- Исправлена уязвимость снятия TLS в smtplib, [**CVE 2016-0772**](https://python-all.ru/3/whatsnew/changelog.html). Сообщено командой Oststrom.
- [bpo-26839](https://python-all.ru/3/whatsnew/changelog.html): В Linux [`os.urandom()`](https://python-all.ru/3/library/os.html#os.urandom) теперь вызывает `getrandom()` с `GRND_NONBLOCK` для перехода на чтение `/dev/urandom`, если пул энтропии urandom ещё не инициализирован. Патч написан Колмом Бакли (Colm Buckley).
- [bpo-26657](https://python-all.ru/3/whatsnew/changelog.html): Исправление уязвимости обхода каталогов (directory traversal) в http.server на Windows. Исправляет регрессию, внесённую в 3.3.4rc1 и 3.4.0rc1. На основе патча Филиппа Хагемайстера (Philipp Hagemeister).
- [bpo-26313](https://python-all.ru/3/whatsnew/changelog.html): ssl.py \_load\_windows\_store\_certs завершается ошибкой, если хранилище сертификатов Windows пусто. Патч от Baji.
- [bpo-25939](https://python-all.ru/3/whatsnew/changelog.html): В Windows хранилище сертификатов открывается только для чтения в ssl.enum\_certificates.

### Ядро и встроенные модули

- [bpo-27066](https://python-all.ru/3/whatsnew/changelog.html): Исправлен SystemError, если пользовательская функция открытия (для open()) возвращает отрицательное число без установки исключения.
- [bpo-20041](https://python-all.ru/3/whatsnew/changelog.html): Исправлен TypeError, когда frame.f\_trace устанавливается в None. Патч от Ксавье де Гай (Xavier de Gaye).
- [bpo-26168](https://python-all.ru/3/whatsnew/changelog.html): Исправлена возможная утечка ссылок при сбое Py\_BuildValue() с форматом «N».
- [bpo-26991](https://python-all.ru/3/whatsnew/changelog.html): Исправление возможной утечки ссылок при создании функции с аннотациями.
- [bpo-27039](https://python-all.ru/3/whatsnew/changelog.html): Исправлен bytearray.remove() для значений больше 127. Патч от Джо Джевника (Joe Jevnik).
- [bpo-23640](https://python-all.ru/3/whatsnew/changelog.html): int.from\_bytes() больше не обходит конструкторы подклассов.
- [bpo-26811](https://python-all.ru/3/whatsnew/changelog.html): gc.get\_objects() больше не содержит повреждённый кортеж с нулевым указателем.
- [bpo-20120](https://python-all.ru/3/whatsnew/changelog.html): Использование RawConfigParser для разбора .pypirc, удаление поддержки интерполяции, непреднамеренно добавленной при переходе на Python 3. Поведение больше не выполняет интерполяцию в файлах .pypirc, совпадая с поведением в Python 2.7 и Setuptools 19.0.
- [bpo-26659](https://python-all.ru/3/whatsnew/changelog.html): Встроенный тип slice теперь поддерживает сборку циклических ссылок.
- [bpo-26718](https://python-all.ru/3/whatsnew/changelog.html): super.\_\_init\_\_ больше не приводит к утечке памяти при многократном вызове. ПРИМЕЧАНИЕ: Прямой вызов super.\_\_init\_\_ не рекомендуется!
- [bpo-25339](https://python-all.ru/3/whatsnew/changelog.html): PYTHONIOENCODING теперь имеет приоритет над локалью при установке обработчика ошибок для stdin и stdout.
- [bpo-26494](https://python-all.ru/3/whatsnew/changelog.html): Исправлен сбой при итерации истощающих итераторов. Затронутые классы: общие итераторы последовательностей, итераторы str, bytes, bytearray, list, tuple, set, frozenset, dict, OrderedDict, соответствующие представления и итератор os.scandir().
- [bpo-26581](https://python-all.ru/3/whatsnew/changelog.html): Если в одной строке файла исходного кода Python указано несколько кодировок (coding cookie), учитывается только первая.
- [bpo-26464](https://python-all.ru/3/whatsnew/changelog.html): Исправление str.translate() для случая, когда строка в ASCII и первая замена удаляет символ, а следующая замена использует не-ASCII символ или строку длиннее 1 символа. Регрессия, внесённая в Python 3.5.0.
- [bpo-22836](https://python-all.ru/3/whatsnew/changelog.html): Обеспечение осмысленности отчётов об исключениях от PyErr\_Display() и PyErr\_WriteUnraisable(), даже если их форматирование вызывает вторичные ошибки. Это влияет на отчёты, создаваемые sys.\_\_excepthook\_\_() и при возникновении исключения в \_\_del\_\_().
- [bpo-26302](https://python-all.ru/3/whatsnew/changelog.html): Исправлено поведение: запятая больше не считается допустимым символом в именах cookie.
- [bpo-4806](https://python-all.ru/3/whatsnew/changelog.html): Предотвращение маскировки исходного исключения TypeError при использовании распаковки со звездочкой (`*`) в вызовах функций. На основе патча Хагена Фюрстенау (Hagen Fürstenau) и Дэниела Урбана (Daniel Urban).
- [bpo-27138](https://python-all.ru/3/whatsnew/changelog.html): Исправлен комментарий в документации для FileFinder.find\_spec().
- [bpo-26154](https://python-all.ru/3/whatsnew/changelog.html): Добавлена новая приватная функция \_PyThreadState\_UncheckedGet() для получения текущего состояния потока Python, но без фатальной ошибки, если оно NULL. Эту новую функцию следует использовать вместо прямого доступа к переменной \_PyThreadState\_Current. Переменная больше не доступна начиная с Python 3.5.1, чтобы скрыть точную реализацию атомарных типов C во избежание проблем с компилятором.
- [bpo-26194](https://python-all.ru/3/whatsnew/changelog.html): Deque.insert() давал странные результаты для ограниченных deque, достигших максимального размера. Теперь при попытке вставки в полный deque будет возбуждаться IndexError.
- [bpo-25843](https://python-all.ru/3/whatsnew/changelog.html): При компиляции кода не объединять константы, если они равны, но имеют разные типы. Например, `f1, f2 = lambda: 1, lambda: 1.0` теперь правильно компилируется в две разные функции: `f1()` возвращает `1` (`int`), а `f2()` возвращает `1.0` (`int`), даже если `1` и `1.0` равны.
- [bpo-22995](https://python-all.ru/3/whatsnew/changelog.html): \[ОБНОВЛЕНИЕ\] Закомментирован один из тестов на возможность сериализации (pickle) в \_PyObject\_GetState() из-за регрессий, возникших в проектах на Cython.
- [bpo-25961](https://python-all.ru/3/whatsnew/changelog.html): Запрещены нулевые символы в имени типа.
- [bpo-25973](https://python-all.ru/3/whatsnew/changelog.html): Исправлен segfault при привязке имени, начинающегося с двух подчёркиваний, в недопустимом операторе nonlocal.
- [bpo-22995](https://python-all.ru/3/whatsnew/changelog.html): Экземпляры типов-расширений с состоянием, которые не являются подклассами list или dict и не реализуют никаких связанных с pickle методов (\_\_reduce\_\_, \_\_reduce\_ex\_\_, \_\_getnewargs\_\_, \_\_getnewargs\_ex\_\_ или \_\_getstate\_\_), больше не могут быть сериализованы с помощью pickle. Включая memoryview.
- [bpo-20440](https://python-all.ru/3/whatsnew/changelog.html): Массовая замена небезопасного кода установки атрибутов на специальный макрос Py\_SETREF.
- [bpo-25766](https://python-all.ru/3/whatsnew/changelog.html): Специальный метод \_\_bytes\_\_() теперь работает в подклассах str.
- [bpo-25421](https://python-all.ru/3/whatsnew/changelog.html): Методы \_\_sizeof\_\_ встроенных типов теперь используют динамический базовый размер. Это позволяет sys.getsize() корректно работать с их подклассами, в которых определён \_\_slots\_\_.
- [bpo-25709](https://python-all.ru/3/whatsnew/changelog.html): Исправлена проблема с конкатенацией строк на месте и кешем UTF-8.
- [bpo-27147](https://python-all.ru/3/whatsnew/changelog.html): Упоминание [**PEP 420**](https://python-all.ru/3/whatsnew/changelog.html) в документации importlib.
- [bpo-24097](https://python-all.ru/3/whatsnew/changelog.html): Исправлен сбой в object.\_\_reduce\_\_(), если имя слота освобождается внутри \_\_getattr\_\_.
- [bpo-24731](https://python-all.ru/3/whatsnew/changelog.html): Исправлен сбой при преобразовании объектов со специальными методами \_\_bytes\_\_, \_\_trunc\_\_ и \_\_float\_\_, которые возвращают экземпляры подклассов bytes, int и float, в соответствующие подклассы bytes, int и float.
- [bpo-26478](https://python-all.ru/3/whatsnew/changelog.html): Исправлены семантические ошибки при использовании бинарных операторов с представлениями словарей и кортежами.
- [bpo-26171](https://python-all.ru/3/whatsnew/changelog.html): Исправлена возможная арифметическая переполнение и повреждение кучи в zipimporter.get\_data().
- [bpo-25660](https://python-all.ru/3/whatsnew/changelog.html): Исправлено поведение клавиши TAB в REPL с readline.
- [bpo-25887](https://python-all.ru/3/whatsnew/changelog.html): Вызывается RuntimeError при ожидании объекта корутины более одного раза.
- [bpo-27243](https://python-all.ru/3/whatsnew/changelog.html): Обновлён протокол \_\_aiter\_\_: вместо возврата ожидаемого объекта, который разрешается в асинхронный итератор, асинхронный итератор должен возвращаться напрямую. Использование первого варианта вызовет PendingDeprecationWarning.

### Библиотека

- [bpo-21386](https://python-all.ru/3/whatsnew/changelog.html): Реализовано недостающее свойство IPv4Address.is\_global. Оно документировано начиная с 07a5610bae9d. Первоначальный патч от Roger Luethi.
- [bpo-20900](https://python-all.ru/3/whatsnew/changelog.html): Команда register в distutils теперь корректно декодирует HTTP-ответы. Первоначальный патч от ingrid.
- Новая версия typing.py предоставляет несколько новых классов и возможностей: @overload вне заглушек, Reversible, DefaultDict, Text, ContextManager, Type\[\], NewType(), TYPE\_CHECKING и многочисленные исправления ошибок (следует отметить, что некоторые из новых возможностей ещё не реализованы в mypy или других статических анализаторах). Также добавлены классы для [**PEP 492**](https://python-all.ru/3/whatsnew/changelog.html) (ожидаемый объект, AsyncIterable, AsyncIterator) (фактически они были включены ещё в 3.5.1, но не упоминались).
- [bpo-25738](https://python-all.ru/3/whatsnew/changelog.html): Остановлена отправка тела сообщения в http.server.BaseHTTPRequestHandler.send\_error() для кода 205 Reset Content. Также не отправляются поля заголовка Content в ответах без тела. Патч от Susumu Koshiba.
- [bpo-21313](https://python-all.ru/3/whatsnew/changelog.html): Исправлен модуль platform для корректной работы, когда sys.version содержит усечённую информацию о сборке.
- [bpo-27164](https://python-all.ru/3/whatsnew/changelog.html): В модуле zlib разрешена декомпрессия сырых потоков Deflate с предопределённым zdict. Основано на патче от Xiang Zhang.
- [bpo-24291](https://python-all.ru/3/whatsnew/changelog.html): Исправлено wsgiref.simple\_server.WSGIRequestHandler для полной записи данных клиенту. Ранее могли происходить частичные записи и усечение данных. Также wsgiref.handler.ServerHandler теперь может обрабатывать частичные записи в stdout, но это устарело.
- [bpo-26809](https://python-all.ru/3/whatsnew/changelog.html): Добавлено `__all__` в [`string`](https://python-all.ru/3/library/string.html#module-string). Патч от Emanuel Barry.
- [bpo-26373](https://python-all.ru/3/whatsnew/changelog.html): subprocess.Popen.communicate теперь корректно игнорирует BrokenPipeError, когда дочерний процесс завершается до вызова .communicate() во всех/большинстве случаев.
- [bpo-21776](https://python-all.ru/3/whatsnew/changelog.html): distutils.upload теперь корректно обрабатывает HTTPError. Первоначальный патч от Claudiu Popa.
- [bpo-27114](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка PermissionError в SSLContext.\_load\_windows\_store\_certs.
- [bpo-18383](https://python-all.ru/3/whatsnew/changelog.html): Избегание создания дублирующих фильтров при использовании filterwarnings и simplefilter. Основано на патче от Alex Shkop.
- [bpo-27057](https://python-all.ru/3/whatsnew/changelog.html): Исправлен os.set\_inheritable() на Android: ioctl() блокируется SELinux и завершается с EACCESS. Функция теперь использует fcntl() в качестве запасного варианта. Патч написан Michał Bednarski.
- [bpo-27014](https://python-all.ru/3/whatsnew/changelog.html): Исправлена бесконечная рекурсия при использовании typing.py. Спасибо Kalle Tuure!
- [bpo-14132](https://python-all.ru/3/whatsnew/changelog.html): Исправлена обработка перенаправлений в urllib.request, когда целевой URL содержит только строку запроса. Первоначальное исправление от Ján Janech.
- [bpo-17214](https://python-all.ru/3/whatsnew/changelog.html): Модуль «urllib.request» теперь процентно кодирует не-ASCII байты найденные в URL-адресах перенаправления. Некоторые серверы отправляют поля заголовка Location с не-ASCII байтами, но «http.client» требует, чтобы целевой запрос был кодируем в ASCII, в противном случае возбуждается UnicodeEncodeError. На основе патча от Christian Heimes.
- [bpo-26892](https://python-all.ru/3/whatsnew/changelog.html): Учтён флаг debuglevel в urllib.request.HTTPHandler. Патч предоставлен Chi Hsuan Yen.
- [bpo-22274](https://python-all.ru/3/whatsnew/changelog.html): В модуле subprocess разрешено перенаправление stderr в\\nstdout, даже если stdout не перенаправлен. Патч от Akira Li.
- [bpo-26807](https://python-all.ru/3/whatsnew/changelog.html): Атрибут files у mock\_open больше не вызывает ошибку при readline в конце файла. Патч от Yolanda Robla.
- [bpo-25745](https://python-all.ru/3/whatsnew/changelog.html): Исправлена утечка userptr в деструкторе панели curses.
- [bpo-26977](https://python-all.ru/3/whatsnew/changelog.html): Удалён ненужный и игнорируемый вызов вспомогательной функции суммы квадратов в statistics.pvariance.
- [bpo-26881](https://python-all.ru/3/whatsnew/changelog.html): Модуль modulefinder теперь поддерживает расширенные аргументы опкодов.
- [bpo-23815](https://python-all.ru/3/whatsnew/changelog.html): Исправлены сбои, связанные с напрямую созданными экземплярами типов в модулях \_tkinter и curses.panel.
- [bpo-17765](https://python-all.ru/3/whatsnew/changelog.html): weakref.ref() больше не игнорирует молча именованные аргументы. Патч от Georg Brandl.
- [bpo-26873](https://python-all.ru/3/whatsnew/changelog.html): xmlrpc теперь возбуждает ResponseError для неподдерживаемых тегов типов вместо того чтобы молча возвращать неверный результат.
- [bpo-26711](https://python-all.ru/3/whatsnew/changelog.html): Исправлено сравнение plistlib.Data с другими типами.
- [bpo-24114](https://python-all.ru/3/whatsnew/changelog.html): Исправлена неинициализированная переменная в `ctypes.util`. Ошибка возникает только в SunOS, когда реализация ctypes ищет программу `crle` . Патч от Xiang Zhang. Протестировано на SunOS Kees Bos.
- [bpo-26864](https://python-all.ru/3/whatsnew/changelog.html): В urllib.request изменена проверка хостов для обхода прокси по no\_proxy: теперь она регистронезависима и не сопоставляется с несвязанными именами хостов которые случайно имеют обходимый хост в качестве суффикса. Патч от Xiang Zhang.
- [bpo-26634](https://python-all.ru/3/whatsnew/changelog.html): recursive\_repr() теперь устанавливает \_\_qualname\_\_ обёртки. Патч от Xiang Zhang.
- [bpo-26804](https://python-all.ru/3/whatsnew/changelog.html): urllib.request теперь предпочитает переменные окружения прокси в нижнем регистре, а не в ВЕРХНЕМ или Смешанном\_Регистре. Патч предоставлен Hans-Peter Jansen.
- [bpo-26837](https://python-all.ru/3/whatsnew/changelog.html): assertSequenceEqual() теперь корректно выводит нестроковые различающиеся элементы (например, bytes в режиме -b). Это затрагивает assertListEqual() и assertTupleEqual().
- [bpo-26041](https://python-all.ru/3/whatsnew/changelog.html): Из сообщений об устаревании функций platform.dist() и platform.linux\_distribution() удалена фраза «will be removed in Python 3.7». Патч от Kumaripaba Miyurusara Athukorala.
- [bpo-26822](https://python-all.ru/3/whatsnew/changelog.html): Объекты itemgetter, attrgetter и methodcaller больше не игнорируют молча именованные аргументы.
- [bpo-26733](https://python-all.ru/3/whatsnew/changelog.html): Дизассемблирование класса теперь дизассемблирует методы класса и статические методы. Патч от Xiang Zhang.
- [bpo-26801](https://python-all.ru/3/whatsnew/changelog.html): Исправлена обработка ошибок в [`shutil.get_terminal_size()`](https://python-all.ru/3/library/shutil.html#shutil.get_terminal_size): перехватывается [`AttributeError`](https://python-all.ru/3/library/exceptions.html#AttributeError) вместо [`NameError`](https://python-all.ru/3/library/exceptions.html#NameError). Патч написан Emanuel Barry.
- [bpo-24838](https://python-all.ru/3/whatsnew/changelog.html): Форматы ustar и gnu в tarfile теперь корректно вычисляют пределы полей имени и ссылки для многобайтовых кодировок символов, таких как utf-8.
- [bpo-26717](https://python-all.ru/3/whatsnew/changelog.html): Прекращено кодирование путей WSGI, преобразованных в Latin-1, с помощью UTF-8. Патч от Anthony Sottile.
- [bpo-26735](https://python-all.ru/3/whatsnew/changelog.html): Исправлен [`os.urandom()`](https://python-all.ru/3/library/os.html#os.urandom) в Solaris 11.3 и новее при чтении более 1024 байт: вызывать `getrandom()` несколько раз с ограничением 1024 байта за вызов.
- [bpo-16329](https://python-all.ru/3/whatsnew/changelog.html): Добавлен .webm в mimetypes.types\_map. Патч от Giampaolo Rodola’.
- [bpo-13952](https://python-all.ru/3/whatsnew/changelog.html): Добавлен .csv в mimetypes.types\_map. Патч от Geoff Wilson.
- [bpo-26709](https://python-all.ru/3/whatsnew/changelog.html): Исправлена проблема Y2038 при загрузке двоичных PList-файлов.
- [bpo-23735](https://python-all.ru/3/whatsnew/changelog.html): Обрабатывается изменение размера терминала в Readline 6.3+ с помощью установки собственного обработчика SIGWINCH. Патч от Eric Price.
- [bpo-26586](https://python-all.ru/3/whatsnew/changelog.html): В http.server теперь отправляется ответ «413 Request header fields too large», если для разбора слишком много полей заголовка, вместо прерывания соединения и возбуждения необработанного исключения. Патч от Xiang Zhang.
- [bpo-22854](https://python-all.ru/3/whatsnew/changelog.html): Изменено поведение BufferedReader.writable() и BufferedWriter.readable(): теперь они всегда возвращают False.
- [bpo-25195](https://python-all.ru/3/whatsnew/changelog.html): Исправлена регрессия в mock.MagicMock. \_Call является подклассом tuple (изменение 3603bae63c13 работает только для классов), поэтому пришлось реализовать \_\_ne\_\_ самостоятельно. Патч от Andrew Plummer.
- [bpo-26644](https://python-all.ru/3/whatsnew/changelog.html): Возбуждается ValueError вместо SystemError, когда отрицательная длина передаётся в SSLSocket.recv() или read().
- [bpo-23804](https://python-all.ru/3/whatsnew/changelog.html): Исправлены методы SSL recv(0) и read(0): теперь они возвращают ноль байт вместо до 1024.
- [bpo-26616](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка в методе datetime.astimezone().
- [bpo-21925](https://python-all.ru/3/whatsnew/changelog.html): [`warnings.formatwarning()`](https://python-all.ru/3/library/warnings.html#warnings.formatwarning) теперь перехватывает исключения в `linecache.getline(...)`, чтобы иметь возможность логировать [`ResourceWarning`](https://python-all.ru/3/library/exceptions.html#ResourceWarning), отправленные с опозданием во время завершения работы интерпретатора Python.
- [bpo-24266](https://python-all.ru/3/whatsnew/changelog.html): При компиляции с Readline 7 нажатие Ctrl+C во время поиска по истории Readline теперь отменяет режим поиска.
- [bpo-26560](https://python-all.ru/3/whatsnew/changelog.html): Предотвращено возможное исключение ValueError в BaseHandler.start\_response. Первоначальный патч от Peter Inglesby.
- [bpo-26569](https://python-all.ru/3/whatsnew/changelog.html): Исправлены [`pyclbr.readmodule()`](https://python-all.ru/3/library/pyclbr.html#pyclbr.readmodule) и [`pyclbr.readmodule_ex()`](https://python-all.ru/3/library/pyclbr.html#pyclbr.readmodule_ex) для поддержки импорта пакетов.
- [bpo-26499](https://python-all.ru/3/whatsnew/changelog.html): Учтён остаток Content-Length в HTTPResponse.readline() и read1(). Основано на патче от Silent Ghost. Также документировано, что HTTPResponse теперь поддерживает эти методы.
- [bpo-25320](https://python-all.ru/3/whatsnew/changelog.html): Обрабатываются сокеты в каталогах, которые сканирует unittest discovery. Патч от Victor van den Elzen.
- [bpo-16181](https://python-all.ru/3/whatsnew/changelog.html): cookiejar.http2time() теперь возвращает None, если год больше datetime.MAXYEAR.
- [bpo-26513](https://python-all.ru/3/whatsnew/changelog.html): Исправлено определение платформы Windows Server в модуле platform.
- [bpo-23718](https://python-all.ru/3/whatsnew/changelog.html): Исправлен разбор времени на неделе 0 до 1 января. Исходный патч от Tamás Bence Gedai.
- [bpo-20589](https://python-all.ru/3/whatsnew/changelog.html): Вызов Path.owner() и Path.group() в Windows теперь вызывает NotImplementedError вместо ImportError.
- [bpo-26177](https://python-all.ru/3/whatsnew/changelog.html): Исправлен метод keys() для виджетов Canvas и Scrollbar.
- [bpo-15068](https://python-all.ru/3/whatsnew/changelog.html): Устранена избыточная буферизация в модуле fileinput. Параметр bufsize больше не используется.
- [bpo-2202](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка UnboundLocalError в AbstractDigestAuthHandler.get\_algorithm\_impls. Исходный патч от Mathieu Dupuy.
- [bpo-25718](https://python-all.ru/3/whatsnew/changelog.html): Исправлены сериализация и копирование итератора accumulate() с total равным None.
- [bpo-26475](https://python-all.ru/3/whatsnew/changelog.html): Исправлен вывод отладочной информации для регулярных выражений с флагом (?x).
- [bpo-26457](https://python-all.ru/3/whatsnew/changelog.html): Исправлены методы subnets() в классах IP-сетей для случая, когда результирующая длина префикса равна максимальной. Основано на патче от Xiang Zhang.
- [bpo-26385](https://python-all.ru/3/whatsnew/changelog.html): Удалять файл, если внутренний вызов open() в NamedTemporaryFile() завершается ошибкой. Патч от Silent Ghost.
- [bpo-26402](https://python-all.ru/3/whatsnew/changelog.html): Исправлен клиент XML-RPC для повторной попытки при закрытии сервером постоянного соединения. Это было регрессией, связанной с новым исключением http.client.RemoteDisconnected в 3.5.0a4.
- [bpo-25913](https://python-all.ru/3/whatsnew/changelog.html): Начальный `<~` теперь необязателен в base64.a85decode() с adobe=True. Патч от Swati Jaiswal.
- [bpo-26186](https://python-all.ru/3/whatsnew/changelog.html): Удалена некорректная проверка типа в importlib.util.LazyLoader.
- [bpo-26367](https://python-all.ru/3/whatsnew/changelog.html): importlib.\_\_import\_\_() вызывает SystemError, как и builtins.\_\_import\_\_(), когда указан `level`, но без сопровождающего пакета.
- [bpo-26309](https://python-all.ru/3/whatsnew/changelog.html): В модуле «socketserver» запрос закрывается (закрывается подключённый сокет), когда verify\_request() возвращает false. Патч от Aviv Palivoda.
- [bpo-25995](https://python-all.ru/3/whatsnew/changelog.html): os.walk() больше не использует файловые дескрипторы пропорционально глубине дерева.
- [bpo-26117](https://python-all.ru/3/whatsnew/changelog.html): Итератор os.scandir() теперь закрывает файловый дескриптор не только при завершении итерации, но и при ошибке.
- [bpo-25911](https://python-all.ru/3/whatsnew/changelog.html): Восстановлена поддержка путей в виде байтов в os.walk() в Windows.
- [bpo-26045](https://python-all.ru/3/whatsnew/changelog.html): Добавлено предложение использовать UTF-8 в сообщении об ошибке при отправке строки не в Latin-1 через http.client.
- [bpo-12923](https://python-all.ru/3/whatsnew/changelog.html): Счётчик перенаправлений FancyURLopener сбрасывается даже в случае исключения. Основано на патчах Brian Brazil и Daniel Rocco.
- [bpo-25945](https://python-all.ru/3/whatsnew/changelog.html): Исправлен сбой при десериализации объекта functools.partial с некорректным состоянием. Исправлена утечка при неудачном конструировании functools.partial. Атрибуты «args» и «keywords» объекта functools.partial теперь всегда имеют типы tuple и dict соответственно.
- [bpo-26202](https://python-all.ru/3/whatsnew/changelog.html): copy.deepcopy() теперь корректно копирует объекты range() с неатомарными атрибутами.
- [bpo-23076](https://python-all.ru/3/whatsnew/changelog.html): Path.glob() теперь вызывает ValueError, если вызван с некорректным шаблоном. Патч от Thomas Nyberg.
- [bpo-19883](https://python-all.ru/3/whatsnew/changelog.html): Исправлены возможные целочисленные переполнения в zipimport.
- [bpo-26227](https://python-all.ru/3/whatsnew/changelog.html): На Windows функции getnameinfo(), gethostbyaddr() и gethostbyname\_ex() модуля socket теперь декодируют имя хоста из кодовой страницы ANSI, а не UTF-8.
- [bpo-26147](https://python-all.ru/3/whatsnew/changelog.html): xmlrpc теперь работает со строками, которые невозможно закодировать с помощью используемой кодировки, отличной от UTF-8.
- [bpo-25935](https://python-all.ru/3/whatsnew/changelog.html): Сборщик мусора теперь разрывает циклические ссылки с OrderedDict.
- [bpo-16620](https://python-all.ru/3/whatsnew/changelog.html): Исправлен AttributeError в msilib.Directory.glob().
- [bpo-26013](https://python-all.ru/3/whatsnew/changelog.html): Добавлена совместимость с повреждёнными сериализованными объектами протокола 2, созданными в старых версиях Python 3 (3.4.3 и ниже).
- [bpo-25850](https://python-all.ru/3/whatsnew/changelog.html): По умолчанию включена кросс-компиляция для 64-разрядной версии Windows.
- [bpo-17633](https://python-all.ru/3/whatsnew/changelog.html): Улучшена поддержка пространств имён пакетов в zipimport.
- [bpo-24705](https://python-all.ru/3/whatsnew/changelog.html): Исправлено поведение sysconfig.\_parse\_makefile – теперь корректно раскрываются переменные ${}, расположенные перед переменными $().
- [bpo-22138](https://python-all.ru/3/whatsnew/changelog.html): Исправлено поведение mock.patch при патчинге дескрипторов. Восстанавливаются исходные значения после патчинга. Патч предоставлен Sean McCully.
- [bpo-25672](https://python-all.ru/3/whatsnew/changelog.html): В модуле ssl включён режим SSL\_MODE\_RELEASE\_BUFFERS, если это безопасно.
- [bpo-26012](https://python-all.ru/3/whatsnew/changelog.html): Не обходить символические ссылки для шаблона `**` в pathlib.Path.\[r\]glob().
- [bpo-24120](https://python-all.ru/3/whatsnew/changelog.html): Игнорировать PermissionError при обходе дерева с помощью pathlib.Path.\[r\]glob(). Патч от Ulrich Petri.
- [bpo-25447](https://python-all.ru/3/whatsnew/changelog.html): fileinput теперь использует sys.stdin как есть, если у него нет атрибута buffer (восстановлена обратная совместимость).
- [bpo-25447](https://python-all.ru/3/whatsnew/changelog.html): Копирование объекта-обёртки lru\_cache() теперь всегда работает независимо от типа обёрнутого объекта (возвращается исходный объект без изменений).
- [bpo-24103](https://python-all.ru/3/whatsnew/changelog.html): Исправлена возможная ошибка use-after-free в ElementTree.XMLPullParser.
- [bpo-25860](https://python-all.ru/3/whatsnew/changelog.html): os.fwalk() больше не пропускает оставшиеся каталоги при возникновении ошибки. Оригинальный патч от Samson Lee.
- [bpo-25914](https://python-all.ru/3/whatsnew/changelog.html): Исправлен и упрощён OrderedDict.\_\_sizeof\_\_.
- [bpo-25902](https://python-all.ru/3/whatsnew/changelog.html): Исправлены различные проблемы с подсчётом ссылок в итерации ElementTree.
- [bpo-25717](https://python-all.ru/3/whatsnew/changelog.html): Восстановлено прежнее поведение: теперь снова допускается большинство ошибок fstat() при открытии файлов. Это было регрессией в 3.5a1, из-за чего в особых случаях переставали работать анонимные временные файлы.
- [bpo-24903](https://python-all.ru/3/whatsnew/changelog.html): Исправлена регрессия в количестве аргументов, которое принимает compileall при указании ‘-d’. Проверка количества аргументов полностью удалена, так как она всё равно никогда не работала корректно.
- [bpo-25764](https://python-all.ru/3/whatsnew/changelog.html): В модуле подпроцесса сохраняется любое исключение, вызванное сбоем fork() при использовании preexec\_fn.
- [bpo-6478](https://python-all.ru/3/whatsnew/changelog.html): Кэш регулярных выражений \_strptime теперь сбрасывается после смены часового пояса с помощью time.tzset().
- [bpo-14285](https://python-all.ru/3/whatsnew/changelog.html): При выполнении пакета с опцией «python -m package», если инициализация пакета завершается ошибкой, теперь выводится корректная трассировка. Модуль «runpy» теперь позволяет исключениям из инициализации пакета передаваться обратно вызывающему коду, а не вызывает ImportError.
- [bpo-19771](https://python-all.ru/3/whatsnew/changelog.html): Также в runpy и опции «-m» убрано нерелевантное сообщение «… is a package and cannot be directly executed», если пакет не удалось даже инициализировать (например, из-за проблем с файлом `*.pyc`).
- [bpo-25177](https://python-all.ru/3/whatsnew/changelog.html): Исправлена проблема со средним арифметическим очень маленьких и очень больших чисел. Побочный эффект: statistics.mean и statistics.variance теперь работают значительно быстрее.
- [bpo-25718](https://python-all.ru/3/whatsnew/changelog.html): Исправлено копирование объекта с состоянием, булево значение которого равно False.
- [bpo-10131](https://python-all.ru/3/whatsnew/changelog.html): Исправлено глубокое копирование документов minidom. Основано на патче от Marian Ganisin.
- [bpo-25725](https://python-all.ru/3/whatsnew/changelog.html): Исправлена утечка ссылок в pickle.loads() при десериализации некорректных данных, включая кортежные инструкции.
- [bpo-25663](https://python-all.ru/3/whatsnew/changelog.html): В комплитере Readline избегать дублирования глобальных имён, а также искать сначала в глобальном пространстве имён, а затем во встроенном.
- [bpo-25688](https://python-all.ru/3/whatsnew/changelog.html): Исправлена утечка файла в ElementTree.iterparse() при возникновении ошибки.
- [bpo-23914](https://python-all.ru/3/whatsnew/changelog.html): Исправлен SystemError, возникающий при десериализации битых pickle-данных.
- [bpo-25691](https://python-all.ru/3/whatsnew/changelog.html): Исправлен сбой при удалении атрибутов ElementTree.Element.
- [bpo-25624](https://python-all.ru/3/whatsnew/changelog.html): ZipFile теперь всегда записывает заголовок ZIP\_STORED для записей каталогов. Исправление от Dingyuan Wang.
- Пропускать getaddrinfo, если хост уже разрешён. Исправление от A. Jesse Jiryu Davis.
- [bpo-26050](https://python-all.ru/3/whatsnew/changelog.html): Добавлен метод asyncio.StreamReader.readuntil(). Исправление от Марка Коренберга.
- [bpo-25924](https://python-all.ru/3/whatsnew/changelog.html): Избегать излишней сериализации вызовов getaddrinfo(3) на OS X версии 10.5 и выше. Первоначальное исправление от A. Jesse Jiryu Davis.
- [bpo-26406](https://python-all.ru/3/whatsnew/changelog.html): Избегать излишней сериализации вызовов getaddrinfo(3) на текущих версиях OpenBSD и NetBSD. Исправление от A. Jesse Jiryu Davis.
- [bpo-26848](https://python-all.ru/3/whatsnew/changelog.html): Исправлена обработка пустого ввода в asyncio/subprocess.communicate(). Исправление от Jack O’Connor.
- [bpo-27040](https://python-all.ru/3/whatsnew/changelog.html): Добавлен метод loop.get\_exception\_handler
- [bpo-27041](https://python-all.ru/3/whatsnew/changelog.html): asyncio: добавлен метод loop.create\_future
- [bpo-27223](https://python-all.ru/3/whatsnew/changelog.html): asyncio: исправлены \_read\_ready и \_write\_ready для учёта \_conn\_lost. Исправление от Łukasz Langa.
- [bpo-22970](https://python-all.ru/3/whatsnew/changelog.html): asyncio: исправлена ошибка при отмене Condition.wait. Исправление от David Coles.

### IDLE

- [bpo-5124](https://python-all.ru/3/whatsnew/changelog.html): Вставка с выделенным текстом теперь заменяет выделение на X11. Это соответствует поведению вставки в Windows, Mac, большинстве современных приложений Linux и виджетах ttk. Первоначальное исправление от Serhiy Storchaka.
- [bpo-24759](https://python-all.ru/3/whatsnew/changelog.html): Уточнено в idlelib.idle\_test.\_\_init\_\_, что этот каталог является закрытой реализацией test.test\_idle и инструментом для сопровождающих.
- [bpo-27196](https://python-all.ru/3/whatsnew/changelog.html): Прекратить появление предупреждений ‘ThemeChanged’ при запуске тестов IDLE. Они сохранялись после подавления других предупреждений в #20567. Применить решение Serhiy Storchaka с update\_idletasks к четырём тестовым файлам. Записать этот дополнительный совет в idle\_test/README.txt
- [bpo-20567](https://python-all.ru/3/whatsnew/changelog.html): Переработан idle\_test/README.txt с рекомендациями по предотвращению предупреждений tk от тестов. Рекомендации применены к нескольким тестам IDLE.
- [bpo-27117](https://python-all.ru/3/whatsnew/changelog.html): Обеспечить работу colorizer htest и turtledemo с тёмными темами. Перенести код настройки цветов текстового виджета в новую функцию.
- [bpo-26673](https://python-all.ru/3/whatsnew/changelog.html): Когда tk сообщает размер шрифта 0, изменять на размер 10. Такие шрифты в Linux препятствовали открытию диалога настройки.
- [bpo-21939](https://python-all.ru/3/whatsnew/changelog.html): Добавлен тест для перколятора IDLE. Первоначальное исправление от Saimadhav Heblikar.
- [bpo-21676](https://python-all.ru/3/whatsnew/changelog.html): Добавлен тест для диалога замены IDLE. Первоначальное исправление от Saimadhav Heblikar.
- [bpo-18410](https://python-all.ru/3/whatsnew/changelog.html): Добавлен тест для диалога поиска IDLE. Первоначальное исправление от Westley Martínez.
- [bpo-21703](https://python-all.ru/3/whatsnew/changelog.html): Добавлен тест для делегатора отмены IDLE. Первоначальное исправление от Saimadhav Heblikar .
- [bpo-27044](https://python-all.ru/3/whatsnew/changelog.html): Добавлен ConfigDialog.remove\_var\_callbacks для предотвращения утечек памяти.
- [bpo-23977](https://python-all.ru/3/whatsnew/changelog.html): Добавлены дополнительные проверки в test\_delegator.
- [bpo-20640](https://python-all.ru/3/whatsnew/changelog.html): Добавлены тесты для idlelib.configHelpSourceEdit. Исправление от Saimadhav Heblikar.
- В разделе ‘Различия между IDLE и консолью’ документации IDLE уточнить, как запуск с IDLE влияет на sys.modules и стандартные потоки.
- [bpo-25507](https://python-all.ru/3/whatsnew/changelog.html): исправлено некорректное изменение в IOBinding, которое мешало печати. Расширен htest IOBinding для включения всех основных функций IOBinding.
- [bpo-25905](https://python-all.ru/3/whatsnew/changelog.html): Отменено нежелательное преобразование ' в ’ (правый одиночный кавычка) в README.txt, открывать этот файл и NEWS.txt с кодировкой ‘ascii’. Перекодировать CREDITS.txt в utf-8 и открывать его с ‘utf-8’.

### Документация

- [bpo-19489](https://python-all.ru/3/whatsnew/changelog.html): Поле поиска перенесено из боковой панели в заголовок и подвал каждой страницы. Исправление от Ammar Askar.
- [bpo-24136](https://python-all.ru/3/whatsnew/changelog.html): Документирован новый синтаксис распаковки [**PEP 448**](https://python-all.ru/3/whatsnew/changelog.html) версии 3.5.
- [bpo-26736](https://python-all.ru/3/whatsnew/changelog.html): Для внешних ссылок в документации по возможности используется HTTPS.
- [bpo-6953](https://python-all.ru/3/whatsnew/changelog.html): Переработана документация модуля Readline: сгруппированы связанные функции, добавлены подробности, например, какие базовые функции и переменные Readline задействованы.
- [bpo-23606](https://python-all.ru/3/whatsnew/changelog.html): В документацию ctypes добавлено примечание о cdll.msvcrt.
- [bpo-25500](https://python-all.ru/3/whatsnew/changelog.html): Исправлена документация: теперь она не утверждает, что \_\_import\_\_ ищется в глобальной области видимости.
- [bpo-26014](https://python-all.ru/3/whatsnew/changelog.html): Обновлена документация по упаковке для 3.x: \* ссылки «See also» на новую документацию теперь добавлены на страницы устаревшей документации \* обновлены ссылки на документацию setuptools

### Тесты

- [bpo-21916](https://python-all.ru/3/whatsnew/changelog.html): Добавлены тесты для модуля turtle. Патч от ingrid, Gregory Loyse и Jelle Zijlstra.
- [bpo-26523](https://python-all.ru/3/whatsnew/changelog.html): Пул потоков multiprocessing (multiprocessing.dummy.Pool) не имел тестов.
- [bpo-26015](https://python-all.ru/3/whatsnew/changelog.html): Добавлены новые тесты для сериализации (pickling) итераторов изменяемых последовательностей.
- [bpo-26325](https://python-all.ru/3/whatsnew/changelog.html): Добавлена функция test.support.check\_no\_resource\_warning(), проверяющая, что ResourceWarning не возникает.
- [bpo-25940](https://python-all.ru/3/whatsnew/changelog.html): Изменён test\_ssl: теперь используется self-signed.pythontest.net. Это позволяет не зависеть от svn.python.org, который недавно сменил корневой сертификат.
- [bpo-25616](https://python-all.ru/3/whatsnew/changelog.html): Тесты для OrderedDict выделены из test\_collections в отдельный файл test\_ordered\_dict.
- [bpo-26583](https://python-all.ru/3/whatsnew/changelog.html): Пропускать test\_timestamp\_overflow в test\_import, если запись файлов байт-кода невозможна.

### Сборка

- [bpo-26884](https://python-all.ru/3/whatsnew/changelog.html): Исправлена компоновка модулей расширения для кросс-сборок. Патч от Xavier de Gaye.
- [bpo-22359](https://python-all.ru/3/whatsnew/changelog.html): Отключены правила для запуска \_freeze\_importlib и pgen при кросс-компиляции. Вывод этих программ обычно и так сохраняется вместе с исходным кодом и всё равно пересоздаётся при нативной сборке. Патч от Xavier de Gaye.
- [bpo-27229](https://python-all.ru/3/whatsnew/changelog.html): Исправлено правило pgen для кросс-компиляции при сборке внутри дерева исходников. Патч от Xavier de Gaye.
- [bpo-21668](https://python-all.ru/3/whatsnew/changelog.html): Привязать модули audioop, \_datetime, \_ctypes\_test к libm, за исключением Mac OS X. Патч от Xavier de Gaye.
- [bpo-25702](https://python-all.ru/3/whatsnew/changelog.html): Добавлен параметр конфигурации –with-lto, включающий оптимизацию во время компоновки (LTO) при сборке с make profile-opt. Известно, что некоторые компиляторы и инструментальные цепочки могут выдавать нестабильный код при использовании LTO – перед использованием рекомендуется тщательно всё протестировать. Эта оптимизация может дать ускорение на несколько процентов по сравнению с использованием одного profile-opt.
- [bpo-26624](https://python-all.ru/3/whatsnew/changelog.html): Добавлена проверка версии ucrtbase\[d\].dll с предупреждением для старых версий.
- [bpo-17603](https://python-all.ru/3/whatsnew/changelog.html): Устранена ошибка о несуществующем файле fileblocks.o за счёт использования низкоуровневой проверки st\_blocks в struct stat.
- [bpo-26079](https://python-all.ru/3/whatsnew/changelog.html): Исправлена папка сборки для tix-8.4.3.6. Патч от Bjoern Thiel.
- [bpo-26465](https://python-all.ru/3/whatsnew/changelog.html): Обновлены сборки Windows для использования OpenSSL 1.0.2g.
- [bpo-24421](https://python-all.ru/3/whatsnew/changelog.html): Компиляция Modules/\_math.c выполняется один раз, до сборки расширений. Ранее он мог некорректно скомпилироваться, если сборки math и cmath выполнялись одновременно.
- [bpo-25348](https://python-all.ru/3/whatsnew/changelog.html): Добавлены аргументы `--pgo` и `--pgo-job` в `PCbuild\build.bat` для сборки с профильной оптимизацией (PGO). Старый скрипт `PCbuild\build_pgo.bat` теперь устарел и просто вызывает `PCbuild\build.bat --pgo %*`.
- [bpo-25827](https://python-all.ru/3/whatsnew/changelog.html): Добавлена поддержка сборки с ICC в `configure`, включая новый флаг `--with-icc`.
- [bpo-25696](https://python-all.ru/3/whatsnew/changelog.html): Исправлена установка Python в UNIX при использовании make -j9.
- [bpo-26930](https://python-all.ru/3/whatsnew/changelog.html): Обновлён 32-разрядный установщик для OS X 10.5+ для сборки и компоновки с OpenSSL 1.0.2h.
- [bpo-26268](https://python-all.ru/3/whatsnew/changelog.html): Обновлены сборки Windows для использования OpenSSL 1.0.2f.
- [bpo-25136](https://python-all.ru/3/whatsnew/changelog.html): Поддержка новых текстовых stub-библиотек SDK Apple Xcode 7.
- [bpo-24324](https://python-all.ru/3/whatsnew/changelog.html): Не включать предупреждения о недостижимом коде при использовании gcc, так как эта опция некорректно работала в старых версиях gcc и была молча удалена, начиная с gcc-4.5.

### Windows

- [bpo-27053](https://python-all.ru/3/whatsnew/changelog.html): Обновление make\_zip.py для корректной генерации ZIP-файла библиотеки.
- [bpo-26268](https://python-all.ru/3/whatsnew/changelog.html): Обновлён скрипт prepare\_ssl.py для работы с релизами OpenSSL, которые не включают содержимое каталога include (то есть, версии 1.0.2e и новее).
- [bpo-26071](https://python-all.ru/3/whatsnew/changelog.html): созданные бинарники bdist\_wininst не запускаются и не находят 32-битный Python
- [bpo-26073](https://python-all.ru/3/whatsnew/changelog.html): обновление списка магических чисел в загрузчике
- [bpo-26065](https://python-all.ru/3/whatsnew/changelog.html): исключает venv из библиотеки при генерации встраиваемого дистрибутива.
- [bpo-17500](https://python-all.ru/3/whatsnew/changelog.html): удаление неиспользуемых и устаревших иконок. (См. также: [https://github.com/python/pythondotorg/issues/945](https://python-all.ru/3/whatsnew/changelog.html))

### Tools/Demos

- [bpo-26799](https://python-all.ru/3/whatsnew/changelog.html): исправление python-gdb.py: не получать типы C один раз при загрузке кода Python, а получать их по запросу. Типы C могут измениться, если python-gdb.py загружается до исполняемого файла Python. Патч написан Thomas Ilsche.
- [bpo-26271](https://python-all.ru/3/whatsnew/changelog.html): исправление инструмента Freeze для корректного использования флагов, переданных через configure. Патч от Daniel Shaulov.
- [bpo-26489](https://python-all.ru/3/whatsnew/changelog.html): добавление поддержки распаковки словарей в Tools/parser/unparse.py. Патч от Guo Ci Teo.
- [bpo-26316](https://python-all.ru/3/whatsnew/changelog.html): исправление опечатки в имени переменной в Argument Clinic.

## Python 3.5.1 final

*Дата выпуска: 2015-12-06*

### Ядро и встроенные модули

- [bpo-25709](https://python-all.ru/3/whatsnew/changelog.html): исправлена проблема с конкатенацией строк на месте и кешем utf-8.

### Windows

- [bpo-25715](https://python-all.ru/3/whatsnew/changelog.html): установщик Python 3.5.1 показывает неверный путь обновления и некорректную логику обнаружения загрузчика.

## Python 3.5.1 release candidate 1

*Дата выпуска: 2015-11-22*

### Ядро и встроенные модули

- [bpo-25630](https://python-all.ru/3/whatsnew/changelog.html): исправление возможного segfault при разборе аргументов в функциях, принимающих пути файловой системы.
- [bpo-23564](https://python-all.ru/3/whatsnew/changelog.html): исправлена частично сломанная проверка корректности во внутренностях \_posixsubprocess относительно того, как fds\_to\_pass передавались дочернему процессу. Ошибка не имела фактического влияния, так как subprocess.py уже её избегал.
- [bpo-25388](https://python-all.ru/3/whatsnew/changelog.html): исправлен сбой токенизатора при обработке недекодируемого исходного кода с нулевым байтом.
- [bpo-25462](https://python-all.ru/3/whatsnew/changelog.html): хеш ключа теперь вычисляется только один раз в большинстве операций в C-реализации OrderedDict.
- [bpo-22995](https://python-all.ru/3/whatsnew/changelog.html): реализация по умолчанию \_\_reduce\_\_ и \_\_reduce\_ex\_\_ теперь отклоняет встроенные типы, у которых не определён \_\_new\_\_.
- [bpo-25555](https://python-all.ru/3/whatsnew/changelog.html): исправление парсера и AST: заполнение lineno и col\_offset узла “arg” при компиляции AST из объектов Python.
- [bpo-24802](https://python-all.ru/3/whatsnew/changelog.html): избегание выхода за границы буфера при передаче байтоподобных объектов в int(), float(), compile(), exec() и eval(). Эти объекты не обязательно завершаются нулевым байтом, но функции предполагали, что это так.
- [bpo-24726](https://python-all.ru/3/whatsnew/changelog.html): исправлен сбой и утечка NULL в repr() OrderedDict, который был изменён прямыми вызовами методов dict.
- [bpo-25449](https://python-all.ru/3/whatsnew/changelog.html): итерация по OrderedDict с ключами с нестабильным хешем теперь вызывает KeyError как в C-реализации, так и в реализации на Python.
- [bpo-25395](https://python-all.ru/3/whatsnew/changelog.html): исправлен сбой при сборке мусора сильно вложенных структур OrderedDict.
- [bpo-25274](https://python-all.ru/3/whatsnew/changelog.html): sys.setrecursionlimit() теперь вызывает RecursionError, если новый предел рекурсии слишком низок в зависимости от текущей глубины рекурсии. Также изменена формула «нижней отметки», чтобы сделать её монотонной. Эта отметка используется для принятия решения о сбросе флага переполнения состояния потока.
- [bpo-24402](https://python-all.ru/3/whatsnew/changelog.html): исправление input() для вывода приглашения в перенаправленный stdout, когда sys.stdout.fileno() завершается ошибкой.
- [bpo-24806](https://python-all.ru/3/whatsnew/changelog.html): предотвращение создания подклассов встроенных типов, которым не разрешено наследование, через множественное наследование.
- [bpo-24848](https://python-all.ru/3/whatsnew/changelog.html): исправлен ряд ошибок в декодировании UTF-7 некорректных данных.
- [bpo-25280](https://python-all.ru/3/whatsnew/changelog.html): Сообщения трассировки импорта, выводимые в подробном режиме (-v), больше не форматируются дважды.
- [bpo-25003](https://python-all.ru/3/whatsnew/changelog.html): В Solaris 11.3 и новее os.urandom() теперь использует функцию getrandom() вместо getentropy(). Функция getentropy() блокируется для генерации энтропии очень высокого качества, но os.urandom() не нуждается в такой высококачественной энтропии.
- [bpo-25182](https://python-all.ru/3/whatsnew/changelog.html): stdprinter (используемый как sys.stderr до загрузки модуля io при запуске) теперь использует обработчик ошибок backslashreplace.
- [bpo-25131](https://python-all.ru/3/whatsnew/changelog.html): Номер строки и смещение столбца для литералов множеств/словарей и генераторов теперь соответствуют открывающей скобке.
- [bpo-25150](https://python-all.ru/3/whatsnew/changelog.html): Скрыты частные символы `_Py_atomic_xxx` из публичного заголовка Python.h для исправления ошибки компиляции с OpenMP. PyThreadState\_GET() становится псевдонимом PyThreadState\_Get() во избежание несовместимости ABI.

### Библиотека

- [bpo-25626](https://python-all.ru/3/whatsnew/changelog.html): Изменены три функции zlib, чтобы они принимали размеры, помещающиеся в Py\_ssize\_t, но внутренне ограничивают эти размеры до UINT\_MAX. Это устраняет регрессию в 3.5, где GzipFile.read() не мог читать фрагменты размером более 2 или 4 ГиБ. Изменение затрагивает параметр max\_length функции zlib.Decompress.decompress(), параметр bufsize функции zlib.decompress() и параметр length функции zlib.Decompress.flush().
- [bpo-25583](https://python-all.ru/3/whatsnew/changelog.html): Избегает некорректных ошибок, вызываемых os.makedirs(exist\_ok=True), когда операционная система отдаёт приоритет ошибкам типа EACCES над EEXIST.
- [bpo-25593](https://python-all.ru/3/whatsnew/changelog.html): Изменена семантика EventLoop.stop() в asyncio.
- [bpo-6973](https://python-all.ru/3/whatsnew/changelog.html): Когда известно, что процесс subprocess.Popen завершился, не позволяйте методам send\_signal(), terminate() или kill() выполнять какие-либо действия, так как они потенциально могут отправить сигнал другому процессу.
- [bpo-25590](https://python-all.ru/3/whatsnew/changelog.html): В автодополнении Readline getattr() вызывается только один раз для каждого атрибута.
- [bpo-25498](https://python-all.ru/3/whatsnew/changelog.html): Исправлен сбой при сборке мусора объектов ctypes, созданных обёрткой memoryview. Это была регрессия, внесённая в 3.5a1. Основано на патче от Eryksun.
- [bpo-25584](https://python-all.ru/3/whatsnew/changelog.html): Добавлено «escape» в список \_\_all\_\_ в модуле glob.
- [bpo-25584](https://python-all.ru/3/whatsnew/changelog.html): Исправлена рекурсивная glob() с шаблонами, начинающимися с `**`.
- [bpo-25446](https://python-all.ru/3/whatsnew/changelog.html): Исправлена регрессия в поддержке AUTH LOGIN в smtplib.
- [bpo-18010](https://python-all.ru/3/whatsnew/changelog.html): Исправлена функция поиска модулей веб-сервера pydoc для обработки исключений при импорте пакетов.
- [bpo-25554](https://python-all.ru/3/whatsnew/changelog.html): Устранены циклические ссылки в разборе регулярных выражений.
- [bpo-25510](https://python-all.ru/3/whatsnew/changelog.html): fileinput.FileInput.readline() теперь возвращает b’’ вместо ‘’ в конце, если FileInput был открыт в бинарном режиме. Патч от Ryosuke Ito.
- [bpo-25503](https://python-all.ru/3/whatsnew/changelog.html): Исправлен inspect.getdoc() для унаследованных докстрингов свойств. Оригинальный патч от John Mark Vandenberg.
- [bpo-25515](https://python-all.ru/3/whatsnew/changelog.html): Всегда используется os.urandom как источник случайности в uuid.uuid4.
- [bpo-21827](https://python-all.ru/3/whatsnew/changelog.html): Исправлен textwrap.dedent() для случая, когда наибольший общий пробельный символ является подстрокой наименьшего ведущего пробела. Основано на патче от Robert Li.
- [bpo-25447](https://python-all.ru/3/whatsnew/changelog.html): Объекты-обёртки lru\_cache() теперь можно копировать и сериализовать (возвращая исходный объект без изменений).
- [bpo-25390](https://python-all.ru/3/whatsnew/changelog.html): typing: не падать при Union\[str, Pattern\].
- [bpo-25441](https://python-all.ru/3/whatsnew/changelog.html): asyncio: вызывать ошибку из drain(), когда сокет закрыт.
- [bpo-25410](https://python-all.ru/3/whatsnew/changelog.html): Проведена очистка и исправлены мелкие ошибки в C-реализации OrderedDict.
- [bpo-25411](https://python-all.ru/3/whatsnew/changelog.html): Улучшена поддержка Unicode в SMTPHandler за счёт более эффективного использования пакета email. Спасибо пользователю simon04 за патч.
- [bpo-25407](https://python-all.ru/3/whatsnew/changelog.html): Удалены упоминания о том, что модуль formatter будет удалён в Python 3.6.
- [bpo-25406](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка в C-реализации OrderedDict.move\_to\_end(), которая вызывала segmentation fault или зависание при итерации после перемещения нескольких элементов в начало упорядоченного словаря.
- [bpo-25364](https://python-all.ru/3/whatsnew/changelog.html): zipfile теперь работает в сборках с отключёнными потоками.
- [bpo-25328](https://python-all.ru/3/whatsnew/changelog.html): SMTPChannel из smtpd теперь корректно вызывает ValueError, если и decode\_data, и enable\_SMTPUTF8 установлены в true.
- [bpo-25316](https://python-all.ru/3/whatsnew/changelog.html): distutils вызывает OSError вместо DistutilsPlatformError, если MSVC не установлен.
- [bpo-25380](https://python-all.ru/3/whatsnew/changelog.html): Исправлен протокол для кода операции STACK\_GLOBAL в pickletools.opcodes.
- [bpo-23972](https://python-all.ru/3/whatsnew/changelog.html): Обновлён метод создания датаграммных сокетов в asyncio – теперь перед привязкой сокета можно задать опции reuseport и reuseaddr. По аналогии с существующим методом create\_server опция reuseaddr для датаграммных сокетов по умолчанию равна True, если ОС – posix (за исключением платформы Cygwin). Патч от Chris Laws.
- [bpo-25304](https://python-all.ru/3/whatsnew/changelog.html): Добавлена функция asyncio.run\_coroutine\_threadsafe(). Она позволяет передать корутину в цикл событий из другого потока, возвращая объект concurrent.futures.Future. Автор: Vincent Michel.
- [bpo-25232](https://python-all.ru/3/whatsnew/changelog.html): Исправлен CGIRequestHandler: теперь строка запроса отделяется от URL по первому знаку вопроса (?), а не по последнему. Патч от Xiang Zhang.
- [bpo-24657](https://python-all.ru/3/whatsnew/changelog.html): Предотвращено схлопывание слешей в части запроса URL в CGIRequestHandler, как если бы это был путь. Патч от Xiang Zhang.
- [bpo-24483](https://python-all.ru/3/whatsnew/changelog.html): Реализация functools.lru\_cache() на C теперь вычисляет хеш ключа только один раз.
- [bpo-22958](https://python-all.ru/3/whatsnew/changelog.html): Конструктор и метод update класса weakref.WeakValueDictionary теперь принимают именованные аргументы self и dict.
- [bpo-22609](https://python-all.ru/3/whatsnew/changelog.html): Конструктор collections.UserDict теперь принимает именованный аргумент self.
- [bpo-25111](https://python-all.ru/3/whatsnew/changelog.html): Исправлено сравнение объектов traceback.FrameSummary.
- [bpo-25262](https://python-all.ru/3/whatsnew/changelog.html): Добавлена поддержка опкода BINBYTES8 в реализации распаковщика (unpickler) на Python. Старшие 32 бита 64-битного размера для опкодов BINUNICODE8 и BINBYTES8 больше не игнорируются молча на 32-битных платформах в реализации на C.
- [bpo-25034](https://python-all.ru/3/whatsnew/changelog.html): Исправлена проблема string.Formatter с автонумерацией и вложенными спецификациями формата (format\_specs). Патч от Anthon van der Neut.
- [bpo-25233](https://python-all.ru/3/whatsnew/changelog.html): Переписана внутренняя реализация asyncio.Queue и asyncio.Semaphore для большей понятности и корректности.
- [bpo-25203](https://python-all.ru/3/whatsnew/changelog.html): При неудачном вызове readline.set\_completer\_delims() модуль больше не остаётся в несогласованном состоянии.
- [bpo-23600](https://python-all.ru/3/whatsnew/changelog.html): Реализация по умолчанию метода tzinfo.fromutc() возвращала неверные результаты в некоторых случаях.
- [bpo-23329](https://python-all.ru/3/whatsnew/changelog.html): Разрешена сборка модуля ssl со старыми версиями LibreSSL.
- Предотвращено переполнение в \_Unpickler\_Read.
- [bpo-25047](https://python-all.ru/3/whatsnew/changelog.html): Объявление кодировки XML, записываемое Element Tree, теперь учитывает регистр букв, заданный пользователем. Это восстанавливает возможность указывать имена кодировок в верхнем регистре, например «UTF-8», как было в Python 2.
- [bpo-25135](https://python-all.ru/3/whatsnew/changelog.html): Сделано безопаснее использование deque\_clear(): теперь дека опустошается перед очисткой. Это помогает избежать возможных проблем с повторной входимостью (reentrancy).
- [bpo-19143](https://python-all.ru/3/whatsnew/changelog.html): Модуль platform теперь читает версию Windows из kernel32.dll, чтобы избежать прослоек совместимости.
- [bpo-25092](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка datetime.strftime(), когда errno уже было установлено в EINVAL.
- [bpo-23517](https://python-all.ru/3/whatsnew/changelog.html): Исправлено округление в методах fromtimestamp() и utcfromtimestamp() класса datetime.datetime: микросекунды теперь округляются до ближайшего целого, при равенстве – до ближайшего чётного (ROUND\_HALF\_EVEN), а не округлением вниз (ROUND\_FLOOR). Важно, чтобы эти методы использовали тот же режим округления, что и datetime.timedelta, для сохранения свойства: (datetime(1970,1,1) + timedelta(seconds=t)) == datetime.utcfromtimestamp(t). Это также режим округления, используемый, например, round(float).
- [bpo-25155](https://python-all.ru/3/whatsnew/changelog.html): Исправлены datetime.datetime.now() и datetime.datetime.utcnow() в Windows для поддержки дат после 2038 года. Это было регрессией, внесённой в Python 3.5.0.
- [bpo-25108](https://python-all.ru/3/whatsnew/changelog.html): В функциях traceback print\_stack(), format\_stack() и extract\_stack(), вызванных без аргументов, пропущены внутренние кадры.
- [bpo-25118](https://python-all.ru/3/whatsnew/changelog.html): Исправлена регрессия Python 3.5.0 в os.waitpid() на Windows.
- [bpo-24684](https://python-all.ru/3/whatsnew/changelog.html): socket.socket.getaddrinfo() теперь вызывает PyUnicode\_AsEncodedString() вместо метода encode() у строки хоста, чтобы правильно обрабатывать пользовательские строки с методом encode(), который не возвращает байтовую строку. Кодер IDNA теперь вызывается напрямую, а не через метод encode() строки.
- [bpo-25060](https://python-all.ru/3/whatsnew/changelog.html): Корректно вычисляется использование стека опкодом BUILD\_MAP.
- [bpo-24857](https://python-all.ru/3/whatsnew/changelog.html): Сравнение call\_args с длинной последовательностью теперь корректно возвращает логическое значение, а не вызывает исключение. Патч от A Kaptur.
- [bpo-23144](https://python-all.ru/3/whatsnew/changelog.html): Обеспечено, что HTMLParser.feed() возвращает все данные, даже когда convert\_charrefs равно True.
- [bpo-24982](https://python-all.ru/3/whatsnew/changelog.html): shutil.make\_archive() с форматом «zip» теперь добавляет записи для директорий (включая пустые) в ZIP-файл.
- [bpo-25019](https://python-all.ru/3/whatsnew/changelog.html): Исправлен сбой, вызванный установкой нестрокового ключа парсера expat. На основе патча John Leitch.
- [bpo-16180](https://python-all.ru/3/whatsnew/changelog.html): Выход из pdb при синтаксической ошибке в файле, а не зацикливание пользователя в бесконечном цикле. Патч от Xavier de Gaye.
- [bpo-24891](https://python-all.ru/3/whatsnew/changelog.html): Исправлено состояние гонки при запуске Python, если файловый дескриптор stdin (0), stdout (1) или stderr (2) закрыт во время создания объектов sys.stdin, sys.stdout и sys.stderr. Теперь в случае неудачи при создании объекта эти атрибуты устанавливаются в None, а не вызывают исключение OSError. Первоначальный патч написал Marco Paolini.
- [bpo-24992](https://python-all.ru/3/whatsnew/changelog.html): Исправлены обработка ошибок и состояние гонки (связанное со сборкой мусора) в конструкторе collections.OrderedDict.
- [bpo-24881](https://python-all.ru/3/whatsnew/changelog.html): Исправлена установка двоичного режима в реализации FileIO на Python для Windows и Cygwin. Патч от Akira Li.
- [bpo-25578](https://python-all.ru/3/whatsnew/changelog.html): Исправлена (ещё одна) утечка памяти в SSLSocket.getpeercer().
- [bpo-25530](https://python-all.ru/3/whatsnew/changelog.html): По умолчанию отключён уязвимый протокол SSLv3 при создании ssl.SSLContext.
- [bpo-25569](https://python-all.ru/3/whatsnew/changelog.html): Исправлена утечка памяти в SSLSocket.getpeercert().
- [bpo-25471](https://python-all.ru/3/whatsnew/changelog.html): Сокеты, возвращаемые accept(), не должны считаться неблокирующими.
- [bpo-25319](https://python-all.ru/3/whatsnew/changelog.html): При повторной инициализации threading.Event базовое условие должно использовать обычную блокировку, а не рекурсивную.
- [bpo-21112](https://python-all.ru/3/whatsnew/changelog.html): Исправлена регрессия в unittest.expectedFailure для подклассов. Патч от Berker Peksag.
- [bpo-24764](https://python-all.ru/3/whatsnew/changelog.html): cgi.FieldStorage.read\_multi() теперь игнорирует заголовок Content-Length в заголовках частей. Патч написан Peter Landry и проверен Pierre Quentel.
- [bpo-24913](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка выхода за границы в deque.index(). Найдено John Leitch и Bryce Darling.
- [bpo-24774](https://python-all.ru/3/whatsnew/changelog.html): Исправлена docstring в http.server.test. Патч от Chiu-Hsiang Hsu.
- [bpo-21159](https://python-all.ru/3/whatsnew/changelog.html): Улучшено сообщение в configparser.InterpolationMissingOptionError. Патч от Łukasz Langa.
- [bpo-20362](https://python-all.ru/3/whatsnew/changelog.html): Корректно учитывать TestCase.longMessage в assertRegex. Патч от Ilia Kurenkov.
- [bpo-23572](https://python-all.ru/3/whatsnew/changelog.html): Исправлена functools.singledispatch для классов с ложными метаклассами. Патч от Ethan Furman.
- asyncio: ensure\_future() теперь принимает ожидаемые объекты.

### IDLE

- [bpo-15348](https://python-all.ru/3/whatsnew/changelog.html): Останавливать движок отладчика (обычно в пользовательском процессе) перед закрытием окна отладчика (работающего в процессе IDLE). Это предотвращает RuntimeErrors, которые перехватывались и игнорировались.
- [bpo-24455](https://python-all.ru/3/whatsnew/changelog.html): Предотвратить зависание IDLE при: a) закрытии оболочки при активном отладчике (15347); b) закрытии отладчика кнопкой \[X\] (15348); и c) активации отладчика, когда он уже активен (24455). Патч от Mark Roseman делает это двумя изменениями. 1. Приостанавливать и возобновлять метод gui.interaction с помощью механизма tcl vwait, предназначенного для этой цели (вместо root.mainloop & .quit). 2. В gui.run позволить любому существующему взаимодействию сначала завершиться.
- Заменить ‘The program’ на ‘Your program’ в сообщении IDLE ‘kill program?’ чтобы было понятнее, что речь идёт о текущей выполняемой пользовательской программе, а не о самом IDLE.
- [bpo-24750](https://python-all.ru/3/whatsnew/changelog.html): Улучшен внешний вид строки состояния окна редактора IDLE. Патч от Mark Roseman.
- [bpo-25313](https://python-all.ru/3/whatsnew/changelog.html): Изменена обработка новых встроенных цветовых тем текста для лучшего решения проблемы совместимости, вызванной добавлением IDLE Dark. Последовательно использовать пересмотренный idleConf.CurrentTheme везде в idlelib.
- [bpo-24782](https://python-all.ru/3/whatsnew/changelog.html): Конфигурация расширений теперь является вкладкой в диалоге настроек IDLE, а не отдельным диалогом. Прежние вкладки теперь представлены отсортированным списком. Патч от Mark Roseman.
- [bpo-22726](https://python-all.ru/3/whatsnew/changelog.html): Повторно активировать кнопку справки в диалоге конфигурации с некоторым содержимым о других кнопках и новой теме IDLE Dark.
- [bpo-24820](https://python-all.ru/3/whatsnew/changelog.html): У IDLE теперь есть встроенная цветовая тема текста ‘IDLE Dark’. Она более или менее инвертированная IDLE Classic, с тёмно-синим фоном. Строки, комментарии, ключевые слова, … по-прежнему зелёные, красные, оранжевые, … . Чтобы использовать её с IDLE, выпущенными до ноября 2015, нажмите кнопку ‘Save as New Custom Theme’ и введите новое имя, например ‘Custom Dark’. Пользовательская тема будет работать с любым релизом IDLE и может быть изменена.
- [bpo-25224](https://python-all.ru/3/whatsnew/changelog.html): README.txt теперь является индексом idlelib для разработчиков IDLE и любопытных пользователей. Предыдущее пользовательское содержание теперь находится в главе документации IDLE. ‘IDLE’ теперь означает ‘Integrated Development and Learning Environment’.
- [bpo-24820](https://python-all.ru/3/whatsnew/changelog.html): Пользователи теперь могут задавать цвета точек останова в Settings -\> Custom Highlighting. Оригинальный патч от Mark Roseman.
- [bpo-24972](https://python-all.ru/3/whatsnew/changelog.html): Фон неактивного выделения теперь соответствует фону активного выделения, как настроено пользователем, на всех системах. Найденные элементы теперь всегда выделяются на Windows. Первоначальный патч от Mark Roseman.
- [bpo-24570](https://python-all.ru/3/whatsnew/changelog.html): Idle: сделать подсказки и окна автодополнения видимыми на Mac, затронутых регрессией tk. Первоначальный патч от Mark Roseman.
- [bpo-24988](https://python-all.ru/3/whatsnew/changelog.html): Контекстные меню ScrolledList в IDLE (используемые в отладчике) теперь работают на Mac Aqua. Патч от Mark Roseman.
- [bpo-24801](https://python-all.ru/3/whatsnew/changelog.html): Сделать правый клик для контекстного меню работающим на Mac Aqua. Патч от Mark Roseman.
- [bpo-25173](https://python-all.ru/3/whatsnew/changelog.html): Связать диалоговые окна tkinter с конкретным виджетом. Для Mac OSX сделать их «листом». Патч от Mark Roseman.
- [bpo-25198](https://python-all.ru/3/whatsnew/changelog.html): Улучшено начальное средство просмотра HTML, теперь используемое для справки IDLE. Правильно выравнивать моноширинный текст (патч от Mark Roseman). Дать фрагменту кода очень похожий на Sphinx светло-голубовато-серый фон. Повторно использовать начальные ширину и высоту, заданные пользователями для оболочки и редактора. При использовании меню оглавления (TOC) помещать заголовок раздела в верхнюю часть экрана.
- [bpo-25225](https://python-all.ru/3/whatsnew/changelog.html): Сократить и переписать раздел документации IDLE о цветах текста.
- [bpo-21995](https://python-all.ru/3/whatsnew/changelog.html): поясняются некоторые различия между IDLE и консольным Python.
- [bpo-22820](https://python-all.ru/3/whatsnew/changelog.html): разъясняется необходимость *print* при запуске файла из редактора Idle.
- [bpo-25224](https://python-all.ru/3/whatsnew/changelog.html): документация: дополнен список возможностей Idle и раздел о работе без подпроцесса.
- [bpo-25219](https://python-all.ru/3/whatsnew/changelog.html): обновлена документация по параметрам командной строки Idle. Некоторые параметры отсутствовали, а примечания были неверны.
- [bpo-24861](https://python-all.ru/3/whatsnew/changelog.html): большая часть idlelib является приватной и может измениться. Для запуска Idle используйте idleib.idle.\*. См. idlelib.\_\_init\_\_.\_\_doc\_\_.
- [bpo-25199](https://python-all.ru/3/whatsnew/changelog.html): Idle: добавлены синхронизирующие комментарии для будущих сопровождающих.
- [bpo-16893](https://python-all.ru/3/whatsnew/changelog.html): заменён help.txt на help.html для отображения документации Idle. Новый файл idlelib/help.html – это урезанная версия Doc/build/html/library/idle.html. Он выглядит лучше help.txt и будет лучше документировать Idle в релизе. Просмотрщик HTML на tkinter, работающий с этим файлом, написан Марком Роземаном. Класс EditorWindow.HelpDialog и файл help.txt теперь не используются и объявлены устаревшими.
- [bpo-24199](https://python-all.ru/3/whatsnew/changelog.html): объявлен устаревшим неиспользуемый idlelib.idlever; возможно, будет удалён в 3.6.
- [bpo-24790](https://python-all.ru/3/whatsnew/changelog.html): удалён лишний код (который также создавал конфликты между ветками 2 и 3).

### Документация

- [bpo-22558](https://python-all.ru/3/whatsnew/changelog.html): добавлены недостающие ссылки из документации на исходный код модулей, написанных на Python. Патч от Yoni Lavi.
- [bpo-12067](https://python-all.ru/3/whatsnew/changelog.html): переписана секция «Сравнения» в главе «Выражения» справочника по языку. Некоторые детали сравнения смешанных типов были неверными или неоднозначными. NotImplemented актуален только на более низком уровне, чем глава «Выражения». Добавлены детали сравнения объектов range(), а также описание поведения по умолчанию и рекомендации по согласованности для пользовательских классов. Патч от Andy Maier.
- [bpo-24952](https://python-all.ru/3/whatsnew/changelog.html): уточнён аргумент размера по умолчанию для stack\_size() в модулях «threading» и «\_thread». Патч от Mattip.
- [bpo-23725](https://python-all.ru/3/whatsnew/changelog.html): переработана документация по tempfile. Отмечен устаревший статус mktemp. Патч от Zbigniew Jędrzejewski-Szmek.
- [bpo-24808](https://python-all.ru/3/whatsnew/changelog.html): обновлены типы некоторых полей PyTypeObject. Патч от Joseph Weston.
- [bpo-22812](https://python-all.ru/3/whatsnew/changelog.html): исправлены примеры обнаружения тестов в unittest. Патч от Pam McA’Nulty.

### Тесты

- [bpo-25449](https://python-all.ru/3/whatsnew/changelog.html): добавлены тесты для подклассов OrderedDict.
- [bpo-25099](https://python-all.ru/3/whatsnew/changelog.html): test\_compileall больше не завершается ошибкой, когда элемент sys.path недоступен для записи (часто встречается при административных установках в Windows).
- [bpo-23919](https://python-all.ru/3/whatsnew/changelog.html): предотвращает появление диалогов assert в тестовом наборе.
- `PCbuild\rt.bat` теперь принимает неограниченное количество аргументов для передачи в regrtest.py. Ранее существовало ограничение в 9.

### Сборка

- [bpo-24915](https://python-all.ru/3/whatsnew/changelog.html): добавлена поддержка LLVM для сборок с PGO и использование тестового набора для генерации профилировочных данных. Первоначальный патч от Alecsandru Patrascu из Intel.
- [bpo-24910](https://python-all.ru/3/whatsnew/changelog.html): MSI-установщики для Windows теперь имеют уникальные отображаемые имена.
- [bpo-24986](https://python-all.ru/3/whatsnew/changelog.html): теперь Python можно собрать в Windows без ошибок, даже если внешние библиотеки недоступны.

### Windows

- [bpo-25450](https://python-all.ru/3/whatsnew/changelog.html): обновлены ярлыки для запуска Python из каталога установки.
- [bpo-25164](https://python-all.ru/3/whatsnew/changelog.html): изменён каталог установки по умолчанию для всех пользователей на соответствующий каталогу для одного пользователя.
- [bpo-25143](https://python-all.ru/3/whatsnew/changelog.html): улучшены сообщения об ошибках установщика для неподдерживаемых платформ.
- [bpo-25163](https://python-all.ru/3/whatsnew/changelog.html): в установщике отображается правильный каталог при использовании нестандартных настроек.
- [bpo-25361](https://python-all.ru/3/whatsnew/changelog.html): отключено использование инструкций SSE2 в 32-битной сборке Windows
- [bpo-25089](https://python-all.ru/3/whatsnew/changelog.html): добавлено логирование в установщик на случай, если при обновлении не выбран загрузчик.
- [bpo-25165](https://python-all.ru/3/whatsnew/changelog.html): При удалении Windows не следует удалять лаунчер, если остаются другие версии.
- [bpo-25112](https://python-all.ru/3/whatsnew/changelog.html): В лаунчере py.exe отсутствуют значки.
- [bpo-25102](https://python-all.ru/3/whatsnew/changelog.html): Установщик Windows не выполняет предварительную компиляцию для -O или -OO.
- [bpo-25081](https://python-all.ru/3/whatsnew/changelog.html): Кнопка «Назад» в установщике при обновлении возвращает на страницу обновления.
- [bpo-25091](https://python-all.ru/3/whatsnew/changelog.html): Увеличивает размер шрифта в установщике.
- [bpo-25126](https://python-all.ru/3/whatsnew/changelog.html): Уточняется, что невеб-установщик загрузит некоторые компоненты.
- [bpo-25213](https://python-all.ru/3/whatsnew/changelog.html): Восстанавливает requestedExecutionLevel в манифесте для отключения виртуализации UAC.
- [bpo-25022](https://python-all.ru/3/whatsnew/changelog.html): Удалён устаревший каталог PC/example\_nt/.

### Tools/Demos

- [bpo-25440](https://python-all.ru/3/whatsnew/changelog.html): Исправлен вывод python-config –extension-suffix.

## Python 3.5.0 финальный

*Дата релиза: 2015-09-13*

### Сборка

- [bpo-25071](https://python-all.ru/3/whatsnew/changelog.html): Установщик Windows не должен требовать параметр TargetDir при тихой установке.

## Python 3.5.0, кандидат в релизы 4

*Дата релиза: 2015-09-09*

### Библиотека

- [bpo-25029](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка MemoryError в test\_strptime.

### Сборка

- [bpo-25027](https://python-all.ru/3/whatsnew/changelog.html): Откатывает опции частичной статической сборки и добавляет vcruntime140.dll в установку Windows.

## Python 3.5.0, кандидат в релизы 3

*Дата релиза: 2015-09-07*

### Ядро и встроенные функции

- [bpo-24305](https://python-all.ru/3/whatsnew/changelog.html): Предотвращает учёт кадров стека подсистемы импорта параметром warnings.warn(stacklevel=).
- [bpo-24912](https://python-all.ru/3/whatsnew/changelog.html): Предотвращает присваивание \_\_class\_\_ неизменяемым встроенным объектам.
- [bpo-24975](https://python-all.ru/3/whatsnew/changelog.html): Исправлена компиляция AST для синтаксиса [**PEP 448**](https://python-all.ru/3/whatsnew/changelog.html).

### Библиотека

- [bpo-24917](https://python-all.ru/3/whatsnew/changelog.html): Выход за границы буфера при чтении в time\_strftime().
- [bpo-24748](https://python-all.ru/3/whatsnew/changelog.html): Для решения проблемы совместимости с py2exe и pywin32 функция imp.load\_dynamic() снова игнорирует ранее загруженные модули, чтобы поддерживать замену модулей Python на модули расширений. Патч от Петра Викторина.
- [bpo-24635](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка в typing.py, при которой isinstance(\[\], typing.Iterable) возвращал True один раз, а затем False при последующих вызовах.
- [bpo-24989](https://python-all.ru/3/whatsnew/changelog.html): Исправлено чтение за границей буфера в BytesIO.readline(), если позиция установлена за пределами размера. На основе патча Джона Лейча.
- [bpo-24913](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка переполнения в deque.index(). Обнаружено Джоном Лейчем и Брайсом Дарлингом.

## Python 3.5.0, кандидат в релизы 2

*Дата выпуска: 2015-08-25*

### Ядро и встроенные модули

- [bpo-24769](https://python-all.ru/3/whatsnew/changelog.html): Интерпретатор теперь корректно запускается при отключённой динамической загрузке. Патч от Petr Viktorin.
- [bpo-21167](https://python-all.ru/3/whatsnew/changelog.html): Операции с NAN теперь корректно обрабатываются, когда Python компилируется с ICC, даже если не указан -fp-model strict.
- [bpo-24492](https://python-all.ru/3/whatsnew/changelog.html): «Пакет», у которого отсутствует атрибут \_\_name\_\_ при попытке выполнить инструкцию `from .. import ...`, вызовет ImportError вместо AttributeError.

### Библиотека

- [bpo-24847](https://python-all.ru/3/whatsnew/changelog.html): Удалена зависимость от vcruntime140.dll в Tcl/Tk.
- [bpo-24839](https://python-all.ru/3/whatsnew/changelog.html): platform.\_syscmd\_ver вызывает DeprecationWarning
- [bpo-24867](https://python-all.ru/3/whatsnew/changelog.html): Исправлен Task.get\_stack() для корутин, определённых с async def

## Python 3.5.0, кандидат в релизы 1

*Дата выпуска: 2015-08-09*

### Ядро и встроенные модули

- [bpo-24667](https://python-all.ru/3/whatsnew/changelog.html): Изменяет размер odict во всех случаях, когда изменяется размер нижележащего словаря.

### Библиотека

- [bpo-24824](https://python-all.ru/3/whatsnew/changelog.html): Сигнатуры codecs.encode() и codecs.decode() теперь совместимы с pydoc.
- [bpo-24634](https://python-all.ru/3/whatsnew/changelog.html): Импорт uuid не должен пытаться загружать libc в Windows
- [bpo-24798](https://python-all.ru/3/whatsnew/changelog.html): \_msvccompiler.py некорректно поддерживает манифесты
- [bpo-4395](https://python-all.ru/3/whatsnew/changelog.html): Улучшено тестирование и документация бинарных операторов. Патч от Martin Panter.
- [bpo-23973](https://python-all.ru/3/whatsnew/changelog.html): Обновление typing.py из репозитория GitHub.
- [bpo-23004](https://python-all.ru/3/whatsnew/changelog.html): mock\_open() теперь корректно читает бинарные данные, когда тип read\_data – bytes. Начальный патч от Aaron Hill.
- [bpo-23888](https://python-all.ru/3/whatsnew/changelog.html): Обработка дробных значений времени в сроке действия cookie. Патч от ssh.
- [bpo-23652](https://python-all.ru/3/whatsnew/changelog.html): Добавлена возможность компиляции модуля select с заголовками libc из Linux Standard Base, которые не содержат некоторые макросы EPOLL. Патч от Matt Frank.
- [bpo-22932](https://python-all.ru/3/whatsnew/changelog.html): Исправлены часовые пояса в email.utils.formatdate. Патч от Dmitry Shachnev.
- [bpo-23779](https://python-all.ru/3/whatsnew/changelog.html): imaplib вызывает TypeError, если аутентификатор пытается прервать соединение. Патч от Craig Holmquist.
- [bpo-23319](https://python-all.ru/3/whatsnew/changelog.html): Исправлен ctypes.BigEndianStructure, корректная перестановка байтов. Патч написан Matthieu Gautier.
- [bpo-23254](https://python-all.ru/3/whatsnew/changelog.html): Документировано, как закрыть слушающий сокет TCPServer. Патч от Martin Panter.
- [bpo-19450](https://python-all.ru/3/whatsnew/changelog.html): Обновлены сборки установщиков Windows и OS X для использования SQLite 3.8.11.
- [bpo-17527](https://python-all.ru/3/whatsnew/changelog.html): Добавлен метод PATCH в wsgiref.validator. Патч от Luca Sbardella.
- [bpo-24791](https://python-all.ru/3/whatsnew/changelog.html): Исправлена регрессия грамматики для синтаксиса вызова: ‘g(\*a or b)’.

### IDLE

- [bpo-23672](https://python-all.ru/3/whatsnew/changelog.html): Разрешить IDLE редактировать и запускать файлы, в именах которых есть астральные символы. Патч от Mohd Sanad Zaki Rizvi.
- [bpo-24745](https://python-all.ru/3/whatsnew/changelog.html): Шрифт редактора Idle по умолчанию. Замена Courier на зависящий от платформы TkFixedFont. Это не должно повлиять на текущие настройки шрифта. При возникновении проблемы отредактируйте $HOME/.idlerc/config-main.cfg и удалите записи ‘`fontxxx`’ из \[Editor Window\]. Патч от Mark Roseman.
- [bpo-21192](https://python-all.ru/3/whatsnew/changelog.html): Редактор Idle. При запуске файла его имя отображается в строке перезапуска. Лишние приглашения больше не выводятся. Оригинальный патч от Adnan Umer.
- [bpo-13884](https://python-all.ru/3/whatsnew/changelog.html): Меню Idle. Удалены отрывные линии. Патч от Roger Serwy.

### Документация

- [bpo-24129](https://python-all.ru/3/whatsnew/changelog.html): Уточнена справочная документация по разрешению имён. В частности, убрано предположение, что читатели знакомы со схемой разрешения имён, используемой в Python до введения лексической области видимости для пространств имён функций. Патч от Ivan Levkivskyi.
- [bpo-20769](https://python-all.ru/3/whatsnew/changelog.html): Улучшена документация по reload(). Патч от Dorian Pula.
- [bpo-23589](https://python-all.ru/3/whatsnew/changelog.html): Из FAQ удалено дублирующееся предложение. Патч от Yongzhi Pan.
- [bpo-24729](https://python-all.ru/3/whatsnew/changelog.html): Исправлено руководство по вводу-выводу – приведено в соответствие с реализацией параметра encoding функции open.

### Тесты

- [bpo-24751](https://python-all.ru/3/whatsnew/changelog.html): При запуске regrtest с опцией командной строки `-w` прогон тестов больше не помечается как неудачный, если при повторном запуске все тесты проходят.

## Python 3.5.0 beta 4

*Дата выпуска: 2015-07-26*

### Ядро и встроенные объекты

- [bpo-23573](https://python-all.ru/3/whatsnew/changelog.html): Восстановлена оптимизация методов bytes.rfind() и bytearray.rfind() для однобайтового аргумента в Linux.
- [bpo-24569](https://python-all.ru/3/whatsnew/changelog.html): Обеспечена более согласованная обработка [**PEP 448**](https://python-all.ru/3/whatsnew/changelog.html) при вычислении словаря.
- [bpo-24583](https://python-all.ru/3/whatsnew/changelog.html): Исправлен сбой при изменении множества во время его обновления.
- [bpo-24407](https://python-all.ru/3/whatsnew/changelog.html): Исправлен сбой при изменении словаря во время его обновления.
- [bpo-24619](https://python-all.ru/3/whatsnew/changelog.html): Новый подход к токенизации async/await. Как следствие, теперь возможно создавать однострочные функции вида ‘async def foo(): await ..’.
- [bpo-24687](https://python-all.ru/3/whatsnew/changelog.html): Устранена утечка ссылок при SyntaxError в аннотациях параметров функций.
- [bpo-15944](https://python-all.ru/3/whatsnew/changelog.html): memoryview: разрешены произвольные форматы при приведении к bytes. Патч от Martin Panter.

### Библиотека

- [bpo-23441](https://python-all.ru/3/whatsnew/changelog.html): rcompleter теперь выводит символ табуляции вместо отображения возможных вариантов завершения для пустого слова. Начальный патч от Martin Sekera.
- [bpo-24683](https://python-all.ru/3/whatsnew/changelog.html): Исправлены сбои в функциях \_json, вызываемых с аргументами неподходящего типа.
- [bpo-21697](https://python-all.ru/3/whatsnew/changelog.html): shutil.copytree() теперь корректно обрабатывает символические ссылки, указывающие на каталоги. Патч от Eduardo Seabra и Thomas Kluyver.
- [bpo-14373](https://python-all.ru/3/whatsnew/changelog.html): Исправлено падение с ошибкой сегментации при вызове gc.collect() во время построения lru\_cache (реализация на C).
- [bpo-24695](https://python-all.ru/3/whatsnew/changelog.html): Исправлена регрессия в traceback.print\_exception(). Если exc\_traceback равен None, не следует выводить заголовок трассировки, как описано в документации.
- [bpo-24620](https://python-all.ru/3/whatsnew/changelog.html): Random.setstate() теперь проверяет значение последнего элемента состояния.
- [bpo-22485](https://python-all.ru/3/whatsnew/changelog.html): Исправлена проблема, из-за которой `inspect.getsource` возвращал некорректные результаты для вложенных функций.
- [bpo-22153](https://python-all.ru/3/whatsnew/changelog.html): Улучшена документация по unittest. Патч от Martin Panter и evilzero.
- [bpo-24580](https://python-all.ru/3/whatsnew/changelog.html): Символьные ссылки на открытую группу в шаблонах re теперь явно запрещены, как и числовые ссылки на группы.
- [bpo-24206](https://python-all.ru/3/whatsnew/changelog.html): Исправлены методы \_\_eq\_\_ и \_\_ne\_\_ классов inspect.
- [bpo-24631](https://python-all.ru/3/whatsnew/changelog.html): Исправлена регрессия в модуле timeit при многострочной настройке setup.
- [bpo-18622](https://python-all.ru/3/whatsnew/changelog.html): unittest.mock.mock\_open().reset\_mock вызывал бесконечную рекурсию. Патч от Nicola Palumbo и Laurent De Buyst.
- [bpo-23661](https://python-all.ru/3/whatsnew/changelog.html): unittest.mock side\_effects снова могут быть исключениями. Это было регрессией по сравнению с Python 3.4. Патч от Ignacio Rossi.
- [bpo-24608](https://python-all.ru/3/whatsnew/changelog.html): chunk.Chunk.read() теперь всегда возвращает bytes, а не str.
- [bpo-18684](https://python-all.ru/3/whatsnew/changelog.html): Исправлено чтение за пределами буфера в модуле re.
- [bpo-24259](https://python-all.ru/3/whatsnew/changelog.html): tarfile теперь возбуждает ReadError, если архив обрезан внутри сегмента данных.
- [bpo-15014](https://python-all.ru/3/whatsnew/changelog.html): SMTP.auth() и SMTP.login() теперь поддерживают необязательный аргумент initial-response (из RFC 4954) для команды SMTP AUTH.
- [bpo-24669](https://python-all.ru/3/whatsnew/changelog.html): Исправлен inspect.getsource() для функций ‘async def’. Патч от Kai Groner.
- [bpo-24688](https://python-all.ru/3/whatsnew/changelog.html): ast.get\_docstring() для функций ‘async def’.

### Сборка

- [bpo-24603](https://python-all.ru/3/whatsnew/changelog.html): Обновлены сборки Windows и установщик OS X 10.5 для использования OpenSSL 1.0.2d.

## Python 3.5.0 beta 3

*Дата выпуска: 2015-07-05*

### Ядро и встроенные модули

- [bpo-24467](https://python-all.ru/3/whatsnew/changelog.html): Исправлена возможная ошибка чтения за пределами буфера в bytearray. Объект bytearray теперь всегда выделяет место для завершающего нулевого байта, и его буфер теперь всегда завершается нулём.
- Обновление до Unicode 8.0.0.
- [bpo-24345](https://python-all.ru/3/whatsnew/changelog.html): Добавлен слот Py\_tp\_finalize для стабильного ABI.
- [bpo-24400](https://python-all.ru/3/whatsnew/changelog.html): Введён отдельный тип для [**PEP 492**](https://python-all.ru/3/whatsnew/changelog.html) корутин; добавлены types.CoroutineType, inspect.getcoroutinestate, inspect.getcoroutinelocals; корутины больше не используют флаг CO\_GENERATOR; sys.set\_coroutine\_wrapper работает только для корутин ‘async def’; inspect.iscoroutine больше не использует collections.abc.Coroutine, он предназначен только для проверки чистых корутин ‘async def’; добавлена новая опкода: GET\_YIELD\_FROM\_ITER; исправлена обёртка генераторов, используемая в types.coroutine, чтобы она была экземпляром collections.abc.Generator; collections.abc.Awaitable и collections.abc.Coroutine больше не могут использоваться для обнаружения корутин на основе генераторов – используйте вместо этого inspect.isawaitable.
- [bpo-24450](https://python-all.ru/3/whatsnew/changelog.html): Добавлены gi\_yieldfrom для генераторов и cr\_await для корутин. Предоставлено Benno Leslie и Yury Selivanov.
- [bpo-19235](https://python-all.ru/3/whatsnew/changelog.html): Добавлено новое исключение RecursionError. Патч от Georg Brandl.

### Библиотека

- [bpo-21750](https://python-all.ru/3/whatsnew/changelog.html): mock\_open.read\_data теперь можно читать из каждого экземпляра, как это было в Python 3.3.
- [bpo-24552](https://python-all.ru/3/whatsnew/changelog.html): Исправлено использование после освобождения в случае ошибки в модуле \_pickle.
- [bpo-24514](https://python-all.ru/3/whatsnew/changelog.html): tarfile теперь допускает числовые поля, состоящие только из пробельных символов.
- [bpo-19176](https://python-all.ru/3/whatsnew/changelog.html): Исправлены ошибки, связанные с doctype(), в C-реализации ElementTree. Подкласс XMLParser с методом doctype() по умолчанию больше не выдаёт предупреждение об устаревании. Прямой вызов doctype() теперь выдаёт предупреждение. Метод doctype() парсера теперь не вызывается, если вызывается doctype() целевого объекта. На основе патча от Martin Panter.
- [bpo-20387](https://python-all.ru/3/whatsnew/changelog.html): Восстановлена семантическая корректность преобразования туда-обратно в tokenize/untokenize для блоков с отступами табуляцией.
- [bpo-24456](https://python-all.ru/3/whatsnew/changelog.html): Исправлена возможная ошибка чтения за пределами буфера в функциях adpcm2lin() и lin2adpcm() модуля audioop.
- [bpo-24336](https://python-all.ru/3/whatsnew/changelog.html): Декоратор contextmanager теперь работает с функциями, имеющими именованные аргументы с именами «func» и «self». Патч от Martin Panter.
- [bpo-24522](https://python-all.ru/3/whatsnew/changelog.html): Исправлено возможное целочисленное переполнение в ускорителе модуля json.
- [bpo-24489](https://python-all.ru/3/whatsnew/changelog.html): Обеспечено, чтобы ранее установленный errno языка C не мешал работе cmath.polar().
- [bpo-24408](https://python-all.ru/3/whatsnew/changelog.html): Исправлен AttributeError в методах measure() и metrics() класса tkinter.Font.
- [bpo-14373](https://python-all.ru/3/whatsnew/changelog.html): C-реализация functools.lru\_cache() теперь может использоваться с методами.
- [bpo-24347](https://python-all.ru/3/whatsnew/changelog.html): Установлено KeyError, если PyDict\_GetItemWithError возвращает NULL.
- [bpo-24348](https://python-all.ru/3/whatsnew/changelog.html): Убраны лишние incref/decref.
- [bpo-24359](https://python-all.ru/3/whatsnew/changelog.html): Проверка изменения размера OrderedDict во время итерации.
- [bpo-24368](https://python-all.ru/3/whatsnew/changelog.html): Поддержка именованных аргументов в методах OrderedDict.
- [bpo-24362](https://python-all.ru/3/whatsnew/changelog.html): Упрощена логика изменения размера быстрых узлов в C-реализации OrderedDict.
- [bpo-24377](https://python-all.ru/3/whatsnew/changelog.html): Исправлена утечка ссылки в OrderedDict.\_\_repr\_\_.
- [bpo-24369](https://python-all.ru/3/whatsnew/changelog.html): Защита от изменения ключей во время итерации.

### Тесты

- [bpo-24373](https://python-all.ru/3/whatsnew/changelog.html): \_testmultiphase и xxlimited теперь используют tp\_traverse и tp\_finalize для предотвращения утечек ссылок, возникающих при объединении tp\_dealloc с PyType\_FromSpec (см. [bpo-16690](https://python-all.ru/3/whatsnew/changelog.html) для подробностей).

### Документация

- [bpo-24458](https://python-all.ru/3/whatsnew/changelog.html): Обновлена документация, чтобы охватить многофазную инициализацию для модулей-расширений (PEP 489). Патч от Petr Viktorin.
- [bpo-24351](https://python-all.ru/3/whatsnew/changelog.html): Уточнено, что подразумевается под «идентификатором» в контексте экземпляров string.Template.

### Сборка

- [bpo-24432](https://python-all.ru/3/whatsnew/changelog.html): Обновлены сборки Windows и установщик OS X 10.5 для использования OpenSSL 1.0.2c.

## Python 3.5.0 beta 2

*Дата выпуска: 2015-05-31*

### Ядро и встроенные объекты

- [bpo-24284](https://python-all.ru/3/whatsnew/changelog.html): Методы startswith и endswith класса str больше не возвращают True при поиске пустой строки, если индексы полностью выходят за диапазон.
- [bpo-24115](https://python-all.ru/3/whatsnew/changelog.html): Обновлены вызовы PyObject\_IsTrue(), PyObject\_Not(), PyObject\_IsInstance(), PyObject\_RichCompareBool() и \_PyDict\_Contains() для корректной проверки и обработки ошибок.
- [bpo-24328](https://python-all.ru/3/whatsnew/changelog.html): Исправлен импорт модулей-расширений из одного символа.
- [bpo-11205](https://python-all.ru/3/whatsnew/changelog.html): В словарных литералах ключ вычисляется до значения.
- [bpo-24285](https://python-all.ru/3/whatsnew/changelog.html): Исправлен регресс, препятствовавший импорту модулей-расширений изнутри пакетов. Патч от Petr Viktorin.

### Библиотека

- [bpo-23247](https://python-all.ru/3/whatsnew/changelog.html): Исправлен сбой в StreamWriter.reset() кодеков CJK.
- [bpo-24270](https://python-all.ru/3/whatsnew/changelog.html): Добавлены функции math.isclose() и cmath.isclose() в соответствии с [**PEP 485**](https://python-all.ru/3/whatsnew/changelog.html). Предложено Chris Barker и Tal Einat.
- [bpo-5633](https://python-all.ru/3/whatsnew/changelog.html): Исправлен timeit, когда инструкция является строкой, а настройка – нет.
- [bpo-24326](https://python-all.ru/3/whatsnew/changelog.html): Исправлен audioop.ratecv() с нестандартным аргументом weightB. Оригинальный патч от David Moore.
- [bpo-16991](https://python-all.ru/3/whatsnew/changelog.html): Добавлена C-реализация OrderedDict.
- [bpo-23934](https://python-all.ru/3/whatsnew/changelog.html): Исправлен inspect.signature для корректного отказа для встроенных типов, не имеющих информации о сигнатуре. Первоначальный патч от James Powell.

## Python 3.5.0 beta 1

*Дата выпуска: 2015-05-24*

### Ядро и встроенные объекты

- [bpo-24276](https://python-all.ru/3/whatsnew/changelog.html): Исправлена оптимизация геттера дескриптора property.
- [bpo-24268](https://python-all.ru/3/whatsnew/changelog.html): PEP 489: Многофазная инициализация модулей расширений. Исправление от Петра Викторина.
- [bpo-23955](https://python-all.ru/3/whatsnew/changelog.html): Добавлена опция pyvenv.cfg для подавления поиска в реестре/окружении при генерации sys.path на Windows.
- [bpo-24257](https://python-all.ru/3/whatsnew/changelog.html): Исправлена системная ошибка при сравнении поддельных объектов types.SimpleNamespace.
- [bpo-22939](https://python-all.ru/3/whatsnew/changelog.html): Исправлено целочисленное переполнение в объекте итератора. Исправление от Клемана Руо.
- [bpo-23985](https://python-all.ru/3/whatsnew/changelog.html): Исправлена возможная запись за границы буфера при удалении среза из начала bytearray и последующем добавлении других байтовых данных.
- [bpo-24102](https://python-all.ru/3/whatsnew/changelog.html): Исправлена проверка типа исключения в стандартных обработчиках ошибок.
- [bpo-15027](https://python-all.ru/3/whatsnew/changelog.html): Кодировщик UTF-32 теперь работает в 3–7 раз быстрее.
- [bpo-23290](https://python-all.ru/3/whatsnew/changelog.html): Оптимизация set\_merge() для случая, когда целевое множество пусто. (Автор: Serhiy Storchaka.)
- [bpo-2292](https://python-all.ru/3/whatsnew/changelog.html): PEP 448: Дополнительные обобщения распаковки.
- [bpo-24096](https://python-all.ru/3/whatsnew/changelog.html): Сделать warnings.warn\_explicit более устойчивым к изменению списка warnings.filters.
- [bpo-23996](https://python-all.ru/3/whatsnew/changelog.html): Предотвращение сбоя, когда делегированный генератор возбуждает ненормализованное исключение StopIteration. Исправление от Stefan Behnel.
- [bpo-23910](https://python-all.ru/3/whatsnew/changelog.html): Оптимизация вызовов геттеров property(). Исправление от Joe Jevnik.
- [bpo-23911](https://python-all.ru/3/whatsnew/changelog.html): Перенос загрузочного кода importlib, основанного на путях, в отдельный замороженный модуль.
- [bpo-24192](https://python-all.ru/3/whatsnew/changelog.html): Исправление импорта пакетов пространств имён.
- [bpo-24022](https://python-all.ru/3/whatsnew/changelog.html): Исправление сбоя токенизатора при обработке не поддающегося декодированию исходного кода.
- [bpo-9951](https://python-all.ru/3/whatsnew/changelog.html): Добавлен метод hex() для bytes, bytearray и memoryview.
- [bpo-22906](https://python-all.ru/3/whatsnew/changelog.html): PEP 479: Изменение обработки StopIteration внутри генераторов.
- [bpo-24017](https://python-all.ru/3/whatsnew/changelog.html): PEP 492: Корутины с синтаксисом async и await.

### Библиотека

- [bpo-14373](https://python-all.ru/3/whatsnew/changelog.html): Добавлена реализация на C для functools.lru\_cache(). Основано на патчах от Matt Joiner и Alexey Kachayev.
- [bpo-24230](https://python-all.ru/3/whatsnew/changelog.html): Модуль tempfile теперь принимает bytes для параметров prefix, suffix и dir и возвращает bytes в таких случаях (соответствует API модуля os).
- [bpo-22189](https://python-all.ru/3/whatsnew/changelog.html): collections.UserString теперь поддерживает \_\_getnewargs\_\_(), \_\_rmod\_\_(), casefold(), format\_map(), isprintable() и maketrans(). Исправление от Joe Jevnik.
- [bpo-24244](https://python-all.ru/3/whatsnew/changelog.html): Предотвращение завершения при обнаружении неверной форматной строки в strftime на Windows.
- [bpo-23973](https://python-all.ru/3/whatsnew/changelog.html): PEP 484: Добавление модуля typing.
- [bpo-23086](https://python-all.ru/3/whatsnew/changelog.html): Абстрактный базовый класс collections.abc.Sequence() добавил параметры *start* и *stop* в метод index() примеси. Исправление от Devin Jeanpierre.
- [bpo-20035](https://python-all.ru/3/whatsnew/changelog.html): Модуль `tkinter._fix`, использовавшийся для настройки окружения Tcl/Tk на Windows, заменён на приватную функцию в модуле `_tkinter`, которая не вносит постоянных изменений в окружение.
- [bpo-24257](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка сегментации в конструкторе sqlite3.Row при поддельном типе курсора.
- [bpo-15836](https://python-all.ru/3/whatsnew/changelog.html): Утверждения assertRaises(), assertRaisesRegex(), assertWarns() и assertWarnsRegex() теперь проверяют тип первого аргумента для предотвращения возможных ошибок пользователя. Основано на патче от Daniel Wagner-Hall.
- [bpo-9858](https://python-all.ru/3/whatsnew/changelog.html): Добавление недостающих заглушек методов в \_io.RawIOBase. Исправление от Laura Rupprecht.
- [bpo-22955](https://python-all.ru/3/whatsnew/changelog.html): Объекты attrgetter, itemgetter и methodcaller в модуле operator теперь поддерживают сериализацию (pickling). Добавлено читаемое и воспроизводимое repr для этих объектов. Основано на патче от Josh Rosenberg.
- [bpo-22107](https://python-all.ru/3/whatsnew/changelog.html): tempfile.gettempdir() и tempfile.mkdtemp() теперь повторяют попытку, если каталог с выбранным именем уже существует, как на Windows, так и на Unix. tempfile.mkstemp() теперь завершается с ошибкой заранее, если родительский каталог недействителен (не существует или является файлом) на Windows.
- [bpo-23780](https://python-all.ru/3/whatsnew/changelog.html): Улучшено сообщение об ошибке в os.path.join() при одном аргументе.
- [bpo-6598](https://python-all.ru/3/whatsnew/changelog.html): повышена точность времени и расширен диапазон случайных чисел в email.utils.make\_msgid() для усиления уникальности идентификатора сообщения.
- [bpo-24091](https://python-all.ru/3/whatsnew/changelog.html): исправлены различные крахи в граничных случаях в C-реализации ElementTree.
- [bpo-21931](https://python-all.ru/3/whatsnew/changelog.html): msilib.FCICreate() теперь вызывает TypeError при некорректном аргументе вместо ValueError с ложным кодом ошибки FCI. Исправление от Jeffrey Armstrong.
- [bpo-13866](https://python-all.ru/3/whatsnew/changelog.html): в urllib.parse.urlencode добавлен аргумент *quote\_via*.
- [bpo-20098](https://python-all.ru/3/whatsnew/changelog.html): новая опция политики mangle\_from для email: по умолчанию True для compat32, но False для всех остальных политик.
- [bpo-24211](https://python-all.ru/3/whatsnew/changelog.html): библиотека email теперь поддерживает RFC 6532: может генерировать заголовки, используя utf-8 вместо закодированных слов.
- [bpo-16314](https://python-all.ru/3/whatsnew/changelog.html): добавлена поддержка сжатия LZMA в distutils.
- [bpo-21804](https://python-all.ru/3/whatsnew/changelog.html): poplib теперь поддерживает RFC 6856 (UTF8).
- [bpo-18682](https://python-all.ru/3/whatsnew/changelog.html): оптимизированы функции pprint для встроенных скалярных типов.
- [bpo-22027](https://python-all.ru/3/whatsnew/changelog.html): smtplib теперь поддерживает RFC 6531 (SMTPUTF8).
- [bpo-23488](https://python-all.ru/3/whatsnew/changelog.html): объекты генератора случайных чисел теперь потребляют в 2 раза меньше памяти на 64-битных системах.
- [bpo-1322](https://python-all.ru/3/whatsnew/changelog.html): функции platform.dist() и platform.linux\_distribution() теперь устарели. Первоначальная правка от Vajrasky Kok.
- [bpo-22486](https://python-all.ru/3/whatsnew/changelog.html): добавлена функция math.gcd(). Функция fractions.gcd() теперь устарела. Основано на правке Mark Dickinson.
- [bpo-24064](https://python-all.ru/3/whatsnew/changelog.html): строки документации Property() теперь доступны для записи. (Правка от Berker Peksag.)
- [bpo-22681](https://python-all.ru/3/whatsnew/changelog.html): добавлена поддержка кодировки koi8\_t.
- [bpo-22682](https://python-all.ru/3/whatsnew/changelog.html): добавлена поддержка кодировки kz1048.
- [bpo-23796](https://python-all.ru/3/whatsnew/changelog.html): методы peek и read1 класса BufferedReader теперь вызывают ValueError при вызове на закрытом объекте. Правка от John Hergenroeder.
- [bpo-21795](https://python-all.ru/3/whatsnew/changelog.html): smtpd теперь поддерживает расширение 8BITMIME, когда новый аргумент конструктора *decode\_data* установлен в False.
- [bpo-24155](https://python-all.ru/3/whatsnew/changelog.html): оптимизирован heapq.heapify() для лучшей кэш-производительности при построении кучи из больших списков.
- [bpo-21800](https://python-all.ru/3/whatsnew/changelog.html): imaplib теперь поддерживает RFC 5161 (enable), RFC 6855 (utf8/internationalized email) и автоматически кодирует не-ASCII имена пользователей и пароли в UTF8.
- [bpo-20274](https://python-all.ru/3/whatsnew/changelog.html): при вызове \_sqlite.Connection теперь выдаётся ошибка, если переданы именованные аргументы. Ранее они молча игнорировались.
- [bpo-20274](https://python-all.ru/3/whatsnew/changelog.html): удалены игнорируемые и ошибочные параметры «kwargs» из трёх методов METH\_VARARGS в \_sqlite.Connection.
- [bpo-24134](https://python-all.ru/3/whatsnew/changelog.html): проверки assertRaises(), assertRaisesRegex(), assertWarns() и assertWarnsRegex() теперь выдают предупреждение об устаревании, если вызываемый объект равен None или в режиме контекстного менеджера переданы именованные аргументы, кроме msg.
- [bpo-24018](https://python-all.ru/3/whatsnew/changelog.html): добавлен абстрактный базовый класс collections.abc.Generator. Предложено Stefan Behnel.
- [bpo-23880](https://python-all.ru/3/whatsnew/changelog.html): getint() и getdouble() из Tkinter теперь поддерживают Tcl\_Obj. getdouble() из Tkinter теперь поддерживает любые числа (в частности int).
- [bpo-22619](https://python-all.ru/3/whatsnew/changelog.html): добавлена поддержка отрицательного предела в модуле traceback. На основе правки Dmitry Kazakov.
- [bpo-24094](https://python-all.ru/3/whatsnew/changelog.html): исправлен возможный крах в json.encode при использовании плохо ведущих себя подклассов dict.
- [bpo-9246](https://python-all.ru/3/whatsnew/changelog.html): на POSIX os.getcwd() теперь поддерживает пути длиннее 1025 байт. Правка от William Orr.
- [bpo-17445](https://python-all.ru/3/whatsnew/changelog.html): добавлена difflib.diff\_bytes() для поддержки сравнения строк байт (исправляет регрессию из Python 2).
- [bpo-23917](https://python-all.ru/3/whatsnew/changelog.html): возврат к последовательной компиляции, если ProcessPoolExecutor не существует. Правка от Claudiu Popa.
- [bpo-23008](https://python-all.ru/3/whatsnew/changelog.html): исправлено разрешение атрибутов с булевым значением False в pydoc.
- Исправление ошибки asyncio issue 235: метод put у LifoQueue и PriorityQueue не увеличивал счётчик незавершённых задач (ошибка возникла при объединении очередей JoinableQueue и Queue).
- [bpo-23908](https://python-all.ru/3/whatsnew/changelog.html): функции os теперь отклоняют пути со встроенным нулевым символом в Windows вместо того, чтобы молча обрезать их.
- [bpo-23728](https://python-all.ru/3/whatsnew/changelog.html): binascii.crc\_hqx() мог возвращать целое число вне диапазона 0–0xffff для пустых данных.
- [bpo-23887](https://python-all.ru/3/whatsnew/changelog.html): у urllib.error.HTTPError теперь есть корректное представление repr(). Исправление от Berker Peksag.
- asyncio: новые API цикла событий: set\_task\_factory() и get\_task\_factory().
- asyncio: функция async() устарела в пользу ensure\_future().
- [bpo-24178](https://python-all.ru/3/whatsnew/changelog.html): asyncio.Lock, Condition, Semaphore и BoundedSemaphore поддерживают новый синтаксис ‘async with’. Вклад Юрия Селиванова.
- [bpo-24179](https://python-all.ru/3/whatsnew/changelog.html): поддержка ‘async for’ для asyncio.StreamReader. Вклад Юрия Селиванова.
- [bpo-24184](https://python-all.ru/3/whatsnew/changelog.html): добавлены абстрактные базовые классы AsyncIterator и AsyncIterable в collections.abc. Вклад Юрия Селиванова.
- [bpo-22547](https://python-all.ru/3/whatsnew/changelog.html): реализован информативный \_\_repr\_\_ для inspect.BoundArguments. Вклад Юрия Селиванова.
- [bpo-24190](https://python-all.ru/3/whatsnew/changelog.html): реализован метод inspect.BoundArgument.apply\_defaults(). Вклад Юрия Селиванова.
- [bpo-20691](https://python-all.ru/3/whatsnew/changelog.html): добавлен аргумент ‘follow\_wrapped’ в inspect.Signature.from\_callable() и inspect.signature(). Вклад Юрия Селиванова.
- [bpo-24248](https://python-all.ru/3/whatsnew/changelog.html): объявлены устаревшими inspect.Signature.from\_function() и inspect.Signature.from\_builtin().
- [bpo-23898](https://python-all.ru/3/whatsnew/changelog.html): исправлен inspect.classify\_class\_attrs() для поддержки атрибутов с перегруженными \_\_eq\_\_ и \_\_bool\_\_. Исправление от Mike Bayer.
- [bpo-24298](https://python-all.ru/3/whatsnew/changelog.html): исправлен inspect.signature() для корректного разворачивания обёрток вокруг привязанных методов.

### IDLE

- [bpo-23184](https://python-all.ru/3/whatsnew/changelog.html): удалены неиспользуемые имена и импорты в idlelib. Первоначальное исправление от Al Sweigart.

### Tests

- [bpo-21520](https://python-all.ru/3/whatsnew/changelog.html): test\_zipfile больше не завершается ошибкой, если слово ‘bad’ встречается где-либо в имени текущего каталога.
- [bpo-9517](https://python-all.ru/3/whatsnew/changelog.html): script\_helper перемещён в пакет support. Исправление от Christie Wilson.

### Documentation

- [bpo-22155](https://python-all.ru/3/whatsnew/changelog.html): добавлен подраздел File Handlers с createfilehandler в документацию tkinter. Удалён устаревший пример из FAQ. Исправление от Martin Panter.
- [bpo-24029](https://python-all.ru/3/whatsnew/changelog.html): документировано поведение связывания имён для импорта подмодулей.
- [bpo-24077](https://python-all.ru/3/whatsnew/changelog.html): исправлена опечатка в man-странице для опции командной строки -I: должно быть -s, а не -S.

### Tools/Demos

- [bpo-24000](https://python-all.ru/3/whatsnew/changelog.html): улучшено отображение конвертеров Argument Clinic на устаревшие «форматные единицы». Документация обновлена соответствующим образом.
- [bpo-24001](https://python-all.ru/3/whatsnew/changelog.html): конвертеры Argument Clinic теперь используют accept={type} вместо types={‘type’} для указания типов, которые принимает конвертер.
- [bpo-23330](https://python-all.ru/3/whatsnew/changelog.html): h2py теперь поддерживает произвольные имена файлов в #include.
- [bpo-24031](https://python-all.ru/3/whatsnew/changelog.html): make patchcheck теперь также поддерживает git-чекауты.

## Python 3.5.0 alpha 4

*Дата выпуска: 2015-04-19*

### Core and Builtins

- [bpo-22980](https://python-all.ru/3/whatsnew/changelog.html): в Linux, GNU/kFreeBSD и Hurd расширения на C теперь включают triplet архитектуры в имя расширения, чтобы упростить тестирование сборок для разных ABI в одном рабочем дереве. В OS X имя расширения теперь содержит информацию в стиле [**PEP 3149**](https://python-all.ru/3/whatsnew/changelog.html).
- [bpo-22631](https://python-all.ru/3/whatsnew/changelog.html): Добавлена Linux-специфичная константа сокета CAN\_RAW\_FD\_FRAMES. Патч от Джо Джевника.
- [bpo-23731](https://python-all.ru/3/whatsnew/changelog.html): Реализован [**PEP 488**](https://python-all.ru/3/whatsnew/changelog.html): удаление файлов .pyo.
- [bpo-23726](https://python-all.ru/3/whatsnew/changelog.html): Сборщик мусора (GC) больше не включается для пользовательских подклассов не-GC типов, не добавляющих новые поля. Патч от Юджина Тодера.
- [bpo-23309](https://python-all.ru/3/whatsnew/changelog.html): Устранена взаимная блокировка при завершении, если поток-демон прерван во время удержания блокировки буферизованного объекта ввода-вывода, а главный поток пытается использовать тот же объект (обычно stdout или stderr). Вместо этого выводится фатальная ошибка.
- [bpo-22977](https://python-all.ru/3/whatsnew/changelog.html): Исправлено форматирование сообщений об ошибках Windows в Wine. Патч от Мартина Пантера.
- [bpo-23466](https://python-all.ru/3/whatsnew/changelog.html): Форматы %c, %o, %x и %X в форматировании bytes теперь вызывают TypeError, если аргумент не целое число.
- [bpo-24044](https://python-all.ru/3/whatsnew/changelog.html): Исправлено возможное разыменование нулевого указателя в list.sort при нехватке памяти.
- [bpo-21354](https://python-all.ru/3/whatsnew/changelog.html): Функция PyCFunction\_New снова доступна в DLL Python.

### Библиотека

- [bpo-23840](https://python-all.ru/3/whatsnew/changelog.html): tokenize.open() теперь при ошибке закрывает временный бинарный файл, чтобы устранить предупреждение о ресурсах.
- [bpo-16914](https://python-all.ru/3/whatsnew/changelog.html): Новый уровень отладки 2 в smtplib добавляет временные метки к отладочному выводу.
- [bpo-7159](https://python-all.ru/3/whatsnew/changelog.html): urllib.request теперь может автоматически отправлять учётные данные после первого ответа 401. Это расширение является надмножеством улучшения из [bpo-19494](https://python-all.ru/3/whatsnew/changelog.html) и заменяет его.
- [bpo-23703](https://python-all.ru/3/whatsnew/changelog.html): Исправлен регресс в urljoin(), возникший в версии 901e4e52b20a. Патч от Демиана Брехта.
- [bpo-4254](https://python-all.ru/3/whatsnew/changelog.html): Добавлен \_curses.update\_lines\_cols(). Патч от Арнона Яари.
- [bpo-19933](https://python-all.ru/3/whatsnew/changelog.html): Для round добавлен аргумент по умолчанию ndigits. Патч от Вайраски Кока.
- [bpo-23193](https://python-all.ru/3/whatsnew/changelog.html): В tarfile.TarFile.extract и tarfile.TarFile.extractall добавлен параметр numeric\_owner. Патч от Майкла Фогта и Эрика Смита.
- [bpo-23342](https://python-all.ru/3/whatsnew/changelog.html): Добавлена функция subprocess.run(), которая возвращает экземпляр CalledProcess, что обеспечивает более единообразный API по сравнению с существующими функциями call\*.
- [bpo-21217](https://python-all.ru/3/whatsnew/changelog.html): inspect.getsourcelines() теперь пытается вычислить начальную и конечную строки по объекту кода, что исправляет проблему при использовании лямбда-функции в качестве аргумента декоратора. Патч от Томаса Баллинджера и Эллисон Каптур.
- [bpo-24521](https://python-all.ru/3/whatsnew/changelog.html): Исправлены возможные целочисленные переполнения в модуле pickle.
- [bpo-22931](https://python-all.ru/3/whatsnew/changelog.html): Разрешены символы '\[' и '\]' в значениях cookie.
- Атрибут keywords у functools.partial теперь всегда является словарём.
- [bpo-23811](https://python-all.ru/3/whatsnew/changelog.html): Добавлен отсутствующий символ новой строки в сообщение об ошибке PyCompileError. Патч от Алекса Шкопа.
- [bpo-21116](https://python-all.ru/3/whatsnew/changelog.html): Предотвращено чрезмерное потребление памяти при выделении разделяемого массива multiprocessing размером более 50% доступной оперативной памяти. Патч от Медерика Бокьена.
- [bpo-22982](https://python-all.ru/3/whatsnew/changelog.html): Улучшена обработка метки порядка байтов (BOM) при перемещении на несколько позиций в файле текста, доступном для записи.
- [bpo-23464](https://python-all.ru/3/whatsnew/changelog.html): Удалена устаревшая asyncio.JoinableQueue.
- [bpo-23529](https://python-all.ru/3/whatsnew/changelog.html): Ограничен размер распакованных данных при чтении из GzipFile, BZ2File или LZMAFile. Это предотвращает атаки типа «отказ в обслуживании» с использованием сжатых «бомб» (сжатых данных, которые распаковываются до огромного размера). Патч от Мартина Пантера и Николауса Рата.
- [bpo-21859](https://python-all.ru/3/whatsnew/changelog.html): Добавлена реализация io.FileIO на Python.
- [bpo-23865](https://python-all.ru/3/whatsnew/changelog.html): Методы close() в нескольких модулях теперь идемпотентны и более надёжны при завершении. Если необходимо освободить несколько ресурсов, все они освобождаются, даже если возникают ошибки.
- [bpo-23400](https://python-all.ru/3/whatsnew/changelog.html): В случае недоступности sem\_open теперь возбуждается одно и то же исключение в Python 2 и 3. Патч от Дэвина Поттса.
- [bpo-10838](https://python-all.ru/3/whatsnew/changelog.html): Модуль subprocess теперь включает SubprocessError и TimeoutError в список экспортируемых имён для пользователей, которым хватает смелости использовать `from subprocess import *`.
- [bpo-23411](https://python-all.ru/3/whatsnew/changelog.html): В urllib.parse.\_\_all\_\_ добавлены DefragResult, ParseResult, SplitResult, DefragResultBytes, ParseResultBytes и SplitResultBytes. Патч от Мартина Пантера.
- [bpo-23881](https://python-all.ru/3/whatsnew/changelog.html): Конструктор urllib.request.ftpwrapper теперь закрывает сокет в случае неудачного FTP-соединения, чтобы устранить предупреждение ResourceWarning.
- [bpo-23853](https://python-all.ru/3/whatsnew/changelog.html): [`socket.socket.sendall()`](https://python-all.ru/3/library/socket.html#socket.socket.sendall) больше не сбрасывает таймаут сокета при каждой успешной отправке данных. Таймаут сокета теперь – это максимальная общая длительность отправки всех данных.
- [bpo-22721](https://python-all.ru/3/whatsnew/changelog.html): Порядок многострочного вывода pprint для множества или словаря, содержащего упорядочиваемые и неупорядочиваемые элементы, больше не зависит от порядка итерации по множеству или словарю.
- [bpo-15133](https://python-all.ru/3/whatsnew/changelog.html): \_tkinter.tkapp.getboolean() теперь поддерживает Tcl\_Obj и всегда возвращает bool. tkinter.BooleanVar теперь проверяет входные значения (принимает bool, int, str и Tcl\_Obj). tkinter.BooleanVar.get() теперь всегда возвращает bool.
- [bpo-10590](https://python-all.ru/3/whatsnew/changelog.html): xml.sax.parseString() теперь поддерживает строковый аргумент.
- [bpo-23338](https://python-all.ru/3/whatsnew/changelog.html): Исправлено форматирование сообщений об ошибках ctypes в Cygwin. Патч от Makoto Kato.
- [bpo-15582](https://python-all.ru/3/whatsnew/changelog.html): inspect.getdoc() теперь следует по цепочкам наследования.
- [bpo-2175](https://python-all.ru/3/whatsnew/changelog.html): Анализаторы SAX теперь поддерживают символьный поток объекта InputSource.
- [bpo-16840](https://python-all.ru/3/whatsnew/changelog.html): Tkinter теперь поддерживает 64-битные целые, добавленные в Tcl 8.4, и целые произвольной точности, добавленные в Tcl 8.5.
- [bpo-23834](https://python-all.ru/3/whatsnew/changelog.html): Исправление socket.sendto(): для хранения результата sendto() используется тип Py\_ssize\_t из C вместо типа int.
- [bpo-23618](https://python-all.ru/3/whatsnew/changelog.html): [`socket.socket.connect()`](https://python-all.ru/3/library/socket.html#socket.socket.connect) теперь ожидает завершения соединения вместо того, чтобы вызывать [`InterruptedError`](https://python-all.ru/3/library/exceptions.html#InterruptedError), если соединение прерывается сигналами, обработчики сигналов не вызывают исключение, а сокет блокирующий или имеет таймаут. `socket.socket.connect()` по-прежнему вызывает `InterruptedError` для неблокирующих сокетов.
- [bpo-21526](https://python-all.ru/3/whatsnew/changelog.html): Tkinter теперь поддерживает новый логический тип в Tcl 8.5.
- [bpo-23836](https://python-all.ru/3/whatsnew/changelog.html): Исправление модуля faulthandler для обработки повторных вызовов его обработчиков сигналов.
- [bpo-23838](https://python-all.ru/3/whatsnew/changelog.html): linecache теперь очищает кеш и возвращает пустой результат при MemoryError.
- [bpo-10395](https://python-all.ru/3/whatsnew/changelog.html): Добавлена функция os.path.commonpath(). Реализована в posixpath и ntpath. Основано на патче от Rafik Draoui.
- [bpo-23611](https://python-all.ru/3/whatsnew/changelog.html): Сериализация большего числа «lookupable» объектов (таких как непривязанные методы или вложенные классы) теперь поддерживается протоколами pickle \< 4.
- [bpo-13583](https://python-all.ru/3/whatsnew/changelog.html): sqlite3.Row теперь поддерживает срезовую индексацию.
- [bpo-18473](https://python-all.ru/3/whatsnew/changelog.html): Исправлены отображения pickle, совместимые с 2to3 и 3to2. Исправлены неоднозначные обратные отображения. Добавлено много новых отображений. Отображение импорта больше не применяется к модулям, уже сопоставленным с полным именем.
- [bpo-23485](https://python-all.ru/3/whatsnew/changelog.html): select.select() теперь автоматически повторяется с пересчитанным таймаутом при прерывании сигналом, за исключением случая, когда обработчик сигнала вызывает исключение. Это изменение является частью [**PEP 475**](https://python-all.ru/3/whatsnew/changelog.html).
- [bpo-23752](https://python-all.ru/3/whatsnew/changelog.html): При создании из существующего файлового дескриптора io.FileIO() теперь вызывает fstat() только один раз. Раньше fstat() вызывался дважды, что было излишним.
- [bpo-23704](https://python-all.ru/3/whatsnew/changelog.html): Объекты collections.deque() теперь поддерживают \_\_add\_\_, \_\_mul\_\_ и \_\_imul\_\_().
- [bpo-23171](https://python-all.ru/3/whatsnew/changelog.html): csv.Writer.writerow() теперь поддерживает произвольные итерабельные объекты.
- [bpo-23745](https://python-all.ru/3/whatsnew/changelog.html): Новый анализатор заголовков email теперь обрабатывает дублирующиеся имена параметров MIME без ошибки, аналогично поведению get\_param.
- [bpo-22117](https://python-all.ru/3/whatsnew/changelog.html): Исправление os.utime(): теперь он округляет метку времени в сторону минус бесконечности (-inf) вместо округления к нулю.
- [bpo-23310](https://python-all.ru/3/whatsnew/changelog.html): Исправлен инициализатор MagicMock для работы с \_\_methods\_\_, как и configure\_mock(). Патч от Kasia Jachim.

### Сборка

- [bpo-23817](https://python-all.ru/3/whatsnew/changelog.html): FreeBSD теперь использует «1.0» в SOVERSION, как и другие операционные системы, вместо просто «1».
- [bpo-23501](https://python-all.ru/3/whatsnew/changelog.html): Argument Clinic теперь по умолчанию генерирует код в отдельные файлы.

### Тесты

- [bpo-23799](https://python-all.ru/3/whatsnew/changelog.html): Добавлена test.support.start\_threads() для запуска и очистки нескольких потоков.
- [bpo-22390](https://python-all.ru/3/whatsnew/changelog.html): test.regrtest теперь выводит предупреждение, если после выполнения теста остаются временные файлы или каталоги.

### Инструменты/Демо

- [bpo-18128](https://python-all.ru/3/whatsnew/changelog.html): pygettext теперь использует стандартный формат +NNNN в заголовке POT-Creation-Date.
- [bpo-23935](https://python-all.ru/3/whatsnew/changelog.html): Понимание Argument Clinic форматов, принимающих bytes, bytearrays и буферы, теперь согласовано как с документацией, так и с реализацией.
- [bpo-23944](https://python-all.ru/3/whatsnew/changelog.html): Argument Clinic теперь переносит длинные прототипы impl на 78-м столбце.
- [bpo-20586](https://python-all.ru/3/whatsnew/changelog.html): Argument Clinic теперь гарантирует, что у функций без документирующих строк есть сигнатуры.
- [bpo-23492](https://python-all.ru/3/whatsnew/changelog.html): Argument Clinic теперь генерирует код разбора аргументов с помощью PyArg\_Parse вместо PyArg\_ParseTuple, если это возможно.
- [bpo-23500](https://python-all.ru/3/whatsnew/changelog.html): Argument Clinic теперь умнее генерирует пустое определение макроса methoddef через “#ifndef”: оно создаётся только один раз, даже если Argument Clinic обрабатывает один и тот же символ несколько раз, и выводится после завершения всей обработки, а не сразу после первого использования.

### C API

- [bpo-23998](https://python-all.ru/3/whatsnew/changelog.html): PyImport\_ReInitLock() теперь проверяет ошибку выделения блокировки.

## Python 3.5.0 alpha 3

*Дата выпуска: 2015-03-28*

### Ядро и встроенные

- [bpo-23573](https://python-all.ru/3/whatsnew/changelog.html): Повышена производительность операций поиска в строках (str.find, str.index, str.count, оператор in, str.split, str.partition) при передаче аргументов разных типов (UCS1, UCS2, UCS4).
- [bpo-23753](https://python-all.ru/3/whatsnew/changelog.html): Python больше не поддерживает платформы без stat() или fstat(); эти функции теперь обязательны.
- [bpo-23681](https://python-all.ru/3/whatsnew/changelog.html): Опция -b теперь влияет на сравнение bytes с int.
- [bpo-23632](https://python-all.ru/3/whatsnew/changelog.html): Memoryviews теперь поддерживают кортежную индексацию (в том числе для многомерных memoryviews).
- [bpo-23192](https://python-all.ru/3/whatsnew/changelog.html): Исправлены лямбды-генераторы. Патч от Bruno Cauet.
- [bpo-23629](https://python-all.ru/3/whatsnew/changelog.html): Исправлена реализация \_\_sizeof\_\_ по умолчанию для объектов переменного размера.

### Библиотека

- [bpo-14260](https://python-all.ru/3/whatsnew/changelog.html): Атрибут groupindex объекта шаблона регулярного выражения теперь является неизменяемым отображением.
- [bpo-23792](https://python-all.ru/3/whatsnew/changelog.html): Игнорировать KeyboardInterrupt, когда активен пейджер pydoc. Это повторяет поведение стандартных пейджеров Unix и предотвращает закрытие pipepager, пока сам пейджер ещё работает.
- [bpo-23775](https://python-all.ru/3/whatsnew/changelog.html): pprint() для OrderedDict теперь выводит то же представление, что и repr().
- [bpo-23765](https://python-all.ru/3/whatsnew/changelog.html): Удалены вызовы IsBadStringPtr в ctypes
- [bpo-22364](https://python-all.ru/3/whatsnew/changelog.html): Улучшены некоторые сообщения об ошибках в модуле re с использованием регулярных выражений для подсказок.
- [bpo-23742](https://python-all.ru/3/whatsnew/changelog.html): ntpath.expandvars() больше не теряет несбалансированные одинарные кавычки.
- [bpo-21717](https://python-all.ru/3/whatsnew/changelog.html): Функция zipfile.ZipFile.open теперь поддерживает режим ‘x’ (эксклюзивное создание).
- [bpo-21802](https://python-all.ru/3/whatsnew/changelog.html): Читатель в BufferedRWPair теперь закрывается, даже если при закрытии писателя в BufferedRWPair.close() произошла ошибка.
- [bpo-23622](https://python-all.ru/3/whatsnew/changelog.html): Неизвестные последовательности экранирования в регулярных выражениях, состоящие из `'\'` и буквы ASCII, теперь вызывают предупреждение об устаревании и будут запрещены в Python 3.6.
- [bpo-23671](https://python-all.ru/3/whatsnew/changelog.html): string.Template теперь позволяет указывать параметр “self” как именованный аргумент. string.Formatter теперь позволяет указывать параметры “self” и “format\_string” как именованные аргументы.
- [bpo-23502](https://python-all.ru/3/whatsnew/changelog.html): Модуль pprint теперь поддерживает прокси-отображения.
- [bpo-17530](https://python-all.ru/3/whatsnew/changelog.html): pprint теперь переносит длинные объекты bytes и bytearrays.
- [bpo-22687](https://python-all.ru/3/whatsnew/changelog.html): Исправлены некоторые крайние случаи при разбиении слов в tetxtwrap. Устранена квадратичная сложность при разбиении длинных слов.
- [bpo-4727](https://python-all.ru/3/whatsnew/changelog.html): Модуль copy теперь использует протокол pickle 4 (PEP 3154) и поддерживает копирование экземпляров классов, чей метод \_\_new\_\_ принимает только именованные аргументы.
- [bpo-23491](https://python-all.ru/3/whatsnew/changelog.html): Добавлен модуль zipapp для поддержки создания исполняемых zip-архивов с кодом Python. Зарегистрированы расширения “.pyz” и “.pyzw” для этих архивов в Windows (PEP 441).
- [bpo-23657](https://python-all.ru/3/whatsnew/changelog.html): Устранены явные проверки на str в zipapp, добавлена поддержка объектов pathlib.Path в качестве аргументов.
- [bpo-23688](https://python-all.ru/3/whatsnew/changelog.html): Добавлена поддержка произвольных байтоподобных объектов и устранено ненужное копирование memoryview в gzip.GzipFile.write(). Оригинальный патч Вольфганга Майера.
- [bpo-23252](https://python-all.ru/3/whatsnew/changelog.html): Добавлена поддержка записи ZIP-файлов в непозиционируемые потоки.
- [bpo-23647](https://python-all.ru/3/whatsnew/changelog.html): Увеличено значение MAXLINE в imaplib для поддержки современных размеров почтовых ящиков.
- [bpo-23539](https://python-all.ru/3/whatsnew/changelog.html): Если body равен None, http.client.HTTPConnection.request теперь устанавливает Content-Length в 0 для заголовков PUT, POST и PATCH, чтобы избежать ошибок 411 от некоторых веб-серверов.
- [bpo-22351](https://python-all.ru/3/whatsnew/changelog.html): Конструктор nntplib.NNTP больше не оставляет соединение и сокет открытыми до очистки сборщиком мусора. Патч Мартина Пантера.
- [bpo-23704](https://python-all.ru/3/whatsnew/changelog.html): Объекты collections.deque() теперь поддерживают методы index(), insert() и copy(). Это позволяет регистрировать deques как MutableSequence и улучшает их взаимозаменяемость со списками.
- [bpo-23715](https://python-all.ru/3/whatsnew/changelog.html): [`signal.sigwaitinfo()`](https://python-all.ru/3/library/signal.html#signal.sigwaitinfo) и [`signal.sigtimedwait()`](https://python-all.ru/3/library/signal.html#signal.sigtimedwait) теперь повторяются при прерывании сигналом, не входящим в параметр *sigset*, если обработчик сигнала не вызывает исключение. signal.sigtimedwait() пересчитывает тайм-аут с помощью монотонных часов при повторной попытке.
- [bpo-23001](https://python-all.ru/3/whatsnew/changelog.html): Некоторые функции в модулях mmap, ossaudiodev, socket, ssl и codecs, которые принимали только байтоподобные объекты только для чтения, теперь также принимают байтоподобные объекты для записи.
- [bpo-23646](https://python-all.ru/3/whatsnew/changelog.html): Если time.sleep() прерывается сигналом, ожидание теперь повторяется с пересчитанной задержкой, за исключением случаев, когда обработчик сигнала вызывает исключение (PEP 475).
- [bpo-23136](https://python-all.ru/3/whatsnew/changelog.html): \_strptime теперь единообразно обрабатывает все дни недели 0, включая 30 декабря предыдущего года. Основано на патче Джима Кэрролла.
- [bpo-23700](https://python-all.ru/3/whatsnew/changelog.html): Итератор NamedTemporaryFile теперь хранит ссылку на экземпляр NamedTemporaryFile. Патч Богуслава Кабрды.
- [bpo-22903](https://python-all.ru/3/whatsnew/changelog.html): Фиктивный тестовый пример, который unittest.loader создаёт при неудачном импорте тестового модуля, теперь можно сериализовать с помощью pickle.
- [bpo-22181](https://python-all.ru/3/whatsnew/changelog.html): На Linux os.urandom() теперь использует новый системный вызов getrandom(), если он доступен; этот вызов был введён в ядре Linux 3.17. Он более надёжен и безопасен, поскольку избавляет от необходимости в файловом дескрипторе и ожидает, пока в ядре накопится достаточно энтропии.
- [bpo-2211](https://python-all.ru/3/whatsnew/changelog.html): Обновлена реализация класса http.cookies.Morsel. Установка атрибутов key, value и coded\_value напрямую теперь устарела. Методы update() и setdefault() теперь преобразуют и проверяют ключи. Сравнение на равенство теперь учитывает атрибуты key, value и coded\_value. copy() теперь возвращает объект Morsel, а не dict. repr() теперь содержит все атрибуты. Оптимизирована проверка ключей и экранирование значений. Добавлены новые тесты. Оригинальный патч Демиана Брехта.
- [bpo-18983](https://python-all.ru/3/whatsnew/changelog.html): Разрешён выбор единиц вывода в timeit. Патч Джулиана Гинди.
- [bpo-23631](https://python-all.ru/3/whatsnew/changelog.html): Исправлена работа traceback.format\_list при изменённом traceback.
- [bpo-23568](https://python-all.ru/3/whatsnew/changelog.html): Добавлена поддержка rdivmod для объектов MagicMock(). Патч Хокана Лёвдаля.
- [bpo-2052](https://python-all.ru/3/whatsnew/changelog.html): Добавлен параметр charset в HtmlDiff.make\_file().
- [bpo-23668](https://python-all.ru/3/whatsnew/changelog.html): Добавлена поддержка os.truncate и os.ftruncate в Windows.
- [bpo-23138](https://python-all.ru/3/whatsnew/changelog.html): Исправлен разбор куки с отсутствующими ключами или значениями в cookiejar. Патч Демиана Брехта.
- [bpo-23051](https://python-all.ru/3/whatsnew/changelog.html): Методы imap() и imap\_unordered() multiprocessing.Pool теперь обрабатывают исключения, возникающие в итераторе. Патч Алона Диаманта и Дэвина Поттса.
- [bpo-23581](https://python-all.ru/3/whatsnew/changelog.html): Добавлена поддержка matmul для MagicMock. Патч Хокана Лёвдаля.
- [bpo-23566](https://python-all.ru/3/whatsnew/changelog.html): Функции enable(), register(), dump\_traceback() и dump\_traceback\_later() модуля faulthandler теперь принимают файловые дескрипторы. Патч Вэй Ву.
- [bpo-22928](https://python-all.ru/3/whatsnew/changelog.html): Отключены инъекции HTTP-заголовков в http.client. Оригинальный патч Демиана Брехта.
- [bpo-23615](https://python-all.ru/3/whatsnew/changelog.html): Модули bz2, tarfile и tokenize теперь можно перезагружать с помощью imp.reload(). Патч Томаса Клюйвера.
- [bpo-23605](https://python-all.ru/3/whatsnew/changelog.html): os.walk() теперь вызывает os.scandir() вместо os.listdir(). Использование os.scandir() уменьшает количество вызовов os.stat(). Первоначальный патч написан Беном Хойтом.

### Сборка

- [bpo-23585](https://python-all.ru/3/whatsnew/changelog.html): make patchcheck проверяет, что интерпретатор собран.

### Тесты

- [bpo-23583](https://python-all.ru/3/whatsnew/changelog.html): Добавлены тесты для стандартных потоков ввода-вывода в IDLE.
- [bpo-22289](https://python-all.ru/3/whatsnew/changelog.html): Предотвращены сбои test\_urllib2net из-за тайм-аута ftp-соединения.

### Инструменты/Демонстрации

- [bpo-22826](https://python-all.ru/3/whatsnew/changelog.html): Результат open() в Tools/freeze/bkfile.py теперь лучше совместим с обычными файлами (в частности, теперь он поддерживает протокол управления контекстом).

## Python 3.5.0 alpha 2

*Дата выпуска: 2015-03-09*

### Ядро и встроенные объекты

- [bpo-23571](https://python-all.ru/3/whatsnew/changelog.html): PyObject\_Call() и PyCFunction\_Call() теперь вызывают SystemError, если функция возвращает результат и порождает исключение. SystemError привязывается к предыдущему исключению.

### Библиотека

- [bpo-22524](https://python-all.ru/3/whatsnew/changelog.html): Новая функция os.scandir(), часть [**PEP 471**](https://python-all.ru/3/whatsnew/changelog.html): “os.scandir() – лучший и более быстрый итератор директорий”. Автор патча Бен Хойт.
- [bpo-23103](https://python-all.ru/3/whatsnew/changelog.html): Снижено потребление памяти для IPv4Address и IPv6Address.
- [bpo-21793](https://python-all.ru/3/whatsnew/changelog.html): BaseHTTPRequestHandler снова записывает код ответа как число, а не как строковое представление перечисления. Патч от Демиана Брехта.
- [bpo-23476](https://python-all.ru/3/whatsnew/changelog.html): В модуле ssl включён флаг OpenSSL X509\_V\_FLAG\_TRUSTED\_FIRST для хранилищ сертификатов, когда он доступен.
- [bpo-23576](https://python-all.ru/3/whatsnew/changelog.html): Устранение зависания при чтении SSL, когда на уровне SSL достигнут EOF, но нижележащее соединение не закрыто.
- [bpo-23504](https://python-all.ru/3/whatsnew/changelog.html): Добавлен \_\_all\_\_ в модуль types.
- [bpo-23563](https://python-all.ru/3/whatsnew/changelog.html): Оптимизированы вспомогательные функции в urllib.parse.
- [bpo-7830](https://python-all.ru/3/whatsnew/changelog.html): Устранение вложенности functools.partial.
- [bpo-20204](https://python-all.ru/3/whatsnew/changelog.html): Добавлен атрибут \_\_module\_\_ классам \_tkinter.
- [bpo-19980](https://python-all.ru/3/whatsnew/changelog.html): Улучшена help() для нераспознанных строк. help('') теперь показывает справку по str. help('help') показывает справку по help(). Оригинальный патч от Марка Лоуренса.
- [bpo-23521](https://python-all.ru/3/whatsnew/changelog.html): Исправлена реализация деления timedelta на чистом Python. Устранено OverflowError из `timedelta * float` для некоторых чисел с плавающей запятой; исправлено округление при истинном делении timedelta.
- [bpo-21619](https://python-all.ru/3/whatsnew/changelog.html): Объекты Popen больше не оставляют зомби после выхода в операторе with, если канал был разорван. Патч от Мартина Пантера.
- [bpo-22936](https://python-all.ru/3/whatsnew/changelog.html): Сделано возможным показывать локальные переменные в трассировках как для модуля traceback, так и для unittest.
- [bpo-15955](https://python-all.ru/3/whatsnew/changelog.html): Добавлена опция для ограничения размера вывода в bz2.decompress(). Патч от Николауса Рата.
- [bpo-6639](https://python-all.ru/3/whatsnew/changelog.html): Функции модуля turtle на уровне модуля больше не вызывают TclError после закрытия окна.
- [bpo-814253](https://python-all.ru/3/whatsnew/changelog.html): Ссылки на группы и условные ссылки на группы теперь работают в просмотре назад (lookbehind) в регулярных выражениях. (См. также: [bpo-9179](https://python-all.ru/3/whatsnew/changelog.html))
- [bpo-23215](https://python-all.ru/3/whatsnew/changelog.html): Многобайтовые кодеки с пользовательскими обработчиками ошибок, игнорирующими ошибки, потребляли слишком много памяти и вызывали SystemError или MemoryError. Оригинальный патч от Алекси Торхамо.
- [bpo-5700](https://python-all.ru/3/whatsnew/changelog.html): io.FileIO() вызывал flush() после закрытия файла. flush() не вызывался в close(), если closefd=False.
- [bpo-23374](https://python-all.ru/3/whatsnew/changelog.html): Исправлен сбой pydoc с не-ASCII файлами, когда кодировка stdout отличается от кодировки файловой системы (например, на Mac OS).
- [bpo-23481](https://python-all.ru/3/whatsnew/changelog.html): Удалён RC4 из списка шифров по умолчанию модуля SSL.
- [bpo-21548](https://python-all.ru/3/whatsnew/changelog.html): Исправлены pydoc.synopsis() и pydoc.apropos() для модулей с пустыми строками документации.
- [bpo-22885](https://python-all.ru/3/whatsnew/changelog.html): Исправлена уязвимость, позволяющая выполнение произвольного кода в модуле dbm.dumb. Оригинальный патч от Клаудиу Попа.
- [bpo-23239](https://python-all.ru/3/whatsnew/changelog.html): ssl.match\_hostname() теперь поддерживает сопоставление IP-адресов.
- [bpo-23146](https://python-all.ru/3/whatsnew/changelog.html): Исправлена некорректная обработка абсолютных путей Windows с прямыми слешами в pathlib.
- [bpo-23096](https://python-all.ru/3/whatsnew/changelog.html): Представление чисел с плавающей запятой в pickle с протоколом 0 теперь одинаково для реализаций на Python и C.
- [bpo-19105](https://python-all.ru/3/whatsnew/changelog.html): pprint теперь эффективнее использует свободное место справа.
- [bpo-14910](https://python-all.ru/3/whatsnew/changelog.html): Добавлен параметр allow\_abbrev в argparse.ArgumentParser. Патч от Джонатана По (Jonathan Paugh), Стивена Бетарда (Steven Bethard), paul j3 и Дэниела Эрикссона (Daniel Eriksson).
- [bpo-21717](https://python-all.ru/3/whatsnew/changelog.html): tarfile.open() теперь поддерживает режим 'x' (исключительное создание).
- [bpo-23344](https://python-all.ru/3/whatsnew/changelog.html): marshal.dumps() теперь в среднем на 20–25% быстрее.
- [bpo-20416](https://python-all.ru/3/whatsnew/changelog.html): marshal.dumps() с протоколами 3 и 4 теперь в среднем на 40–50% быстрее.
- [bpo-23421](https://python-all.ru/3/whatsnew/changelog.html): Исправлено сжатие в CLI tarfile. Патч от wdv4758h.
- [bpo-23367](https://python-all.ru/3/whatsnew/changelog.html): Исправлены возможные переполнения в модуле unicodedata.
- [bpo-23361](https://python-all.ru/3/whatsnew/changelog.html): Исправлено возможное переполнение в коде создания подпроцесса для Windows.
- logging.handlers.QueueListener теперь принимает именованный аргумент respect\_handler\_level; если он равен True, сообщения будут передаваться обработчикам с учётом их уровней.
- [bpo-19705](https://python-all.ru/3/whatsnew/changelog.html): В turtledemo добавлена визуальная демонстрация алгоритма сортировки. Оригинальный патч от Джейсона Йео (Jason Yeo).
- [bpo-23801](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка, из-за которой cgi.FieldStorage не всегда игнорировал всю преамбулу multipart-тела.

### Сборка

- [bpo-23445](https://python-all.ru/3/whatsnew/changelog.html): Сборки PyDebug теперь по возможности используют gcc -Og, чтобы результирующий исполняемый файл был быстрее.
- [bpo-23686](https://python-all.ru/3/whatsnew/changelog.html): В установщике для OS X 10.5 обновлена сборка OpenSSL до версии 1.0.2a.

### C API

- [bpo-20204](https://python-all.ru/3/whatsnew/changelog.html): Теперь выводится предупреждение об устаревании для встроенных типов, у которых нет атрибута \_\_module\_\_.

### Windows

- [bpo-23465](https://python-all.ru/3/whatsnew/changelog.html): Реализован [**PEP 486**](https://python-all.ru/3/whatsnew/changelog.html) – загрузчик Python теперь поддерживает виртуальные окружения. Патч от Пола Мура (Paul Moore).
- [bpo-23437](https://python-all.ru/3/whatsnew/changelog.html): Каталог пользовательских сценариев в Windows теперь версионирован. Патч от Пола Мура (Paul Moore).

## Python 3.5.0 alpha 1

*Дата выпуска: 2015-02-08*

### Ядро и встроенные модули

- [bpo-23285](https://python-all.ru/3/whatsnew/changelog.html): PEP 475 – обработка EINTR.
- [bpo-22735](https://python-all.ru/3/whatsnew/changelog.html): Исправлено множество граничных случаев (включая аварийные завершения), связанных с пользовательскими реализациями mro().
- [bpo-22896](https://python-all.ru/3/whatsnew/changelog.html): Избегайте использования PyObject\_AsCharBuffer(), PyObject\_AsReadBuffer() и PyObject\_AsWriteBuffer().
- [bpo-21295](https://python-all.ru/3/whatsnew/changelog.html): Откат некоторых изменений ([bpo-16795](https://python-all.ru/3/whatsnew/changelog.html)) в номерах строк и смещениях столбцов AST, которые привели к регрессу.
- [bpo-22986](https://python-all.ru/3/whatsnew/changelog.html): В некоторых случаях разрешено изменять \_\_class\_\_ объекта между динамическим и статическим типом.
- [bpo-15859](https://python-all.ru/3/whatsnew/changelog.html): PyUnicode\_EncodeFSDefault(), PyUnicode\_EncodeMBCS() и PyUnicode\_EncodeCodePage() теперь вызывают исключение, если объект не является строкой Unicode. Для PyUnicode\_EncodeFSDefault() так уже было на платформах, отличных от Windows. Патч написан Кэмпбеллом Бартоном (Campbell Barton).
- [bpo-21408](https://python-all.ru/3/whatsnew/changelog.html): Стандартный \_\_ne\_\_() теперь возвращает NotImplemented, если \_\_eq\_\_() вернул NotImplemented. Оригинальный патч от Мартина Пантера (Martin Panter).
- [bpo-23321](https://python-all.ru/3/whatsnew/changelog.html): Исправлен сбой в str.decode(), когда обработчик ошибок возвращал строку замены, длиннее некорректных входных данных.
- [bpo-22286](https://python-all.ru/3/whatsnew/changelog.html): Обработчики ошибок backslashreplace теперь работают при декодировании и трансляции.
- [bpo-23253](https://python-all.ru/3/whatsnew/changelog.html): Отложенная загрузка ShellExecute\[AW\] в os.startfile для снижения накладных расходов при запуске на Windows.
- [bpo-22038](https://python-all.ru/3/whatsnew/changelog.html): pyatomic.h теперь использует stdatomic.h или встроенные функции GCC для атомарного доступа к памяти, если они доступны. Патч написан Vitor de Lima и Gustavo Temple.
- [bpo-20284](https://python-all.ru/3/whatsnew/changelog.html): Для bytes и bytearray добавлено форматирование с %-интерполяцией (также известное как printf).
- [bpo-23048](https://python-all.ru/3/whatsnew/changelog.html): Исправлен выход из бесконечного цикла while в pdb.
- [bpo-20335](https://python-all.ru/3/whatsnew/changelog.html): Конструктор bytes теперь возбуждает TypeError, если параметры encoding или errors заданы нестроковым аргументом. На основе патча от Renaud Blanch.
- [bpo-22834](https://python-all.ru/3/whatsnew/changelog.html): Если текущая рабочая директория оказывается установленной на несуществующую, то import больше не будет возбуждать FileNotFoundError.
- [bpo-22869](https://python-all.ru/3/whatsnew/changelog.html): Код запуска и остановки интерпретатора перенесён в новый выделенный модуль pylifecycle.c
- [bpo-22847](https://python-all.ru/3/whatsnew/changelog.html): Повышена эффективность кеширования методов.
- [bpo-22335](https://python-all.ru/3/whatsnew/changelog.html): Исправлен сбой при попытке увеличить bytearray до 0x7fffffff байт на 32-битной платформе.
- [bpo-22653](https://python-all.ru/3/whatsnew/changelog.html): Исправлен отказ утверждения в режиме отладки при повторной вставке в словарь в режиме отладки.
- [bpo-22643](https://python-all.ru/3/whatsnew/changelog.html): Исправлено целочисленное переполнение в операциях регистра Unicode (upper, lower, title, swapcase, casefold).
- [bpo-17636](https://python-all.ru/3/whatsnew/changelog.html): Теперь поддерживаются циклические импорты, включающие относительные импорты.
- [bpo-22604](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка утверждения в режиме отладки при делении комплексного числа на (nan+0j).
- [bpo-21052](https://python-all.ru/3/whatsnew/changelog.html): Не возбуждать ImportWarning, если sys.path\_hooks или sys.meta\_path установлены в None.
- [bpo-16518](https://python-all.ru/3/whatsnew/changelog.html): В сообщениях об ошибках теперь используется «требуется bytes-подобный объект» вместо гораздо более загадочного «'x' не поддерживает протокол буфера».
- [bpo-22470](https://python-all.ru/3/whatsnew/changelog.html): Исправлены проблемы целочисленного переполнения в обработчиках ошибок «backslashreplace», «xmlcharrefreplace» и «surrogatepass».
- [bpo-22540](https://python-all.ru/3/whatsnew/changelog.html): Ускорены `PyObject_IsInstance` и `PyObject_IsSubclass` в обычном случае, когда второй аргумент имеет метакласс `type`.
- [bpo-18711](https://python-all.ru/3/whatsnew/changelog.html): Добавлена новая функция `PyErr_FormatV`, похожая на `PyErr_Format`, но принимающая аргумент `va_list`.
- [bpo-22520](https://python-all.ru/3/whatsnew/changelog.html): Исправлена проверка переполнения при создании repr объекта Unicode.
- [bpo-22519](https://python-all.ru/3/whatsnew/changelog.html): Исправлена проверка переполнения в PyBytes\_Repr.
- [bpo-22518](https://python-all.ru/3/whatsnew/changelog.html): Исправлены проблемы целочисленного переполнения в кодировке latin-1.
- [bpo-16324](https://python-all.ru/3/whatsnew/changelog.html): Параметр \_charset класса MIMEText теперь также принимает экземпляры email.charset.Charset. Первоначальный патч от Claude Paroz.
- [bpo-1764286](https://python-all.ru/3/whatsnew/changelog.html): Исправлена функция inspect.getsource() для поддержки декорированных функций. Патч от Claudiu Popa.
- [bpo-18554](https://python-all.ru/3/whatsnew/changelog.html): os.\_\_all\_\_ включает функции posix.
- [bpo-21391](https://python-all.ru/3/whatsnew/changelog.html): В модуле shutil используется os.path.abspath.
- [bpo-11471](https://python-all.ru/3/whatsnew/changelog.html): Избегать генерации инструкции JUMP\_FORWARD в конце if-блока, если нет ветки else. Первоначальный патч от Eugene Toder.
- [bpo-22215](https://python-all.ru/3/whatsnew/changelog.html): Теперь возбуждается ValueError вместо TypeError, если аргумент str или bytes содержит недопустимый нулевой символ или байт.
- [bpo-22258](https://python-all.ru/3/whatsnew/changelog.html): Исправлена внутренняя функция set\_inheritable() на Illumos. Эта платформа предоставляет функцию `ioctl(FIOCLEX)`, но её вызов завершается ошибкой с errno ENOTTY: «Inappropriate ioctl for device». Теперь set\_inheritable() использует более медленный `fcntl()` (сначала `F_GETFD`, затем `F_SETFD`).
- [bpo-21389](https://python-all.ru/3/whatsnew/changelog.html): В repr связанного метода отображается \_\_qualname\_\_ базовой функции.
- [bpo-22206](https://python-all.ru/3/whatsnew/changelog.html): При использовании pthread функция PyThread\_create\_key() теперь устанавливает errno в ENOMEM и возвращает -1 (ошибку) при целочисленном переполнении.
- [bpo-20184](https://python-all.ru/3/whatsnew/changelog.html): Для 30 встроенных функций добавлена интроспекция сигнатур на основе Argument Clinic.
- [bpo-22116](https://python-all.ru/3/whatsnew/changelog.html): C-функции и методы (типа «builtin\_function\_or\_method») теперь можно ссылаться через weakref. Патч от Wei Wu.
- [bpo-22077](https://python-all.ru/3/whatsnew/changelog.html): Улучшены сообщения об ошибках индекса для bytearrays, bytes, списков и кортежей добавлением «или срезы». Для bytearrays добавлено «, not \<typename\>». Первоначальный патч от Claudiu Popa.
- [bpo-20179](https://python-all.ru/3/whatsnew/changelog.html): К bytes и bytearray применён Argument Clinic. Патч от Tal Einat.
- [bpo-22082](https://python-all.ru/3/whatsnew/changelog.html): Очистка интернированных строк в slotdefs.
- База данных Unicode обновлена до версии 7.0.0.
- [bpo-21897](https://python-all.ru/3/whatsnew/changelog.html): Исправление аварийного завершения при использовании атрибута f\_locals с переменными замыкания, когда был вызван frame.clear().
- [bpo-21205](https://python-all.ru/3/whatsnew/changelog.html): Добавлен новый атрибут `__qualname__` для генератора – полное имя (qualified name), и он используется в представлении генератора (`repr(gen)`). Теперь имя генератора по умолчанию (атрибут `__name__`) берётся из функции, а не из кода. Для получения имени кода используйте `gen.gi_code.co_name`.
- [bpo-21669](https://python-all.ru/3/whatsnew/changelog.html): С помощью эвристик в SyntaxError.\_\_init\_\_ парсер теперь пытается генерировать более осмысленные (или, по крайней мере, более дружественные для поисковых систем) сообщения об ошибках, когда «exec» и «print» используются как операторы.
- [bpo-21642](https://python-all.ru/3/whatsnew/changelog.html): В условном выражении if-else разрешено использовать целое число, записанное без пробела между ним и ключевым словом `else` (например, `True if 42else False`), как допустимый синтаксис.
- [bpo-21523](https://python-all.ru/3/whatsnew/changelog.html): Исправлено чрезмерно пессимистичное вычисление влияния на стек некоторых опкодов в компиляторе. Это также исправляет проблему квадратичного времени компиляции, заметную при компиляции кода с большим количеством операторов «and» и «or».
- [bpo-21418](https://python-all.ru/3/whatsnew/changelog.html): Исправление аварийного завершения во встроенной функции super() при вызове без аргументов и без текущего фрейма (например, во встроенном Python).
- [bpo-21425](https://python-all.ru/3/whatsnew/changelog.html): Исправлена очистка стандартных потоков в интерактивном интерпретаторе.
- [bpo-21435](https://python-all.ru/3/whatsnew/changelog.html): В редких случаях при выполнении финализаторов для объектов в циклическом мусоре могло произойти некорректное разыменование указателя из-за незаметной ошибки во внутренней логике итерации.
- [bpo-21377](https://python-all.ru/3/whatsnew/changelog.html): PyBytes\_Concat() теперь пытается выполнить конкатенацию на месте, когда первый аргумент имеет счётчик ссылок равный 1. Патч от Nikolaus Rath.
- [bpo-20355](https://python-all.ru/3/whatsnew/changelog.html): Параметры командной строки -W теперь имеют более высокий приоритет, чем переменная окружения PYTHONWARNINGS. Патч от Arfrever.
- [bpo-21274](https://python-all.ru/3/whatsnew/changelog.html): Определение PATH\_MAX для GNU/Hurd в Python/pythonrun.c.
- [bpo-20904](https://python-all.ru/3/whatsnew/changelog.html): Поддержка установки точности FPU на m68k.
- [bpo-21209](https://python-all.ru/3/whatsnew/changelog.html): Исправлена передача кортежей пользовательским объектам-генераторам с использованием синтаксиса yield from.
- [bpo-21193](https://python-all.ru/3/whatsnew/changelog.html): pow(a, b, c) теперь вызывает ValueError вместо TypeError, когда b отрицательно. Патч от Josh Rosenberg.
- [bpo-21176](https://python-all.ru/3/whatsnew/changelog.html): PEP 465: Добавлен оператор ‘@’ для умножения матриц.
- [bpo-21134](https://python-all.ru/3/whatsnew/changelog.html): Исправление сегфолта при вызове str для неинициализированного объекта UnicodeEncodeError, UnicodeDecodeError или UnicodeTranslateError.
- [bpo-19537](https://python-all.ru/3/whatsnew/changelog.html): Исправление выравнивания PyUnicode\_DATA() на m68k. Патч от Andreas Schwab.
- [bpo-20929](https://python-all.ru/3/whatsnew/changelog.html): Добавлено приведение типа для избежания сдвига отрицательного числа.
- [bpo-20731](https://python-all.ru/3/whatsnew/changelog.html): Корректное позиционирование в файлах исходного кода, даже если они открыты в текстовом режиме. Патч от Serhiy Storchaka.
- [bpo-20637](https://python-all.ru/3/whatsnew/changelog.html): Совместное использование ключей теперь работает и для словарей экземпляров подклассов. Патч от Peter Ingebretson.
- [bpo-8297](https://python-all.ru/3/whatsnew/changelog.html): В сообщении об ошибке для отсутствующих атрибутов модуля теперь указывается имя модуля. Оригинальный патч от ysj.ray.
- [bpo-19995](https://python-all.ru/3/whatsnew/changelog.html): %c, %o, %x и %X теперь вызывают TypeError для нецелочисленных входных данных.
- [bpo-19655](https://python-all.ru/3/whatsnew/changelog.html): Парсер ASDL, используемый процессом сборки для генерации кода управления Python AST на C, был переписан. Новый парсер является самодостаточным и не требует длительного использования библиотеки парсер-генератора spark.py; spark.py удалён из исходной базы.
- [bpo-12546](https://python-all.ru/3/whatsnew/changelog.html): Разрешено использование `\x00` в качестве символа заполнения при использовании методов \_\_format\_\_ для str, int, float и complex.
- [bpo-20480](https://python-all.ru/3/whatsnew/changelog.html): Добавлен ipaddress.reverse\_pointer. Патч от Leon Weber.
- [bpo-13598](https://python-all.ru/3/whatsnew/changelog.html): Изменён string.Formatter для поддержки автоматической нумерации полей подстановки. Теперь его поведение в этом отношении соответствует str.format(). Патчи от Phil Elson и Ramchandra Apte.
- [bpo-8931](https://python-all.ru/3/whatsnew/changelog.html): Альтернативное форматирование («#») для типа «c» теперь вызывает исключение. В версиях до 3.5 «#» с «c» не имело эффекта. Теперь его указание является ошибкой. Патч от Torsten Landschoff.
- [bpo-23165](https://python-all.ru/3/whatsnew/changelog.html): Выполнение проверки переполнения перед выделением памяти в функции \_Py\_char2wchar.

### Библиотека

- [bpo-23399](https://python-all.ru/3/whatsnew/changelog.html): pyvenv создаёт относительные символические ссылки, где это возможно.
- [bpo-20289](https://python-all.ru/3/whatsnew/changelog.html): cgi.FieldStorage() теперь поддерживает протокол управления контекстом.
- [bpo-13128](https://python-all.ru/3/whatsnew/changelog.html): Вывод заголовков ответа для CONNECT-запросов при debuglevel \> 0. Патч от Demian Brecht.
- [bpo-15381](https://python-all.ru/3/whatsnew/changelog.html): Оптимизирован io.BytesIO – теперь делает меньше выделений памяти и копирований.
- [bpo-22818](https://python-all.ru/3/whatsnew/changelog.html): Разбиение по шаблону, который может соответствовать пустой строке, теперь выдаёт предупреждение. Шаблоны, способные соответствовать только пустой строке, теперь отклоняются.
- [bpo-23099](https://python-all.ru/3/whatsnew/changelog.html): Закрытие io.BytesIO с экспортированным буфером теперь запрещено, чтобы не повредить экспортированный буфер.
- [bpo-23326](https://python-all.ru/3/whatsnew/changelog.html): Удалены реализации \_\_ne\_\_. После исправления реализации \_\_ne\_\_ по умолчанию в [bpo-21408](https://python-all.ru/3/whatsnew/changelog.html) они стали избыточными.
- [bpo-23363](https://python-all.ru/3/whatsnew/changelog.html): Исправлено возможное переполнение в itertools.permutations.
- [bpo-23364](https://python-all.ru/3/whatsnew/changelog.html): Исправлено возможное переполнение в itertools.product.
- [bpo-23366](https://python-all.ru/3/whatsnew/changelog.html): Исправлено возможное целочисленное переполнение в itertools.combinations.
- [bpo-23369](https://python-all.ru/3/whatsnew/changelog.html): Исправлено возможное целочисленное переполнение в \_json.encode\_basestring\_ascii.
- [bpo-23353](https://python-all.ru/3/whatsnew/changelog.html): Исправлена обработка исключений в генераторах в PyEval\_EvalFrameEx(). При входе теперь сохраняется или заменяется состояние исключения, даже если PyEval\_EvalFrameEx() вызывается с throwflag=0. При выходе состояние исключения теперь всегда восстанавливается или заменяется, а не только если why равно WHY\_YIELD или WHY\_RETURN. Патч написан совместно с Antoine Pitrou.
- [bpo-14099](https://python-all.ru/3/whatsnew/changelog.html): Восстановлена поддержка записи ZIP-файлов в потоки, которые поддерживают определение текущей позиции, но не поддерживают произвольное перемещение.
- [bpo-14099](https://python-all.ru/3/whatsnew/changelog.html): Запись в ZipFile и чтение нескольких ZipExtFiles теперь потокобезопасны.
- [bpo-19361](https://python-all.ru/3/whatsnew/changelog.html): Декодер JSON теперь возбуждает JSONDecodeError вместо ValueError.
- [bpo-18518](https://python-all.ru/3/whatsnew/changelog.html): timeit теперь отклоняет операторы, которые невозможно скомпилировать вне функции или цикла (например, «return» или «break»).
- [bpo-23094](https://python-all.ru/3/whatsnew/changelog.html): Исправлена readline с фреймами в реализации pickle на Python.
- [bpo-23268](https://python-all.ru/3/whatsnew/changelog.html): Исправлены ошибки в сравнении классов ipaddress.
- [bpo-21408](https://python-all.ru/3/whatsnew/changelog.html): Удалены некорректные реализации \_\_ne\_\_(), которые не возвращали NotImplemented, если \_\_eq\_\_() возвращал NotImplemented. Реализация \_\_ne\_\_() по умолчанию теперь работает правильно.
- [bpo-19996](https://python-all.ru/3/whatsnew/changelog.html): `email.feedparser.FeedParser` теперь корректно обрабатывает (некорректно сформированные) заголовки без ключа, а не считает, что началось тело.
- [bpo-20188](https://python-all.ru/3/whatsnew/changelog.html): Поддержка согласования протокола прикладного уровня (ALPN) в модуле ssl.
- [bpo-23133](https://python-all.ru/3/whatsnew/changelog.html): Сериализация (pickling) объектов ipaddress теперь даёт более компактное и переносимое представление.
- [bpo-23248](https://python-all.ru/3/whatsnew/changelog.html): Обновлены коды ошибок SSL из последней версии git OpenSSL.
- [bpo-23266](https://python-all.ru/3/whatsnew/changelog.html): Значительно более быстрая реализация ipaddress.collapse\_addresses() при наличии множества непоследовательных адресов.
- [bpo-23098](https://python-all.ru/3/whatsnew/changelog.html): В модуле os теперь поддерживается 64-битный тип dev\_t.
- [bpo-21817](https://python-all.ru/3/whatsnew/changelog.html): Когда в задаче, переданной в ProcessPoolExecutor, возникает исключение, удалённая трассировка теперь отображается в родительском процессе. Патч от Claudiu Popa.
- [bpo-15955](https://python-all.ru/3/whatsnew/changelog.html): Добавлена опция ограничения размера выходных данных при декомпрессии LZMA. Патч от Nikolaus Rath и Martin Panter.
- [bpo-23250](https://python-all.ru/3/whatsnew/changelog.html): В модуле http.cookies теперь «HttpOnly» и «Secure» пишутся с заглавной буквы, как того требует стандарт.
- [bpo-23063](https://python-all.ru/3/whatsnew/changelog.html): В команде check из distutils исправлен разбор reST с директивами code или code-block.
- [bpo-23209](https://python-all.ru/3/whatsnew/changelog.html): selectors.BaseSelector.get\_key() теперь возбуждает RuntimeError, если селектор закрыт. А selectors.BaseSelector.close() теперь очищает свою внутреннюю ссылку на сопоставление селектора, чтобы разорвать циклическую ссылку. Первоначальный патч написан Martin Richard. (См. также: [bpo-23225](https://python-all.ru/3/whatsnew/changelog.html))
- [bpo-17911](https://python-all.ru/3/whatsnew/changelog.html): Предоставлен способ заполнения кэша строк (linecache) для модуля по PEP 302 без фактической загрузки кода.
- [bpo-17911](https://python-all.ru/3/whatsnew/changelog.html): Предоставлен новый объектный API для трассировки, включая возможность не искать строки вообще до тех пор, пока трассировка не будет фактически отображена, без сохранения каких-либо оригинальных объектов в памяти.
- [bpo-19777](https://python-all.ru/3/whatsnew/changelog.html): Добавлен классовый метод home() для объектов Path. Авторы: Victor Salgado и Mayank Tripathi.
- [bpo-23206](https://python-all.ru/3/whatsnew/changelog.html): Сделать `json.dumps(..., ensure_ascii=False)` таким же быстрым, как стандартный случай `ensure_ascii=True`. Патч от Naoki Inada.
- [bpo-23185](https://python-all.ru/3/whatsnew/changelog.html): Добавлены константы math.inf и math.nan.
- [bpo-23186](https://python-all.ru/3/whatsnew/changelog.html): Добавлены методы ssl.SSLObject.shared\_ciphers() и ssl.SSLSocket.shared\_ciphers() для получения списка шифров клиента, отправленных при рукопожатии.
- [bpo-23143](https://python-all.ru/3/whatsnew/changelog.html): Удалена совместимость с OpenSSL версий старше 0.9.8.
- [bpo-23132](https://python-all.ru/3/whatsnew/changelog.html): Улучшена производительность и поддержка интроспекции методов сравнения, создаваемых functool.total\_ordering.
- [bpo-19776](https://python-all.ru/3/whatsnew/changelog.html): Добавлен метод expanduser() для объектов Path.
- [bpo-23112](https://python-all.ru/3/whatsnew/changelog.html): Исправлена работа SimpleHTTPServer: теперь при перенаправлении с добавлением завершающего слеша корректно передаются строка запроса и фрагмент.
- [bpo-21793](https://python-all.ru/3/whatsnew/changelog.html): Добавлены перечисления http.HTTPStatus (например, HTTPStatus.OK, HTTPStatus.NOT\_FOUND). Патч от Demian Brecht.
- [bpo-23093](https://python-all.ru/3/whatsnew/changelog.html): В модуле io разрешено больше операций с отсоединёнными потоками.
- [bpo-23111](https://python-all.ru/3/whatsnew/changelog.html): В ftplib сделана версия ssl.PROTOCOL\_SSLv23 версией протокола по умолчанию.
- [bpo-22585](https://python-all.ru/3/whatsnew/changelog.html): На OpenBSD 5.6 и новее os.urandom() теперь вызывает getentropy() вместо чтения /dev/urandom для получения псевдослучайных байтов.
- [bpo-19104](https://python-all.ru/3/whatsnew/changelog.html): pprint теперь генерирует вывод, пригодный для eval, для обёрнутых строк.
- [bpo-23071](https://python-all.ru/3/whatsnew/changelog.html): Добавлены недостающие имена в codecs.\_\_all\_\_. Патч от Martin Panter.
- [bpo-22783](https://python-all.ru/3/whatsnew/changelog.html): Pickling теперь использует опкод NEWOBJ вместо NEWOBJ\_EX, если это возможно.
- [bpo-15513](https://python-all.ru/3/whatsnew/changelog.html): Добавлена реализация \_\_sizeof\_\_ для классов pickle.
- [bpo-19858](https://python-all.ru/3/whatsnew/changelog.html): pickletools.optimize() теперь учитывает опкод MEMOIZE, может выдавать более компактный результат и больше не генерирует некорректный вывод, если входные данные содержат опкоды MEMOIZE вместе с PUT или BINPUT.
- [bpo-22095](https://python-all.ru/3/whatsnew/changelog.html): Исправлен HTTPConnection.set\_tunnel при использовании порта по умолчанию. Значение порта в заголовке host устанавливалось в “None”. Патч от Demian Brecht.
- [bpo-23016](https://python-all.ru/3/whatsnew/changelog.html): Предупреждение больше не вызывает AttributeError при запуске программы через pythonw.exe.
- [bpo-21775](https://python-all.ru/3/whatsnew/changelog.html): shutil.copytree(): исправлен сбой при копировании на VFAT. Обработчик исключения предполагал, что объекты OSError всегда имеют атрибут 'winerror'. Это не так, поэтому сам обработчик вызывал AttributeError при запуске на Linux (и, предположительно, любой другой ОС не Windows). Патч от Greg Ward.
- [bpo-1218234](https://python-all.ru/3/whatsnew/changelog.html): Исправлен inspect.getsource() для загрузки обновлённого исходного кода перезагруженного модуля. Первоначальный патч от Berker Peksag.
- [bpo-21740](https://python-all.ru/3/whatsnew/changelog.html): Поддержка обёрнутых вызываемых объектов в doctest. Патч от Claudiu Popa.
- [bpo-23009](https://python-all.ru/3/whatsnew/changelog.html): Обеспечена работоспособность selectors.EpollSelector.select() при отсутствии зарегистрированных файловых дескрипторов.
- [bpo-22959](https://python-all.ru/3/whatsnew/changelog.html): В конструкторе http.client.HTTPSConnection атрибут check\_hostname контекста теперь имеет приоритет перед параметром *check\_hostname*.
- [bpo-22696](https://python-all.ru/3/whatsnew/changelog.html): Добавлена функция [`sys.is_finalizing()`](https://python-all.ru/3/library/sys.html#sys.is_finalizing) для получения информации о завершении работы интерпретатора.
- [bpo-16043](https://python-all.ru/3/whatsnew/changelog.html): Добавлено ограничение по умолчанию на объём данных, возвращаемых xmlrpclib.gzip\_decode. Это устраняет [**CVE 2013-1753**](https://python-all.ru/3/whatsnew/changelog.html).
- [bpo-14099](https://python-all.ru/3/whatsnew/changelog.html): ZipFile.open() больше не переоткрывает нижележащий файл. Объекты, возвращаемые ZipFile.open(), теперь могут работать независимо от ZipFile, даже если ZipFile был создан с передачей файлоподобного объекта в качестве первого аргумента конструктора.
- [bpo-22966](https://python-all.ru/3/whatsnew/changelog.html): Исправлено затирание имени файла .pyc в \_\_pycache\_\_ при компиляции исходного файла, содержащего несколько точек в имени.
- [bpo-21971](https://python-all.ru/3/whatsnew/changelog.html): Обновлена документация turtledemo и модуль добавлен в индекс.
- [bpo-21032](https://python-all.ru/3/whatsnew/changelog.html): Исправлена утечка сокета при сбое HTTPConnection.getresponse(). Оригинальный патч от Martin Panter.
- [bpo-22407](https://python-all.ru/3/whatsnew/changelog.html): Использование флага re.LOCALE с строковыми шаблонами или re.ASCII объявлено устаревшим. Он никогда не работал.
- [bpo-22902](https://python-all.ru/3/whatsnew/changelog.html): Команда “ip” теперь используется в Linux для определения MAC-адреса в uuid.getnode(). Патч от Bruno Cauet.
- [bpo-22960](https://python-all.ru/3/whatsnew/changelog.html): Добавлен аргумент context в конструктор xmlrpclib.ServerProxy.
- [bpo-22389](https://python-all.ru/3/whatsnew/changelog.html): Добавлена функция contextlib.redirect\_stderr().
- [bpo-21356](https://python-all.ru/3/whatsnew/changelog.html): Функция ssl.RAND\_egd() сделана необязательной для поддержки LibreSSL. Доступность функции проверяется во время компиляции. Патч написан Бернардом Спилом (Bernard Spil).
- [bpo-22915](https://python-all.ru/3/whatsnew/changelog.html): Парсер SAX теперь поддерживает файлы, открытые через файловый дескриптор или путь в виде байт.
- [bpo-22609](https://python-all.ru/3/whatsnew/changelog.html): Конструкторы и методы обновления классов отображений в модуле collections теперь принимают аргумент self.
- [bpo-22940](https://python-all.ru/3/whatsnew/changelog.html): Добавлена функция readline.append\_history\_file.
- [bpo-19676](https://python-all.ru/3/whatsnew/changelog.html): Добавлен обработчик ошибок «namereplace».
- [bpo-22788](https://python-all.ru/3/whatsnew/changelog.html): Добавлен параметр *context* в logging.handlers.HTTPHandler.
- [bpo-22921](https://python-all.ru/3/whatsnew/changelog.html): SSLContext теперь может принимать параметр *hostname*, даже если OpenSSL не поддерживает SNI.
- [bpo-22894](https://python-all.ru/3/whatsnew/changelog.html): TestCase.subTest() приводил к остановке набора тестов в режиме failfast, даже при отсутствии ошибок.
- [bpo-22796](https://python-all.ru/3/whatsnew/changelog.html): Разбор HTTP-куки теперь выполняется строже, чтобы защититься от возможных атак внедрения.
- [bpo-22370](https://python-all.ru/3/whatsnew/changelog.html): Определение Windows в pathlib стало более надёжным.
- [bpo-22841](https://python-all.ru/3/whatsnew/changelog.html): Корутины отклоняются в asyncio add\_signal\_handler(). Патч от Ludovic.Gasc.
- [bpo-19494](https://python-all.ru/3/whatsnew/changelog.html): Добавлен urllib.request.HTTPBasicPriorAuthHandler. Патч от Матея Цепла (Matej Cepl).
- [bpo-22578](https://python-all.ru/3/whatsnew/changelog.html): Добавлены атрибуты к классу re.error.
- [bpo-22849](https://python-all.ru/3/whatsnew/changelog.html): Исправлена возможная двойная очистка в конструкторе io.TextIOWrapper.
- [bpo-12728](https://python-all.ru/3/whatsnew/changelog.html): Разные символы Unicode, имеющие одинаковый верхний регистр, но разный нижний, теперь сопоставляются в регистронезависимых регулярных выражениях.
- [bpo-22821](https://python-all.ru/3/whatsnew/changelog.html): Исправлена fcntl() с целочисленным аргументом на 64-битных платформах с big-endian.
- [bpo-21650](https://python-all.ru/3/whatsnew/changelog.html): Добавлена опция `--sort-keys` в CLI `json.tool`.
- [bpo-22824](https://python-all.ru/3/whatsnew/changelog.html): Обновлён формат вывода reprlib для множеств: теперь используются литералы множеств. Патч предоставлен Беркером Пексагом (Berker Peksag).
- [bpo-22824](https://python-all.ru/3/whatsnew/changelog.html): Обновлён формат вывода reprlib для массивов: пустые массивы отображаются без лишнего пустого списка. Предложено Сергеем Сторчакой (Serhiy Storchaka).
- [bpo-22406](https://python-all.ru/3/whatsnew/changelog.html): Исправлен кодек uu\_codec, некорректно портированный на 3.x. Основано на патче Мартина Пантера (Martin Panter).
- [bpo-17293](https://python-all.ru/3/whatsnew/changelog.html): uuid.getnode() теперь определяет MAC-адрес в AIX с помощью netstat. Основано на патче Айварса Калванса (Aivars Kalvāns).
- [bpo-22769](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ttk.Treeview.tag\_has() при вызове без аргументов.
- [bpo-22417](https://python-all.ru/3/whatsnew/changelog.html): Проверка сертификатов по умолчанию в httplib (PEP 476).
- [bpo-22775](https://python-all.ru/3/whatsnew/changelog.html): Исправлена десериализация http.cookies.SimpleCookie с протоколом 2 и выше. Патч от Тима Грема (Tim Graham).
- [bpo-22776](https://python-all.ru/3/whatsnew/changelog.html): Исключённый код помещён в область действия блока try в SysLogHandler.emit().
- [bpo-22665](https://python-all.ru/3/whatsnew/changelog.html): Добавлены отсутствующие get\_terminal\_size и SameFileError в shutil.\_\_all\_\_.
- [bpo-6623](https://python-all.ru/3/whatsnew/changelog.html): Удалён устаревший класс Netrc в модуле ftplib. Патч от Мэтта Чапута (Matt Chaput).
- [bpo-17381](https://python-all.ru/3/whatsnew/changelog.html): Исправлена обработка регистронезависимых диапазонов в регулярных выражениях.
- [bpo-22410](https://python-all.ru/3/whatsnew/changelog.html): Функции уровня модуля в модуле re теперь кэшируют скомпилированные зависящие от локали регулярные выражения с учётом локали.
- [bpo-22759](https://python-all.ru/3/whatsnew/changelog.html): Методы запросов на pathlib.Path() (exists(), is\_dir(), и т.д.) теперь возвращают False, когда базовый вызов stat вызывает NotADirectoryError.
- [bpo-8876](https://python-all.ru/3/whatsnew/changelog.html): distutils теперь переключается на копирование файлов, если жёсткая ссылка не работает. Это позволяет использовать специальные файловые системы, такие как общие папки VirtualBox.
- [bpo-22217](https://python-all.ru/3/whatsnew/changelog.html): Для классов в модуле zipfile реализованы методы \_\_repr\_\_.
- [bpo-22457](https://python-all.ru/3/whatsnew/changelog.html): Учтён load\_tests в start\_dir при обнаружении тестов.
- [bpo-18216](https://python-all.ru/3/whatsnew/changelog.html): gettext теперь вызывает ошибку, если .mo-файл имеет неподдерживаемый номер основной версии. Патч от Aaron Hill.
- [bpo-13918](https://python-all.ru/3/whatsnew/changelog.html): Добавлена функция locale.delocalize(), которая удаляет локализованное форматирование чисел из строки, представляющей число, без последующего преобразования в конкретный тип. Патч от Cédric Krier.
- [bpo-22676](https://python-all.ru/3/whatsnew/changelog.html): Ускорена сериализация (pickling) глобальных объектов, у которых нет атрибута \_\_module\_\_.
- [bpo-18853](https://python-all.ru/3/whatsnew/changelog.html): Исправлено ResourceWarning в shlex.\_\_nain\_\_.
- [bpo-9351](https://python-all.ru/3/whatsnew/changelog.html): Значения по умолчанию, заданные через set\_defaults у подпарсера argparse, больше не игнорируются, если они также заданы у родительского парсера.
- [bpo-7559](https://python-all.ru/3/whatsnew/changelog.html): Ошибки импорта при загрузке тестов unittest теперь сообщаются как ошибки импорта с соответствующим исключением, а не как ошибки атрибутов после того, как импорт уже не удался.
- [bpo-19746](https://python-all.ru/3/whatsnew/changelog.html): Добавлена возможность просматривать ошибки обнаружения тестов unittest без выполнения набора тестов. Новый атрибут `errors` в `TestLoader` раскрывает эти некритичные ошибки, возникшие при обнаружении.
- [bpo-21991](https://python-all.ru/3/whatsnew/changelog.html): Атрибут 'params' заголовков в email.headerregistry теперь доступен только для чтения (MappingProxyType). Ранее словарь был изменяемым, но при каждом обращении к атрибуту создавался новый.
- [bpo-22638](https://python-all.ru/3/whatsnew/changelog.html): SSLv3 теперь отключён во всей стандартной библиотеке. Его можно включить только вручную, создав экземпляр SSLContext.
- [bpo-22641](https://python-all.ru/3/whatsnew/changelog.html): В asyncio контекст SSL по умолчанию для клиентских соединений теперь создаётся с помощью ssl.create\_default\_context(), что повышает безопасность.
- [bpo-17401](https://python-all.ru/3/whatsnew/changelog.html): В \_\_repr\_\_ io.FileIO теперь включён closefd.
- [bpo-21338](https://python-all.ru/3/whatsnew/changelog.html): Добавлен тихий режим для compileall. Параметр quiet функций compile\_{dir, file, path} теперь может принимать многоуровневое значение. Также опция -q командной строки теперь имеет многоуровневое значение. Патч от Thomas Kluyver.
- [bpo-20152](https://python-all.ru/3/whatsnew/changelog.html): Модули array и cmath переведены на Argument Clinic.
- [bpo-18643](https://python-all.ru/3/whatsnew/changelog.html): Добавлен socket.socketpair() в Windows.
- [bpo-22435](https://python-all.ru/3/whatsnew/changelog.html): Исправлена утечка файловых дескрипторов при неудачной привязке (bind) в socketserver.
- [bpo-13096](https://python-all.ru/3/whatsnew/changelog.html): Исправлен segfault в обработке больших значений POINTER в CTypes.
- [bpo-11694](https://python-all.ru/3/whatsnew/changelog.html): В xdrlib теперь вызывается ConversionError, как описано в документации. Патч от Filip Gruszczyński и Claudiu Popa.
- [bpo-19380](https://python-all.ru/3/whatsnew/changelog.html): Оптимизирован разбор регулярных выражений.
- [bpo-1519638](https://python-all.ru/3/whatsnew/changelog.html): Теперь несовпавшие группы заменяются пустыми строками в re.sub() и re.subn().
- [bpo-18615](https://python-all.ru/3/whatsnew/changelog.html): sndhdr.what и sndhdr.whathdr теперь возвращают именованный кортеж (namedtuple).
- [bpo-22462](https://python-all.ru/3/whatsnew/changelog.html): Исправлено создание фиктивного фрейма в pyexpat, чтобы он отображался в трассировках исключений.
- [bpo-21965](https://python-all.ru/3/whatsnew/changelog.html): Добавлена поддержка SSL в памяти для модуля ssl. Патч от Geert Jansen.
- [bpo-21173](https://python-all.ru/3/whatsnew/changelog.html): Исправлено поведение len() для WeakKeyDictionary, когда .clear() был вызван при живом итераторе.
- [bpo-11866](https://python-all.ru/3/whatsnew/changelog.html): Устранено состояние гонки при вычислении имён для новых потоков.
- [bpo-21905](https://python-all.ru/3/whatsnew/changelog.html): Избежать RuntimeError в pickle.whichmodule() при изменении sys.modules во время итерации. Патч от Olivier Grisel.
- [bpo-11271](https://python-all.ru/3/whatsnew/changelog.html): concurrent.futures.Executor.map() теперь принимает аргумент *chunksize* для пакетной обработки задач в дочерних процессах и повышения производительности ProcessPoolExecutor. Патч от Dan O’Reilly.
- [bpo-21883](https://python-all.ru/3/whatsnew/changelog.html): os.path.join() и os.path.relpath() теперь вызывают TypeError с более понятным сообщением об ошибке для неподдерживаемых или несовместимых типов аргументов.
- [bpo-22219](https://python-all.ru/3/whatsnew/changelog.html): Интерфейс командной строки модуля zipfile теперь добавляет записи для директорий (включая пустые) в ZIP-файл.
- [bpo-22449](https://python-all.ru/3/whatsnew/changelog.html): В ssl.SSLContext.load\_default\_certs теперь учитываются переменные окружения SSL\_CERT\_DIR и SSL\_CERT\_FILE в Windows.
- [bpo-22508](https://python-all.ru/3/whatsnew/changelog.html): Переменная email.\_\_version\_\_ удалена; код email больше не поставляется отдельно от stdlib, а \_\_version\_\_ не обновлялся в течение нескольких релизов.
- [bpo-20076](https://python-all.ru/3/whatsnew/changelog.html): Добавлены непроизводные псевдонимы UTF-8 в таблицу псевдонимов локалей.
- [bpo-20079](https://python-all.ru/3/whatsnew/changelog.html): В таблицу псевдонимов локалей добавлены локали, поддерживаемые в glibc 2.18.
- [bpo-20218](https://python-all.ru/3/whatsnew/changelog.html): Добавлены удобные методы read\_text/write\_text и read\_bytes/write\_bytes для объектов pathlib.Path.
- [bpo-22396](https://python-all.ru/3/whatsnew/changelog.html): На платформе 32-бит AIX не экспонируются os.posix\_fadvise() и os.posix\_fallocate(), так как их прототипы в системных заголовочных файлах некорректны.
- [bpo-22517](https://python-all.ru/3/whatsnew/changelog.html): При удалении объекта io.BufferedRWPair очищаются его слабые ссылки.
- [bpo-22437](https://python-all.ru/3/whatsnew/changelog.html): Количество захватывающих групп в регулярном выражении больше не ограничено 100.
- [bpo-17442](https://python-all.ru/3/whatsnew/changelog.html): InteractiveInterpreter теперь отображает полную цепочку трассировки в своём методе showtraceback, чтобы соответствовать встроенному интерактивному интерпретатору.
- [bpo-23392](https://python-all.ru/3/whatsnew/changelog.html): Добавлены тесты для C API модуля marshal, работающего с FILE\*.
- [bpo-10510](https://python-all.ru/3/whatsnew/changelog.html): Методы register и upload в distutils теперь используют концы строк CRLF, соответствующие стандартам HTML.
- [bpo-9850](https://python-all.ru/3/whatsnew/changelog.html): Исправлен macpath.join() для пустого первого компонента. Патч от Олега Ошмяна.
- [bpo-5309](https://python-all.ru/3/whatsnew/changelog.html): Команды build и build\_ext из distutils теперь принимают опцию `-j` для включения параллельной сборки модулей расширения.
- [bpo-22448](https://python-all.ru/3/whatsnew/changelog.html): Улучшена очистка отменённых дескрипторов таймера для предотвращения неограниченного использования памяти. Патч от Joshua Moore-Oliva.
- [bpo-22427](https://python-all.ru/3/whatsnew/changelog.html): TemporaryDirectory больше не пытается выполнить очистку дважды при использовании в операторе with в генераторе.
- [bpo-22362](https://python-all.ru/3/whatsnew/changelog.html): Запрещены неоднозначные восьмеричные escape-последовательности вне диапазона 0-0o377 в регулярных выражениях.
- [bpo-20912](https://python-all.ru/3/whatsnew/changelog.html): Теперь каталоги, добавленные в ZIP-файл, имеют корректные атрибуты каталога Unix и MS-DOS.
- [bpo-21866](https://python-all.ru/3/whatsnew/changelog.html): ZipFile.close() больше не записывает записи центрального каталога ZIP64, если allowZip64 имеет значение false.
- [bpo-22278](https://python-all.ru/3/whatsnew/changelog.html): Исправлена проблема urljoin с относительными URL – регрессия, обнаруженная после внесения изменений в issue22118.
- [bpo-22415](https://python-all.ru/3/whatsnew/changelog.html): Исправлен отладочный вывод опкода GROUPREF\_EXISTS в модуле re. Удалены конечные пробелы в отладочном выводе.
- [bpo-22423](https://python-all.ru/3/whatsnew/changelog.html): Необработанное исключение в потоке больше не вызывает необработанное AttributeError, если sys.stderr равен None.
- [bpo-21332](https://python-all.ru/3/whatsnew/changelog.html): Обеспечить, чтобы `bufsize=1` в subprocess.Popen() выбирал построчную буферизацию, а не блочную. Патч от Akira Li.
- [bpo-21091](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка API: email.message.EmailMessage.is\_attachment теперь является методом.
- [bpo-21079](https://python-all.ru/3/whatsnew/changelog.html): Исправлен email.message.EmailMessage.is\_attachment, чтобы он возвращал правильный результат, когда заголовок содержит как параметры, так и значение.
- [bpo-22247](https://python-all.ru/3/whatsnew/changelog.html): Добавлен NNTPError в nntplib.\_\_all\_\_.
- [bpo-22366](https://python-all.ru/3/whatsnew/changelog.html): urllib.request.urlopen будет принимать объект контекста (SSLContext) в качестве аргумента, который затем будет использоваться для HTTPS-соединения. Патч от Alex Gaynor.
- [bpo-4180](https://python-all.ru/3/whatsnew/changelog.html): Реестры предупреждений теперь сбрасываются при изменении фильтров.
- [bpo-22419](https://python-all.ru/3/whatsnew/changelog.html): Длина входящего HTTP-запроса в сервере wsgiref ограничена 65536 байт; для большей длины отправляется код ошибки 414. Патч предоставлен Devin Cook.
- Нестрогий разбор cookie в http.cookies может представлять угрозу безопасности в сочетании с нестандартной обработкой cookie в некоторых веб-браузерах. Сообщил Sergey Bobrov.
- [bpo-20537](https://python-all.ru/3/whatsnew/changelog.html): Методы логирования теперь принимают экземпляр исключения, а также логическое значение или кортеж исключения. Спасибо Yury Selivanov за патч.
- [bpo-22384](https://python-all.ru/3/whatsnew/changelog.html): Исключение в колбэке Tkinter больше не приводит к аварийному завершению программы при запуске с pythonw.exe.
- [bpo-22168](https://python-all.ru/3/whatsnew/changelog.html): Предотвращено AttributeError в turtle с нестандартным Canvas на OS X.
- [bpo-21147](https://python-all.ru/3/whatsnew/changelog.html): sqlite3 теперь вызывает исключение, если запрос содержит нулевой символ, вместо его усечения. На основе патча Victor Stinner.
- [bpo-13968](https://python-all.ru/3/whatsnew/changelog.html): Модуль glob теперь поддерживает рекурсивный поиск в подкаталогах с помощью шаблона `**`.
- [bpo-21951](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка в Tkinter на AIX при вызове команды Tcl с пустой строкой или аргументом-кортежем.
- [bpo-21951](https://python-all.ru/3/whatsnew/changelog.html): Tkinter теперь с большой вероятностью вызывает MemoryError вместо падения при неудачном выделении памяти.
- [bpo-22338](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка в модуле json при неудачном выделении памяти.
- [bpo-12410](https://python-all.ru/3/whatsnew/changelog.html): imaplib.IMAP4 теперь поддерживает протокол управления контекстом. Оригинальный патч от Tarek Ziadé.
- [bpo-21270](https://python-all.ru/3/whatsnew/changelog.html): В объектах mock.call теперь переопределяются методы кортежей, чтобы их можно было использовать как обычные атрибуты вызова.
- [bpo-16662](https://python-all.ru/3/whatsnew/changelog.html): `load_tests()` теперь всегда выполняется при наличии в `__init__.py` пакета. `TestLoader.loadTestsFromModule()` по-прежнему принимает use\_load\_tests, но этот параметр устарел и игнорируется. Добавлен и документирован новый атрибут `pattern`, доступный только по ключевым словам. Патч предоставлен Robert Collins, доработан Barry Warsaw.
- [bpo-22226](https://python-all.ru/3/whatsnew/changelog.html): Первая буква больше не удаляется из ключа «status» в результате Treeview.heading().
- [bpo-19524](https://python-all.ru/3/whatsnew/changelog.html): Исправлена утечка ресурсов в HTTP-соединении при получении неверного ответа. Патч от Martin Panter.
- [bpo-20421](https://python-all.ru/3/whatsnew/changelog.html): Добавлен метод .version() для SSL-сокетов, возвращающий фактическую используемую версию протокола.
- [bpo-19546](https://python-all.ru/3/whatsnew/changelog.html): Исключения configparser больше не раскрывают детали реализации. Убраны цепочки KeyErrors, что приводит к более чистым трассировкам. Патч от Claudiu Popa.
- [bpo-22051](https://python-all.ru/3/whatsnew/changelog.html): turtledemo больше не перезагружает примеры для повторного запуска. Инициализация переменных и настройка GUI должны выполняться в main(), которая вызывается при каждом запуске демонстрации, но не при импорте.
- [bpo-21933](https://python-all.ru/3/whatsnew/changelog.html): Пользователи turtledemo могут изменять размер шрифта кода через меню или с помощью control(command) «-» или «+» или control-колесо мыши. Оригинальный патч от Lita Cho.
- [bpo-21597](https://python-all.ru/3/whatsnew/changelog.html): Разделитель между текстовой панелью turtledemo и холстом для рисования теперь можно захватить и перетаскивать мышью. Текстовую панель кода можно расширить, чтобы легко просматривать или копировать текст на всю ширину. Холст можно расширить на небольших экранах. Оригинальные патчи от Jan Kanis и Lita Cho.
- [bpo-18132](https://python-all.ru/3/whatsnew/changelog.html): Кнопки turtledemo больше не исчезают при уменьшении окна. Оригинальные патчи от Jan Kanis и Lita Cho.
- [bpo-22043](https://python-all.ru/3/whatsnew/changelog.html): time.monotonic() теперь всегда доступен. `threading.Lock.acquire()`, `threading.RLock.acquire()` и операции с сокетами теперь используют монотонные часы вместо системных, когда задан тайм-аут.
- [bpo-21527](https://python-all.ru/3/whatsnew/changelog.html): В ThreadPoolExecutor добавлено число рабочих потоков по умолчанию, равное 5 × количество CPU. Патч от Claudiu Popa.
- [bpo-22216](https://python-all.ru/3/whatsnew/changelog.html): smtplib теперь полнее сбрасывает своё состояние после quit. Наиболее заметным последствием прежнего поведения был сбой STARTTLS при последовательности connect/starttls/quit/connect/starttls.
- [bpo-22098](https://python-all.ru/3/whatsnew/changelog.html): BigEndianStructure и LittleEndianStructure из ctypes теперь определяют пустой \_\_slots\_\_, чтобы подклассы не получали экземпляр dict по умолчанию. Патч от Claudiu Popa.
- [bpo-22185](https://python-all.ru/3/whatsnew/changelog.html): Исправлена периодическая ошибка RuntimeError в threading.Condition.wait(), вызванная изменением очереди ожидающих без удержания блокировки. Патч от Doug Zongker.
- [bpo-22287](https://python-all.ru/3/whatsnew/changelog.html): На UNIX \_PyTime\_gettimeofday() теперь использует clock\_gettime(CLOCK\_REALTIME), если это возможно. Как побочный эффект, Python теперь зависит от библиотеки librt на Solaris и на Linux (только с glibc старше 2.17).
- [bpo-22182](https://python-all.ru/3/whatsnew/changelog.html): Используйте e.args для корректной распаковки исключений в distutils.file\_util.move\_file. Патч от Claudiu Popa.
- Модуль webbrowser теперь использует start\_new\_session=True подпроцесса вместо потенциально опасного вызова preexec\_fn=os.setsid.
- [bpo-22042](https://python-all.ru/3/whatsnew/changelog.html): signal.set\_wakeup\_fd(fd) теперь вызывает исключение, если файловый дескриптор находится в блокирующем режиме.
- [bpo-16808](https://python-all.ru/3/whatsnew/changelog.html): inspect.stack() теперь возвращает именованный кортеж вместо обычного. Патч от Daniel Shahaf.
- [bpo-22236](https://python-all.ru/3/whatsnew/changelog.html): Исправлены операции копирования изображений Tkinter в режиме NoDefaultRoot.
- [bpo-2527](https://python-all.ru/3/whatsnew/changelog.html): Добавлен аргумент *globals* к функциям timeit для переопределения пространства имён globals, в котором выполняется замеряемый код. Патч от Ben Roberts.
- [bpo-22118](https://python-all.ru/3/whatsnew/changelog.html): urllib.parse переключён на использование семантики RFC 3986 для разрешения относительных URL вместо RFC 1808 и 2396. Патч от Demian Brecht.
- [bpo-21549](https://python-all.ru/3/whatsnew/changelog.html): В TarFile.list() добавлен параметр «members».
- [bpo-19628](https://python-all.ru/3/whatsnew/changelog.html): Разрешено указывать глубину рекурсии compileall с помощью опции -r.
- [bpo-15696](https://python-all.ru/3/whatsnew/changelog.html): Добавлена реализация \_\_sizeof\_\_ для объектов mmap в Windows.
- [bpo-22068](https://python-all.ru/3/whatsnew/changelog.html): Предотвращены циклические ссылки с переменными и шрифтами в Tkinter.
- [bpo-22165](https://python-all.ru/3/whatsnew/changelog.html): SimpleHTTPRequestHandler теперь поддерживает нераскодируемые имена файлов.
- [bpo-15381](https://python-all.ru/3/whatsnew/changelog.html): Оптимизировано построчное чтение в io.BytesIO.
- [bpo-8797](https://python-all.ru/3/whatsnew/changelog.html): Немедленно вызывать HTTPError при неудачной базовой аутентификации. Первоначальный патч от Sam Bull.
- [bpo-20729](https://python-all.ru/3/whatsnew/changelog.html): Восстановлено использование ленивых iterkeys()/itervalues()/iteritems() в модуле mailbox.
- [bpo-21448](https://python-all.ru/3/whatsnew/changelog.html): Изменён метод FeedParser.feed() для предотвращения поведения *O*(*n*2) при разборе длинных строк. Оригинальный патч от Raymond Hettinger.
- [bpo-22184](https://python-all.ru/3/whatsnew/changelog.html): Фабрика декораторов functools.lru\_cache теперь выдаёт более раннее и понятное сообщение об ошибке, если пользователь забыл обязательные параметры.
- [bpo-17923](https://python-all.ru/3/whatsnew/changelog.html): Шаблоны glob(), оканчивающиеся на косую черту, больше не соответствуют не-директориям на AIX. Основано на патче от Delhallt.
- [bpo-21725](https://python-all.ru/3/whatsnew/changelog.html): Добавлена поддержка RFC 6531 (SMTPUTF8) в smtpd.
- [bpo-22176](https://python-all.ru/3/whatsnew/changelog.html): Обновление libffi модуля ctypes до версии 3.1. В этом выпуске добавлена поддержка архитектур Linux AArch64 и POWERPC ELF ABIv2 с прямым порядком байт (little endian).
- [bpo-5411](https://python-all.ru/3/whatsnew/changelog.html): Добавлена поддержка формата “xztar” в модуле shutil.
- [bpo-21121](https://python-all.ru/3/whatsnew/changelog.html): Не принуждать сторонние расширения на C собираться с флагом -Werror=declaration-after-statement.
- [bpo-21975](https://python-all.ru/3/whatsnew/changelog.html): Исправлен сбой при использовании неинициализированного sqlite3.Row (в частности, при распаковке (unpickling) сериализованного sqlite3.Row). Теперь sqlite3.Row инициализируется в методе \_\_new\_\_().
- [bpo-20170](https://python-all.ru/3/whatsnew/changelog.html): Преобразование posixmodule для использования Argument Clinic.
- [bpo-21539](https://python-all.ru/3/whatsnew/changelog.html): Добавление аргумента *exists\_ok* в `Pathlib.mkdir()` для имитации функциональности `mkdir -p` и `os.makedirs()`. Если значение true, игнорируется `FileExistsErrors`. Патч от Berker Peksag.
- [bpo-22127](https://python-all.ru/3/whatsnew/changelog.html): Обход IDNA для чисто ASCII-имён хостов в модуле socket (в частности, для числовых IP).
- [bpo-21047](https://python-all.ru/3/whatsnew/changelog.html): Установка значения по умолчанию для аргумента *convert\_charrefs* HTMLParser в True. Патч от Berker Peksag.
- Добавлен \_\_all\_\_ в html.entities.
- [bpo-15114](https://python-all.ru/3/whatsnew/changelog.html): Строгий режим и аргумент strict HTMLParser, HTMLParser.error, и исключение HTMLParserError были удалены.
- [bpo-22085](https://python-all.ru/3/whatsnew/changelog.html): Прекращена поддержка Tk 8.3 в Tkinter.
- [bpo-21580](https://python-all.ru/3/whatsnew/changelog.html): Теперь Tkinter корректно обрабатывает аргументы bytes, передаваемые Tk. В частности, это позволяет инициализировать изображения из двоичных данных.
- [bpo-22003](https://python-all.ru/3/whatsnew/changelog.html): При инициализации из объекта bytes, io.BytesIO() теперь откладывает создание копии до момента изменения, что повышает производительность и использование памяти в некоторых сценариях. Патч от David Wilson.
- [bpo-22018](https://python-all.ru/3/whatsnew/changelog.html): В Windows сигнал set\_wakeup\_fd() теперь также поддерживает сокеты. Побочным эффектом является то, что Python зависит от библиотеки WinSock.
- [bpo-22054](https://python-all.ru/3/whatsnew/changelog.html): Добавлены функции os.get\_blocking() и os.set\_blocking() для получения и установки блокирующего режима файлового дескриптора (False, если установлен флаг O\_NONBLOCK, и True в противном случае). Эти функции недоступны в Windows.
- [bpo-17172](https://python-all.ru/3/whatsnew/changelog.html): Сделать turtledemo активным при запуске на OS X, даже при выполнении через подпроцесс. Патч от Lita Cho.
- [bpo-21704](https://python-all.ru/3/whatsnew/changelog.html): Исправление ошибки сборки \_multiprocessing, когда семафоры недоступны. Патч от Arfrever Frehtes Taifersar Arahesis.
- [bpo-20173](https://python-all.ru/3/whatsnew/changelog.html): Преобразование SHA-1, SHA-256, SHA-512 и MD5 для использования Argument Clinic. Патч от Vajrasky Kok.
- Исправление repr(\_socket.socket) на Windows 64-bit: не вызывать OverflowError на закрытом сокете. repr(socket.socket) уже работает корректно.
- [bpo-22033](https://python-all.ru/3/whatsnew/changelog.html): Строковые представления большинства классов, реализованных на Python, теперь содержат фактическое имя класса вместо жёстко заданного.
- [bpo-21947](https://python-all.ru/3/whatsnew/changelog.html): Модуль dis теперь может дизассемблировать объекты-генераторы-итераторы на основе их атрибута gi\_code. Патч от Clement Rouault.
- [bpo-16133](https://python-all.ru/3/whatsnew/changelog.html): Метод asynchat.async\_chat.handle\_read() теперь игнорирует исключения BlockingIOError.
- [bpo-22044](https://python-all.ru/3/whatsnew/changelog.html): Исправлено преждевременное DECREF в call\_tzinfo\_method. Патч от Tom Flanagan.
- [bpo-19884](https://python-all.ru/3/whatsnew/changelog.html): readline: Отключать клавишу-модификатор meta, если stdout не является терминалом, чтобы не записывать ANSI-последовательность `"\033[1034h"` в stdout. Эта последовательность используется на некоторых терминалах (например, TERM=xterm-256color) для включения поддержки 8-битных символов.
- [bpo-4350](https://python-all.ru/3/whatsnew/changelog.html): Удалён ряд устаревших и давно неработающих методов Tkinter.
- [bpo-6167](https://python-all.ru/3/whatsnew/changelog.html): Scrollbar.activate() теперь возвращает имя активного элемента, если аргумент не указан. Scrollbar.set() теперь всегда принимает только 2 аргумента.
- [bpo-15275](https://python-all.ru/3/whatsnew/changelog.html): Очистка и ускорение модуля ntpath.
- [bpo-21888](https://python-all.ru/3/whatsnew/changelog.html): plistlib.load() и plistlib.loads() теперь работают, если указан параметр fmt.
- [bpo-22032](https://python-all.ru/3/whatsnew/changelog.html): Теперь для форматирования полных имён классов, реализованных на Python, всегда используется \_\_qualname\_\_ вместо \_\_name\_\_.
- [bpo-22031](https://python-all.ru/3/whatsnew/changelog.html): Теперь repr-представления всегда используют шестнадцатеричный формат с префиксом «0x», если содержат идентификатор в форме « at 0x…».
- [bpo-22018](https://python-all.ru/3/whatsnew/changelog.html): signal.set\_wakeup\_fd() теперь вызывает OSError вместо ValueError при сбое `fstat()`.
- [bpo-21044](https://python-all.ru/3/whatsnew/changelog.html): tarfile.open() теперь обрабатывает fileobj с целочисленным атрибутом 'name'. Основано на патче Антуана Пьетри.
- [bpo-21966](https://python-all.ru/3/whatsnew/changelog.html): Учитывается опция командной строки -q при запуске модуля code.
- [bpo-19076](https://python-all.ru/3/whatsnew/changelog.html): Не передавайте избыточный аргумент 'file' в self.error().
- [bpo-16382](https://python-all.ru/3/whatsnew/changelog.html): Улучшено сообщение об исключении warnings.warn() для некорректной категории. Первоначальный патч от Фила Элсона.
- [bpo-21932](https://python-all.ru/3/whatsnew/changelog.html): os.read() теперь использует тип [`Py_ssize_t()`](https://python-all.ru/3/c-api/intro.html#c.Py_ssize_t) вместо int для размера, чтобы обеспечить чтение более 2 ГБ за раз. На Windows размер усекается до INT\_MAX. Как и при любом вызове os.read(), операционная система может прочитать меньше байт, чем запрошено.
- [bpo-21942](https://python-all.ru/3/whatsnew/changelog.html): Исправлен просмотр исходных файлов в режиме сервера pydoc в Windows.
- [bpo-11259](https://python-all.ru/3/whatsnew/changelog.html): asynchat.async\_chat().set\_terminator() теперь вызывает ValueError, если количество полученных байт отрицательное.
- [bpo-12523](https://python-all.ru/3/whatsnew/changelog.html): asynchat.async\_chat.push() теперь вызывает TypeError, если не получает строку байт.
- [bpo-21707](https://python-all.ru/3/whatsnew/changelog.html): Добавлен отсутствующий аргумент kwonlyargcount в ModuleFinder.replace\_paths\_in\_code().
- [bpo-20639](https://python-all.ru/3/whatsnew/changelog.html): вызов Path.with\_suffix('') позволяет снова удалить суффикс. Патч от July Tikhonov.
- [bpo-21714](https://python-all.ru/3/whatsnew/changelog.html): Запрещено создание недопустимых путей с помощью Path.with\_name(). Оригинальный патч от Antony Lee.
- [bpo-15014](https://python-all.ru/3/whatsnew/changelog.html): Добавлен метод 'auth' в smtplib для упрощения реализации механизмов аутентификации; он используется внутренне в методе login.
- [bpo-21151](https://python-all.ru/3/whatsnew/changelog.html): Исправлен segfault в модуле winreg, когда `None` передаётся в качестве значения `REG_BINARY` в SetValueEx. Патч от John Ehresman.
- [bpo-21090](https://python-all.ru/3/whatsnew/changelog.html): io.FileIO.readall() больше не игнорирует ошибки ввода-вывода. Раньше он игнорировал ошибки ввода-вывода, если хотя бы первый вызов C read() завершался успешно.
- [bpo-5800](https://python-all.ru/3/whatsnew/changelog.html): параметр headers в wsgiref.headers.Headers теперь необязателен. Первоначальный патч от Pablo Torres Navarrete и SilentGhost.
- [bpo-21781](https://python-all.ru/3/whatsnew/changelog.html): ssl.RAND\_add() теперь поддерживает строки длиннее 2 ГБ.
- [bpo-21679](https://python-all.ru/3/whatsnew/changelog.html): Предотвращение лишних вызовов fstat() во время open(). Патч от Bohuslav Kabrda.
- [bpo-21863](https://python-all.ru/3/whatsnew/changelog.html): cProfile теперь отображает имя модуля функций-расширений C в дополнение к их собственному имени.
- [bpo-11453](https://python-all.ru/3/whatsnew/changelog.html): asyncore: теперь выводит ResourceWarning при уничтожении незакрытого объекта file\_wrapper. Деструктор теперь закрывает файл, если это необходимо. Метод close() теперь можно вызывать дважды: второй вызов ничего не делает.
- [bpo-21858](https://python-all.ru/3/whatsnew/changelog.html): Улучшена обработка исключений Python в модуле sqlite3.
- [bpo-21476](https://python-all.ru/3/whatsnew/changelog.html): Обеспечено удаление TextIOWrapper из email.parser.BytesParser после разбора, чтобы входной файл не закрывался неожиданно.
- [bpo-20295](https://python-all.ru/3/whatsnew/changelog.html): imghdr теперь распознаёт изображения в формате OpenEXR.
- [bpo-21729](https://python-all.ru/3/whatsnew/changelog.html): Использован оператор 'with' в модуле dbm.dumb для гарантированного закрытия файлов. Патч от Claudiu Popa.
- [bpo-21491](https://python-all.ru/3/whatsnew/changelog.html): socketserver: исправлено состояние гонки при завершении дочерних процессов.
- [bpo-21719](https://python-all.ru/3/whatsnew/changelog.html): Добавлено поле `st_file_attributes` в os.stat\_result в Windows.
- [bpo-21832](https://python-all.ru/3/whatsnew/changelog.html): Требовать, чтобы входные данные именованного кортежа были строками.
- [bpo-21722](https://python-all.ru/3/whatsnew/changelog.html): Команда distutils “upload” теперь завершается с ненулевым кодом возврата при ошибке загрузки. Патч от Martin Dengler.
- [bpo-21723](https://python-all.ru/3/whatsnew/changelog.html): asyncio.Queue: поддержка любого типа чисел (например, float) для максимального размера. Патч от Vajrasky Kok.
- [bpo-21711](https://python-all.ru/3/whatsnew/changelog.html): поддержка каталогов “site-python” удалена из модуля site (устарело в 3.4).
- [bpo-17552](https://python-all.ru/3/whatsnew/changelog.html): новый метод socket.sendfile(), позволяющий отправлять файл через сокет с помощью высокопроизводительного os.sendfile() в UNIX. Патч от Giampaolo Rodola’.
- [bpo-18039](https://python-all.ru/3/whatsnew/changelog.html): dbm.dump.open() теперь всегда создаёт новую базу данных, когда флаг имеет значение ‘n’. Патч от Claudiu Popa.
- [bpo-21326](https://python-all.ru/3/whatsnew/changelog.html): Добавлен новый метод is\_closed() в asyncio.BaseEventLoop. Методы run\_forever() и run\_until\_complete() asyncio.BaseEventLoop теперь вызывают исключение, если цикл событий был закрыт.
- [bpo-21766](https://python-all.ru/3/whatsnew/changelog.html): Предотвращение уязвимости в CGIHTTPServer путём декодирования URL-путей перед проверкой наличия CGI-скрипта.
- [bpo-21310](https://python-all.ru/3/whatsnew/changelog.html): Исправлена возможная утечка ресурсов при неудачном вызове open().
- [bpo-21256](https://python-all.ru/3/whatsnew/changelog.html): Вывод именованных аргументов в вызове мок-функции должен быть в детерминированном порядке. Это поможет писать лучшие доктесты.
- [bpo-21677](https://python-all.ru/3/whatsnew/changelog.html): Исправлена цепочка ненормализованных исключений в методах close() модуля io.
- [bpo-11709](https://python-all.ru/3/whatsnew/changelog.html): Исправлена функция pydoc.help, чтобы она не завершалась ошибкой, когда sys.stdin не является корректным файлом.
- [bpo-21515](https://python-all.ru/3/whatsnew/changelog.html): tempfile.TemporaryFile теперь использует флаг os.O\_TMPFILE, если он доступен.
- [bpo-13223](https://python-all.ru/3/whatsnew/changelog.html): Исправлена pydoc.writedoc, чтобы HTML-документация для методов, использующих ‘self’ в примерах кода, генерировалась корректно.
- [bpo-21463](https://python-all.ru/3/whatsnew/changelog.html): В urllib.request исправлена очистка FTP-кэша.
- [bpo-21618](https://python-all.ru/3/whatsnew/changelog.html): Модуль подпроцессов мог не закрывать открытые файловые дескрипторы, унаследованные вызывающим процессом, если они превышали ограничения POSIX. В системах с работающим интерфейсом /proc/self/fd или /dev/fd максимальное количество теперь игнорируется, и закрываются все дескрипторы.
- [bpo-20383](https://python-all.ru/3/whatsnew/changelog.html): Введён importlib.util.module\_from\_spec() как предпочтительный способ создания нового модуля.
- [bpo-21552](https://python-all.ru/3/whatsnew/changelog.html): Исправлено возможное целочисленное переполнение при слишком длинных строках в модуле tkinter на 64-битных платформах.
- [bpo-14315](https://python-all.ru/3/whatsnew/changelog.html): Модуль zipfile теперь игнорирует дополнительные поля в центральном каталоге, которые слишком коротки для разбора, вместо того чтобы позволить ошибке struct.unpack всплывать, так как такие «плохие данные» встречаются во многих реальных zip-файлах и игнорируются другими инструментами.
- [bpo-13742](https://python-all.ru/3/whatsnew/changelog.html): Добавлены параметры “key” и “reverse” в heapq.merge(). (Первый черновик патча предоставлен Simon Sapin.)
- [bpo-21402](https://python-all.ru/3/whatsnew/changelog.html): tkinter.ttk теперь работает, когда корневое окно по умолчанию не установлено.
- [bpo-3015](https://python-all.ru/3/whatsnew/changelog.html): `_tkinter.create()` теперь создаёт `tkapp` объект с `wantobjects=1` по умолчанию.
- [bpo-10203](https://python-all.ru/3/whatsnew/changelog.html): sqlite3.Row теперь действительно поддерживает протокол последовательности. В частности, поддерживает reverse() и отрицательные индексы. Оригинальный патч от Claudiu Popa.
- [bpo-18807](https://python-all.ru/3/whatsnew/changelog.html): Если для виртуального окружения (venv) указано копирование (без симлинков), то алиасы интерпретатора python (python, python3) теперь создаются копированием, а не симлинками.
- [bpo-20197](https://python-all.ru/3/whatsnew/changelog.html): Добавлена поддержка формата изображений WebP в модуль imghdr. Патч от Fabrice Aneche и Claudiu Popa.
- [bpo-21513](https://python-all.ru/3/whatsnew/changelog.html): Ускорены некоторые свойства IP-адресов (IPv4Address, IPv6Address), такие как .is\_private или .is\_multicast.
- [bpo-21137](https://python-all.ru/3/whatsnew/changelog.html): Улучшено repr для threading.Lock() и его вариантов: теперь отображается статус “locked” или “unlocked”. Патч от Berker Peksag.
- [bpo-21538](https://python-all.ru/3/whatsnew/changelog.html): Модуль plistlib теперь поддерживает загрузку бинарных plist-файлов, когда размер ссылки или смещения не является степенью двойки.
- [bpo-21455](https://python-all.ru/3/whatsnew/changelog.html): Добавлен backlog по умолчанию в socket.listen().
- [bpo-21525](https://python-all.ru/3/whatsnew/changelog.html): Большинство методов Tkinter, которые принимали кортежи, теперь принимают также списки.
- [bpo-22166](https://python-all.ru/3/whatsnew/changelog.html): С помощью новой внутренней вспомогательной функции \_codecs.\_forget\_codec модуль test\_codecs теперь очищает кэши кодировок, чтобы избежать появления утечки ссылок.
- [bpo-22236](https://python-all.ru/3/whatsnew/changelog.html): Тесты Tkinter теперь не переиспользуют корневое окно по умолчанию. Новое корневое окно создаётся для каждого класса тестов.
- [bpo-10744](https://python-all.ru/3/whatsnew/changelog.html): Исправлены строки формата [**PEP 3118**](https://python-all.ru/3/whatsnew/changelog.html) для объектов ctypes с нетривиальной формой.
- [bpo-20826](https://python-all.ru/3/whatsnew/changelog.html): Оптимизирована функция ipaddress.collapse\_addresses().
- [bpo-21487](https://python-all.ru/3/whatsnew/changelog.html): Оптимизированы функции ipaddress.summarize\_address\_range() и ipaddress.{IPv4Network,IPv6Network}.subnets().
- [bpo-21486](https://python-all.ru/3/whatsnew/changelog.html): Оптимизирован разбор сетевых масок в ipaddress.IPv4Network и ipaddress.IPv6Network.
- [bpo-13916](https://python-all.ru/3/whatsnew/changelog.html): Запрещён обработчик ошибок surrogatepass для кодировок, отличных от UTF-\*.
- [bpo-20998](https://python-all.ru/3/whatsnew/changelog.html): Исправлено поведение re.fullmatch() для повторяющегося шаблона из одного символа с игнорированием регистра. Оригинальный патч от Matthew Barnett.
- [bpo-21075](https://python-all.ru/3/whatsnew/changelog.html): fileinput.FileInput теперь читает байты из стандартного потока, если указан бинарный режим. Патч от Sam Kimbrel.
- [bpo-19775](https://python-all.ru/3/whatsnew/changelog.html): Добавлен метод samefile() для объектов pathlib.Path. Первоначальный патч от Vajrasky Kok.
- [bpo-21226](https://python-all.ru/3/whatsnew/changelog.html): Исправлена инициализация модулей в PyImport\_ExecCodeModuleObject (и подобных функциях).
- [bpo-21398](https://python-all.ru/3/whatsnew/changelog.html): Исправлена ошибка Unicode в постраничном выводе pydoc, когда документация содержит символы, не кодируемые в кодировке stdout.
- [bpo-16531](https://python-all.ru/3/whatsnew/changelog.html): ipaddress.IPv4Network и ipaddress.IPv6Network теперь принимают аргумент-кортеж (address, netmask), чтобы можно было легко создавать объекты сети из существующих адресов.
- [bpo-21156](https://python-all.ru/3/whatsnew/changelog.html): importlib.abc.InspectLoader.source\_to\_code() теперь является статическим методом.
- [bpo-21424](https://python-all.ru/3/whatsnew/changelog.html): Упрощены и оптимизированы heaqp.nlargest() и nmsmallest() для выполнения меньшего числа сравнений кортежей.
- [bpo-21396](https://python-all.ru/3/whatsnew/changelog.html): Исправлено поведение TextIOWrapper(…, write\_through=True) – теперь он не принуждает к вызову flush() для нижележащего бинарного потока. Патч от akira.
- [bpo-18314](https://python-all.ru/3/whatsnew/changelog.html): Unlink теперь удаляет точки соединения (junctions) в Windows. Патч от Kim Gräsman.
- [bpo-21088](https://python-all.ru/3/whatsnew/changelog.html): Исправление регрессии в curses.window.addch() в версии 3.4.0. При переносе на Argument Clinic первые два аргумента были перепутаны местами.
- [bpo-21407](https://python-all.ru/3/whatsnew/changelog.html): Модуль \_decimal теперь поддерживает сигнатуры функций.
- [bpo-10650](https://python-all.ru/3/whatsnew/changelog.html): Убран нестандартный параметр 'watchexp' из метода Decimal.quantize() в версии на Python. В C-версии его никогда не было.
- [bpo-21469](https://python-all.ru/3/whatsnew/changelog.html): Снижен риск ложных срабатываний в robotparser – теперь перед возвратом True в can\_fetch() проверяется, что robots.txt был прочитан или не существует.
- [bpo-19414](https://python-all.ru/3/whatsnew/changelog.html): OrderedDict теперь помечает удалённые связи как непригодные. Это позволяет раньше получить ошибку, если связь удаляется во время итерации.
- [bpo-21421](https://python-all.ru/3/whatsnew/changelog.html): Добавлен \_\_slots\_\_ в абстрактный класс MappingViews. Патч от Josh Rosenberg.
- [bpo-21101](https://python-all.ru/3/whatsnew/changelog.html): Устранено двойное хеширование в оптимизированном коде на C для collections.Counter().
- [bpo-21321](https://python-all.ru/3/whatsnew/changelog.html): itertools.islice() теперь освобождает ссылку на исходный итератор, когда срез исчерпан. Патч от Anton Afanasyev.
- [bpo-21057](https://python-all.ru/3/whatsnew/changelog.html): TextIOWrapper теперь позволяет методу read() или read1() нижележащего бинарного потока возвращать произвольный байтоподобный объект (например, memoryview). Патч от Nikolaus Rath.
- [bpo-20951](https://python-all.ru/3/whatsnew/changelog.html): SSLSocket.send() теперь вызывает SSLWantReadError или SSLWantWriteError на неблокирующем сокете, если операция должна была бы заблокироваться. Ранее он возвращал 0. Патч от Nikolaus Rath.
- [bpo-13248](https://python-all.ru/3/whatsnew/changelog.html): Убран ранее устаревший хак дешёвого наследования в asyncore.dispatcher через \_\_getattr\_\_.
- [bpo-9815](https://python-all.ru/3/whatsnew/changelog.html): assertRaises теперь пытается очищать ссылки на локальные переменные в трассировке исключения.
- [bpo-19940](https://python-all.ru/3/whatsnew/changelog.html): ssl.cert\_time\_to\_seconds() теперь интерпретирует переданную строку времени в часовом поясе UTC (как указано в RFC 5280), а не в местном часовом поясе.
- [bpo-13204](https://python-all.ru/3/whatsnew/changelog.html): Вызов sys.flags.\_\_new\_\_ раньше приводил к аварийному завершению интерпретатора, теперь вызывает TypeError.
- [bpo-19385](https://python-all.ru/3/whatsnew/changelog.html): Операции с закрытой базой данных dbm.dumb теперь всегда вызывают одно и то же исключение.
- [bpo-21207](https://python-all.ru/3/whatsnew/changelog.html): Обнаруживается, когда кешированный файловый дескриптор os.urandom был закрыт или заменён, и он открывается заново.
- [bpo-21291](https://python-all.ru/3/whatsnew/changelog.html): subprocess.Popen.wait() теперь потокобезопасен, поэтому несколько потоков могут одновременно вызывать wait() или poll() для одного экземпляра Popen, не теряя значение Popen.returncode.
- [bpo-21127](https://python-all.ru/3/whatsnew/changelog.html): Объекты Path теперь можно создавать из экземпляров подклассов str (например, `numpy.str_`).
- [bpo-15002](https://python-all.ru/3/whatsnew/changelog.html): Объект urllib.response теперь использует механизм \_TemporaryFileWrapper (и \_TemporaryFileCloser). Это даёт лучший способ управления закрытием файловых дескрипторов. Патч предоставлен Christian Theune.
- [bpo-12220](https://python-all.ru/3/whatsnew/changelog.html): mindom теперь возбуждает собственное исключение ValueError с указанием, что не поддерживает пробелы в URI, вместо того чтобы позволять всплывать ValueError от ‘split’.
- [bpo-21068](https://python-all.ru/3/whatsnew/changelog.html): Константы ssl.PROTOCOL\* теперь являются элементами перечисления.
- [bpo-21276](https://python-all.ru/3/whatsnew/changelog.html): posixmodule: не определять USE\_XATTRS на KFreeBSD и Hurd.
- [bpo-21262](https://python-all.ru/3/whatsnew/changelog.html): Новый метод assert\_not\_called для Mock. Возбуждает AssertionError, если mock был вызван.
- [bpo-21238](https://python-all.ru/3/whatsnew/changelog.html): Новый именованный аргумент `unsafe` для Mock. Возбуждает `AttributeError`, если атрибут начинается с assert или assret.
- [bpo-20896](https://python-all.ru/3/whatsnew/changelog.html): ssl.get\_server\_certificate() теперь использует PROTOCOL\_SSLv23, а не PROTOCOL\_SSLv3, для максимальной совместимости.
- [bpo-21239](https://python-all.ru/3/whatsnew/changelog.html): patch.stopall() работал недетерминированно, когда одно и то же имя патчилось более одного раза.
- [bpo-21203](https://python-all.ru/3/whatsnew/changelog.html): Обновлены fileConfig и dictConfig для устранения несоответствий. Спасибо Jure Koren за патч.
- [bpo-21222](https://python-all.ru/3/whatsnew/changelog.html): Передача именованного аргумента name в mock.create\_autospec теперь работает.
- [bpo-21197](https://python-all.ru/3/whatsnew/changelog.html): Добавлена символическая ссылка lib64 -\> lib в виртуальных окружениях на 64-битных POSIX-системах, отличных от OS X.
- [bpo-17498](https://python-all.ru/3/whatsnew/changelog.html): Некоторые SMTP-серверы разрывают соединение после определённых ошибок, нарушая строгое соответствие RFC. Вместо потери кода ошибки при отправке последующей команды RSET, smtplib теперь возвращает код ошибки и откладывает возбуждение исключения SMTPServerDisconnected до выдачи следующей команды.
- [bpo-17826](https://python-all.ru/3/whatsnew/changelog.html): Установка итерируемого side\_effect на фиктивную функцию, созданную с помощью create\_autospec, теперь работает. Патч от Kushal Das.
- [bpo-7776](https://python-all.ru/3/whatsnew/changelog.html): Исправлен заголовок `Host:` и переподключение при использовании http.client.HTTPConnection.set\_tunnel(). Патч от Nikolaus Rath.
- [bpo-20968](https://python-all.ru/3/whatsnew/changelog.html): unittest.mock.MagicMock теперь поддерживает деление. Патч от Johannes Baiter.
- [bpo-21529](https://python-all.ru/3/whatsnew/changelog.html): Исправлен произвольный доступ к памяти в JSONDecoder.raw\_decode с отрицательным вторым параметром. Ошибка сообщена Guido Vranken. (См. также: [**CVE 2014-4616**](https://python-all.ru/3/whatsnew/changelog.html))
- [bpo-21169](https://python-all.ru/3/whatsnew/changelog.html): getpass теперь обрабатывает не-ASCII символы, которые не может закодировать кодировка входного потока, путём перекодирования с обработчиком ошибок replace.
- [bpo-21171](https://python-all.ru/3/whatsnew/changelog.html): Исправлен недокументированный API фильтра кодера rot13. Патч от Berker Peksag.
- [bpo-20539](https://python-all.ru/3/whatsnew/changelog.html): Улучшено сообщение об ошибке math.factorial для больших положительных входных значений и изменён тип исключения (OverflowError -\> ValueError) для больших отрицательных входных значений.
- [bpo-21172](https://python-all.ru/3/whatsnew/changelog.html): Проверка isinstance смягчена с dict на collections.Mapping.
- [bpo-21155](https://python-all.ru/3/whatsnew/changelog.html): asyncio.EventLoop.create\_unix\_server() теперь возбуждает ValueError, если path и sock заданы одновременно.
- [bpo-21136](https://python-all.ru/3/whatsnew/changelog.html): Избегание ненужной нормализации Fractions, получаемых в результате возведения в степень и других операций. Патч от Raymond Hettinger.
- [bpo-17621](https://python-all.ru/3/whatsnew/changelog.html): Введён importlib.util.LazyLoader.
- [bpo-21076](https://python-all.ru/3/whatsnew/changelog.html): Константы модуля signal были преобразованы в перечисления. Патч от Giampaolo Rodola’.
- [bpo-20636](https://python-all.ru/3/whatsnew/changelog.html): Улучшено repr виджетов Tkinter.
- [bpo-19505](https://python-all.ru/3/whatsnew/changelog.html): Представления items, keys и values OrderedDict теперь поддерживают обратную итерацию с помощью reversed().
- [bpo-21149](https://python-all.ru/3/whatsnew/changelog.html): Улучшена потокобезопасность при очистке логирования во время завершения интерпретатора. Спасибо Devin Jeanpierre за патч.
- [bpo-21058](https://python-all.ru/3/whatsnew/changelog.html): Исправлена утечка файлового дескриптора в [`tempfile.NamedTemporaryFile()`](https://python-all.ru/3/library/tempfile.html#tempfile.NamedTemporaryFile), закрывать файловый дескриптор, если [`io.open()`](https://python-all.ru/3/library/io.html#io.open) завершается ошибкой
- [bpo-21200](https://python-all.ru/3/whatsnew/changelog.html): Возвращать None из pkgutil.get\_loader(), когда отсутствует \_\_spec\_\_.
- [bpo-21013](https://python-all.ru/3/whatsnew/changelog.html): Улучшен ssl.create\_default\_context() при использовании для серверных сокетов для обеспечения лучшей безопасности по умолчанию.
- [bpo-20145](https://python-all.ru/3/whatsnew/changelog.html): `assertRaisesRegex` и `assertWarnsRegex` теперь возбуждают `TypeError`, если второй аргумент не является строкой или скомпилированным регулярным выражением.
- [bpo-20633](https://python-all.ru/3/whatsnew/changelog.html): Относительный импорт заменён на абсолютный.
- [bpo-20980](https://python-all.ru/3/whatsnew/changelog.html): Прекращена обёртка исключения при использовании ThreadPool.
- [bpo-21082](https://python-all.ru/3/whatsnew/changelog.html): В os.makedirs больше не устанавливается umask для процесса в целом. Обратите внимание: это изменяет поведение makedirs при exist\_ok=True.
- [bpo-20990](https://python-all.ru/3/whatsnew/changelog.html): Исправлены проблемы, найденные pyflakes в multiprocessing.
- [bpo-21015](https://python-all.ru/3/whatsnew/changelog.html): Контексты SSL теперь автоматически выбирают эллиптическую кривую для обмена ключами ECDH на OpenSSL 1.0.2 и новее, а в остальных случаях по умолчанию используется «prime256v1».
- [bpo-21000](https://python-all.ru/3/whatsnew/changelog.html): Улучшен интерфейс командной строки утилиты json.tool.
- [bpo-20995](https://python-all.ru/3/whatsnew/changelog.html): Улучшены стандартные шифры, используемые модулем ssl, для повышения безопасности и приоритета perfect forward secrecy.
- [bpo-20884](https://python-all.ru/3/whatsnew/changelog.html): Больше не делается предположение, что \_\_file\_\_ определён в importlib.\_\_init\_\_.
- [bpo-21499](https://python-all.ru/3/whatsnew/changelog.html): Игнорируется \_\_builtins\_\_ в нескольких тестах test\_importlib.test\_api.
- [bpo-20627](https://python-all.ru/3/whatsnew/changelog.html): xmlrpc.client.ServerProxy теперь является контекстным менеджером.
- [bpo-19165](https://python-all.ru/3/whatsnew/changelog.html): Модуль formatter теперь вызывает DeprecationWarning вместо PendingDeprecationWarning.
- [bpo-13936](https://python-all.ru/3/whatsnew/changelog.html): Удалена возможность считать экземпляры datetime.time ложными в логических контекстах.
- [bpo-18931](https://python-all.ru/3/whatsnew/changelog.html): Модуль selectors теперь поддерживает /dev/poll на Solaris. Патч от Джампаоло Родолы.
- [bpo-19977](https://python-all.ru/3/whatsnew/changelog.html): Когда `LC_TYPE` локаль – это локаль POSIX (`C` локаль), [`sys.stdin`](https://python-all.ru/3/library/sys.html#sys.stdin) и [`sys.stdout`](https://python-all.ru/3/library/sys.html#sys.stdout) теперь используют обработчик ошибок `surrogateescape` вместо обработчика `strict`.
- [bpo-20574](https://python-all.ru/3/whatsnew/changelog.html): Реализован инкрементальный декодер для кодировки cp65001 (кодовая страница Windows 65001, Microsoft UTF-8).
- [bpo-20879](https://python-all.ru/3/whatsnew/changelog.html): Отложена инициализация таблиц кодирования и декодирования для base32, ascii85 и base85 в модуле base64, а также инициализация таблицы unquote\_to\_bytes() модуля urllib.parse, чтобы не тратить память, если эти модули не используются.
- [bpo-19157](https://python-all.ru/3/whatsnew/changelog.html): В ipaddress широковещательный адрес включён в список доступных хостов для IPv6.
- [bpo-11599](https://python-all.ru/3/whatsnew/changelog.html): При сбое внешней команды (например, компилятора) distutils теперь выводит всю командную строку (а не только имя команды), если установлена переменная окружения DISTUTILS\_DEBUG.
- [bpo-4931](https://python-all.ru/3/whatsnew/changelog.html): Distutils больше не должен выдавать бесполезные сообщения «error: None». Функция distutils.util.grok\_environment\_error сохраняется, но считается устаревшей в документации.
- [bpo-20875](https://python-all.ru/3/whatsnew/changelog.html): Предотвращена возможная ошибка NameError «'read' is not defined» в gzip. Патч от Клавдиу Попа.
- [bpo-11558](https://python-all.ru/3/whatsnew/changelog.html): `email.message.Message.attach` теперь возвращает более полезное сообщение об ошибке, если `attach` вызывается для сообщения, для которого `is_multipart` равно False.
- [bpo-20283](https://python-all.ru/3/whatsnew/changelog.html): Методы шаблонов RE теперь принимают строковые параметры keyword, как и задокументировано. Параметры pattern и source оставлены как устаревшие псевдонимы.
- [bpo-20778](https://python-all.ru/3/whatsnew/changelog.html): Исправлен modulefinder для работы с модулями, содержащими только байт-код.
- [bpo-20791](https://python-all.ru/3/whatsnew/changelog.html): copy.copy() теперь не создаёт копию, если на вход передан объект bytes. Начальный патч от Питера Оттена.
- [bpo-19748](https://python-all.ru/3/whatsnew/changelog.html): На AIX time.mktime() теперь вызывает OverflowError для года вне диапазона \[1902; 2037\].
- [bpo-19573](https://python-all.ru/3/whatsnew/changelog.html): inspect.signature: для констант вида параметра используется перечисление.
- [bpo-20726](https://python-all.ru/3/whatsnew/changelog.html): inspect.signature: Signature и Parameter сделаны сериализуемыми (picklable).
- [bpo-17373](https://python-all.ru/3/whatsnew/changelog.html): Добавлен метод inspect.Signature.from\_callable.
- [bpo-20378](https://python-all.ru/3/whatsnew/changelog.html): Улучшено строковое представление inspect.Signature и inspect.Parameter.
- [bpo-20816](https://python-all.ru/3/whatsnew/changelog.html): Исправлен inspect.getcallargs() для возбуждения правильного TypeError при отсутствии обязательных keyword-only аргументов. Патч от Джереми Лоуина.
- [bpo-20817](https://python-all.ru/3/whatsnew/changelog.html): Исправлен inspect.getcallargs() для корректного завершения с ошибкой, если отсутствует более 3 аргументов. Патч от Джереми Лоуина.
- [bpo-6676](https://python-all.ru/3/whatsnew/changelog.html): Обеспечено возбуждение осмысленного исключения при попытке разбора более одного XML-документа на экземпляр pyexpat xmlparser. (Исходные патчи от Хирокадзу Ямамото и Амори Форжо д’Арка, с предложенной формулировкой от Дэвида Гаттериджа.)
- [bpo-21117](https://python-all.ru/3/whatsnew/changelog.html): Исправлена работа inspect.signature для лучшей поддержки functools.partial. Из-за особенностей реализации functools.partial позиционно-ключевые аргументы, переданные как именованные, становятся только ключевыми.
- [bpo-20334](https://python-all.ru/3/whatsnew/changelog.html): inspect.Signature и inspect.Parameter теперь хэшируемы. Спасибо Энтони Ли за сообщения об ошибках и предложения.
- [bpo-15916](https://python-all.ru/3/whatsnew/changelog.html): doctest.DocTestSuite возвращает пустой unittest.TestSuite вместо возбуждения ValueError, если не найдено ни одного теста.
- [bpo-21209](https://python-all.ru/3/whatsnew/changelog.html): Исправлен asyncio.tasks.CoroWrapper для обхода ошибки в реализации yield-from в CPython до версии 3.4.1.
- asyncio: Добавлены свойства gi\_{frame,running,code} в CoroWrapper ([bpo-163](https://python-all.ru/3/whatsnew/changelog.html)).
- [bpo-21311](https://python-all.ru/3/whatsnew/changelog.html): Предотвращение исключения в \_osx\_support при нестандартных конфигурациях компилятора. Патч от Джона Шакмайстера.
- [bpo-11571](https://python-all.ru/3/whatsnew/changelog.html): Обеспечено, чтобы окно turtle становилось самым верхним при запуске на OS X.
- [bpo-21801](https://python-all.ru/3/whatsnew/changelog.html): Проверка, что \_\_signature\_\_ равно None или является экземпляром Signature.
- [bpo-21923](https://python-all.ru/3/whatsnew/changelog.html): Предотвращение AttributeError в distutils.sysconfig.customize\_compiler из-за возможной неинициализированной \_config\_vars.
- [bpo-21323](https://python-all.ru/3/whatsnew/changelog.html): Исправлен http.server для повторной обработки скриптов в подкаталогах CGI, нарушенной исправлением уязвимости [bpo-19435](https://python-all.ru/3/whatsnew/changelog.html). Патч от Зака Бирна.
- [bpo-22733](https://python-all.ru/3/whatsnew/changelog.html): Исправлено ffi\_prep\_args, некорректно расширявшее нулями значения аргументов на 64-битной Windows.
- [bpo-23302](https://python-all.ru/3/whatsnew/changelog.html): Установка TCP\_NODELAY=1 по умолчанию при установке HTTPConnection. Убрано использование жестко заданного MSS, так как эта оптимизация больше не нужна при отключенном Nagle.

### IDLE

- [bpo-20577](https://python-all.ru/3/whatsnew/changelog.html): Настройка максимальной длины строки для расширения FormatParagraph перенесена с вкладки General диалога настроек Idle на вкладку FormatParagraph диалога Config Extensions. Патч от Таля Эйната.
- [bpo-16893](https://python-all.ru/3/whatsnew/changelog.html): Обновлена глава документации Idle в соответствии с текущей версией и добавлена новая информация.
- [bpo-3068](https://python-all.ru/3/whatsnew/changelog.html): Добавлен диалог конфигурации расширений Idle в меню Options. Изменения записываются в HOME/.idlerc/config-extensions.cfg. Оригинальный патч от Таля Эйната.
- [bpo-16233](https://python-all.ru/3/whatsnew/changelog.html): Браузер модулей (File : Class Browser, Alt+C) требует окно редактора с именем файла. Если Class Browser запрашивается иным способом – из оболочки, окна вывода или редактора «Untitled», Idle больше не показывает диалог с ошибкой. Теперь открывается диалог Open Module (Alt+M). Если введено корректное имя и модуль открыт, то открывается и соответствующий браузер.
- [bpo-4832](https://python-all.ru/3/whatsnew/changelog.html): Сохранение как файл Python автоматически добавляет .py к введённому имени (даже если система не показывает расширение). Некоторые системы автоматически добавляют .txt при выборе типа «Текстовые файлы».
- [bpo-21986](https://python-all.ru/3/whatsnew/changelog.html): Объекты кода обычно не сериализуются модулем pickle. Соответственно, они больше не сериализуются при работе в Idle.
- [bpo-17390](https://python-all.ru/3/whatsnew/changelog.html): Изменён заголовок окна редактора: убрано «Python», версия перемещена в конец.
- [bpo-14105](https://python-all.ru/3/whatsnew/changelog.html): Точки останова отладчика Idle больше не исчезают при вставке или удалении строк.
- [bpo-17172](https://python-all.ru/3/whatsnew/changelog.html): Turtledemo теперь можно запускать из Idle. Пока пункт находится в меню Help, но может быть перенесён в Run. Патч от Рамчандры Апта и Литы Чо.
- [bpo-21765](https://python-all.ru/3/whatsnew/changelog.html): Добавлена поддержка не-ASCII идентификаторов в HyperParser.
- [bpo-21940](https://python-all.ru/3/whatsnew/changelog.html): Добавлен unittest для WidgetRedirector. Начальный патч от Саймадхава Хеблекара.
- [bpo-18592](https://python-all.ru/3/whatsnew/changelog.html): Добавлен unittest для SearchDialogBase. Патч от Фила Вебстера.
- [bpo-21694](https://python-all.ru/3/whatsnew/changelog.html): Добавлен unittest для ParenMatch. Патч от Саймадхава Хеблекара.
- [bpo-21686](https://python-all.ru/3/whatsnew/changelog.html): Добавлен unittest для HyperParser. Оригинальный патч от Саймадхава Хеблекара.
- [bpo-12387](https://python-all.ru/3/whatsnew/changelog.html): Добавлены недостающие версии в верхнем (нижнем) регистре для стандартных клавиатурных комбинаций Idle в Windows, чтобы Caps Lock не отключал их. Патч от Роджера Серви.
- [bpo-21695](https://python-all.ru/3/whatsnew/changelog.html): Закрытие окна результатов поиска в файлах во время выполнения поиска больше не закрывает Idle.
- [bpo-18910](https://python-all.ru/3/whatsnew/changelog.html): Добавлен unittest для textView. Патч от Фила Вебстера.
- [bpo-18292](https://python-all.ru/3/whatsnew/changelog.html): Добавлен unittest для AutoExpand. Патч от Сайадхава Хеблекара.
- [bpo-18409](https://python-all.ru/3/whatsnew/changelog.html): Добавлен unittest для AutoComplete. Патч от Фила Вебстера.
- [bpo-21477](https://python-all.ru/3/whatsnew/changelog.html): htest.py – улучшение фреймворка, полный набор тестов. Патчи от Saimadhav Heblikar
- [bpo-18104](https://python-all.ru/3/whatsnew/changelog.html): Добавлен idlelib/idle\_test/htest.py с несколькими примерами тестов, чтобы начать консолидацию и улучшение тестов Idle, проверяемых вручную. Другие файлы изменены по мере необходимости для работы с htest. Запуск модуля как \_\_main\_\_ выполняет все тесты.
- [bpo-21139](https://python-all.ru/3/whatsnew/changelog.html): Изменена ширина абзаца по умолчанию на 72 – [**рекомендацию PEP 8**](https://python-all.ru/3/whatsnew/changelog.html).
- [bpo-21284](https://python-all.ru/3/whatsnew/changelog.html): Тест переформатирования абзаца проходит после изменения пользователем ширины переформатирования.
- [bpo-17654](https://python-all.ru/3/whatsnew/changelog.html): Обеспечена правильная настройка меню IDLE на OS X для сборок без фреймворка и для всех вариантов Tk.
- [bpo-23180](https://python-all.ru/3/whatsnew/changelog.html): Пункт меню IDLE «Windows» переименован в «Window». Патч от Al Sweigart.

### Сборка

- [bpo-15506](https://python-all.ru/3/whatsnew/changelog.html): Использован стандартный макрос autoconf PKG\_PROG\_PKG\_CONFIG в скрипте configure.
- [bpo-22935](https://python-all.ru/3/whatsnew/changelog.html): Разрешена компиляция модуля ssl, если openssl не поддерживает SSL 3.
- [bpo-22592](https://python-all.ru/3/whatsnew/changelog.html): Прекращена поддержка компилятора Borland C для сборки Python. Модуль distutils по-прежнему поддерживает его для сборки расширений.
- [bpo-22591](https://python-all.ru/3/whatsnew/changelog.html): Прекращена поддержка MS-DOS, особенно компилятора DJGPP (порт GCC для MS-DOS).
- [bpo-16537](https://python-all.ru/3/whatsnew/changelog.html): Проверка, пуст ли self.extensions в setup.py. Патч от Jonathan Hosmer.
- [bpo-22359](https://python-all.ru/3/whatsnew/changelog.html): Удалены некорректные использования рекурсивного make. Патч от Jonas Wagner.
- [bpo-21958](https://python-all.ru/3/whatsnew/changelog.html): Определён HAVE\_ROUND при сборке с Visual Studio 2013 и выше. Патч от Zachary Turner.
- [bpo-18093](https://python-all.ru/3/whatsnew/changelog.html): программы, встраивающие среду выполнения CPython, теперь находятся в отдельном каталоге «Programs», а не в каталоге Modules.
- [bpo-15759](https://python-all.ru/3/whatsnew/changelog.html): «make suspicious», «make linkcheck» и «make doctest» в Doc/ теперь выводят специальное сообщение только тогда, когда есть ошибки.
- [bpo-21141](https://python-all.ru/3/whatsnew/changelog.html): Процесс сборки Windows больше не пытается найти Perl, вместо этого полагается на то, что исходники OpenSSL уже сконфигурированы и готовы к сборке. Скрипт `PCbuild\build_ssl.py` был переписан и переименован в `PCbuild\prepare_ssl.py`, и теперь занимается конфигурированием исходников OpenSSL как для 32-, так и для 64-битных платформ. Исходники OpenSSL, полученные с svn.python.org, всегда будут предварительно сконфигурированы и готовы к сборке.
- [bpo-21037](https://python-all.ru/3/whatsnew/changelog.html): Добавлена опция сборки для включения поддержки AddressSanitizer.
- [bpo-19962](https://python-all.ru/3/whatsnew/changelog.html): Процесс сборки Windows теперь создаёт «python.bat» в корне дерева исходников, который передаёт все аргументы самому последнему собранному интерпретатору.
- [bpo-21285](https://python-all.ru/3/whatsnew/changelog.html): Рефакторинг и исправление проверки configure для curses, чтобы всегда искать в каталоге ncursesw.
- [bpo-15234](https://python-all.ru/3/whatsnew/changelog.html): Для BerkeleyDB и Sqlite найденные каталоги библиотек и include добавляются только в том случае, если они ещё не ищутся. Это позволяет избежать явной зависимости от библиотек времени выполнения.
- [bpo-17861](https://python-all.ru/3/whatsnew/changelog.html): Tools/scripts/generate\_opcode\_h.py автоматически перегенерирует Include/opcode.h из Lib/opcode.py, если последний изменяется.
- [bpo-20644](https://python-all.ru/3/whatsnew/changelog.html): Поддержка сборки документации в установщике OS X для изменений сборки в 3.4.1: предполагается, что внешний sphinx-build доступен в /usr/bin.
- [bpo-20022](https://python-all.ru/3/whatsnew/changelog.html): Исключено использование устаревшего bundlebuilder в сборках OS X.
- [bpo-15968](https://python-all.ru/3/whatsnew/changelog.html): Сборки Tcl, Tk и Tix включены в решение сборки Windows.
- [bpo-17095](https://python-all.ru/3/whatsnew/changelog.html): Исправлена поддержка *shared* в Modules/Setup.
- [bpo-21811](https://python-all.ru/3/whatsnew/changelog.html): Ожидаемые исправления для поддержки версий OS X \> 10.9.
- [bpo-21166](https://python-all.ru/3/whatsnew/changelog.html): Предотвращены возможные ошибки сегментации и другие случайные сбои python –generate-posix-vars в целевой сборке pybuilddir.txt.
- [bpo-18096](https://python-all.ru/3/whatsnew/changelog.html): Исправлен порядок библиотек, возвращаемый python-config.
- [bpo-17219](https://python-all.ru/3/whatsnew/changelog.html): Добавлен каталог сборки библиотек для кросс-сборок расширений Python.
- [bpo-22919](https://python-all.ru/3/whatsnew/changelog.html): Сборка Windows обновлена для поддержки VC 14.0 (Visual Studio 2015), которая будет использоваться для официального выпуска.
- [bpo-21236](https://python-all.ru/3/whatsnew/changelog.html): Сборка \_msi.pyd с cabinet.lib вместо fci.lib
- [bpo-17128](https://python-all.ru/3/whatsnew/changelog.html): Использовать частную версию OpenSSL для установщика OS X 10.5+.

### C API

- [bpo-14203](https://python-all.ru/3/whatsnew/changelog.html): Удалена устаревшая поддержка view==NULL в PyBuffer\_FillInfo(), bytearray\_getbuffer(), bytesiobuf\_getbuffer() и array\_buffer\_getbuf(). Теперь все эти функции в таком случае вызывают BufferError.
- [bpo-22445](https://python-all.ru/3/whatsnew/changelog.html): PyBuffer\_IsContiguous() теперь выполняет точные проверки непрерывности, совместимые с флагом компиляции NPY\_RELAXED\_STRIDES\_CHECKING из NumPy.\\nРанее функция выдавала ложноотрицательные результаты для граничных случаев.
- [bpo-22079](https://python-all.ru/3/whatsnew/changelog.html): PyType\_Ready() теперь проверяет, что статически выделенный тип не имеет динамически выделенных базовых классов.
- [bpo-22453](https://python-all.ru/3/whatsnew/changelog.html): Удалён недокументированный макрос PyObject\_REPR().
- [bpo-18395](https://python-all.ru/3/whatsnew/changelog.html): Переименовать `_Py_char2wchar()` в [`Py_DecodeLocale()`](https://python-all.ru/3/c-api/sys.html#c.Py_DecodeLocale),\\nпереименовать `_Py_wchar2char()` в [`Py_EncodeLocale()`](https://python-all.ru/3/c-api/sys.html#c.Py_EncodeLocale) и задокументировать эти функции.
- [bpo-21233](https://python-all.ru/3/whatsnew/changelog.html): Добавлены новые функции C: PyMem\_RawCalloc(), PyMem\_Calloc(), PyObject\_Calloc(), \_PyObject\_GC\_Calloc(). bytes(int) теперь использует `calloc()` вместо `malloc()` для больших объектов, что быстрее и использует меньше памяти.
- [bpo-20942](https://python-all.ru/3/whatsnew/changelog.html): PyImport\_ImportFrozenModuleObject() больше не устанавливает \_\_file\_\_ в соответствии с тем, как это делает importlib; это затрагивает \_frozen\_importlib, а также любой модуль, загруженный с помощью imp.init\_frozen().

### Документация

- [bpo-19548](https://python-all.ru/3/whatsnew/changelog.html): Обновлена документация модуля codecs для более полного описания различий между текстовыми кодировками и другими кодеками, а также внесены дополнительные уточнения. Патч от Martin Panter.
- [bpo-22394](https://python-all.ru/3/whatsnew/changelog.html): Doc/Makefile теперь поддерживает `make venv PYTHON=../python` для создания виртуального окружения для генерации документации, например, `make html PYTHON=venv/bin/python3`.
- [bpo-21514](https://python-all.ru/3/whatsnew/changelog.html): Документация модуля json теперь ссылается на новый JSON RFC 7159 вместо устаревшего RFC 4627.
- [bpo-21777](https://python-all.ru/3/whatsnew/changelog.html): Методы двоичных последовательностей для bytes и bytearray теперь документированы явно, а не предполагается, что пользователи смогут вывести ожидаемое поведение из поведения соответствующих методов str.
- [bpo-6916](https://python-all.ru/3/whatsnew/changelog.html): Убрать документацию для устаревшего класса asynchat.fifo.
- [bpo-17386](https://python-all.ru/3/whatsnew/changelog.html): Расширена функциональность скрипта `Doc/make.bat`, чтобы сделать его гораздо более сопоставимым с `Doc/Makefile`.
- [bpo-21312](https://python-all.ru/3/whatsnew/changelog.html): Обновлён файл шаблона thread\_foobar.h для включения более новых API потоков. Патч от Jack McCracken.
- [bpo-21043](https://python-all.ru/3/whatsnew/changelog.html): Удалена рекомендация по конкретным центрам сертификации и добавлено упоминание возможности загрузки системных сертификатов.
- [bpo-20765](https://python-all.ru/3/whatsnew/changelog.html): Добавлена недостающая документация для PurePath.with\_name() и PurePath.with\_suffix().
- [bpo-19407](https://python-all.ru/3/whatsnew/changelog.html): Новые руководства по установке и распространению пакетов на основе инструментов Python Packaging Authority. Существующие руководства сохранены в виде устаревших ссылок из документации distutils, так как они всё ещё содержат некоторый необходимый справочный материал для разработчиков инструментов, который больше нигде не описан.
- [bpo-19697](https://python-all.ru/3/whatsnew/changelog.html): Документированы случаи, когда \_\_main\_\_.\_\_spec\_\_ равно None.

### Тесты

- [bpo-18982](https://python-all.ru/3/whatsnew/changelog.html): Добавлены тесты для CLI модуля calendar.
- [bpo-19548](https://python-all.ru/3/whatsnew/changelog.html): Добавлены дополнительные проверки в test\_codecs, чтобы гарантировать точность утверждений в обновлённой документации. Патч от Martin Panter.
- [bpo-22838](https://python-all.ru/3/whatsnew/changelog.html): Все тесты test\_re теперь работают с обнаружением тестов unittest.
- [bpo-22173](https://python-all.ru/3/whatsnew/changelog.html): Обновлены тесты lib2to3 для использования обнаружения тестов unittest.
- [bpo-16000](https://python-all.ru/3/whatsnew/changelog.html): Тест test\_curses переведён на использование unittest.
- [bpo-21456](https://python-all.ru/3/whatsnew/changelog.html): Пропускать два теста в test\_urllib2net.py, если модуль \_ssl не доступен. Патч от Remi Pointel.
- [bpo-20746](https://python-all.ru/3/whatsnew/changelog.html): Исправлен test\_pdb для запуска в режиме проверки утечек (-R). Патч от Xavier de Gaye.
- [bpo-22060](https://python-all.ru/3/whatsnew/changelog.html): test\_ctypes несколько очищен и упрощён; теперь он использует обнаружение тестов unittest для поиска своих тестов.
- [bpo-22104](https://python-all.ru/3/whatsnew/changelog.html): regrtest.py больше не хранит ссылку на набор тестов, загруженных из тестовых модулей, которые не определяют test\_main().
- [bpo-22111](https://python-all.ru/3/whatsnew/changelog.html): Различные чистки в test\_imaplib. Патч от Milan Oberkirch.
- [bpo-22002](https://python-all.ru/3/whatsnew/changelog.html): Добавлена функция `load_package_tests` в test.support и использована для реализации/расширения обнаружения тестов в test\_asyncio, test\_email, test\_importlib, test\_json и test\_tools.
- [bpo-21976](https://python-all.ru/3/whatsnew/changelog.html): Исправлена test\_ssl для принятия строк версий LibreSSL. Спасибо William Orr.
- [bpo-21918](https://python-all.ru/3/whatsnew/changelog.html): Преобразовано test\_tools из модуля в пакет, содержащий отдельные файлы тестов для каждого тестируемого скрипта.
- [bpo-9554](https://python-all.ru/3/whatsnew/changelog.html): Использованы современные возможности unittest в test\_argparse. Первоначальный патч от Denver Coneybeare и Radu Voicilas.
- [bpo-20155](https://python-all.ru/3/whatsnew/changelog.html): Изменены имена HTTP-методов в падающих тестах test\_httpservers, чтобы программное обеспечение фильтрации пакетов (в частности, Windows Base Filtering Engine) не мешало семантике транзакций, ожидаемой тестами.
- [bpo-19493](https://python-all.ru/3/whatsnew/changelog.html): Выполнен рефакторинг тестового пакета ctypes: теперь тесты пропускаются явно, а не молча.
- [bpo-18492](https://python-all.ru/3/whatsnew/changelog.html): Все ресурсы теперь разрешены, когда тесты запускаются не через regrtest.py.
- [bpo-21634](https://python-all.ru/3/whatsnew/changelog.html): Исправлен микро-бенчмарк pystone: используется целочисленное деление вместо обычного, чтобы тестировать целые числа, а не числа с плавающей запятой. Версия pystone установлена на 1.2. Патч написал Lennart Regebro.
- [bpo-21605](https://python-all.ru/3/whatsnew/changelog.html): Добавлены тесты для изображений Tkinter.
- [bpo-21493](https://python-all.ru/3/whatsnew/changelog.html): Добавлен тест для ntpath.expanduser(). Оригинальный патч от Claudiu Popa.
- [bpo-19925](https://python-all.ru/3/whatsnew/changelog.html): Добавлены тесты для модуля spwd. Оригинальный патч от Vajrasky Kok.
- [bpo-21522](https://python-all.ru/3/whatsnew/changelog.html): Добавлены тесты Tkinter для Listbox.itemconfigure(), PanedWindow.paneconfigure() и Menu.entryconfigure().
- [bpo-17756](https://python-all.ru/3/whatsnew/changelog.html): Исправлен тест test\_code при запуске из установленного расположения.
- [bpo-17752](https://python-all.ru/3/whatsnew/changelog.html): Исправлены тесты distutils при запуске из установленного расположения.
- [bpo-18604](https://python-all.ru/3/whatsnew/changelog.html): Объединены проверки доступности GUI. Теперь все платформы, по крайней мере, проверяют, можно ли создать экземпляр Tk, когда запрашивается ресурс GUI.
- [bpo-21275](https://python-all.ru/3/whatsnew/changelog.html): Исправлен тест сокета на KFreeBSD.
- [bpo-21223](https://python-all.ru/3/whatsnew/changelog.html): Проходит test\_site/test\_startup\_imports, когда некоторые расширения собраны как встроенные.
- [bpo-20635](https://python-all.ru/3/whatsnew/changelog.html): Добавлены тесты для менеджеров геометрии Tk.
- Добавлен тестовый пример для freeze.
- [bpo-20743](https://python-all.ru/3/whatsnew/changelog.html): Исправлена утечка ссылок в test\_tcl.
- [bpo-21097](https://python-all.ru/3/whatsnew/changelog.html): Перемещено test\_namespace\_pkgs в test\_importlib.
- [bpo-21503](https://python-all.ru/3/whatsnew/changelog.html): Используется test\_both() последовательно в test\_importlib.
- [bpo-20939](https://python-all.ru/3/whatsnew/changelog.html): Избегание различных сбоев сетевых тестов из-за нового перенаправления с [http://www.python.org/](https://python-all.ru/3/whatsnew/changelog.html) на [https://www.python.org](https://python-all.ru/3/whatsnew/changelog.html): используйте [http://www.example.com](https://python-all.ru/3/whatsnew/changelog.html).
- [bpo-20668](https://python-all.ru/3/whatsnew/changelog.html): Тесты asyncio больше не полагаются на файл tests.txt. (Патч от Vajrasky Kok)
- [bpo-21093](https://python-all.ru/3/whatsnew/changelog.html): Предотвращение сбоев ctypes test\_macholib на OS X, если копия libz существует в $HOME/lib или /usr/local/lib.
- [bpo-22770](https://python-all.ru/3/whatsnew/changelog.html): Предотвращение некоторых ошибок сегментации в Tk на OS X при запуске GUI-тестов.
- [bpo-23211](https://python-all.ru/3/whatsnew/changelog.html): Обходной путь для сбоя test\_logging на некоторых системах OS X 10.6.
- [bpo-23345](https://python-all.ru/3/whatsnew/changelog.html): Предотвращение сбоев test\_ssl с большими значениями уровня патча OpenSSL (например, 0.9.8zc).

### Tools/Demos

- [bpo-22314](https://python-all.ru/3/whatsnew/changelog.html): pydoc теперь работает, когда установлена переменная окружения LINES.
- [bpo-22615](https://python-all.ru/3/whatsnew/changelog.html): Argument Clinic теперь поддерживает аргумент “type” для конвертера int. Это позволяет использовать конвертер int с перечислениями и typedef-объявлениями.
- [bpo-20076](https://python-all.ru/3/whatsnew/changelog.html): Скрипт makelocalealias.py больше не игнорирует UTF-8 mapping.
- [bpo-20079](https://python-all.ru/3/whatsnew/changelog.html): Теперь скрипт makelocalealias.py может анализировать файл SUPPORTED из исходных кодов glibc и поддерживает параметры командной строки для путей к исходникам.
- [bpo-22201](https://python-all.ru/3/whatsnew/changelog.html): Интерфейс командной строки модуля zipfile теперь корректно извлекает ZIP-файлы с записями каталогов. Исправление от Ryan Wilson.
- [bpo-22120](https://python-all.ru/3/whatsnew/changelog.html): Для функций, использующих преобразователь возвращаемого значения в беззнаковое целое, Argument Clinic теперь генерирует приведение к этому типу для сравнения с -1 в сгенерированном коде. (Это подавляет предупреждение компилятора.)
- [bpo-18974](https://python-all.ru/3/whatsnew/changelog.html): Tools/scripts/diff.py теперь использует argparse вместо optparse.
- [bpo-21906](https://python-all.ru/3/whatsnew/changelog.html): Исправление работы Tools/scripts/md5sum.py в Python 3. Исправление от Zachary Ware.
- [bpo-21629](https://python-all.ru/3/whatsnew/changelog.html): Исправление функции «--converters» в Argument Clinic.
- Добавлена поддержка `yield from` в 2to3.
- Добавлена поддержка [**PEP 465**](https://python-all.ru/3/whatsnew/changelog.html) оператора матричного умножения в 2to3.
- [bpo-16047](https://python-all.ru/3/whatsnew/changelog.html): Исправление списка исключений модуля и обработки \_\_file\_\_ в freeze. Исправление от Meador Inge.
- [bpo-11824](https://python-all.ru/3/whatsnew/changelog.html): Учёт тегов ABI в freeze. Исправление от Meador Inge.
- [bpo-20535](https://python-all.ru/3/whatsnew/changelog.html): PYTHONWARNING больше не влияет на скрипт run\_tests.py. Исправление от Arfrever Frehtes Taifersar Arahesis.

### Windows

- [bpo-23260](https://python-all.ru/3/whatsnew/changelog.html): Обновление установщика Windows
- Встроенная версия Tcl/Tk обновлена до 8.6.3. Самый заметный результат этого изменения – добавление новых нативных диалогов выбора файлов при работе в Windows Vista или новее. Дополнительную информацию см. в TIP 432 от Tcl/Tk. Кроме того, эта версия Tcl/Tk включает поддержку Windows 10.
- [bpo-17896](https://python-all.ru/3/whatsnew/changelog.html): Сборочные скрипты Windows теперь ожидают внешние исходники библиотек в `PCbuild\..\externals` вместо `PCbuild\..\..`.
- [bpo-17717](https://python-all.ru/3/whatsnew/changelog.html): Сборочные скрипты Windows теперь используют копию NASM, полученную с svn.python.org, для сборки OpenSSL.
- [bpo-21907](https://python-all.ru/3/whatsnew/changelog.html): Улучшены пакетные скрипты для сборки Python.
- [bpo-22644](https://python-all.ru/3/whatsnew/changelog.html): Встроенная версия OpenSSL обновлена до 1.0.1j.
- [bpo-10747](https://python-all.ru/3/whatsnew/changelog.html): Использование версионированных меток в меню «Пуск» Windows. Исправление от Olive Kilburn.
- [bpo-22980](https://python-all.ru/3/whatsnew/changelog.html): .pyd-файлы с тегом версии и платформы (например, «.cp35-win32.pyd») теперь будут загружаться в предпочтение перед файлами без тегов.

**(Информацию о более старых версиях смотрите в файле HISTORY.)**
