Документация Python неофициальный перевод
Содержание страницы

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

Финальная версия Python 3.6.15Python 3.6.15 final

Дата выпуска: 2021-09-03

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

  • bpo-44394: Обновить поставляемую копию libexpat до версии 2.4.1 (с 2.2.8) для исправления уязвимости CVE-2013-0340 «Billion Laughs». Эта копия чаще всего используется в Windows и macOS.

  • bpo-43124: Внутренняя функция putcmd в smtplib теперь проверяет входные данные на наличие символов \r и \n для предотвращения (маловероятной) инъекции команд.

БиблиотекаLibrary

  • bpo-45001: Разбор даты в email сделан более устойчивым к некорректным входным данным, а именно к заголовку Date:, состоящему только из пробелов. Исправление от Wouter Bolsterlee.

ТестыTests

  • bpo-38965: Исправлен test_faulthandler на GCC 10. Использование ключевого слова “volatile” в faulthandler._stack_overflow() для предотвращения оптимизации хвостовых вызовов на любом компиляторе, вместо использования специфичных для компилятора прагм.

Финальная версия Python 3.6.14Python 3.6.14 final

Дата выпуска: 2021-06-28

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

  • bpo-44022: http.client теперь избегает бесконечного чтения потенциальных HTTP-заголовков после ответа сервера со статусом 100 Continue.

  • bpo-43882: Наличие символов новой строки или табуляции в частях URL может допускать некоторые формы атак.

    Следуя управляющей спецификации URL, определённой WHATWG, urllib.parse() теперь удаляет ASCII-символы новой строки и табуляции из URL, предотвращая такие атаки.

  • bpo-42988: CVE-2021-3426: Удалена возможность getfile модуля pydoc, которая могла быть использована для чтения произвольных файлов на диске (уязвимость обхода каталогов). Более того, даже исходный код модулей Python может содержать чувствительные данные, такие как пароли. Уязвимость сообщена David Schwörer.

  • bpo-43285: ftplib больше не доверяет значению IP-адреса, возвращаемому сервером в ответ на команду PASV по умолчанию. Это предотвращает использование ответа вредоносным FTP-сервером для проверки комбинаций IPv4-адресов и портов в сети клиента.

    Код, которому требуется прежнее уязвимое поведение, может установить атрибут trust_server_pasv_ipv4_address в своих экземплярах ftplib.FTP в True, чтобы снова включить его.

  • bpo-43075: Исправлена уязвимость типа «Отказ в обслуживании через регулярные выражения» (ReDoS) в urllib.request.AbstractBasicAuthHandler. Уязвимое регулярное выражение имеет квадратичную сложность в худшем случае и позволяет вызвать отказ в обслуживании при распознавании специально созданных недействительных RFC. Эта проблема ReDoS находится на стороне клиента и требует от удалённых злоумышленников контроля над HTTP-сервером.

Финальная версия Python 3.6.13Python 3.6.13 final

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

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

  • bpo-42967: Исправлена уязвимость отравления веб-кэша: теперь по умолчанию разделителем аргументов запроса установлен &, и пользователь может выбрать собственный разделитель.

  • bpo-42938: Отказ от статических буферов при вычислении repr значений ctypes.c_double и ctypes.c_longdouble.

  • bpo-42103: Предотвращена потенциальная DoS-атака через исчерпание CPU и RAM при обработке некорректных файлов Apple Property List в двоичном формате.

  • bpo-42051: Модуль plistlib больше не принимает объявления сущностей в XML plist-файлах для предотвращения XML-уязвимостей. Это не должно повлиять на пользователей, так как объявления сущностей не используются в обычных plist-файлах.

  • bpo-40791: Добавлен volatile в переменную-аккумулятор в hmac.compare_digest, что делает менее вероятными оптимизации, разрушающие константное время.

Ядро и встроенные модулиCore and Builtins

  • bpo-35560: Исправление ошибки утверждения в format() в отладочной сборке для форматирования чисел с плавающей запятой с форматом «n», заполнением нулями и малой шириной. Релизная сборка не затронута. Исправление от Karthikeyan Singaravelan.

БиблиотекаLibrary

  • bpo-42103: InvalidFileException и RecursionError теперь являются единственными ошибками, возникающими при загрузке повреждённого бинарного Plist-файла (ранее в некоторых случаях могли возникать ValueError и TypeError).

ТестыTests

  • bpo-42794: Обновление test_nntplib для использования официального имени группы news.aioe.org для тестирования. Исправление от Dong-hee Na.

  • bpo-41944: Тесты для CJK-кодеков больше не вызывают eval() для содержимого, полученного по HTTP.

Финальная версия Python 3.6.12Python 3.6.12 final

Дата выпуска: 2020-08-15

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

  • bpo-29778: Обеспечивает загрузку python3.dll из правильных местоположений при встраивании Python (CVE-2020-15523).

  • bpo-41004: CVE-2020-14422: Методы __hash__() в ipaddress.IPv4Interface и ipaddress.IPv6Interface некорректно генерировали постоянные хеш-значения 32 и 128 соответственно. Это всегда приводило к коллизиям хешей. Исправление использует hash() для генерации хеш-значений на основе кортежа (адрес, длина маски, сетевой адрес).

  • bpo-39603: Предотвращение инъекции HTTP-заголовков путём отклонения управляющих символов в http.client.putrequest(…).

БиблиотекаLibrary

  • bpo-41288: При распаковке (unpickling) недопустимого опкода NEWOBJ_EX с помощью реализации на C теперь возникает UnpicklingError, а не аварийное завершение.

  • bpo-39017: Предотвращает бесконечный цикл при чтении специально созданных TAR-файлов с помощью модуля tarfile (CVE-2019-20907).

Финальная версия Python 3.6.11Python 3.6.11 final

Дата выпуска: 2020-06-27

В версии 3.6.11 новых изменений не было.

Первая кандидатская версия Python 3.6.11Python 3.6.11 release candidate 1

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

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

  • bpo-39073: Запрет символов CR и LF в аргументах email.headerregistry.Address для защиты от атак внедрения заголовков.

  • bpo-38576: Запрещены управляющие символы в именах хостов в http.client, адресует CVE-2019-18348. Такие потенциально вредоносные URL-адреса с внедрением заголовков теперь вызывают исключение InvalidURL.

  • bpo-39503: CVE-2020-8492: Класс AbstractBasicAuthHandler модуля urllib.request использует неэффективное регулярное выражение, которое может быть использовано злоумышленником для отказа в обслуживании. Исправлено регулярное выражение для предотвращения катастрофического возврата. Уязвимость сообщена Ben Caller и Matt Schwager.

  • bpo-39401: Предотвращена небезопасная загрузка api-ms-win-core-path-l1-1-0.dll при запуске на Windows 7.

Ядро и встроенные модулиCore and Builtins

  • bpo-39510: Исправлен segfault в методе readinto() на закрытом BufferedReader.

  • bpo-39421: Исправление возможных сбоев при работе с функциями модуля heapq и пользовательскими операторами сравнения.

БиблиотекаLibrary

  • bpo-39503: AbstractBasicAuthHandler из urllib.request теперь разбирает все HTTP-заголовки WWW-Authenticate и принимает несколько вызовов (challenge) на заголовок: используется realm первого Basic-вызова.

Финальная версия Python 3.6.10Python 3.6.10 final

Дата выпуска: 2019-12-18

macOS

  • bpo-38295: Предотвращён сбой test_relative_path в test_py_compile на macOS Catalina.

Первая кандидатская версия Python 3.6.10Python 3.6.10 release candidate 1

Дата выпуска: 2019-12-11

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

  • bpo-38945: Символы новой строки теперь экранируются при uu-кодировании, чтобы предотвратить их попадание в раздел содержимого закодированного файла. Это предотвращает вредоносное или случайное изменение данных в процессе декодирования.

  • bpo-37228: Из-за серьёзных проблем безопасности параметр reuse_address функции asyncio.loop.create_datagram_endpoint() больше не поддерживается. Это связано с поведением SO_REUSEADDR в UDP. Подробнее см. документацию loop.create_datagram_endpoint(). (Авторы: Kyle Stanley, Antoine Pitrou и Yury Selivanov, bpo-37228.)

  • bpo-38804: Исправлена уязвимость ReDoS в http.cookiejar. Патч от Бена Коллера.

  • bpo-38243: Экранирование заголовка сервера в xmlrpc.server.DocXMLRPCServer при рендеринге страницы документа в HTML. (Предоставлено Dong-hee Na в bpo-38243.)

  • bpo-38174: Обновление встроенной версии библиотеки expat до 2.2.8, что устраняет CVE-2019-15903.

  • bpo-37461: Исправлен бесконечный цикл при разборе специально сформированных заголовков писем. Патч от Abhilash Raj.

  • bpo-34155: Исправлен разбор некорректных адресов электронной почты с более чем одним @ (например, a@b@c.com.) – теперь часть до второго @ не возвращается как корректный адрес. Патч от maxking и jpic.

БиблиотекаLibrary

  • bpo-38216: Редкому коду, который хочет отправлять недопустимые HTTP-запросы из библиотеки http.client, предоставлен способ делать это. Исправления для bpo-30458 привели к поломке некоторых проектов, которые полагались на эту возможность для тестирования собственного поведения при получении некорректных запросов.

  • bpo-36564: Исправлен бесконечный цикл в логике переноса заголовков email, который возникал, когда max_line_length политики email была недостаточной для включения необходимой разметки и значений в сообщении. Патч от Paul Ganssle.

Финальная версия Python 3.6.9Python 3.6.9 final

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

БиблиотекаLibrary

  • bpo-37437: Update vendorized expat version to 2.2.7.

macOS

  • bpo-34602: Устранены сбои тестового набора на macOS за счет прекращения вызова resource.setrlimit для увеличения лимита размера стека процесса во время выполнения. Изменение во время выполнения больше не требуется, так как интерпретатор теперь собирается с большим размером стека по умолчанию.

Первая кандидатская версия Python 3.6.9Python 3.6.9 release candidate 1

Дата выпуска: 2019-06-18

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

  • bpo-35907: CVE-2019-9948: предотвращение чтения файлов путём запрета схем URL local-file:// и local_file:// в URLopener().open() и URLopener().retrieve() из urllib.request.

  • bpo-36742: Исправлена некорректная обработка символов предварительной нормализации в urlsplit().

  • bpo-30458: Устранение CVE-2019-9740 путём запрета URL-путей, содержащих пробелы или управляющие символы, в базовом запросе http-клиента. Такие потенциально вредоносные URL для внедрения заголовков теперь вызывают исключение http.client.InvalidURL.

  • bpo-36216: Изменяет urlsplit() так, что при наличии в URL символов, которые при IDNA-кодировании (нормализация NFKC) разлагаются на символы, влияющие на разбор URL, возникает ValueError.

  • bpo-33529: Предотвращение бесконечного цикла в функции fold, используемой при кодировании заголовков электронных писем, когда в заголовке слишком много не-ASCII символов.

  • bpo-35746: [CVE-2019-5010] Исправление разыменования нулевого указателя в модуле ssl. Парсер сертификатов некорректно обрабатывал точки распространения CRL с пустым DP или URI. Вредоносный или ошибочный сертификат мог привести к ошибке сегментации. Уязвимость (TALOS-2018-0758) обнаружена Colin Read и Nicolas Edet из Cisco.

  • bpo-35121: Не отправлять куки домена A без атрибута Domain в домен B, когда домен A является суффиксом домена B, при использовании cookiejar с политикой http.cookiejar.DefaultCookiePolicy. Исправление от Karthikeyan Singaravelan.

БиблиотекаLibrary

  • bpo-35643: Исправлено SyntaxWarning: недопустимая управляющая последовательность в Modules/_sha3/cleanup.py. Патч от Mickaël Schoentgen.

  • bpo-35121: Куки не устанавливаются для запроса, когда путь запроса является префиксом атрибута пути куки, но не заканчивается символом «/». Патч от Karthikeyan Singaravelan.

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

  • bpo-35605: Исправлена сборка документации для sphinx<1.6. Исправление от Энтони Cоттила (Anthony Sottile).

  • bpo-35564: Явно установлена переменная master_doc в conf.py для совместимости с Sphinx 2.0

ТестыTests

  • bpo-36816: Обновить Lib/test/selfsigned_pythontestdotnet.pem в соответствии с новым TLS-сертификатом self-signed.pythontest.net.

  • bpo-35925: Пропущены определённые сетевые тесты nntplib и ssl, которые в противном случае завершались бы ошибкой из-за политики OpenSSL по умолчанию в современных ОС или дистрибутивах, которая отклоняет подключения к серверам со слабыми сертификатами или отключает TLS ниже версии 1.2.

  • bpo-27313: Устранена ошибка test_ttk_guionly ComboboxTest при использовании macOS Cocoa Tk.

  • bpo-32947: Исправления test_ssl для TLS 1.3 и OpenSSL 1.1.1.

macOS

  • bpo-34602: Устранены сбои при установке ограничения стека macOS с помощью resource.setrlimit. Отменяется более раннее исправление для bpo-18075, которое принудительно задавало нестандартный размер стека при сборке исполняемого файла интерпретатора на macOS.

Финальная версия Python 3.6.8Python 3.6.8 final

Дата выпуска: 2018-12-23

БиблиотекаLibrary

  • bpo-31715: Расширение файла .mjs связано с MIME-типом application/javascript.

СборкаBuild

  • bpo-35499: make profile-opt больше не заменяет CFLAGS_NODIST на CFLAGS. Теперь он добавляет флаги профильной оптимизации (PGO) в CFLAGS_NODIST: существующие флаги CFLAGS_NODIST сохраняются.

  • bpo-35257: Предотвращение утечки флагов компоновщика из LTO в distutils при компиляции расширений C.

C API

  • bpo-35259: Условно объявлять Py_FinalizeEx() (новое в 3.6) на основе Py_LIMITED_API. Патч от Артура Нойфельда.

Первая кандидатская версия Python 3.6.8Python 3.6.8 release candidate 1

Дата выпуска: 2018-12-11

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

  • bpo-34812: Параметр командной строки -I (запуск Python в изолированном режиме) теперь также копируется модулями multiprocessing и distutils при порождении дочерних процессов. Ранее копировались только параметры -E и -s (включаемые -I).

  • bpo-34791: xml.sax и xml.dom.domreg больше не используют переменные окружения для переопределения реализаций парсеров, когда sys.flags.ignore_environment установлен аргументами -E или -I.

Ядро и встроенные модулиCore and Builtins

  • bpo-35444: Исправлена обработка ошибок в методах pickling при неудачном поиске встроенной функции “getattr”.

  • bpo-35436: Исправлены различные проблемы с обработкой ошибок выделения памяти. Патч от Zackery Spytz.

  • bpo-35357: Имена внутренних атрибутов unittest.mock._Call и unittest.mock.MagicProxy (name, parent и from_kall) теперь имеют префикс _mock_, чтобы избежать конфликтов с часто используемыми атрибутами объектов. Исправлена опечатка в имени тестовой функции.

  • bpo-35372: Исправлен декодер кодовой страницы для входных данных длиной более 2 ГиБ, содержащих нераскодируемые байты.

  • bpo-33954: Для методов str.format(), float.__format__() и complex.__format__() исправлена обработка десятичного разделителя, не являющегося ASCII, при использовании форматировщика «n».

  • bpo-35214: Исправлен выход за границы памяти при разборе усечённой escape-последовательности Unicode в конце строки, например '\N'. Происходило чтение на один байт за пределами выделенной памяти.

  • bpo-35214: В интерпретатор и модули расширения добавлены аннотации для корректной работы под Memory Sanitizer от clang. Добавлен новый флаг configure –with-memory-sanitizer, упрощающий сборку тестовых версий такого типа.

  • bpo-35193: Исправлена ошибка на единицу в оптимизаторе peephole для байткода, из-за которой он мог читать байты за границами массива при удалении недостижимого кода. Эта ошибка присутствовала во всех выпусках Python 3.6 вплоть до текущего.

  • bpo-29341: В докстрингах методов os уточнено, что объекты, подобные пути, также принимаются в качестве входных параметров.

  • bpo-35050: socket: Исправлена ошибка на единицу при проверке длины для AF_ALG имени и типа.

  • bpo-34974: Конструкторы bytes и bytearray больше не преобразуют неожиданные исключения (например, MemoryError и KeyboardInterrupt) в TypeError.

  • bpo-34973: Исправлен сбой в bytes(), когда аргумент list изменяется во время итерации.

  • bpo-34824: Исправлено возможное разыменование нулевого указателя в Modules/_ssl.c. Патч от Zackery Spytz.

  • bpo-1621: Больше не предполагается, что переполнение знаковых целых чисел ведёт себя определённым образом (неопределённое поведение C) при изменении размера хеш-таблицы множества.

БиблиотекаLibrary

  • bpo-35052: Исправлен xml.dom.minidom cloneNode() для документа с сущностью: передавать корректные аргументы обработчику пользовательских данных сущности.

  • bpo-35330: Когда экземпляр Mock используется для обёртки объекта, если side_effect применяется в одном из моков его методов, не вызывать исходную реализацию и возвращать результат использования побочного эффекта так же, как это делается с return_value.

  • bpo-34172: Отменено исправление этой проблемы, ранее выпущенное в 3.6.7, до дальнейшего изучения: проблема ссылки внутри multiprocessing.Pool, из-за которой пул оставался живым, если его удаляли без явного закрытия или завершения.

  • bpo-10496: posixpath.expanduser() теперь возвращает входной путь без изменений, если переменная окружения HOME не установлена и у текущего пользователя нет домашнего каталога (если идентификатор текущего пользователя отсутствует в базе данных паролей). Это изменение исправляет модуль site, если текущий пользователь отсутствует в базе данных паролей (если у пользователя нет домашнего каталога).

  • bpo-35310: Исправлена ошибка в select.select(), когда в некоторых случаях последовательности файловых дескрипторов возвращались без изменений после прерывания сигналом, даже если файловые дескрипторы могли быть ещё не готовы. select.select() теперь всегда возвращает пустые списки, если произошёл тайм-аут. Исправление от Oran Avraham.

  • bpo-35380: Включение TCP_NODELAY в Windows для цикла событий asyncio proactor.

  • bpo-35371: Исправлена возможная аварийная остановка в os.utime() в Windows при передаче некорректных аргументов.

  • bpo-27903: Исправление ResourceWarning в platform.dist() на SuSE и Caldera OpenLinux. Патч от Ville Skyttä.

  • bpo-28604: locale.localeconv() теперь временно устанавливает локаль LC_CTYPE в локаль LC_MONETARY, если две локали различаются и денежные строки не-ASCII. Это временное изменение влияет на другие потоки.

  • bpo-35277: Обновлён ensurepip для установки pip 18.1 и setuptools 40.6.2.

  • bpo-35226: Рекурсивно проверять аргументы при проверке равенства объектов unittest.mock.call и добавить примечание, что отслеживание параметров, используемых для создания предков моков в mock_calls, невозможно.

  • bpo-35189: Изменены следующие функции fnctl для повторной попытки при прерывании сигналом (EINTR): flock, lockf, fnctl

  • bpo-35062: Исправлено некорректное разбор аргумента translate у _io.IncrementalNewlineDecoder.

  • bpo-35079: Улучшена документация difflib.SequenceManager.get_matching_blocks: добавлено слово «non-overlapping» и изменён «!=» на «<».

  • bpo-35017: socketserver.BaseServer.serve_forever() теперь завершается немедленно, если его метод shutdown() вызывается во время опроса новых событий.

  • bpo-31047: Исправлена регрессия в ntpath.abspath, когда он не удалял конечный разделитель в Windows. Патч от Tim Graham.

  • bpo-34794: Исправлена утечка в Tkinter при передаче Python-оболочки вокруг Tcl_Obj обратно в Tcl/Tk.

  • bpo-35008: Исправлена утечка ссылок при вызове метода __setstate__() объекта xml.etree.ElementTree.Element в C-реализации для уже инициализированного элемента.

  • bpo-23420: Проверка значения параметра «-s» интерфейса командной строки cProfile. Патч от Robert Kuska.

  • bpo-16965: Фиксер 2to3 execfile теперь открывает файл в режиме 'rb'. Патч от Закери Спайтца.

  • bpo-34966: pydoc теперь поддерживает псевдонимы не только для методов, определённых в конечном классе, но и для унаследованных методов. Строка документации не дублируется для псевдонимов.

  • bpo-34941: Методы find(), findtext() и findall() класса Element в модуле xml.etree.ElementTree теперь могут находить дочерние элементы, которые являются экземплярами подклассов Element.

  • bpo-34936: Исправлен TclError в tkinter.Spinbox.selection_element(). Патч от Juliette Monsel.

  • bpo-34900: Исправлена unittest.TestCase.debug() при использовании для вызова тестовых методов с подтестами. Исправление от Bruno Oliveira.

  • bpo-34866: Добавление max_num_fields в cgi.FieldStorage для усложнения DOS-атак путём ограничения количества объектов MiniFieldStorage, создаваемых FieldStorage.

  • bpo-34738: ZIP-файлы, создаваемые distutils, теперь будут содержать записи для каталогов.

  • bpo-31177: Исправлена ошибка, препятствовавшая использованию reset_mock на экземплярах mock с удалёнными атрибутами

  • bpo-34604: Исправлена возможная кракозябра в сообщении об ошибке pwd.getpwnam и grp.getgrnam при использовании строкового представления из-за невидимых символов или завершающих пробелов. Патч от William Grzybowski.

  • bpo-34574: Итераторы упорядоченного словаря больше не исчерпываются при сериализации pickle. Патч от Sergey Fedoseev.

  • bpo-34052: Методы sqlite3.Connection.create_aggregate(), sqlite3.Connection.create_function(), sqlite3.Connection.set_authorizer(), sqlite3.Connection.set_progress_handler() вызывают TypeError, когда в качестве вызываемого объекта передаются нехешируемые объекты. Теперь эти методы не передают такие объекты в SQLite API. Предыдущее поведение могло приводить к ошибкам сегментации. Патч от Sergey Fedoseev.

  • bpo-29877: compileall: импортировать ProcessPoolExecutor только при необходимости, предотвращая зависания на платформах с низкими ресурсами.

  • bpo-22005: Реализована распаковка (unpickling) экземпляров datetime, date и time, упакованных (pickled) Python 2. Для успешного декодирования следует использовать encoding='latin1'.

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

  • bpo-35089: Удалены упоминания typing.io и typing.re. Их типы следует импортировать напрямую из typing.

  • bpo-35038: Исправлена документация о несуществующем атрибуте f_restricted в объекте frame. Исправление от Stéphane Wirtel

  • bpo-35035: Переименована документация с email.utils на email.utils.rst.

  • bpo-34967: Использовать app.add_object_type() вместо устаревшей функции Sphinx app.description_unit()

  • bpo-33594: getargspec, from_function и from_builtin объявлены устаревшими в их соответствующих строковых документах и указана версия, с которой они считаются устаревшими, в сообщении DeprecationWarning.

  • bpo-32613: файл faq/windows.html обновлён: вместо python теперь используется команда py (PEP 397).

ТестыTests

  • bpo-33725: test_multiprocessing_fork может аварийно завершаться на новых версиях macOS. Пока проблема не решена, тест на macOS пропускается.

  • bpo-35352: Изменить test_asyncio, чтобы он использовал набор сертификатов из тестового каталога.

  • bpo-35317: Исправить ошибку переполнения mktime() в test_email: запускать test_localtime_daylight_true_dst_true() и test_localtime_daylight_false_dst_true() с определённым часовым поясом.

  • bpo-21263: После нескольких сообщений о том, что test_gdb работает некорректно на macOS, и поскольку gdb больше не поставляется по умолчанию, test_gdb теперь пропускается на macOS, если для компиляции Python использовался LLVM Clang. Патч от Lysandros Nikolaou.

  • bpo-34279: regrtest выдаёт предупреждение, если в конкретном тестовом файле не было выполнено ни одного теста. Также выводится новое итоговое состояние результата, если ни один тест не был выполнен во всех тестовых файлах. Патч от Pablo Galindo.

СборкаBuild

  • bpo-35351: При сборке Python с clang и LTO флаги LTO больше не передаются в CFLAGS для сборки сторонних расширений C через distutils.

  • bpo-35139: Исправлена ошибка компиляции при статической линковке pyexpat в Modules/Setup.

  • bpo-35011: Восстановлено использование pyexpatns.h для изоляции встроенной копии библиотеки expat, чтобы её символы не конфликтовали при линковке или динамической загрузке с внедряющим приложением или другими модулями расширения, имеющими собственную версию libexpat.

  • bpo-28015: Обеспечение корректной работы –with-lto с clang.

  • bpo-33015: Исправлено неопределённое поведение в реализации pthread для PyThread_start_new_thread(): добавлена функция-обёртка, которая всегда возвращает NULL.

  • bpo-31625: Прекращено использование ranlib для статических библиотек. Вместо этого предполагается, что ar поддерживает флаг 's'.

  • bpo-31354: Разрешено использование –with-lto во всех сборках, а не только в make profile-opt.

Windows

  • bpo-35401: Обновлена сборка Windows до OpenSSL 1.0.2q

  • bpo-32890: Исправлено использование GetLastError() вместо errno в os.execve() и os.truncate().

macOS

  • bpo-15663: Установщик для macOS 10.6+ теперь предоставляет собственную копию Tcl/Tk 8.6, как это делает установщик для 10.9+.

  • bpo-35402: Обновлён установщик macOS для использования Tcl/Tk 8.6.9.1. [ПРИМЕЧАНИЕ: Это изменение было отменено для выпущенных установщиков python.org для macOS 3.6.8 из-за регрессий, обнаруженных в Tk 8.6.9.1. Пока установщики предоставляют Tcl/Tk 8.6.8.]

  • bpo-35401: Обновлён установщик macOS для использования OpenSSL 1.0.2q.

  • bpo-35025: Корректно защищено использование макросов CLOCK_GETTIME и др. в timemodule на macOS.

  • bpo-24658: На macOS исправлено чтение из файла и запись в файл размером более 2 GiB.

IDLE

  • bpo-35213: Где уместно, используется «macOS» в idlelib.

  • bpo-34864: На macOS выводится предупреждение, если системная настройка «Prefer tabs when opening documents» установлена в «Always».

  • bpo-34864: Документированы две проблемы IDLE на macOS. Настройка System Preferences Dock «prefer tabs always» отключает некоторые функции IDLE. Меню немного отличаются от описанных для Windows и Linux.

  • bpo-35202: Удалены неиспользуемые импорты из lib/idlelib.

  • bpo-33000: Документировано, что оболочка IDLE не имеет ограничения на количество строк. Бесконечно выполняющаяся программа может переполнить память.

  • bpo-23220: Объяснено, как оболочка IDLE отображает вывод.

  • bpo-35099: Улучшена документация о выполнении пользовательского кода в IDLE. Раздел переименован с «IDLE – console differences» на «Running user code». В основном он охватывает последствия использования пользовательских объектов sys.stdxxx.

  • bpo-35097: Добавлен подраздел документации IDLE, описывающий окна редактора. Темы включают открытие, строку заголовка и состояния, расширение .py* и запуск.

  • bpo-35093: Документирован просмотрщик документов IDLE. Добавлен абзац в подразделе «Справка и настройки», «Источники справки».

  • bpo-35088: Обновлена строка документации idlelib.help.copy_string. Теперь используется git и бэкпортирование вместо hg и слияния вперёд.

  • bpo-35087: Обновлены файлы справки idlelib для текущей сборки документации. Основное изменение – удаление номеров глав и разделов.

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

  • bpo-34989: python-gdb.py теперь обрабатывает ошибки при вычислении номера строки фрейма Python.

Финальная версия Python 3.6.7Python 3.6.7 final

Дата выпуска: 2018-10-20

В версии 3.6.7 новых изменений не было.

Вторая кандидатская версия Python 3.6.7Python 3.6.7 release candidate 2

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

Ядро и встроенные модулиCore and Builtins

  • bpo-34879: Исправлено возможное разыменование нулевого указателя в bytesobject.c. Патч от Zackery Spytz.

  • bpo-34320: Исправлена ошибка: dict(od) не копировал порядок итерации OrderedDict.

БиблиотекаLibrary

  • bpo-34769: Исправление для асинхронных генераторов, не выполняющих финализацию, когда цикл событий находится в режиме отладки, а сборщик мусора работает в другом потоке.

  • bpo-34922: Исправлено целочисленное переполнение в методах digest() и hexdigest() для алгоритма SHAKE в модуле hashlib.

  • bpo-34871: Исправлено загрязнение модуля inspect sys.modules при разборе __text_signature__ вызываемого объекта.

  • bpo-34872: Исправлена самоотмена в C-реализации asyncio.Task

  • bpo-34819: Используются монотонные часы для вычисления тайм-аутов в Executor.map() и as_completed(), чтобы предотвратить отклонение тайм-аутов при корректировке системных часов.

  • bpo-34521: Для вычисления размера вспомогательных данных используется socket.CMSG_SPACE() вместо socket.CMSG_LEN() в multiprocessing.reduction.recvfds(), так как RFC 3542 требует использования первого для переносимых приложений.

  • bpo-34282: Исправлена ситуация, когда элементы перечисления затенялись атрибутами родителя.

  • bpo-34172: Исправлена проблема с ссылками внутри multiprocessing.Pool, которая приводила к тому, что пул оставался активным, если он был удалён без явного закрытия или завершения.

  • bpo-33729: Исправлены проблемы с разбором аргументов в hashlib.

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

  • bpo-32174: CHM-документ корректно отображает не-ASCII символы на некоторых MBCS системах Windows.

ТестыTests

  • bpo-32962: Исправлен test_gdb при компиляции Python с флагами -mcet -fcf-protection -O0.

macOS

  • bpo-34370: Возврат к использованию выпущенной версии Tk 8.6.8 в установщиках macOS вместо снимка разработки Tk 8.6.x, использовавшегося с 3.7.1rc1 и 3.6.7rc1. Этот снимок ввёл как минимум одну значительную регрессию (bpo-34927).

C API

  • bpo-34910: Обеспечить, чтобы PyObject_Print() всегда возвращал -1 при ошибке. Патч от Закери Спайтца.

Первая кандидатская версия Python 3.6.7Python 3.6.7 release candidate 1

Дата выпуска: 2018-09-26

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

  • bpo-17239: Парсеры xml.sax и xml.dom.minidom больше не обрабатывают внешние сущности по умолчанию. Внешние объявления DTD и ENTITY больше не загружают файлы и не создают сетевые соединения.

  • bpo-34623: CVE-2018-14647: Ускоренный на C модуль _elementtree теперь инициализирует соль рандомизации хеша из _Py_HashSecret вместо стандартного CSPRNG библиотеки libexpat.

  • bpo-34405: Обновлено до OpenSSL 1.0.2p для сборок Windows.

  • bpo-33871: Исправлена отправка части файла в os.sendfile() на macOS. Использование аргумента trailers могло приводить к отправке большего количества байт из входного файла, чем было указано.

  • bpo-32533: Исправлена потокобезопасность обработки ошибок в _ssl.

Ядро и встроенные модулиCore and Builtins

  • bpo-34735: Исправлена утечка памяти в Modules/timemodule.c. Патч от Zackery Spytz.

  • bpo-34588: Исправлена ошибка со смещением на один символ при обрезке рекурсивных вызовов в форматировании трассировки.

  • bpo-34527: На FreeBSD функции Py_DecodeLocale() и Py_EncodeLocale() теперь также принудительно используют кодировку ASCII, если локаль LC_CTYPE – «POSIX», а не только если локаль LC_CTYPE – «C».

  • bpo-34400: Исправлено неопределённое поведение в parsetok.c. Патч от Zackery Spytz.

  • bpo-34377: Обновлён список подавления valgrind: теперь используется _PyObject_Free/_PyObject_Realloc вместо PyObject_Free/PyObject_Realloc.

  • bpo-24618: Исправлено чтение недопустимой памяти при создании объекта кода с слишком коротким кортежем varnames или слишком большим количеством аргументов.

  • bpo-34068: В io.IOBase.close(), обеспечить, чтобы атрибут closed не устанавливался с живым исключением. Патч от Zackery Spytz и Serhiy Storchaka.

  • bpo-34080: Исправлена утечка памяти в компиляторе при возникновении некоторых необычных ошибок во время токенизации.

  • bpo-34066: Отключено прерывание по Ctrl-C между вызовом open() и входом в блок with в with open().

  • bpo-33956: Обновлена включённая копия библиотеки Expat до версии 2.2.5.

  • bpo-24596: Уменьшить счётчик ссылок объекта модуля в PyRun_SimpleFileExFlags() перед вызовом PyErr_Print(). Патч от Zackery Spytz.

  • bpo-33451: Закрывать непосредственно выполняемые pyc-файлы перед вызовом PyEval_EvalCode().

  • bpo-33312: Исправлены предупреждения clang ubsan (санитайзер неопределённого поведения) в dictobject.c за счёт корректировки объявления внутренней структуры _dictkeysobject с разделяемыми ключами.

  • bpo-25750: Исправлен редкий сбой Python из-за неправильного подсчёта ссылок в type_getattro(), если дескриптор удаляет себя из класса. Патч от Jeroen Demeyer.

  • bpo-25862: Исправить ошибки утверждений в методе tell() класса io.TextIOWrapper. Исправление от Zackery Spytz.

БиблиотекаLibrary

  • bpo-34670: Добавлены SSLContext.post_handshake_auth и SSLSocket.verify_client_post_handshake для функции аутентификации после рукопожатия TLS 1.3.

  • bpo-34652: Гарантируется, что os.lchmod() никогда не определяется в Linux.

  • bpo-34625: Обновлена версия вендоризированной библиотеки expat до 2.2.6.

  • bpo-32270: Модуль подпроцесса больше не закрывает ошибочно перенаправленные файловые дескрипторы, даже если они были в pass_fds, когда находились вне набора по умолчанию {0, 1, 2}.

  • bpo-34610: Исправлен итератор multiprocessing.managers.DictProxy.

  • bpo-34421: Исправлено логирование distutils для не-ASCII строк. Это вызывало проблемы установки в Windows.

  • bpo-34604: Исправление возможного mojibake в сообщении об ошибке pwd.getpwnam и grp.getgrnam. Патч от William Grzybowski.

  • bpo-34530: distutils.spawn.find_executable() теперь использует os.defpath как запасной вариант, если переменная окружения PATH не установлена.

  • bpo-34563: В Windows исправлен multiprocessing.Connection для очень больших чтений: исправлены _winapi.PeekNamedPipe() и _winapi.ReadFile() для чтения размером больше INT_MAX (обычно 2^31-1).

  • bpo-13312: Предотвращено возможное целочисленное переполнение в меньшую сторону (неопределённое поведение) в коде обработки года модуля time при передаче очень малого отрицательного значения года.

  • bpo-34472: Улучшена совместимость для потоковых файлов в zipfile. Ранее не записывалась необязательная сигнатура и не поддерживались некоторые ZIP-приложения. Патч от Silas Sewell.

  • bpo-6700: Исправлен inspect.getsourcelines для фреймов и трассировок уровня модуля. Патч от Vladimir Matveev.

  • bpo-32947: Добавлены OP_ENABLE_MIDDLEBOX_COMPAT и тестовый обходной путь для TLSv1.3 для будущей совместимости с OpenSSL 1.1.1.

  • bpo-34341: Добавление в ZIP-архив с расширением ZIP64 больше не увеличивает размер дополнительных полей существующих записей.

  • bpo-18540: Классы imaplib.IMAP4 и imaplib.IMAP4_SSL теперь правильно определяют IP-адрес локального хоста, когда используется значение по умолчанию параметра host ('').

  • bpo-34246: smtplib.SMTP.send_message() больше не изменяет содержимое аргумента mail_options. Патч от Pablo S. Blum de Aguiar.

  • bpo-31047: Исправлен ntpath.abspath для недопустимых путей в Windows. Патч от Franz Woellert.

  • bpo-34263: Цикл событий asyncio больше не будет передавать таймауты длиннее одного дня в epoll/select и т.д.

  • bpo-32215: Исправлена регрессия производительности в sqlite3, когда оператор DML находился в другой строке, чем остальная часть SQL-запроса.

  • bpo-19891: Игнорируются ошибки, вызванные отсутствующей или недоступной для записи домашней директорией при записи истории во время выхода из интерактивного сеанса. Патч от Anthony Sottile.

  • bpo-940286: Метод Helper.showtopic() модуля pydoc теперь корректно выводит перекрёстные ссылки темы.

  • bpo-34164: base64.b32decode() мог вызывать UnboundLocalError или OverflowError при неправильном дополнении. Теперь в этих случаях он всегда вызывает base64.Error.

  • bpo-33967: functools.singledispatch теперь возбуждает TypeError вместо IndexError, если не передано позиционных аргументов.

  • bpo-34054: Модуль multiprocessing теперь использует монотонные часы time.monotonic() вместо системных часов time.time() для реализации тайм-аута.

  • bpo-34010: Исправлено падение производительности при чтении потоков с помощью tarfile. Буферизованное чтение теперь должно использовать список, а не добавлять данные в объект bytes.

  • bpo-34019: webbrowser: исправлены аргументы, передаваемые браузеру Opera при открытии нового URL с помощью модуля webbrowser. Исправление от Bumsik Kim.

  • bpo-33978: Перед переконфигурацией через fileConfig и dictConfig закрываются существующие обработчики логов. Исправление от Karthikeyan Singaravelan.

  • bpo-14117: Внесены небольшие изменения в turtledemo. Пример ‘wikipedia’ теперь называется ‘rosette’, описывая то, что он рисует. Вывод ‘penrose’ сокращён. Вывод ‘1024’ из ‘tree’ удалён.

  • bpo-33974: Fixed passing lists and tuples of strings containing special characters ", \, {, } and \n as options to ttk widgets.

  • bpo-27500: Исправлен getaddrinfo для корректного разрешения IPv6-адресов.

  • bpo-24567: Улучшена random.choices() для обработки субнормальных весов на входе, которые иногда могли вызывать IndexError.

  • bpo-33871: Исправлено целочисленное переполнение в os.readv() и os.writev(), а также в os.sendfile() с аргументами headers или trailers (на BSD-системах и macOS).

  • bpo-33899: Модуль tokenize теперь неявно генерирует NEWLINE, если входные данные не содержат завершающего перевода строки. Такое поведение теперь соответствует тому, что делает C-токенизатор внутри. Вклад – Ammar Askar.

  • bpo-33916: bz2 и lzma: при повторном вызове Decompressor.__init__() освобождается старая блокировка, чтобы избежать утечки памяти.

  • bpo-32568: Привести select.epoll() и его документацию к единообразию в отношении sizehint и flags.

  • bpo-33663: Преобразование длины содержимого в строку перед помещением в заголовок.

  • bpo-26544: Исправлена реализация platform.libc_ver(). Она почти всегда возвращала версию '2.9' для glibc.

  • bpo-27397: Модуль email теперь корректно обрабатывает строки base64 некорректной длины.

  • bpo-33476: Исправлен _header_value_parser.py, когда в группе адресов отсутствует завершающая точка с запятой. Вклад Enrique Perez-Terron.

  • bpo-33570: Изменены настройки наборов шифров TLS 1.3 для совместимости с OpenSSL 1.1.1-pre6 и новее. В OpenSSL 1.1.1 шифры TLS 1.3 будут включены по умолчанию.

  • bpo-33365: Выводить значения заголовков вместе с ключами, а не только ключи, если debuglevel установлен в >0 в http.client. Патч от Marco Strigl.

  • bpo-33336: imaplib теперь допускает команду MOVE в IMAP4.uid() (RFC 6851: IMAP MOVE Extension) и, возможно, как имя поддерживаемого метода объекта IMAP4.

  • bpo-32356: asyncio.transport.resume_reading() и pause_reading() теперь являются идемпотентными.

  • bpo-31608: Возникает исключение TypeError вместо аварийного завершения, если подкласс collections.deque возвращает не-deque из __new__. Патч от Oren Milman.

  • bpo-29456: Исправлены ошибки в нормализации хангыля: u1176, u11a7 и u11c3

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

  • bpo-28617: Исправлена информация в документации stdtypes о типах, поддерживающих проверку принадлежности.

  • bpo-34065: Исправлена некорректно написанная разметка в документации basicConfig

  • bpo-33847: Добавлен элемент «@» (оператор @) в индекс.

  • bpo-25041: документация для AF_PACKET в модуле socket.

ТестыTests

  • bpo-34587: test_socket: удалён RDSTest.testCongestion(). Тест пытался заполнить буфер сокета получателя и ожидал ошибки. Но протокол RDS этого не требует. Более того, реализация RDS в Linux ожидает, что производитель сообщений снижает свою скорость, и не входит в обязанности получателя вызывать ошибку. Тест заведомо падает на Fedora 28, поэтому он просто удалён.

  • bpo-34661: Исправить test_shutil, если unzip не поддерживает -t.

  • bpo-34200: Устранена недетерминированная нестабильность test_pkg за счёт отказа от использования опасной логики test.support.module_cleanup() для сохранения и восстановления содержимого sys.modules между тестовыми случаями.

  • bpo-34594: Исправить использование жёстко заданных значений errno в тестах.

  • bpo-34542: Использовать RSA-ключи 3072 бит и подпись SHA-256 для тестовых сертификатов и ключей.

  • bpo-34391: Исправить тест ftplib для TLS 1.3 с помощью чтения из сокета данных.

  • bpo-34399: Обновить все RSA-ключи и параметры DH до использования не менее 2048 бит.

  • bpo-33746: Исправлен test_unittest при запуске в подробном режиме.

  • bpo-33901: Исправлен test_dbm_gnu на macOS с gdbm 1.15: добавлено большее значение, чтобы гарантировать изменение размера файла.

  • bpo-33873: Исправлена ошибка в regrtest, из-за которой запускался лишний тест при использовании –huntrleaks/-R. Завершение с ошибкой в случае указания недопустимых параметров для –huntrleaks/-R (необходимо указать хотя бы один прогревочный прогон и одно повторение).

  • bpo-32663: Обеспечено выполнение класса тестов SMTPUTF8SimTests в test_smtplib.py.

СборкаBuild

  • bpo-34710: Исправлена сборка модуля SSL с OpenSSL и педантичными CFLAGS.

  • bpo-34582: Добавлен вывод в формате JUnit XML для регрессионных тестов и обновлены сборки Azure DevOps.

  • bpo-34121: Исправлено определение поддержки атомарных операций C11 в clang.

  • bpo-30345: Добавлен флаг -g в LDFLAGS при компиляции с LTO для получения отладочных символов.

Windows

  • bpo-34770: Исправлено возможное разыменование нулевого указателя в pyshellext.cpp.

  • bpo-34603: Исправлено возвращение структур из функций, созданных MSVC

  • bpo-34225: Обеспечено, что каталоги INCLUDE и LIB не заканчиваются обратной косой чертой.

  • bpo-34006: Отменено ограничение длины строк для справочных документов Windows. Ограничение длины строк не требуется, так как страницы отображаются в отдельном приложении, а не на вкладке браузера. Кроме того, оно может плохо взаимодействовать с настройками DPI.

  • bpo-31546: Восстановлен вызов PyOS_InputHook во время ожидания ввода пользователя в приглашении. Это восстанавливает интеграцию интерактивных окон GUI (например, графиков Matplotlib) с приглашением в Windows.

  • bpo-30237: Вывод ошибки при отмене ReadConsole с помощью CancelSynchronousIo вместо аварийного завершения.

  • bpo-29097: Исправлена ошибка, при которой datetime.fromtimestamp() ошибочно вызывает исключение OSError в Windows для значений от 0 до 86400. Патч от Ammar Askar.

macOS

  • bpo-34370: В сборках установщика для macOS 10.9+ для 3.7.1rc и 3.6.7rc используется снимок разработки Tk 8.6 (после 8.6.8) для смягчения некоторых проблем с полосами прокрутки, наблюдаемых в IDLE и приложениях tkinter.

  • bpo-34405: Обновление до OpenSSL 1.0.2p для сборок установщика macOS.

  • bpo-31903: В _scproxy освобождён GIL при вызове SystemConfiguration, чтобы избежать взаимоблокировок.

IDLE

  • bpo-34548: Использовать настроенную цветовую тему для текстовых представлений только для чтения.

  • bpo-1529353: Включено «сжатие» длинных выводов в оболочке, чтобы избежать снижения производительности и очистить историю без её потери. Сжатые выводы можно копировать, просматривать в отдельном окне и «разжимать».

  • bpo-34047: Исправлено направление прокрутки колёсиком мыши на macOS.

  • bpo-34275: Обеспечено постоянное отображение подсказок вызовов IDLE на Mac. Некоторым комбинациям MacOS-tk требуется .update_idletasks(). Патч от Kevin Walzer.

  • bpo-34120: Исправлена неотзывчивость после закрытия некоторых окон и диалогов.

  • bpo-33975: Избегать мелкого шрифта при запуске htests. Поскольку одной из целей тестов, просматриваемых человеком, является проверка корректного внешнего вида виджетов, важно, чтобы они выглядели одинаково как при тестировании, так и при работе в IDLE.

  • bpo-33905: Добавлен тест для idlelib.stackview.StackBrowser.

  • bpo-33924: Изменён ключ mainmenu.menudefs ‘windows’ на ‘window’. Все остальные ключи menudef представляют собой версию записи главного меню в нижнем регистре.

  • bpo-33906: Переименован idlelib.windows в window. Согласовано с пунктом «Window» в главном меню и удалено последнее имя модуля во множественном числе.

  • bpo-33917: Исправлен и документирован idlelib/idle_test/template.py. Исправленный файл компилируется, запускается и тестируется успешно. В idle_test/README.txt объясняется, как использовать его для создания новых тестовых файлов IDLE.

  • bpo-33904: IDLE: В rstrip класс RstripExtension переименован в Rstrip

  • bpo-33907: Для согласованности и ясности переименованы модуль и классы IDLE. Модуль calltips и его класс CallTips теперь называются calltip и Calltip. В модуле calltip_w класс CallTip теперь называется CalltipWindow.

  • bpo-33856: Добавлено «help» в приветственное сообщение IDLE

  • bpo-33839: IDLE: рефакторинг ToolTip и CallTip, добавление документации и тестов

  • bpo-33855: Минимальное тестирование всех модулей IDLE. Добавлены недостающие файлы, импорт модуля, создание экземпляров классов и проверка покрытия. Проверены существующие файлы.

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

  • bpo-32962: python-gdb теперь перехватывает исключения UnicodeDecodeError при вызове string().

  • bpo-32962: python-gdb теперь перехватывает ValueError в read_var(): например, когда у Python нет отладочных символов.

C API

Python 3.6.6 финальныйPython 3.6.6 final

Дата выпуска: 2018-06-27

В версии 3.6.6 не было новых изменений.

Python 3.6.6 кандидат в релизы 1Python 3.6.6 release candidate 1

Дата выпуска: 2018-06-11

Ядро и встроенные модулиCore and Builtins

  • bpo-33786: Исправлена обработка GeneratorExit в athrow() для асинхронных генераторов.

  • bpo-30654: Исправлен сброс обработчика SIGINT на SIG_DFL при завершении интерпретатора, даже если ранее был установлен пользовательский обработчик. Исправление от Philipp Kerling.

  • bpo-33622: Исправлена утечка, когда сборщик мусора не может добавить объект с методом __del__ или объект, на который он ссылается, в список gc.garbage. Теперь PyGC_Collect() можно вызывать, когда установлено исключение, и он его сохраняет.

  • bpo-31849: Исправлено предупреждение о сравнении знаковых/беззнаковых типов в pyhash.c.

  • bpo-33391: Исправлена утечка в set_symmetric_difference().

  • bpo-28055: Исправлены невыровненные обращения в siphash24(). Исправление от Rolf Eike Beer.

  • bpo-33231: Исправлена потенциальная утечка памяти в normalizestring().

  • bpo-29922: Улучшены сообщения об ошибках в ‘async with’, когда __aenter__() или __aexit__() возвращают неожидаемый объект.

  • bpo-33199: Исправлено: ma_version_tag в реализации dict не инициализируется при копировании из key-sharing dict.

  • bpo-33041: Исправлен переход, когда функция содержит цикл async for.

  • bpo-32282: Исправлен лишний ifdef в include VersionHelpers.h в socketmodule на Windows.

  • bpo-21983: Исправлен сбой в ctypes.cast(), если аргумент типа является структурированным типом данных ctypes. Исправление от Eryk Sun и Oren Milman.

БиблиотекаLibrary

  • bpo-30167: Предотвращено исключение в site.main(), если установлен PYTHONSTARTUP. Исправление от Steve Weber.

  • bpo-33812: Экземпляр datetime d с не-None tzinfo, но с d.tzinfo.utcoffset(d), возвращающим None, теперь считается наивным методом astimezone().

  • bpo-30805: Устранено состояние гонки при ведении отладочного журнала.

  • bpo-33767: Операции конкатенации (+) и повторения (*) последовательностей теперь вызывают TypeError вместо SystemError при выполнении над объектами mmap.mmap. Исправление от Zackery Spytz.

  • bpo-32684: Исправлено: gather теперь распространяет отмену самой себя даже с return_exceptions.

  • bpo-33674: Исправлено состояние гонки в SSLProtocol.connection_made() из asyncio.sslproto: запускать рукопожатие немедленно, а не через call_soon(). Ранее data_received() мог быть вызван до начала рукопожатия, что приводило к зависанию или сбою рукопожатия.

  • bpo-31647: Исправлена ошибка, при которой вызов write_eof() на _SelectorSocketTransport после его закрытия вызывал AttributeError.

  • bpo-33672: Исправлен сбой Task.__repr__ с некорректными корутинами Cython.

  • bpo-33469: Исправлен RuntimeError после закрытия цикла, который использовал run_in_executor.

  • bpo-11874: Использовать улучшенное регулярное выражение при разбиении usage на части для переноса. Избегает ложных ошибок утверждения из пользовательских строк metavar.

  • bpo-30877: Исправлена ошибка в Python-реализации декодера JSON, которая препятствовала очистке кэша разобранных строк после завершения декодирования. Основано на исправлении от c-fos.

  • bpo-33548: tempfile._candidate_tempdir_list должен учитывать общие расположения TEMP

  • bpo-33542: Предотвратить использование uuid.get_node DUID вместо MAC на Windows. Исправление от Zvi Effron

  • bpo-26819: Исправлено состояние гонки с ReadTransport.resume_reading в цикле событий Windows proactor.

  • bpo-28556: Небольшие исправления в модуле typing: добавлены аннотации к NamedTuple.__new__, передаются *args и **kwds в Generic.__new__. Оригинальные PR от Paulius Šarka и Chad Dombrova.

  • bpo-20087: Обновлено соответствие алиасов с учётом локалей, поддерживаемых glibc 2.27.

  • bpo-33422: Исправлено удаление завершающих кавычек при поиске буквальных значений байтов/строк в pydoc. Патч от Andrés Delfino.

  • bpo-33197: Обновлено сообщение об ошибке при создании некорректных inspect.Parameters. Патч от Dong-hee Na.

  • bpo-33383: Исправлен сбой в методе get() объекта базы данных dbm.ndbm при вызове с одним аргументом.

  • bpo-33329: Исправлена регрессия модуля multiprocessing на новых версиях glibc

  • bpo-991266: Исправлено экранирование атрибута Comment http.cookies.SimpleCookie.

  • bpo-33131: Обновлена встроенная версия pip до 10.0.1.

  • bpo-33308: Исправлен сбой в модуле parser при преобразовании объекта ST в дерево кортежей или списков с помощью line_info=False и col_info=True.

  • bpo-33263: Исправлена утечка файловых дескрипторов в _SelectorSocketTransport. Патч от Vlad Starostin.

  • bpo-33256: Исправлено отображение вызова <module> в HTML, созданном cgitb.html(). Патч от Stéphane Blondon.

  • bpo-33203: random.Random.choice() теперь последовательно вызывает IndexError для пустых последовательностей, даже при вызове из подклассов без реализации getrandbits().

  • bpo-33224: Обновлена difflib.mdiff() для PEP 479. Неперехваченное StopIteration в генераторе преобразуется в оператор return.

  • bpo-33209: Завершение фрейминга в конце C-реализации pickle.Pickler.dump().

  • bpo-32861: Представление __str__ в urllib.robotparser теперь включает записи с подстановочными символами и поля «Crawl-delay» и «Request-rate». Патч от Michael Lazar.

  • bpo-33096: Разрешена вставка iid с ложным булевым значением в ttk.Treeview.insert. Обратите внимание, что iid=0 и iid=False будут одинаковы. Патч от Garvit Khatri.

  • bpo-33127: Модуль ssl теперь компилируется с LibreSSL 2.7.1.

  • bpo-33021: Освобождение GIL при вызовах fstat(), что предотвращает зависание всех потоков при вызове mmap.mmap(), os.urandom() и random.seed(). Патч от Nir Soffer.

  • bpo-27683: Исправлена регрессия в ipaddress, из-за которой результат hosts() оказывался пустым, когда сеть строится из кортежа, содержащего целочисленную маску и только 1 бит для адресов.

  • bpo-32844: Исправлена некорректная перенаправление низкого дескриптора (0 или 1) в stderr в подпроцессе, если другой низкий дескриптор закрыт.

  • bpo-31908: Исправлен вывод файлов покрытия для инструмента командной строки модуля trace. Ранее файлы покрытия создавались только при использовании опции --missing. Патч от Michael Selik.

  • bpo-31457: Если используются вложенные адаптеры логирования, внутренние методы process() больше не пропускаются.

  • bpo-16865: Поддержка массивов размером >=2 ГБ в ctypes. Патч от Segev Finer.

  • bpo-31238: pydoc: метод stop() приватного класса ServerThread теперь ожидает завершения DocServer.serve_until_quit(), после чего явно устанавливает атрибут docserver в None для разрыва цикла ссылок.

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

  • bpo-33503: Исправлена битая ссылка на PyPI

  • bpo-33421: Добавлена недостающая документация для typing.AsyncContextManager.

  • bpo-33378: Добавлен переключатель на корейский язык для https://docs.python.org/3/

  • bpo-33276: Уточнено, что атрибут __path__ у модулей не может быть произвольным значением.

  • bpo-33201: Модернизация документации по написанию C-расширений типов.

  • bpo-33195: Помечено как устаревшее использование Py_UNICODE в документе c-api/arg. Связанные с Py_UNICODE API устарели начиная с Python 3.3, но это было пропущено в документе.

  • bpo-33126: Документирована функция PyBuffer_ToContiguous().

  • bpo-27212: Изменена документация рецепта islice(), чтобы он потреблял начальные значения до начального индекса.

  • bpo-28247: Обновлена документация zipapp с описанием создания автономных приложений.

  • bpo-18802: Изменения в документации для ipaddress. Патч от Jon Foster и Berker Peksag.

  • bpo-27428: Обновлена документация, чтобы уточнить, что WindowsRegistryFinder реализует MetaPathFinder. (Патч от Himanshu Lakhara)

  • bpo-8243: Добавлено примечание об исключениях curses.addch и curses.addstr при записи за пределами окна или pad.

  • bpo-31432: Уточнено значение флагов CERT_NONE, CERT_OPTIONAL и CERT_REQUIRED для ssl.SSLContext.verify_mode.

ТестыTests

  • bpo-33655: Игнорировать сбои test_posix_fallocate на платформах BSD, которые могут быть связаны с работой на ZFS.

  • bpo-19417: Добавлен test_bdb.py.

СборкаBuild

  • bpo-5755: Переместить параметр -Wstrict-prototypes в CFLAGS_NODIST из OPT. Этот параметр выдавал раздражающие предупреждения при сборке расширений, написанных на C++.

  • bpo-33614: Обеспечивает корректное пересоздание файлов определений модулей для стабильного ABI на Windows.

  • bpo-33522: Включены сборки CI на Visual Studio Team Services на https://python.visualstudio.com/cpython

  • bpo-33012: Добавлен -Wno-cast-function-type для gcc 8 для подавления предупреждений о приведении типов функций, например, приведении к PyCFunction в списках определений методов.

  • bpo-33394: Включён подробный вывод сборки для модулей расширения, когда в GNU make передаются макросы из командной строки.

Windows

  • bpo-33184: Обновлён установщик Windows до OpenSSL 1.0.2o.

macOS

  • bpo-33184: Обновлён установщик macOS до OpenSSL 1.0.2o.

IDLE

  • bpo-33656: В Windows добавлен вызов API, указывающий, что tk масштабирует под DPI. На Windows 8.1+ или 10, если свойства совместимости DPI двоичного файла Python не изменены, а разрешение монитора больше 96 DPI, это должно сделать текст и линии более чёткими. В остальных случаях эффекта не будет.

  • bpo-33768: Щелчок по строке контекста перемещает эту строку в начало окна редактора.

  • bpo-33763: IDLE: используется виджет только для чтения для контекста кода вместо виджета метки.

  • bpo-33664: Прокрутка текста редактора IDLE по строкам. Раньше колесо мыши и ползунок полосы прокрутки перемещали текст на фиксированное количество пикселей, в результате чего в верхней части окна редактора отображались неполные строки. Это изменение также применяется к окнам оболочки и вывода grep, но не к текстовым представлениям только для чтения.

  • bpo-33679: Включена конфигурация цветов для контекста кода, зависящая от темы. Используйте вкладку Highlights, чтобы увидеть настройки для встроенных тем или добавить настройки в пользовательские темы.

  • bpo-33642: Отображать до maxlines непустых строк для контекста кода. Если текущий контекст отсутствует, показывать одну пустую строку.

  • bpo-33628: IDLE: очистка codecontext.py и его теста.

  • bpo-33564: Контекст кода IDLE теперь распознаёт async как открывающий блок.

  • bpo-29706: IDLE теперь подсвечивает async и await как ключевые слова в 3.6. Они становятся полноценными ключевыми словами в 3.7.

  • bpo-21474: Обновлено определение слова/идентификатора с ascii до unicode. В текстовых полях и полях ввода это влияет на выделение двойным щелчком, перемещение влево/вправо с помощью Control+влево/вправо и удаление влево/вправо с помощью Control+BACKSPACE/DEL.

  • bpo-33204: IDLE: последовательно подсвечивать недопустимые префиксы строк. Префикс строки ‘u’ не может сочетаться с ‘r’ или ‘f’. Последовательно подсвечивать столько символов префикса, начиная справа, сколько является допустимым. Исправлен и расширен тест раскраски.

  • bpo-32831: Добавлены докстринги и тесты для codecontext.

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

  • bpo-33189: pygettext.py теперь распознает только строковые литералы как докстринги и переводимые строки, и отвергает байтовые литералы и f-строковые выражения.

  • bpo-31920: Исправлена обработка каталогов как аргументов в скрипте pygettext. Основано на патче Олега Красникова.

  • bpo-29673: Исправлены макросы pystackv и pystack gdbinit.

  • bpo-32885: Добавлен флаг -n для Tools/scripts/pathfix.py, чтобы отключить автоматическое создание резервных копий (файлы с суффиксом ~).

  • bpo-31583: Исправлена работа 2to3 при использовании с опцией –add-suffix без опции –output-dir для относительного пути к файлам в текущем каталоге.

C API

  • bpo-32374: Документировано, что m_traverse для модулей, инициализируемых в несколько этапов, может вызываться с m_state=NULL, и добавлена проверка корректности.

Python 3.6.5 финальнаяPython 3.6.5 final

Дата выпуска: 2018-03-28

ТестыTests

  • bpo-32872: Устранена проблема совместимости regrtest с пакетами пространств имен.

СборкаBuild

  • bpo-33163: Обновлены pip до 9.0.3 и setuptools до v39.0.1.

Python 3.6.5 кандидат в релизы 1Python 3.6.5 release candidate 1

Дата выпуска: 2018-03-13

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

  • bpo-33001: Минимальное исправление для предотвращения переполнения буфера в os.symlink в Windows.

  • bpo-32981: Регулярные выражения в difflib и poplib были уязвимы к катастрофическому обратному отслеживанию. Эти регулярные выражения представляли потенциальные векторы DOS (REDOS). Они были переработаны. Это устраняет CVE-2018-1060 и CVE-2018-1061. Патч от Jamie Davis.

Ядро и встроенные модулиCore and Builtins

  • bpo-33026: Исправлен выход из блока “with” путем установки f_lineno.

  • bpo-17288: Предотвращены переходы из событий трассировки 'возврат' и 'исключение'.

  • bpo-32889: Обновлен список подавления Valgrind с учетом переименования Py_ADDRESS_IN_RANG в address_in_range.

  • bpo-32650: Pdb и другие отладчики, зависящие от bdb.py, теперь корректно выполняют шаг (команда next) через нативные корутины. Патч от Pablo Galindo.

  • bpo-32685: Улучшено предложение, когда форма оператора print из Python 2 находится на той же строке, что и заголовок составного оператора, или завершается точкой с запятой вместо перевода строки. Патч от Nitish Chandra.

  • bpo-32583: Исправлена возможная аварийная остановка встроенных декодеров Unicode, вызванная ошибками записи за границы при использовании пользовательских обработчиков ошибок декодирования.

  • bpo-26163: Улучшен хеш frozenset() для создания более различающихся значений хеша при работе с наборами данных, содержащими много похожих значений.

  • bpo-27169: Константа __debug__ теперь оптимизируется на этапе компиляции. Это также исправляет bpo-22091.

  • bpo-32329: sys.flags.hash_randomization теперь корректно устанавливается в 0, когда рандомизация хеша отключена с помощью PYTHONHASHSEED=0.

  • bpo-30416: Оптимизатор теперь защищен от затрат значительного времени на выполнение сложных вычислений и потребления большого объема памяти при создании больших констант в процессе свертки констант.

  • bpo-18533: repr() для словаря, содержащего свой собственный values() или items(), больше не вызывает RecursionError; аналогично для OrderedDict. Вместо этого используйте ..., как и для других рекурсивных структур. Патч от Ben North.

  • bpo-32028: Начальные пробелы теперь корректно игнорируются при генерации подсказок для преобразования операторов print из Python 2 во встроенную функцию print в Python 3. Исправление от Sanyam Khurana.

  • bpo-32137: Представление (repr) глубоко вложенного словаря теперь вызывает RecursionError вместо аварийного завершения из-за переполнения стека.

БиблиотекаLibrary

  • bpo-33064: lib2to3 теперь корректно поддерживает завершающие запятые после *args и **kwargs в сигнатурах функций.

  • bpo-31804: Исправлена ошибка в multiprocessing.Process, если стандартные потоки были закрыты или равны None при завершении.

  • bpo-33037: Пропуск отправки/получения данных после закрытия SSL-транспорта.

  • bpo-30353: Исправлена передача структур по значению в ctypes на 64-разрядных Cygwin/MinGW.

  • bpo-33009: Исправлена работа inspect.signature() для partialmethod с одним параметром.

  • bpo-32969: Открыт доступ к нескольким отсутствовавшим константам в zlib и исправлена соответствующая документация.

  • bpo-32713: Исправлена обработка выходящих за границы значений с плавающей запятой в tarfile.itn. Исправление от Joffrey Fuhrer.

  • bpo-30622: Модуль ssl теперь обнаруживает отсутствие поддержки NPN в LibreSSL.

  • bpo-32922: dbm.open() теперь кодирует имя файла с использованием кодировки файловой системы вместо кодировки по умолчанию.

  • bpo-32859: В os.dup2 больше не проверяется каждый вызов на существование системного вызова dup3.

  • bpo-21060: Запутанное сообщение от setup.py upload переписано с «No dist file created in earlier command» на более понятное «Must create and upload files in one command».

  • bpo-32857: В tkinter, after_cancel(None) теперь вызывает ValueError вместо отмены первой запланированной функции. Исправление от Cheryl Sabella.

  • bpo-32852: Обеспечено сохранение sys.argv в виде списка при запуске trace.

  • bpo-32841: Исправлена проблема asyncio.Condition, которая молча игнорировала отмену после уведомления и отмены условной блокировки. Исправление от Bar Harel.

  • bpo-31787: Исправлены утечки ссылок (refleaks) методов __init__() в различных модулях. (Вклад от Oren Milman)

  • bpo-30157: Исправлено угадывание символа кавычек и разделителя в csv.Sniffer.sniff(), когда только последнее поле заключено в кавычки. Исправление от Jake Davis.

  • bpo-32394: socket: удаление флагов TCP_FASTOPEN, TCP_KEEPCNT в старых версиях Windows во время выполнения.

  • bpo-32777: Исправлена редкая, но потенциальная взаимоблокировка дочернего процесса перед exec в подпроцессе на системах POSIX при пометке файловых дескрипторов наследуемыми при exec в дочернем процессе. Эта ошибка, по-видимому, была введена в 3.4.

  • bpo-32647: Модуль ctypes ранее зависел от косвенной компоновки для dlopen. Теперь общее расширение явно компонуется с libdl на платформах, где есть dl.

  • bpo-32734: Исправлена проблема безопасности asyncio.Lock(), которая позволяла захватывать и блокировать одну и ту же блокировку несколько раз, не освобождая её. Исправление от Bar Harel.

  • bpo-32727: Не включать поле name в адрес отправителя SMTP-конверта. Исправление от Stéphane Wirtel.

  • bpo-27931: Исправлена ошибка парсинга заголовка email-адреса, когда имя пользователя – пустая строка в кавычках. Исправление от Xiang Zhang.

  • bpo-32304: Команда upload из distutils больше не повреждает tar-файлы, заканчивающиеся байтом CR, и больше не пытается преобразовывать CR в CRLF в любых текстовых полях загрузки.

  • bpo-32502: uuid.uuid1 больше не вызывает исключение при обнаружении 64-битного аппаратного адреса.

  • bpo-31848: Исправлена обработка ошибок в Aifc_read.initfp(), когда не найден блок SSND. Исправление от Zackery Spytz.

  • bpo-32555: На FreeBSD и Solaris os.strerror() теперь всегда декодирует байтовую строку из текущей кодировки локали, вместо использования ASCII/surrogateescape в некоторых случаях.

  • bpo-32521: Модуль nis теперь совместим с новыми libnsl и расположением заголовочных файлов.

  • bpo-32473: Улучшена читаемость вывода ABCMeta._dump_registry()

  • bpo-32521: glibc удалил Sun RPC. Используйте замену – заголовки и библиотеку libtirpc в модуле nis.

  • bpo-32228: Обеспечено сохранение truncate() позиции в файле (как сообщает tell()) после записи длиннее размера буфера.

  • bpo-26133: При завершении интерпретатора больше не отписываться от сигналов в цикле событий asyncio UNIX.

  • bpo-32185: Модуль SSL больше не отправляет IP-адреса в расширении SNI TLS на платформах с OpenSSL 1.0.2+ или inet_pton.

  • bpo-32323: urllib.parse.urlsplit() больше не приводит zone-id (scope) к нижнему регистру для адресов IPv6 с областью действия в именах хостов.

  • bpo-32302: Исправление bdist_wininst из distutils для CRT v142: теперь он бинарно совместим с CRT v140.

  • bpo-32255: Одно пустое поле теперь всегда заключается в кавычки при записи в CSV-файл. Это позволяет отличить пустую строку от строки, состоящей из одного пустого поля. Патч от Licht Takeuchi.

  • bpo-32277: Возбуждать NotImplementedError вместо SystemError на платформах, где chmod(..., follow_symlinks=False) не поддерживается. Патч от Anthony Sottile.

  • bpo-32199: Геттер ip в getnode() теперь использует «ip link» вместо «ip link list».

  • bpo-27456: Обеспечена установка TCP_NODELAY на Linux. Тесты от Victor Stinner.

  • bpo-31900: Функция locale.localeconv() теперь временно устанавливает локаль LC_CTYPE в локаль LC_NUMERIC для декодирования байтовых строк decimal_point и thousands_sep, если они не ASCII или длиннее 1 байта, и локаль LC_NUMERIC отличается от локали LC_CTYPE. Это временное изменение влияет на другие потоки.

    То же изменение для метода str.format() при форматировании числа (int, float, float и подклассов) с типом n (например, '{:n}'.format(1234)).

  • bpo-31802: Импорт нативного модуля путей (posixpath, ntpath) теперь работает, даже если модуль os ещё не импортирован.

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

  • bpo-17232: Уточнена документация для -O и -OO. Патч от Terry Reedy.

  • bpo-32800: Обновлена ссылка на документ w3c для пространств имён XML по умолчанию.

  • bpo-8722: Документировать поведение __getattr__(), когда метод свойства get() возбуждает AttributeError.

  • bpo-32614: Изменены примеры регулярных выражений в документации для использования сырых строк во избежание DeprecationWarning, и добавлен текст в REGEX HOWTO, чтобы подчеркнуть устаревание.

  • bpo-31972: Улучшены строки документации для подклассов pathlib.PurePath.

  • bpo-17799: Объяснить реальное поведение sys.settrace и sys.setprofile и их аналогов из C API относительно того, какие типы событий принимаются в каждой функции. Патч от Pablo Galindo Salgado.

ТестыTests

  • bpo-32517: Исправлен сбой test_asyncio на macOS 10.12.2+, возникший из-за того, что транспорт цикла KqueueSelector не закрывался.

  • bpo-32721: Исправлен test_hashlib, чтобы он не падал, если модуль _md5 не собран.

  • bpo-32252: Исправлена faulthandler_suppress_crash_report(), используемая для предотвращения файлов core dump при тестировании аварийных завершений. getrlimit() возвращает ноль при успехе.

  • bpo-31518: В Debian Unstable отключены TLS 1.0 и 1.1 для SSLv23_METHOD(). Изменён протокол TLS/SSL некоторых тестов на PROTOCOL_TLS или PROTOCOL_TLSv1_2, чтобы они проходили на Debian.

СборкаBuild

  • bpo-32635: Исправлено падение (segfault) модуля crypt, когда в системе предоставляется libxcrypt вместо libcrypt.

Windows

  • bpo-33016: Исправлено потенциальное использование неинициализированной памяти в nt._getfinalpathname.

  • bpo-32903: Исправлена утечка памяти в os.chdir() на Windows, если текущий каталог задан через UNC-путь.

  • bpo-31966: Исправлен WindowsConsoleIO.write() для записи пустых данных.

  • bpo-32409: Обеспечена возможность activate.bat обрабатывать содержимое в Юникоде.

  • bpo-32457: Улучшена обработка денормализованного пути к исполняемому файлу при запуске Python.

  • bpo-32370: Использовать правильную кодировку для вывода ipconfig в модуле uuid. Патч от Segev Finer.

  • bpo-29248: Исправлена os.readlink() в Windows, которая ошибочно tрактовала поле PrintNameOffset буфера данных reparse как количество символов вместо количества байтов. Патч от Craig Holmquist и SSE4.

  • bpo-32588: Создан отдельный модуль _distutils_findvs.

macOS

  • bpo-32726: Предоставлен дополнительный, более современный вариант установщика 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: Установка __file__ во время выполнения файла запуска. Как и Python, IDLE опционально выполняет один файл запуска в окне Shell перед выводом первого интерактивного приглашения. Для IDLE -s запускает файл, указанный в переменной окружения IDLESTARTUP или PYTHONSTARTUP; -r file запускает file. Python устанавливает __file__ в имя файла запуска перед его выполнением и сбрасывает его перед первым приглашением. Теперь IDLE делает то же самое при нормальном запуске, без опции -n.

  • bpo-32940: Упрощение и переименование StringTranslatePseudoMapping в pyparse.

  • bpo-32916: Изменение str на code в pyparse.

  • bpo-32905: Удаление неиспользуемого кода в модуле pyparse.

  • bpo-32874: Добавлены тесты для pyparse.

  • bpo-32837: Использование системной и зависимой от локали кодировки по умолчанию для open() – плохая идея для системно-независимых файлов IDLE.

  • bpo-32826: Добавлено “encoding=utf-8” для open() в тесте test_help_about IDLE. GUI-тест test_file_buttons() проверяет только начальные строки, содержащие исключительно ascii, но завершался ошибкой в системах, где open() по умолчанию использует ‘ascii’, поскольку readline() внутренне читает и декодирует достаточно далеко, чтобы встретить не-ascii символ в CREDITS.txt.

  • bpo-32765: Обновлена docstring вкладки General в configdialog для добавления новых виджетов в список виджетов.

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

  • bpo-24960: 2to3 и lib2to3 теперь могут читать сериализованные файлы грамматик с помощью pkgutil.get_data() вместо обращения к файловой системе. Это позволяет 2to3 и lib2to3 работать при запуске из zip-файла.

  • bpo-32222: Исправлена ошибка pygettext, не извлекавшей docstrings для функций с аннотированными типами аргументов. Патч от Toby Harradine.

C API

  • bpo-29084: Незадокументированный C API для OrderedDict был исключён из ограниченного C API. Он был добавлен по ошибке и фактически никогда не работал в ограниченном C API.

Python 3.6.4 финальнаяPython 3.6.4 final

Дата выхода: 2017-12-18

В версии 3.6.4 по сравнению с v3.6.4rc1 не было внесено никаких новых изменений кода.

Python 3.6.4 кандидат в релизы 1Python 3.6.4 release candidate 1

Дата выхода: 2017-12-05

Ядро и встроенные модулиCore and Builtins

  • bpo-32176: co_flags.CO_NOFREE теперь всегда корректно устанавливается конструктором объекта кода на основе freevars и cellvars, вместо необходимости корректной установки вызывающим кодом. Это гарантирует, что он будет автоматически сброшен при добавлении дополнительных cell-ссылок в изменённый объект кода и функцию.

  • bpo-31949: Исправлены некоторые проблемы печати трассировок (PyTraceBack_Print()).

    • Установка sys.tracebacklimit в 0 или меньше теперь подавляет печать трассировок.

    • Установка sys.tracebacklimit в None теперь приводит к использованию предела по умолчанию.

    • Установка sys.tracebacklimit в целое число больше LONG_MAX теперь означает использование предела LONG_MAX вместо предела по умолчанию.

    • Исправлены целочисленные переполнения в случае более 2**31 элементов трассировки в Windows.

    • Исправлена обработка ошибок вывода.

  • bpo-30696: Исправлено бесконечное зацикливание интерактивного интерпретатора при нехватке памяти.

  • bpo-20047: Методы bytearray partition() и rpartition() теперь принимают в качестве разделителя только байтоподобные объекты, как и документировано. В частности, теперь они вызывают TypeError, а не возвращают ошибочный результат, если в качестве разделителя передан целое число.

  • bpo-31852: Исправлена ошибка сегментации, возникавшая из-за комбинации мягкого ключевого слова async и строк продолжения.

  • bpo-21720: BytesWarning больше не выводится, когда аргумент fromlist __import__() или атрибут __all__ модуля содержат экземпляры bytes.

  • bpo-31825: Исправлена ошибка OverflowError в кодировке ‘unicode-escape’ и в codecs.escape_decode() при декодировании экранированного не-ascii байта.

  • bpo-28603: Вывод полной цепочки контекста/причины исключений при завершении интерпретатора, даже если какое-либо исключение в цепочке не может быть хешировано или сравнивается как равное с последующими. Патч от Zane Bitter.

  • bpo-31786: Исправлено округление таймаута в модуле select для корректного округления отрицательных таймаутов между -1.0 и 0.0. Функции теперь блокируются в ожидании событий как и ожидалось. Ранее вызов некорректно не блокировался. Патч от Pablo Galindo.

  • bpo-31642: Восстановлена блокировка при импорте "from package import module" путем установки sys.modules["package.module"] в None.

  • bpo-31626: Исправлена ошибка в отладочном распределителе памяти. Производилась запись в освобожденную память после уменьшения блока памяти.

  • bpo-31619: Исправлен ValueError при преобразовании строки с большим количеством символов подчеркивания в целое число с двоичным основанием.

  • bpo-31592: Исправлен сбой утверждения в парсере Python в случае некорректного unicodedata.normalize(). Патч от Oren Milman.

  • bpo-31588: Возвращается TypeError с понятным сообщением об ошибке, когда создание класса завершается неудачей из-за метакласса с некорректным методом __prepare__(). Патч от Oren Milman.

  • bpo-31566: Исправлена ошибка утверждения в _warnings.warn() при некорректной глобальной переменной __name__. Патч от Oren Milman.

  • bpo-31505: Исправлена ошибка утверждения в json, если _json.make_encoder() получил некорректный аргумент encoder(). Патч от Oren Milman.

  • bpo-31492: Исправлены сбои утверждения в случае неудачного импорта из модуля с некорректным атрибутом __name__, а также в случае неудачного доступа к атрибуту такого модуля. Патч от Oren Milman.

  • bpo-31490: Исправлена ошибка утверждения в определении класса ctypes, если класс имеет атрибут, имя которого указано в _anonymous_, но не в _fields_. Патч от Oren Milman.

  • bpo-31478: Исправлена ошибка утверждения в _random.Random.seed(), если аргумент имеет некорректный метод __abs__(). Патч от Oren Milman.

  • bpo-31315: Исправлен сбой утверждения в imp.create_dynamic(), когда spec.name не является строкой. Патч от Oren Milman.

  • bpo-31311: Исправлен сбой в методе __setstate__() класса ctypes._CData в случае некорректного __dict__. Патч от Oren Milman.

  • bpo-31293: Исправлены сбои при истинном делении и умножении объекта timedelta на число с плавающей запятой с некорректным методом as_integer_ratio(). Патч от Oren Milman.

  • bpo-31285: Исправлена ошибка утверждения в warnings.warn_explicit, когда возвращаемое значение get_source() полученного загрузчика имеет некорректный метод splitlines(). Патч от Oren Milman.

  • bpo-30817: PyErr_PrintEx() теперь очищает игнорируемое исключение, которое может быть вызвано _PySys_SetObjectId(), например, при нехватке памяти.

БиблиотекаLibrary

  • bpo-28556: Два мелких исправления для модуля typing: разрешено поверхностное копирование экземпляров обобщенных классов, улучшено взаимодействие __init_subclass__ с обобщениями. Оригинальные PR от Ivan Levkivskyi.

  • bpo-27240: Алгоритм сворачивания заголовков для новых политик email был переписан, что также исправляет bpo-30788, bpo-31831 и bpo-32182. В частности, сворачивание RFC2231 теперь выполняется корректно.

  • bpo-32186: Методы io.FileIO.readall() и io.FileIO.read() теперь освобождают GIL при получении размера файла. Исправлено зависание всех потоков при недоступном NFS-сервере. Патч от Nir Soffer.

  • bpo-12239: Сделать msilib.SummaryInformation.GetProperty(), чтобы он возвращал None, когда значение свойства равно VT_EMPTY. Первоначальный патч от Mark Mc Mahon.

  • bpo-31325: Исправлено неправильное использование collections.namedtuple() в методе RobotFileParser.parse().

    Исходный патч от Robin Wellner.

  • bpo-12382: msilib.OpenDatabase() теперь генерирует более понятное сообщение об исключении, когда не удается открыть или создать MSI-файл. Первоначальный патч от William Tisäter.

  • bpo-32110: codecs.StreamReader.read(n) теперь возвращает не более n символов/байт для неотрицательного n. Это делает его совместимым с методами read() других файлоподобных объектов.

  • bpo-32072: Исправлены проблемы с бинарными plist-файлами:

    • Исправлено сохранение bytearrays.

    • Идентичные объекты будут сохраняться только один раз.

    • Равные ссылки будут загружаться как идентичные объекты.

    • Добавлена поддержка сохранения и загрузки рекурсивных структур данных.

  • bpo-32034: asyncio.IncompleteReadError и LimitOverrunError теперь сериализуемы с помощью pickle.

  • bpo-32015: Исправлена проблема с циклом событий asyncio при повторном подключении сокета во время ожидания асинхронного чтения/записи из/в сокет.

  • bpo-32011: Восстановлена поддержка загрузки marshal-файлов с кодом TYPE_INT64. Такие файлы могут быть созданы в Python 2.7.

  • bpo-31970: Снижены накладные расходы на производительность отладочного режима asyncio.

  • bpo-9678: Исправлено определение MAC-адреса в модуле uuid:

    • Использование ifconfig в NetBSD и OpenBSD.

    • Использование arp в Linux, FreeBSD, NetBSD и OpenBSD.

    На основе патча от Takayuki Shimizukawa.

  • bpo-30057: Исправлена потенциальная потеря сигнала в signal.signal().

  • bpo-31933: Исправлены параметры Blake2 leaf_size и node_offset на платформах с обратным порядком байт. Патч от Jack O'Connor.

  • bpo-31927: Исправлена компиляция модуля socket на NetBSD 8. Исправлен сбой утверждения или чтение произвольных данных при разборе адреса AF_BLUETOOTH на NetBSD и DragonFly BSD.

  • bpo-27666: Исправлено повреждение стека в curses.box() и curses.ungetmouse(), когда размер типов chtype или mmask_t меньше размера C long. curses.box() теперь принимает символы в качестве аргументов. Основано на патче Стива Финка.

  • bpo-31897: plistlib теперь перехватывает больше ошибок при чтении бинарных plist-файлов и возбуждает InvalidFileException вместо неожиданных исключений.

  • bpo-25720: Исправлен метод проверки состояния pad окна curses WINDOW. Патч от Масаюки Ямамото.

  • bpo-31893: Исправлена структура kqueue_event на OpenBSD и NetBSD. Исправлено сравнение объектов kqueue_event.

  • bpo-31891: Исправлена сборка модуля curses на NetBSD.

  • bpo-28416: Экземпляры подкласса pickle.Pickler с методом persistent_id() и подкласса pickle.Unpickler с методом persistent_load() больше не создают циклические ссылки.

  • bpo-28326: Исправлен multiprocessing.Process, когда stdout и/или stderr закрыты или равны None.

  • bpo-31457: Если используются вложенные адаптеры логирования, внутренние методы process() больше не пропускаются.

  • bpo-31457: Свойство manager у объектов LoggerAdapter теперь можно корректно устанавливать.

  • bpo-31806: Исправлено округление таймаута в time.sleep(), threading.Lock.acquire() и socket.socket.settimeout() для корректного округления отрицательных таймаутов между -1.0 и 0.0. Функции теперь блокируются в ожидании событий, как и ожидалось. Ранее вызов был некорректно неблокирующим. Патч от Пабло Галиндо.

  • bpo-28603: traceback: Исправлен TypeError, возникавший при печати трассировок исключений, когда текущее исключение или исключение в цепочке контекста/причины было нехешируемым. Патч от Зейна Биттера.

  • bpo-30058: Исправлено переполнение буфера в select.kqueue.control().

  • bpo-31770: Предотвращение сбоя при вызове метода __init__() объекта sqlite3.Cursor более одного раза. Патч от Орена Милмана.

  • bpo-31672: idpattern в string.Template сопоставлялся с некоторыми не-ASCII символами. Теперь используется локальный флаг регулярного выражения -i для избежания не-ASCII символов.

  • bpo-31764: Предотвращение сбоя в sqlite3.Cursor.close() в случае, если объект Cursor не инициализирован. Патч от Орена Милмана.

  • bpo-31752: Исправлен возможный сбой в конструкторе timedelta, вызываемом с пользовательскими целыми числами.

  • bpo-31701: На Windows faulthandler.enable() теперь игнорирует исключения MSC и COM.

  • bpo-31728: Предотвращение сбоев в _elementtree из-за небезопасной очистки Element.text и Element.tail. Патч от Орена Милмана.

  • bpo-31620: пустая asyncio.Queue больше не допускает утечку памяти при истечении таймаута опросов queue.get

  • bpo-31632: Исправлен метод set_protocol() класса _SSLProtocolTransport в модуле asyncio. Ранее этот метод изменял неправильную ссылку на протокол.

  • bpo-31675: Исправлены утечки памяти в методах Tkinter splitlist() и split() при передаче строки размером более 2 ГБ.

  • bpo-31673: Исправлена опечатка в названии метода Tkinter adderrorinfo().

  • bpo-30806: Исправлено строковое представление объекта netrc.

  • bpo-15037: Добавлен обходной путь для getkey() в curses для ncurses 5.7 и ранее.

  • bpo-25351: Предотвращение сбоев активации venv с неопределёнными переменными

  • bpo-25532: inspect.unwrap() теперь будет пытаться развернуть объект только sys.getrecursionlimit() раз, для защиты от объектов, которые создают новый объект при каждом доступе к атрибуту.

  • bpo-30347: Прекращение сбоев при параллельной итерации по итераторам itertools.groupby().

  • bpo-31516: threading.current_thread() не должен возвращать фиктивный поток при завершении работы.

  • bpo-31351: python -m ensurepip теперь завершается с ненулевым кодом возврата, если начальная загрузка pip завершилась неудачно.

  • bpo-31482: random.seed() теперь работает с bytes в version=1

  • bpo-31334: Исправлен poll.poll([timeout]) в модуле select для произвольных отрицательных таймаутов на всех ОС, где он может быть только неотрицательным целым числом или -1. Патч от Риккардо Коччоли.

  • bpo-31310: отслеживатель семафоров multiprocessing должен запускаться снова, если\nпроизошёл сбой.

  • bpo-31308: сделать процесс forkserver модуля multiprocessing устойчивым к Ctrl-C и\nдругим пользовательским прерываниям. Если он аварийно завершится, перезапускать его при необходимости.

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

  • bpo-32105: Добавлен asyncio.BaseEventLoop.connect_accepted_socket\nмаркер versionadded.

  • bpo-31537: Исправлено неверное использование get_history_length в readline\nпримере кода документации. Патч от Брэда Смита.

  • bpo-30085: Для ясности предпочтительны функции оператора без двойного подчёркивания.\nФункции с подчёркиваниями сохранены только для\nобратной совместимости.

ТестыTests

  • bpo-31380: Пропускать test_httpservers и test_undecodable_file на macOS: завершаются ошибкой на APFS.

  • bpo-31705: Пропускать test_socket.test_sha256() на ядре Linux старше 4.5.\nТест завершается ошибкой с ENOKEY на ядре 3.10 (на ppc64le). Исправление было включено\nв ядро 4.5.

  • bpo-31174: Исправлен test_tools.test_unparse: DirectoryTestCase теперь сохраняет\nобразцы имён для того, чтобы всегда тестировать одни и те же файлы. Это предотвращает ложные срабатывания при\nпоиске утечек ссылок.

  • bpo-30695: Добавлены функции set_nomemory(start, stop) и remove_mem_hooks() в модуль _testcapi.

СборкаBuild

  • bpo-32059: detect_modules() в setup.py теперь также выполняет поиск\nпутей sysroot при кросс-компиляции.

  • bpo-31957: Исправлено определение версии Windows SDK при сборке для Windows.

  • bpo-31609: Исправлены кавычки в PCbuild/clean.bat

  • bpo-31934: Прерывать сборку при сборке из нечистого дерева исходников.

  • bpo-31926: Исправлена ситуация, когда Argument Clinic иногда вызывал ошибки компиляции, если\nв .c-файле было более одной функции и/или метода с одинаковым\nименем.

  • bpo-28791: Обновлены сборки Windows для использования SQLite 3.21.0.

  • bpo-28791: Обновлён установщик OS X для использования SQLite 3.21.0.

  • bpo-22140: Предотвращена двойная подстановка префикса в python-config.sh.

  • bpo-31536: Избегать полной пересборки после make regen-all, если ничего не\nизменилось.

Windows

  • bpo-1102: Возвращать None, когда View.Fetch() возвращает ERROR_NO_MORE_ITEMS, вместо вызова MSIError.

    Исходный патч от Anthony Tuininga.

  • bpo-31944: Исправлена кнопка «Изменить» в диалоге «Приложения и возможности».

macOS

  • bpo-31392: Обновлён установщик macOS для использования OpenSSL 1.0.2m

IDLE

  • bpo-32207: Улучшена трассировка исключений событий tk в IDLE. Когда обработка событий tk\nуправляется циклом выполнения IDLE, к трассировке исключений событий tk больше не добавляется\nсбивающий с толку и отвлекающий контекст трассировки queue.EMPTY.\nТеперь трассировка такая же, как когда обработка событий\nуправляется пользовательским кодом. Патч основан на предложении Serhiy Storchaka.

  • bpo-32164: Удалён неиспользуемый файл idlelib/tabbedpages.py. Использование TabbedPageSet\nв configdialog заменено на ttk.Notebook.

  • bpo-32100: IDLE: Исправлены старые и новые ошибки в pathbrowser; улучшены тесты. Патч\nв основном от Cheryl Sabella.

  • bpo-31858: IDLE – ограничить манипуляции с приглашением оболочки только самой оболочкой. Редактор\nи окна вывода видят только пустую последнюю строку приглашения. Это упрощает\nкод и исправляет незначительную ошибку при вставке перевода строки. Sys.ps1, если\nприсутствует, считывается при запуске оболочки, но не устанавливается и не изменяется.

  • bpo-31860: Образец шрифта в диалоге настройки IDLE теперь можно редактировать.\nИзменения сохраняются, пока IDLE открыт.

  • bpo-31836: Test_code_module теперь проходит, если запущен после test_idle, который устанавливает ps1.

    Модуль code использует sys.ps1, если он присутствует, или устанавливает его в ‘>>> ‘ в противном случае. Test_code_module теперь правильно проверяет оба поведения. То же самое для ps2.

  • bpo-28603: Исправлен TypeError, вызывавший перезапуск оболочки при выводе трассировки, содержащей исключение, которое не является хешируемым. Патч от Zane Bitter.

  • bpo-13802: В образце шрифтов в настройках IDLE используются нелатинские символы. Даже если выбран шрифт, определяющий ограниченное подмножество символов unicode Basic Multilingual Plane, tcl/tk будет использовать другие шрифты, определяющие символ. Расширенный пример дает пользователям нелатинских символов лучшее представление о том, что они могут увидеть в оболочке и редакторах IDLE. Чтобы освободить место для расширенного примера, фреймы на вкладке Font были переупорядочены. Справка Font/Tabs немного объясняет эти добавления.

  • bpo-31460: Упрощение API модульного браузера IDLE.

    Передача виджета вместо flist с корневым виджетом открывает возможность создания фрейма браузера, который является лишь частью окна. Передача полного имени файла вместо частей, подразумеваемых из файла .py, открывает возможность просмотра файлов Python, не оканчивающихся на .py.

  • bpo-31649: IDLE – сделать параметры _htest, _utest только именованными.

  • bpo-31559: Устранение зависимости от порядка тестов в idle_test.test_browser.

  • bpo-31459: Переименование браузера модулей IDLE из Class Browser в Module Browser. Исходный браузер классов и методов на уровне модуля стал браузером модулей с добавлением функций уровня модуля много лет назад. Вложенные классы и функции были добавлены вчера. Для обратной совместимости виртуальное событие <<open-class-browser>>, которое появляется на вкладке Keys диалога Settings, не изменено. Патч от Cheryl Sabella.

  • bpo-31500: Шрифты по умолчанию теперь масштабируются на дисплеях HiDPI.

  • bpo-1612262: Браузер модулей IDLE теперь показывает вложенные классы и функции. Исходные патчи для кода и тестов от Guilherme Polo и Cheryl Sabella соответственно.

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

  • bpo-30722: Обеспечить совместимость redemo с Python 3.6 и новее.

    Также удалена опция LOCALE, так как она не работает со строковыми шаблонами в Python 3.

    Патч от Christoph Sarnowski.

C API

  • bpo-20891: Исправление PyGILState_Ensure(). Когда PyGILState_Ensure() вызывается в потоке, не являющемся Python, до вызова PyEval_InitThreads(), вызывать PyEval_InitThreads() только после вызова PyThreadState_New() для предотвращения аварийного завершения.

  • bpo-31532: Исправление повреждения памяти из-за смешивания аллокаторов в getpath.c между Py_GetPath() и Py_SetPath().

  • bpo-30697: Синглтон PyExc_RecursionErrorInst удален, и PyErr_NormalizeException() больше его не использует. Этот синглтон является постоянным, и его элементы никогда не очищаются, что может вызвать segfault во время финализации интерпретатора. Смотрите также bpo-22898.

Python 3.6.3 финальныйPython 3.6.3 final

Дата выпуска: 2017-10-03

БиблиотекаLibrary

СборкаBuild

  • bpo-31662: Исправление опечаток в скрипте Windows uploadrelease.bat. Исправление проблем сборки документации Windows в Doc/make.bat.

  • bpo-31423: Исправление сборки PDF-документации с новыми версиями Sphinx.

Python 3.6.3 кандидат в релизы 1Python 3.6.3 release candidate 1

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

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

  • bpo-29781: SSLObject.version() теперь корректно возвращает None, когда квитирование через BIO еще не было выполнено.

  • bpo-30947: Встроенная копия libexpat обновлена с версии 2.2.1 до 2.2.3 для получения исправлений безопасности.

Ядро и встроенные модулиCore and Builtins

  • bpo-31471: Исправлена ошибка утверждения в subprocess.Popen() на Windows, если аргумент env имеет некорректный метод keys(). Патч от Oren Milman.

  • bpo-31418: Исправление ошибки утверждения в PyErr_WriteUnraisable() в случае исключения с неправильным атрибутом __module__. Патч от Oren Milman.

  • bpo-31416: Исправление ошибок утверждения в случае некорректного warnings.filters или warnings.defaultaction. Патч от Oren Milman.

  • bpo-31411: Вызывать TypeError вместо SystemError в случае, если warnings.onceregistry не является словарем. Патч от Oren Milman.

  • bpo-31373: Исправлено несколько возможных случаев неопределённого поведения из-за понижения точности чисел с плавающей запятой.

  • bpo-30465: Информация о расположении (lineno и col_offset) в f-строках теперь (почти) корректна. Это исправляет такие инструменты, как flake8, которые показывали предупреждения не на той строке (обычно на первой строке файла).

  • bpo-31343: добавлено включение sys/sysmacros.h для функций major(), minor() и makedev(). Библиотека GNU C планирует удалить эти функции из sys/types.h.

  • bpo-31291: Исправлена ошибка утверждения в zipimport.zipimporter.get_data на Windows, когда возвращаемое значение pathname.replace('/','\\') не является строкой. Патч от Oren Milman.

  • bpo-31271: Исправлена ошибка утверждения в методе write() объекта io.TextIOWrapper, когда кодировщик не возвращает объект bytes. Патч от Oren Milman.

  • bpo-31243: Исправлен сбой в некоторых методах io.TextIOWrapper, когда состояние декодера недействительно. Патч от Орен Милмана.

  • bpo-30721: print теперь показывает правильную подсказку для использования синтаксиса перенаправления вывода в Python 2. Патч от Саньяма Хураны.

  • bpo-31070: Исправлено состояние гонки в importlib _get_module_lock().

  • bpo-31095: Исправлен потенциальный сбой во время сборки мусора, вызванный tp_dealloc, который не вызывает PyObject_GC_UnTrack().

  • bpo-31071: Исправлено маскирование исходного TypeError при вызове с распаковкой *, когда передаются другие аргументы.

  • bpo-30978: str.format_map() теперь передаёт исключения поиска ключей. Ранее любое исключение заменялось KeyError.

  • bpo-30808: Использование _Py_atomic API для чувствительного к конкурентности состояния сигналов.

  • bpo-30876: Относительный импорт из незагруженного пакета теперь повторно импортирует пакет вместо того, чтобы завершаться с SystemError. Относительный импорт из не-пакета теперь завершается с ImportError, а не SystemError.

  • bpo-30703: Улучшение доставки сигналов.

    Избегайте использования Py_AddPendingCall из обработчика сигналов, чтобы не вызывать функции, небезопасные для сигналов. Добавляемые здесь тесты не проходят без остальной части патча в Linux и OS X. Это означает, что логика доставки сигналов имела дефекты (некоторые сигналы могли быть потеряны).

  • bpo-30765: Избегание блокировки в pthread_mutex_lock(), когда PyThread_acquire_lock() запрашивается без блокировки.

  • bpo-31161: Обеспечено, что сообщение об ошибке синтаксиса «Missing parentheses» применяется только к SyntaxError, а не к подклассам. Патч от Мартейна Питерса.

  • bpo-30814: Исправлено состояние гонки при импорте подмодуля из пакета.

  • bpo-30597: print теперь показывает ожидаемый ввод в пользовательском сообщении об ошибке при использовании в качестве оператора Python 2. Патч от Саньяма Хураны.

БиблиотекаLibrary

  • bpo-31499: xml.etree: Исправлен сбой, когда парсер является частью цикла ссылок.

  • bpo-28556: typing.get_type_hints теперь находит правильное пространство имён globalns для классов и модулей по умолчанию (когда вызывающий не указал globalns).

  • bpo-28556: Ускорение модуля typing. Оригинальные PR от Ивана Левкивского и Митяра.

  • bpo-31544: Модуль-ускоритель C в ElementTree игнорировал исключения, возникающие при поиске целевых методов TreeBuilder в XMLParser().

  • bpo-31234: socket.create_connection() теперь вручную разрывает цикл ссылок: при успехе очищает переменную, хранящую последнее исключение.

  • bpo-31457: Объекты LoggerAdapter теперь можно вкладывать друг в друга.

  • bpo-31400: Улучшена обработка ошибок SSL, чтобы не терялись коды ошибок.

  • bpo-28958: ssl.SSLContext() теперь использует информацию об ошибках OpenSSL, когда не удаётся создать контекст.

  • bpo-27340: SSLSocket.sendall() теперь использует memoryview для создания срезов данных. Это обеспечивает поддержку всех байтоподобных объектов. Кроме того, это более эффективно и позволяет избежать дорогостоящего копирования.

  • bpo-31178: Исправлена ошибка конкатенации строк в редком пути обработки ошибок в модуле subprocess.

  • bpo-31350: Микрооптимизация asyncio._get_running_loop() для повышения производительности до 10%.

  • bpo-31170: expat: обновление libexpat с 2.2.3 до 2.2.4. Исправлено копирование частичных символов для ввода UTF-8 (ошибка libexpat 115): https://github.com/libexpat/libexpat/issues/115

  • bpo-29136: Добавлены наборы шифров TLS 1.3 и OP_NO_TLSv1_3.

  • bpo-29212: Исправлена работа потоков ThreadPoolExecutor из concurrent.futures.thread: теперь по умолчанию, если не указан thread_name_prefix, имена потоков не основаны на repr(). Потоки теперь идентифицируют себя как «ThreadPoolExecutor-y_n».

  • bpo-9146: Исправлено нарушение сегментации в _hashopenssl, когда в подключённой библиотеке OpenSSL недоступны стандартные хэш-функции, такие как md5. Например, в некоторых специальных средах сборки FIPS-140.

  • bpo-27144: Итераторы map() и as_completed() в concurrent.futures теперь не сохраняют ссылку на возвращаемые объекты.

  • bpo-10746: Исправление формирования неверных кодов типов PEP 3118 для целочисленных types в ctypes.

  • bpo-22536: Модуль подпроцесс теперь устанавливает имя файла при возникновении FileNotFoundError на системах POSIX, если не найден исполняемый файл или рабочая директория (cwd).

  • bpo-31249: concurrent.futures: метод WorkItem.run(), используемый ThreadPoolExecutor, теперь разрывает циклическую ссылку между объектом исключения и объектом WorkItem.

  • bpo-31247: xmlrpc.server теперь явно разрывает циклические ссылки при использовании sys.exc_info() в коде обработки исключений.

  • bpo-30102: Модули ssl и hashlib теперь вызывают OPENSSL_add_all_algorithms_noconf() для OpenSSL версии ниже 1.1.0. Эта функция определяет возможности процессора и включает оптимизации на некоторых архитектурах, таких как POWER8. Патч основан на исследовании Густаво Серры Скалета.

  • bpo-31185: Исправлены различные ошибки в модуле ускорения asyncio.

  • bpo-31135: ttk: исправлен метод destroy() классов LabeledScale и OptionMenu. Теперь вызывается родительский метод destroy(), даже если используемый атрибут не существует. Метод LabeledScale.destroy() также теперь явно очищает атрибуты label и scale, чтобы помочь сборщику мусора уничтожить все виджеты.

  • bpo-31107: Исправлено вычисление искажённого атрибута copyreg._slotnames() для классов, имя которых начинается с подчёркивания. Патч от Шейна Харви.

  • bpo-31061: Исправлен сбой при использовании asyncio и потоков.

  • bpo-30502: Исправлена обработка длинных OID в ssl. На основе патча Кристиана Хаймса.

  • bpo-30119: ftplib.FTP.putline() теперь выбрасывает ValueError для команд, содержащих CR или LF. Исправление от Dong-hee Na.

  • bpo-30595: multiprocessing.Queue.get() с таймаутом теперь опрашивает свой читатель в неблокирующем режиме, если удалось захватить блокировку, но захват занял больше времени, чем таймаут.

  • bpo-29403: Исправлена автоматическая спецификация (autospec) unittest.mock, чтобы она не выдавала ошибку на методах, привязанных к встроенным функциям. Патч от Aaron Gallagher.

  • bpo-30961: Исправлено уменьшение счётчика заимствованной ссылки (borrowed reference) в tracemalloc.

  • bpo-25684: Изменены ttk.OptionMenu радиокнопки так, чтобы они были уникальными для всех экземпляров OptionMenu.

  • bpo-30886: Исправлена multiprocessing.Queue.join_thread(): теперь она ждёт завершения потока, даже если поток был запущен тем же процессом, который создал очередь.

  • bpo-29854: Исправлено падение (segfault) в readline при использовании опции history-size библиотеки readline. Патч от Nir Soffer.

  • bpo-30319: socket.close() теперь игнорирует ошибку ECONNRESET.

  • bpo-30828: Исправлена запись за границы в asyncio.CFuture.remove_done_callback().

  • bpo-30807: signal.setitimer() может отключить таймер, если передано очень малое значение.

    Очень малые значения (например, 1e-6) являются допустимыми ненулевыми значениями для setitimer(), которая, согласно спецификации, принимает интервалы с разрешением в микросекундах. Однако на некоторых платформах наша процедура преобразования могла преобразовать 1e-6 в нулевой интервал, тем самым отключая таймер вместо его (пере)планирования.

  • bpo-30441: Исправлена ошибка при изменении os.environ во время итерации по нему.

  • bpo-30532: Исправлен парсер значений заголовков email, который в определённых случаях удалял сворачиваемые пробельные символы (folding white space).

  • bpo-30879: os.listdir() и os.scandir() теперь возвращают имена в виде байтов, если были вызваны с аргументом, подобным байтам (bytes-like).

  • bpo-30746: Запрещён символ ‘=’ в именах переменных окружения в os.putenv() и os.spawn*().

  • bpo-29755: Исправлено семейство функций lgettext() в модуле gettext. Теперь они всегда возвращают байты.

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

  • bpo-31294: Исправлен неполный фрагмент кода в примерах ZeroMQSocketListener и ZeroMQSocketHandler, выполнена их адаптация для Python 3.

  • bpo-21649: Добавлены ссылки на RFC 7525 и рекомендации Mozilla по серверному TLS в документацию по SSL.

  • bpo-30803: Уточнена документация по проверке истинности значений. Оригинальный патч от Петера Томассена.

ТестыTests

  • bpo-31320: Подавление traceback в test_ssl

  • bpo-25674: Удаление ssl-теста sha256.tbs-internet.com

  • bpo-30715: Учтены изменения ALPN-колбэка для OpenSSL 1.1.0f. Последняя версия ведёт себя как OpenSSL 1.0.2 и больше не прерывает рукопожатие.

  • bpo-30822: regrtest: Исключение tzdata из regrtest –all. При запуске набора тестов с параметром –use=all / -u all исключать tzdata, так как из-за него test_datetime выполняется слишком долго (15–20 минут на некоторых сборочных фермах), что приводит к тайм-ауту на некоторых сборочных фермах. Также исправлен парсер командной строки regrtest, чтобы можно было передавать -u extralargefile для запуска test_zipfile64.

СборкаBuild

  • bpo-30854: Исправление ошибки компиляции при сборке с –without-threads. Патч от Masayuki Yamamoto.

Windows

  • bpo-30389: Добавлено обнаружение Visual Studio 2017 в distutils на Windows.

  • bpo-31340: Переход на сборку с MSVC v141 (входит в Visual Studio 2017)

  • bpo-30581: os.cpu_count() теперь возвращает правильное количество процессоров в Windows, когда число логических процессоров больше 64.

  • bpo-30731: Добавлен отсутствующий xmlns в python.manifest для соответствия схеме.

IDLE

  • bpo-31493: Контекст кода IDLE – исправление таймеров обновления кода и шрифта.

    Отмена таймеров предотвращает появление предупреждающего сообщения при завершении test_idle.

  • bpo-31488: IDLE – обновление неключевых параметров в бывших классах расширений. При применении изменений в configdialog вызывать .reload для каждого класса функций. Изменение ParenMatch так, чтобы обновлённые параметры влияли на существующие экземпляры, прикреплённые к существующим окнам редактора.

  • bpo-31477: IDLE – улучшение записи rstrip в документации. Удаление завершающих пробелов удаляет больше, чем просто пробелы. Многострочные строковые литералы не пропускаются.

  • bpo-31480: IDLE – обеспечение прохождения тестов с отключённым по умолчанию расширением zzdummy.

  • bpo-31421: Документирование того, как IDLE запускает программы tkinter. IDLE вызывает tcl/tk update в фоновом режиме, чтобы сделать живое

    взаимодействие и экспериментирование с приложениями tkinter намного проще.

  • bpo-31414: IDLE – исправление тестов поля ввода tk путём предварительного удаления. Добавление в целочисленное поле ввода отличается от удаления и вставки, потому что int('') завершится ошибкой.

  • bpo-31051: Перегруппировка GenPage диалога конфигурации IDLE в разделы Window, Editor и Help.

  • bpo-30617: IDLE – Добавление докстрингов и тестов для подкласса outwin редактора.

    Перенос некоторых данных и функций из класса на уровень модуля. Патч от Cheryl Sabella.

  • bpo-31287: IDLE – не изменять tkinter.message в test_configdialog.

  • bpo-27099: Преобразование встроенных 'расширений' 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: IDLE: Выделение класса HighPage(Frame) из ConfigDialog. Патч от Cheryl Sabella.

  • bpo-31001: Добавление тестов для вкладки highlight в configdialog. Патч от Cheryl Sabella.

  • bpo-31205: IDLE: Выделение класса KeysPage(Frame) из ConfigDialog. Слегка изменённые тесты продолжают проходить. Патч от Cheryl Sabella.

  • bpo-31130: IDLE – устранение утечек в test_configdialog. Первоначальный патч от Victor Stinner.

  • bpo-31002: Добавление тестов для вкладки keys в configdialog. Патч от Cheryl Sabella.

  • bpo-19903: IDLE: Подсказки вызовов используют inspect.signature вместо inspect.getfullargspec. Это улучшает подсказки для встроенных функций, преобразованных для использования Argument Clinic. Патч от Louie Lu.

  • bpo-31083: IDLE – добавление наброска класса TabPage в configdialog. Обновление существующих классов в соответствии с наброском. Первоначальный патч от Cheryl Sabella.

  • bpo-31050: Выделение класса GenPage(Frame) из ConfigDialog. Слегка изменённые тесты продолжают проходить. Патч от Cheryl Sabella.

  • bpo-31004: IDLE – Выделение класса FontPage(Frame) из ConfigDialog.

    Слегка изменённые тесты продолжают проходить. Исправлены общие тесты. Патч в основном от Cheryl Sabella.

  • bpo-30781: IDLE – использование ttk виджетов в ConfigDialog. Патчи от Terry Jan Reedy и Cheryl Sabella.

  • bpo-31060: IDLE – завершить перегруппировку методов ConfigDialog. Группировка методов, относящихся к каждой вкладке и кнопкам, поможет писать тесты и улучшать вкладки, а также позволит разделить группы на классы.

  • bpo-30853: IDLE – Выделение класса VarTrace из ConfigDialog.

    Трассировщики экземпляров управляют парами, состоящими из переменной tk и функции обратного вызова. Когда трассировка включена, установка переменной вызывает функцию. Покрытие тестами нового класса составляет 100%.

  • bpo-31003: IDLE – добавить больше тестов для вкладки General.

  • bpo-30993: IDLE – Улучшение страницы шрифтов configdialog и тестов.

    В configdialog: Документирование причинно-следственных связей в докстринге create_font_tab. Упрощение некоторых имён атрибутов. Перенос вызовов set_samples в var_changed_font (идея от Cheryl Sabella). Перенос связанных функций в позиции после функции создания виджетов.

    В test_configdialog: Исправление test_font_set так, чтобы он не зависел от порядка. Исправление переименованного test_indent_scale, чтобы он тестировал виджет. Корректировка тестов для переноса вызова set_samples. Добавление тестов для функций загрузки. Размещение всех тестов шрифтов в одном классе и тестов отступов табуляции в другом. За исключением двух строк, эти тесты полностью покрывают связанные функции.

  • bpo-30981: IDLE – добавить больше тестов страницы шрифтов configdialog.

  • bpo-28523: IDLE – заменить ‘colour’ на ‘color’ в configdialog.

  • bpo-30917: Добавить тесты для idlelib.config.IdleConf. Увеличить покрытие с 46% до 96%. Патч от Louie Lu.

  • bpo-30934: Документирование деталей покрытия для тестов idlelib.

    • Добавление раздела в idlelib/idle-test/README.txt.

    • Включение проверки, что ветви выполняются в обе стороны.

    • Исключение кода, специфичного для IDLE, который не выполняется во время модульных тестов.

  • bpo-30913: IDLE – документировать tk Vars, методы и виджеты ConfigDialog в docstrings. Это упростит улучшение диалога и разделение класса. Оригинальный патч от Cheryl Sabella.

  • bpo-30899: IDLE – добавить тесты для подклассов ConfigParser в config. Патч от Louie Lu.

  • bpo-30881: IDLE – добавить docstrings в browser.py. Патч от Cheryl Sabella.

  • bpo-30851: IDLE – удалить неиспользуемые переменные в configdialog. Одна dублируется, другая устанавливается, но пользователи не могут её изменить. Патч от Cheryl Sabella.

  • bpo-30870: IDLE – в диалоге настроек выбирать шрифт с помощью клавиш Вверх, Вниз, а также мыши. Начальный патч от Louie Lu.

  • bpo-8231: IDLE – вызывать config.IdleConf.GetUserCfgDir только один раз.

  • bpo-30779: 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: IDLE – configdialog – добавить docstrings и исправить комментарии. Патч от Cheryl Sabella.

  • bpo-30495: IDLE – улучшить textview с помощью docstrings, имён по PEP8 и большего количества тестов. Патч от Cheryl Sabella.

  • bpo-30723: IDLE – внести несколько улучшений в parenmatch. Добавить стиль ‘parens’ для подсветки открывающей и закрывающей скобок. Сделать стиль ‘default’, который не является по умолчанию, синонимом ‘opener’. Сделать задержку времени одинаковой для всех стилей. Добавить справку для вкладки расширений диалога настроек, включая справку для parenmatch. Добавить новые тесты. Оригинальный патч от Charles Wohlganger.

  • bpo-30674: IDLE – добавить docstrings в модуль grep. Патч от Cheryl Sabella

  • bpo-21519: Базовый диалог настройки клавиш IDLE теперь правильно обнаруживает dубликаты. Оригинальный патч от Saimadhav Heblikar.

  • bpo-29910: IDLE больше не удаляет символ после закомментирования области с помощью сочетания клавиш. Добавить return 'break' для этого и других потенциальных конфликтов между IDLE и стандартными привязками клавиш.

  • bpo-30728: Пересмотреть и изменить имена в idlelib.configdialog. Привести имена методов и атрибутов к нижнему регистру. Заменить ‘colour’ на ‘color’, расшифровать слишком криптические имена, удалить лишние подчёркивания. Заменить import * на конкретные импорты. Патчи от Cheryl Sabella.

  • bpo-6739: IDLE – проверять введённые пользователем последовательности клавиш, пытаясь привязать их с помощью tk. Добавить тесты для всех 3 функций валидации. Оригинальный патч от G Polo. Тесты добавлены Cheryl Sabella.

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

  • bpo-30983: Команды интеграции с gdb (py-bt и т.д.) теперь работают и на оптимизированных разделяемых сборках. PEP 523 ввёл _PyEval_EvalFrameDefault, который встраивает PyEval_EvalFrameEx в неотладочных разделяемых сборках. Это нарушало возможность использования py-bt, py-up и некоторых других интеграций gdb, специфичных для Python. Проблема исправлена путём поиска только фреймов _PyEval_EvalFrameDefault в python-gdb.py. Оригинальный патч от Bruno “Polaco” Penteado.

Python 3.6.2 финальнаяPython 3.6.2 final

Дата выпуска: 2017-07-17

Изменений по сравнению с кандидатом в релиз 2 нет.

Python 3.6.2 кандидат в релизы 2Python 3.6.2 release candidate 2

Дата выпуска: 2017-07-07

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

  • bpo-30730: Предотвращено внедрение переменных окружения в подпроцессе на Windows. Предотвращена передача других переменных окружения и аргументов командной строки.

  • bpo-30694: Обновление копии expat с версии 2.2.0 до 2.2.1 для исправления множества уязвимостей, включая: CVE-2017-9233 (бесконечный цикл отказа в обслуживании внешних сущностей), CVE-2016-9063 (целочисленное переполнение, повторное исправление), CVE-2016-0718 (исправление регрессий, вызванных исправлением CVE-2016-0718 в версии 2.2.0) и CVE-2012-0876 (противодействие хеш-флудингу с помощью SipHash). Примечание: уязвимость CVE-2016-5300 (использование специфичных для ОС источников энтропии, таких как getrandom) не затрагивает Python, поскольку Python уже получает энтропию от ОС для установки секрета expat через XML_SetHashSalt().

  • bpo-30500: Исправлена urllib.parse.splithost() для корректного разбора фрагментов. Например, splithost('//127.0.0.1#@evil.com/') теперь корректно возвращает 127.0.0.1 хост, вместо того чтобы рассматривать @evil.com как хост в аутентификации (login@host).

Python 3.6.2 кандидат в релизы 1Python 3.6.2 release candidate 1

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

Ядро и встроенные модулиCore and Builtins

  • bpo-30682: Убрано слишком строгое утверждение, которое приводило к ошибке для некоторых f-строк, например, eval("f'\n'") и eval("f'\r'").

  • bpo-30604: co_extra_freefuncs больше не привязан к потоку, чтобы избежать аварийных завершений.

  • bpo-29104: Исправлен парсинг обратных слешей в f-строках.

  • bpo-27945: Исправлены различные ошибки сегментации со словарём при изменении входных коллекций во время поиска, вставки или сравнения. Основано на исправлениях от Duane Griffin и Tim Mitchell.

  • bpo-25794: Исправлены type.__setattr__() и type.__delattr__() для неинтернированных имён атрибутов. Основано на патче от Eryk Sun.

  • bpo-30039: Если KeyboardInterrupt возникает в момент, когда интерпретатор находится в процессе возобновления цепочки вложенных вызовов 'yield from' или 'await', исключение теперь корректно доставляется во внутренний фрейм.

  • bpo-12414: sys.getsizeof() для объекта code теперь возвращает размеры, включающие структуру code и размеры объектов, на которые он ссылается. Патч от Dong-hee Na.

  • bpo-29949: Исправлена регрессия использования памяти для объектов set и frozenset.

  • bpo-29935: Исправлены сообщения об ошибках в методе index() кортежа, списка и deque при передаче индексов неверного типа.

  • bpo-29859: Показываются корректные сообщения об ошибках при сбое любого из вызовов pthread_* в thread_pthread.h.

  • bpo-28876: bool(range) работает, даже если len(range) вызывает OverflowError.

  • bpo-29600: Исправлена обёртка возвращаемых значений корутины в StopIteration.

  • bpo-28856: Исправлена недоработка: формат %b для bytes должен поддерживать объекты, следующие протоколу буфера.

  • bpo-29714: Исправлена регрессия: форматирование bytes могло завершаться ошибкой при наличии нулевых байтов внутри.

  • bpo-29478: Если указано max_line_length=None при использовании политики Compat32, этот параметр больше не игнорируется. Патч от Mircea Cosbuc.

БиблиотекаLibrary

  • bpo-30616: Функциональный API перечисления (enum) позволяет создавать пустые перечисления. Исправление от Dong-hee Na

  • bpo-30038: Исправлено состояние гонки между доставкой сигнала и файловым дескриптором пробуждения. Патч от Nathaniel Smith.

  • bpo-23894: lib2to3 теперь распознаёт строки rb'...' и f'...'.

  • bpo-23890: unittest.TestCase.assertRaises() теперь вручную разрывает циклические ссылки, чтобы объекты не оставались в памяти дольше, чем ожидается.

  • bpo-30149: inspect.signature() теперь поддерживает вызываемые объекты с параметрами переменного числа аргументов, обёрнутыми с помощью partialmethod. Исправление от Dong-hee Na.

  • bpo-30645: Исправлено вычисление пути в imp.load_package() для случаев, когда пакет распространяется только в виде байткода. Патч от Alexandru Ardelean.

  • bpo-29931: Исправлена проверка сравнения для объектов ipaddress.ip_interface. Патч от Sanjay Sundaresan.

  • bpo-30605: re.compile() больше не вызывает BytesWarning при компиляции экземпляра bytes с неправильно расположенным модификатором внутри строки. Патч от Roy Williams.

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

БиблиотекаLibrary

  • bpo-24484: Избежать состояния гонки при очистке в multiprocessing (#2159)

  • bpo-28994: Трассировка (traceback) больше не отображается для SystemExit, возникшего в колбэке, зарегистрированном через atexit.

  • bpo-30508: Не логировать исключения при вызове метода “cancel()” задачи/future.

  • bpo-28556: Обновления модуля typing: добавлен generic AsyncContextManager, добавлена поддержка ContextManager для всех версий. Оригинальные PR от Jelle Zijlstra и Ivan Levkivskyi.

  • bpo-29870: Исправлена утечка SSL-сокетов при прерывании соединения в реализации asyncio/ssl. Патч от Michaël Sghaïer.

  • bpo-29743: Закрытие транспорта во время рукопожатия (handshake) приводит к утечке открытого сокета. Патч от Nikolay Kim.

  • bpo-27585: Исправлена отмена ожидания (waiter) в asyncio.Lock. Патч от Mathieu Sornay.

  • bpo-30418: На Windows subprocess.Popen.communicate() теперь также игнорирует EINVAL на stdin.write(), если дочерний процесс ещё работает, но уже закрыл канал.

  • bpo-29822: inspect.isabstract() теперь работает во время __init_subclass__. Патч от Nate Soares.

  • bpo-29581: ABCMeta.__new__ теперь принимает **kwargs, что позволяет абстрактным базовым классам использовать именованные параметры в __init_subclass__. Патч от Nate Soares.

  • bpo-30557: faulthandler теперь корректно фильтрует и отображает коды исключений в Windows.

  • bpo-30378: Исправлена проблема, из-за которой logging.handlers.SysLogHandler не мог обрабатывать IPv6-адреса.

  • bpo-29960: Сохранение состояния генератора, когда _random.Random.setstate() вызывает исключение. Патч от Bryan Olson.

  • bpo-30414: Фоновый поток _feed в multiprocessing.Queue не выходит из главного цикла при исключении.

  • bpo-30003: Исправлена обработка escape-символов в кодировке HZ. На основе патча от Ma Lin.

  • bpo-30301: Исправлен AttributeError при использовании SimpleQueue.empty() с методами запуска spawn и forkserver.

  • bpo-30329: imaplib и poplib теперь перехватывают ошибку Windows WSAEINVAL (код 10022) на shutdown(SHUT_RDWR): была предпринята недопустимая операция. Эта ошибка иногда возникает на SSL-соединениях.

  • bpo-30375: Предупреждения, выдаваемые при компиляции регулярного выражения, теперь всегда указывают на строку в коде пользователя. Ранее они могли указывать внутрь модуля re, если возникали из групп или условных конструкций.

  • bpo-30048: Исправлена ситуация, когда Task.cancel() мог игнорироваться, если задача выполняет корутину и корутина вернула управление без дополнительных await.

  • bpo-30266: contextlib.AbstractContextManager теперь поддерживает анти-регистрацию путём установки __enter__ = None или __exit__ = None, следуя шаблону, введённому в bpo-25958. Патч от Jelle Zijlstra.

  • bpo-30298: Ослаблено условие выдачи предупреждений об устаревании для встроенных модификаторов. Теперь разрешено несколько последовательных встроенных модификаторов в начале шаблона (например, '(?i)(?s)...'). В подробном режиме пробелы и комментарии теперь допускаются до и между встроенными модификаторами (например, '(?x) (?i) (?s)...').

  • bpo-29990: Исправлена проверка диапазона в декодере GB18030. Исходный патч от Ma Lin.

  • bpo-26293: Изменение вызвано поломкой zipfile. (См. также: bpo-29094)

  • bpo-30243: Удалены методы __init__ сканера и кодировщика _json. Их неправильное использование могло приводить к утечкам памяти или сбоям. Теперь объекты сканера и кодировщика полностью инициализируются в методах __new__.

  • bpo-30185: Избежание трассировок KeyboardInterrupt во вспомогательном процессе forkserver при получении Ctrl-C.

  • bpo-28556: Различные обновления модуля typing: добавлен тип typing.NoReturn, используется WrapperDescriptorType, мелкие исправления ошибок. Оригинальные PR от Jim Fasarakis-Hilliard и Ivan Levkivskyi.

  • bpo-30205: Исправлен getsockname() для непривязанных AF_UNIX-сокетов на Linux.

  • bpo-30070: Исправлены утечки и сбои при обработке ошибок в модуле parser.

  • bpo-30061: Исправлены сбои в методах IOBase __next__() и readlines(), когда readline() или __next__() соответственно возвращают объект, не поддерживающий определение размера. Исправлены возможные другие ошибки, вызванные отсутствием проверки результатов PyObject_Size(), PySequence_Size() или PyMapping_Size().

  • bpo-30017: Разрешено многократное вызов метода close() у объекта записи zip-записи. Запись в закрытый writer теперь всегда вызывает ValueError.

  • bpo-30068: _io._IOBase.readlines теперь сначала проверяет, закрыт ли файл, если указана подсказка (hint).

  • bpo-29694: Исправлено состояние гонки в pathlib mkdir с флагом parents=True. Патч от Armin Rigo.

  • bpo-29692: Исправлено произвольное разрывание цепочки исключений RuntimeError в contextlib.contextmanager. Патч от Siddharth Velankar.

  • bpo-29998: Pickling и копирование ImportError теперь сохраняют атрибуты name и path.

  • bpo-29953: Исправлены утечки памяти в методе replace() объектов datetime и time при передаче аргумента fold вне допустимого диапазона.

  • bpo-29942: Исправлен сбой в itertools.chain.from_iterable при обнаружении длинных последовательностей пустых итераций.

  • bpo-27863: Исправлено множество сбоев в ElementTree, вызванных состояниями гонки и неверными типами.

  • bpo-28699: Исправлена ошибка в пулах multiprocessing.pool: если исключение возникает в самом начале итерации, оно может быть проглочено или привести к зависанию программы. Патч от Davin Potts и Xiang Zhang.

  • bpo-25803: Избежание некорректных ошибок, вызываемых Path.mkdir(exist_ok=True), когда ОС отдаёт приоритет ошибкам EACCES над EEXIST.

  • bpo-29861: Освобождение ссылок на задачи, их аргументы и результаты сразу после завершения в multiprocessing.Pool.

  • bpo-29884: faulthandler: восстановление старого sigaltstack при завершении. Патч от Christophe Zeitouny.

  • bpo-25455: Исправлены сбои в repr рекурсивных буферизированных файлоподобных объектов.

  • bpo-29800: Исправлены сбои в partial.__repr__, если ключи partial.keywords не являются строками. Патч от Michael Seifert.

  • bpo-29742: get_extra_info() вызывает исключение, если вызывается на закрытом ssl-транспорте. Патч от Nikolay Kim.

  • bpo-8256: Исправлена возможная ошибка или сбой input(), если атрибуты 'encoding' или 'errors' sys.stdin или sys.stdout не установлены или не являются строками.

  • bpo-28298: Исправлена ошибка, из-за которой массивы ‘Q’, ‘L’ и ‘I’ не принимали большие целые числа (объекты с __int__) в качестве элементов. Исправление от Oren Milman.

  • bpo-28231: Модуль zipfile теперь принимает path-like объекты для внешних путей.

  • bpo-26915: Методы index() и count() collections.abc.Sequence теперь при сравнении сначала проверяют идентичность, а затем равенство.

  • bpo-29615: SimpleXMLRPCDispatcher больше не привязывает KeyError (или любое другое исключение) к исключениям, возникшим в диспетчеризованных методах. Исправление от Petr Motejlek.

  • bpo-30177: path.resolve(strict=False) больше не обрезает путь после первого элемента, отсутствующего в файловой системе. Патч от Antoine Pietri.

IDLE

  • bpo-15786: Исправлено несколько проблем с окном автодополнения IDLE. Теперь должны работать: щелчок по элементам списка, использование полосы прокрутки, выбор элемента нажатием Enter. Зависания на MacOSX больше не должны происходить. Патч от Louie Lu.

  • bpo-25514: Добавлен подраздел документации о невозможности запуска IDLE. Всплывающее сообщение об отсутствии соединения направляет пользователей в этот раздел.

  • bpo-30642: Исправлены утечки ссылок в тестах IDLE. Патчи от Louie Lu и Terry Jan Reedy.

  • bpo-30495: Добавлены докстринги для textview.py и приведены имена к стандарту PEP8. Патчи от Cheryl Sabella и Terry Jan Reedy.

  • bpo-30290: Help-about: приведены имена к стандарту PEP8, добавлены тесты. Покрытие увеличено до 100%. Патчи от Louie Lu, Cheryl Sabella и Terry Jan Reedy.

  • bpo-30303: Добавлена опция _utest в textview; добавлены новые тесты. Покрытие увеличено до 100%. Патчи от Louie Lu и Terry Jan Reedy.

C API

  • bpo-27867: Функция PySlice_GetIndicesEx() больше не заменяется макросом, если Py_LIMITED_API не установлен.

СборкаBuild

  • bpo-29941: Add --with-assertions configure flag to explicitly enable C assert() checks. Defaults to off. --with-pydebug implies --with-assertions.

  • bpo-28787: Fix out-of-tree builds of Python when configured with --with--dtrace.

  • bpo-29243: Предотвращает ненужную пересборку Python во время make test, make install и некоторых других целей make при настройке с --enable-optimizations.

  • bpo-23404: Больше не выполняется повторная генерация сгенерированных файлов на основе времени изменения файла: теперь это действие явное. Замените make touch на make regen-all.

  • bpo-29643: Исправлено: --enable-optimization не работало.

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

  • bpo-30176: Добавлены отсутствующие константы, связанные с атрибутами, в документацию curses.

  • bpo-30052: теперь цели ссылок для bytes() и bytearray() указывают на соответствующие определения типов, а не на записи встроенных функций. Используйте bytes и bytearray для ссылки на последние.

    Чтобы гарантировать автоматическое применение этого и будущих обновлений перекрёстных ссылок, ежедневные сборки документации теперь отключают стандартное кэширование вывода в Sphinx.

  • bpo-26985: Добавлена отсутствующая информация об объекте кода в документацию inspect.

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

  • bpo-29367: python-gdb.py теперь также поддерживает объекты method-wrapper (wrapperobject).

ТестыTests

  • bpo-30357: test_thread: setUp() теперь использует support.threading_setup() и support.threading_cleanup() для ожидания завершения потоков, чтобы избежать случайных побочных эффектов на следующие тесты. Первоначальное исправление от Grzegorz Grzywacz.

  • bpo-30197: Улучшены функции swap_attr() и swap_item() в модуле test.support. Теперь они работают, когда удаляется заменённый атрибут или элемент внутри оператора with. Старое значение атрибута или элемента (или None, если его не существует) теперь будет присваиваться цели предложения "as", если оно есть.

Windows

  • bpo-30687: Поиск msbuild.exe в Windows при сборке вместо vcvarsall.bat.

  • bpo-30450: Процесс сборки на Windows больше не зависит от Subversion, вместо этого он получает внешний код из GitHub через Python-скрипт. Если Python 3.6 не найден в системе (через py -3.6), NuGet используется для загрузки копии 32-битного Python.

Python 3.6.1 финальнаяPython 3.6.1 final

Дата выпуска: 2017-03-21

Ядро и встроенные модулиCore and Builtins

  • bpo-29723: Изменение инициализации sys.path[0] для bpo-29139 вызвало регрессию, выявив несоответствие в том, как инициализируется sys.path при выполнении __main__ из zip-файла, каталога или другого места импорта. Интерпретатор теперь последовательно избегает добавления родительского каталога места импорта в sys.path, и гарантирует, что никакие другие записи sys.path не изменяются непреднамеренно при вставке места импорта, указанного в командной строке.

СборкаBuild

  • bpo-27593: исправление формата информации git, используемой в sys.version

  • Исправление несовместимого комментария в python.h

Python 3.6.1 кандидат в релизы 1Python 3.6.1 release candidate 1

Дата выпуска: 2017-03-04

Ядро и встроенные модулиCore and Builtins

  • bpo-28893: Установка правильного __cause__ для ошибок о недопустимых ожидаемых объектах, возвращаемых из __aiter__ и __anext__.

  • bpo-29683: Исправления выделения памяти в _PyCode_SetExtra. Патч от Brian Coleman.

  • bpo-29684: Исправление незначительной регрессии PyEval_CallObjectWithKeywords. Должен вызывать TypeError, если kwargs не является dict. Но мог приводить к сбою сегментации при args=NULL и kwargs не является dict.

  • bpo-28598: Поддержка вызова __rmod__ для подклассов str перед str.__mod__. Патч от Martijn Pieters.

  • bpo-29607: Исправление вычисления stack_effect для CALL_FUNCTION_EX. Патч от Matthieu Dartiailh.

  • bpo-29602: Исправлена некорректная обработка знаковых нулей в конструкторе complex для подклассов complex и для входных данных, имеющих метод __complex__. Патч от Serhiy Storchaka.

  • bpo-29347: Исправлено возможное разыменование неопределённых указателей при создании объектов weakref.

  • bpo-29438: Исправлена проблема use-after-free (использование после освобождения) в словаре совместного использования ключей (key sharing dict).

  • bpo-29319: Предотвращение перезаписи sys.path[0] функцией RunMainFromImporter.

  • bpo-29337: Исправлено возможное BytesWarning при сравнении объектов кода. Предупреждения могли выдаваться во время компиляции.

  • bpo-29327: Исправлено падение при передаче итерируемого именованного аргумента в sorted().

  • bpo-29034: Исправлена утечка памяти и use-after-free в модуле os (path_converter).

  • bpo-29159: Исправлена регрессия в bytes(x), когда x.__index__() вызывает исключение.

  • bpo-28932: Не включать <sys/random.h>, если его не существует.

  • bpo-25677: Исправление позиционирования каретки синтаксической ошибки для блоков с отступами. Основано на патче Майкла Лейзелла.

  • bpo-29000: Исправлено форматирование байтов восьмеричных чисел с нулевым заполнением в альтернативной форме.

  • bpo-26919: На Android системные данные теперь всегда кодируются/декодируются в/из UTF-8, а не в кодировке локали, чтобы избежать несоответствий с os.fsencode() и os.fsdecode(), которые уже используют UTF-8.

  • bpo-28991: functools.lru_cache() была подвержена трудновоспроизводимой ошибке реентерабельности, возникающей из-за модифицированной функции len().

  • bpo-28739: f-строковые выражения больше не принимаются в качестве докстрингов и функцией ast.literal_eval(), даже если они не содержат выражений.

  • bpo-28512: Исправлена установка атрибута offset у SyntaxError функциями PyErr_SyntaxLocationEx() и PyErr_SyntaxLocationObject().

  • bpo-28918: Исправлена кросс-компиляция xxlimited, когда Python был собран с определённым Py_DEBUG.

  • bpo-28731: Оптимизирован _PyDict_NewPresized() для создания словаря правильного размера. Увеличена скорость словарного литерала с константными ключами до 30%.

БиблиотекаLibrary

  • bpo-29169: Обновление zlib до версии 1.2.11.

  • bpo-29623: Разрешено использование путеподобного объекта в качестве единственного аргумента в ConfigParser.read(). Патч Дэвида Эллиса.

  • bpo-28963: Исправлен выход за границы итерации в asyncio.Future.remove_done_callback, реализованном на C.

  • bpo-29704: asyncio.subprocess.SubprocessStreamProtocol больше не закрывается до того, как будут закрыты все каналы.

  • bpo-29271: Исправлено, что Task.current_task и Task.all_tasks, реализованные на C, принимают аргумент None, как и их реализация на чистом Python.

  • bpo-29703: Исправлен asyncio для поддержки создания новых циклов событий в дочерних процессах.

  • bpo-29376: Исправлена ошибка утверждения в threading._DummyThread.is_alive().

  • bpo-28624: Добавлен тест, проверяющий, что параметр cwd в Popen() принимает объекты PathLike. Патч Саяна Чоудхури.

  • bpo-28518: Транзакция теперь неявно начинается перед DML-инструкцией. Патч Авива Паливоды.

  • bpo-29532: Изменение словаря kwarg, переданного в functools.partial(), больше не влияет на объект partial после его создания.

  • bpo-29110: Исправлена утечка объекта файла в aifc.open(), когда файл задан как путь в файловой системе и не является допустимым форматом AIFF. Исправление от Anthony Zhang.

  • bpo-28556: Различные обновления модуля typing: typing.Counter, typing.ChainMap, улучшенное кэширование ABC и другое. Оригинальные PR от Jelle Zijlstra, Ivan Levkivskyi, Manuel Krebber и Łukasz Langa.

  • bpo-29100: Исправлена регрессия в datetime.fromtimestamp(), появившаяся в Python 3.6.0: проверка минимального и максимального годов.

  • bpo-29519: Исправлено появление исключений в weakref при завершении работы интерпретатора при редком сочетании multiprocessing и пользовательских кодеков.

  • bpo-29416: Предотвращение бесконечного цикла в pathlib.Path.mkdir

  • bpo-29444: Исправлен выход за границы буфера в методе group() объекта совпадения. На основе патча от WGH.

  • bpo-29335: Исправлен subprocess.Popen.wait(), когда дочерний процесс завершился в состоянии остановлен, а не завершён (например, под ptrace).

  • bpo-29290: Исправлена регрессия в argparse, из-за которой сообщения помощи переносились на неразрывных пробелах.

  • bpo-28735: Исправлено сравнение mock.MagicMock с mock.ANY.

  • bpo-29316: Восстановлен предварительный статус модуля typing, добавлено соответствующее примечание в документацию. Исправление от Ivan L.

  • bpo-29219: Исправлена бесконечная рекурсия в repr неинициализированных экземпляров ctypes.CDLL.

  • bpo-29011: Исправлено важное упущение: добавлен Deque в модуль typing.

  • bpo-28969: Исправлено состояние гонки в C-реализации functools.lru_cache. KeyError мог возникнуть, когда кэшированная функция с полным кэшем одновременно вызывалась из разных потоков с одинаковыми незакэшированными аргументами.

  • bpo-29142: В urllib.request суффиксы в переменной окружения no_proxy с ведущими точками снова могут соответствовать связанным именам хостов (например, .b.c соответствует a.b.c). Исправление от Milan Oberkirch.

  • bpo-28961: Исправлен вспомогательный класс unittest.mock._Call: больше не игнорируется параметр name. Исправление от Jiajun Huang.

  • bpo-29203: functools.lru_cache() теперь соблюдает PEP 468 и сохраняет порядок именованных аргументов. f(a=1, b=2) теперь кешируется отдельно от f(b=2, a=1), поскольку оба вызова потенциально могут давать разные результаты.

  • bpo-15812: inspect.getframeinfo() теперь корректно показывает первую строку контекста. Патч от Sam Breese.

  • bpo-29094: Смещения в ZIP-файле, созданном с внешним объектом файла и режимами «w» и «x», теперь отсчитываются от начала файла.

  • bpo-29085: Разрешено random.Random.seed() использовать высококачественные случайные данные ОС вместо pid и времени.

  • bpo-29061: Исправлена ошибка в secrets.randbelow(), из-за которой функция зависала при передаче отрицательного аргумента. Исправление от Brendan Donegan.

  • bpo-29079: Предотвращён бесконечный цикл в pathlib.resolve() на Windows

  • bpo-13051: Исправлены ошибки рекурсии в большом или изменённом curses.textpad.Textbox. Основано на патче от Tycho Andersen.

  • bpo-29119: Исправлены слабые ссылки в чистой реализации Python метода move_to_end() в collections.OrderedDict. Предложено Andra Bogildea.

  • bpo-9770: Предикаты curses.ascii теперь корректно работают с отрицательными целыми числами.

  • bpo-28427: Старые ключи не должны удалять новые значения из WeakValueDictionary при сборке из другого потока.

  • bpo-28923: Удалены артефакты редактора из Tix.py.

  • bpo-29055: Улучшено сообщение об ошибке при пустой выборке в random.choice() путём подавления исходного исключения.

  • bpo-28871: Исправлен сбой при освобождении глубокого ElementTree.

  • bpo-19542: Исправлены ошибки в WeakValueDictionary.setdefault() и WeakValueDictionary.pop(), когда сборка мусора происходит в другом потоке.

  • bpo-20191: Исправлен сбой в resource.prlimit() при передаче последовательности, которая не владеет своими элементами, в качестве лимитов.

  • bpo-28779: multiprocessing.set_forkserver_preload() приводил к сбою процесса forkserver, если предварительно загруженный модуль создавал экземпляры некоторых объектов multiprocessing, таких как блокировки.

  • bpo-28847: dbm.dumb теперь поддерживает чтение файлов только для чтения и больше не записывает индексный файл, если он не был изменён.

  • bpo-26937: Метод chown() класса tarfile.TarFile теперь не завершается ошибкой, если модуль grp не может быть импортирован (например, на платформе Android).

IDLE

  • bpo-29071: IDLE подсвечивает префиксы f-строк (но не недопустимые префиксы ur).

  • bpo-28572: Добавлено 10% к покрытию тестами test_configdialog в IDLE. Обновлено и расширено описание системы конфигурации.

Windows

  • bpo-29579: Удалён readme.txt из установщика

  • bpo-29326: Игнорируются пустые строки в файлах ._pth (исправление от Alexey Izbyshev)

  • bpo-28164: Корректная обработка специальных имён файлов консоли (исправление от Eryk Sun)

  • bpo-29409: Реализация PEP 529 для io.FileIO (патч от Eryk Sun)

  • bpo-29392: Предотвращение сбоя при передаче недопустимых аргументов в модуль msvcrt.

  • bpo-25778: winreg некорректно обрезает строки (патч от Eryk Sun)

  • bpo-28896: WindowsRegistryFinder объявлен устаревшим и по умолчанию отключён.

C API

  • bpo-27867: функция PySlice_GetIndicesEx() заменяется макросом, если Py_LIMITED_API не задан или задан значением между 0x03050400 и 0x03060000 (не включительно), или 0x03060100 и выше.

  • bpo-29083: Исправлено объявление некоторых функций публичного API. PyArg_VaParse() и PyArg_VaParseTupleAndKeywords() были недоступны в ограниченном API. PyArg_ValidateKeywordArguments(), PyArg_UnpackTuple() и Py_BuildValue() были недоступны в ограниченном API версии < 3.3, когда определён PY_SSIZE_T_CLEAN.

  • bpo-29058: все расширения стабильного API, добавленные после Python 3.2, теперь доступны, только если Py_LIMITED_API установлен в значение PY_VERSION_HEX минимальной версии Python, поддерживающей это API.

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

  • bpo-28929: Добавлена ссылка на исходный файл документации на GitHub.

  • bpo-25008: Документировать smtpd.py как фактически устаревший и добавить указатель на aiosmtpd, стороннюю замену на основе asyncio.

  • bpo-26355: Добавлена каноническая ссылка в заголовке каждой страницы на соответствующую основную версию документации. Исправление от Matthias Bussonnier.

  • bpo-29349: Исправлен синтаксис Python 2 в коде для сборки документации.

ТестыTests

  • bpo-28087: Пропуск test_asyncore и test_eintr при сбоях poll на macOS. Пропуск некоторых тестов select.poll при работе на macOS из-за нерешённых проблем с системной функцией poll на некоторых версиях macOS.

  • bpo-29571: чтобы соответствовать поведению флага re.LOCALE, test_re.test_locale_flag теперь использует locale.getpreferredencoding(False) для определения кодировки-кандидата для тестового регулярного выражения (что позволяет корректно пропускать тест, когда кодировка локали по умолчанию является многобайтовой).

  • bpo-28950: запрещено комбинировать -j0 с -T/-l в аргументах командной строки regrtest.

  • bpo-28683: исправлены тесты, которые используют bind() для unix-сокета и вызывают PermissionError на Android для пользователя без прав root.

  • bpo-26939: добавлена функция support.setswitchinterval() для исправления зависания test_functools на эмуляторе Android armv7 qemu.

СборкаBuild

  • bpo-27593: sys.version и функции модуля platform python_build(), python_branch() и python_revision() теперь используют информацию из git, а не из hg при сборке из репозитория.

  • bpo-29572: обновлены установщики Windows и OS X для использования OpenSSL 1.0.2k.

  • bpo-26851: установлены флаги компиляции и компоновки для Android.

  • bpo-28768: исправлено неявное объявление функции _setmode. Патч от Masayuki Yamamoto

  • bpo-29080: Убирает жёсткую зависимость от hg.exe в PCBuild/build.bat

  • bpo-23903: Добавлены пропущенные имена в PC/python3.def.

  • bpo-28762: lockf() доступна на Android API level 24, но макрос F_LOCK не определён в android-ndk-r13.

  • bpo-28538: исправлена ошибка компиляции, возникающая из-за того, что if_nameindex() доступна на Android API level 24, но структура if_nameindex не определена.

  • bpo-20211: не добавлять каталог для установки заголовочных файлов C и каталог для установки библиотек объектного кода в пути поиска кросскомпиляции. Оригинальный патч от Thomas Petazzoni.

  • bpo-28849: не определять sys.implementation._multiarch на Android.

Python 3.6.0 финальнаяPython 3.6.0 final

Дата выпуска: 2016-12-23

Изменений по сравнению с кандидатом в релиз 2 нет.

Python 3.6.0. Кандидат в релиз 2Python 3.6.0 release candidate 2

Дата релиза: 2016-12-16

Ядро и встроенные модулиCore and Builtins

  • bpo-28147: Исправлена утечка памяти в split-table словарях: setattr() не должен преобразовывать комбинированную таблицу в split-таблицу. Патч написан INADA Naoki.

  • bpo-28990: Исправлена проблема зависания asyncio SSL при закрытии соединения до завершения рукопожатия. (Патч от HoHo-Ho)

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

  • bpo-28770: Исправлен python-gdb.py для fastcalls.

Windows

  • bpo-28896: Устарел WindowsRegistryFinder.

СборкаBuild

  • bpo-28898: Предотвращены ошибки сборки gdb из-за переопределения HAVE_LONG_LONG.

Python 3.6.0. Кандидат в релиз 1Python 3.6.0 release candidate 1

Дата релиза: 2016-12-06

Ядро и встроенные модулиCore and Builtins

  • bpo-23722: Вместо того чтобы молча создавать класс, не поддерживающий вызов super() без аргументов в методах, теперь, если новая запись пространства имён __classcell__ не передаётся в type.__new__, это приводит к DeprecationWarning и классу, который поддерживает super() без аргументов.

  • bpo-28797: Изменение __dict__ класса внутри метода __set_name__ дескриптора, используемого в этом классе, больше не препятствует вызову метода __set_name__ других дескрипторов.

  • bpo-28782: Исправлена ошибка в реализации yield from при проверке, является ли следующая инструкция YIELD_FROM. Регрессия внесена WORDCODE (bpo-26647).

БиблиотекаLibrary

  • bpo-27030: Неизвестные экранирования в шаблоне замены re.sub() снова разрешены. Но они по-прежнему считаются устаревшими и будут отключены в 3.7.

  • bpo-28835: Исправление регрессии, внесённой в warnings.catch_warnings(): теперь вызывается warnings.showwarning(), если она была переопределена внутри менеджера контекста.

  • bpo-27172: Для облегчения обновления с версии 2.7 ранее задокументированное объявление inspect.getfullargspec() устаревшим было отменено. Это решение может быть пересмотрено после прекращения официальной поддержки ветки Python 2.7.

  • bpo-26273: Добавлены новые константы socket.TCP_CONGESTION (Linux 2.6.13) и socket.TCP_USER_TIMEOUT (Linux 2.6.37). Исправление от Omar Sandoval.

  • bpo-24142: Чтение повреждённого конфигурационного файла оставляло configparser в недопустимом состоянии. Исходный патч от Florian Höch.

  • bpo-28843: Исправлена обработка __traceback__ исключений в C-задаче asyncio.

C API

  • bpo-28808: PyUnicode_CompareWithASCIIString() теперь никогда не вызывает исключений.

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

  • bpo-23722: Справочник по модели данных и раздел о портировании в руководстве What’s New теперь охватывают дополнительную обработку __classcell__, необходимую для полной поддержки пользовательскими метаклассами PEP 487 и вызова super() без аргументов.

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

  • bpo-28023: Исправлена проблема: python-gdb.py не поддерживал новую реализацию dict.

Python 3.6.0. Бета-версия 4Python 3.6.0 beta 4

Дата выпуска: 2016-11-21

Ядро и встроенные модулиCore and Builtins

  • bpo-28532: Показывать sys.version при двукратном указании флага -V.

  • bpo-27100: Оператор with теперь сначала проверяет __enter__, а затем __exit__. Это даёт менее запутанные сообщения об ошибках, если оба метода отсутствуют. Патч от Джонатана Эллингтона.

  • bpo-28746: Исправлен метод файлового дескриптора set_inheritable() на платформах, не имеющих команд ioctl FIOCLEX и FIONCLEX.

  • bpo-26920: Исправлена проблема получения кодировки локали при инициализации интерпретатора на платформах без langinfo.

  • bpo-28648: Исправлен сбой в Py_DecodeLocale() в отладочной сборке на Mac OS X при декодировании астральных символов. Патч от Xiang Zhang.

  • bpo-19398: Лишний слеш больше не добавляется к компонентам sys.path в случае пустых компонентов PYTHONPATH во время компиляции.

  • bpo-28665: Увеличена производительность байткода STORE_DEREF на 40%.

  • bpo-28583: PyDict_SetDefault не объединял split-таблицу при необходимости. Патч от Xiang Zhang.

  • bpo-27243: Изменено PendingDeprecationWarning -> DeprecationWarning. Согласно решению в обсуждении, возвращение корутины из __aiter__ должно приводить к PendingDeprecationWarning в 3.5 и к DeprecationWarning в 3.6.

  • bpo-26182: Исправлена утечка ссылок в коде, который вызывает DeprecationWarning.

  • bpo-28721: Исправлена обработка распространения StopAsyncIteration в асинхронных генераторах aclose() и athrow().

БиблиотекаLibrary

  • bpo-28752: Восстановлены методы __reduce__() объектов datetime.

  • bpo-28727: Объекты регулярных выражений _sre.SRE_Pattern, создаваемые re.compile(), стали сравнимыми (только операторы == и !=). Это изменение должно исправить bpo-18383: дублирование фильтров предупреждений при перезагрузке модуля warnings (обычно делается только в юнит-тестах).

  • bpo-20572: Незадокументированный параметр endtime метода subprocess.Popen.wait теперь вызывает DeprecationWarning.

  • bpo-25659: В ctypes предотвращён сбой при вызове методов from_buffer() и from_buffer_copy() для абстрактных классов, таких как Array.

  • bpo-19717: Path.resolve() теперь успешно выполняется для несуществующих путей. Патч от Vajrasky Kok.

  • bpo-28563: Исправлена возможная DoS-атака и выполнение произвольного кода при обработке выбора множественных форм в модуле gettext. Парсер выражений теперь поддерживает точный синтаксис GNU gettext.

  • bpo-28387: Исправлен возможный сбой в деаллокаторе _io.TextIOWrapper, когда сборщик мусора вызывается в другом потоке. Основано на патче от Sebastian Cufre.

  • bpo-28600: Оптимизирован loop.call_soon.

  • bpo-28613: Исправлено get_event_loop(): возвращает текущий цикл при вызове из корутин/колбэков.

  • bpo-28634: Исправлен asyncio.isfuture() для поддержки unittest.Mock.

  • bpo-26081: Исправлена утечка ссылок в _asyncio.Future.__iter__().throw.

  • bpo-28639: Исправлено inspect.isawaitable: всегда возвращает bool. Патч от Justin Mayfield.

  • bpo-28652: Методы цикла теперь отклоняют типы сокетов, которые они не поддерживают.

  • bpo-28653: Исправлена утечка ссылок в functools.lru_cache.

  • bpo-28703: Исправлено asyncio.iscoroutinefunction для обработки объектов Mock.

  • bpo-28704: Исправлен create_unix_server для поддержки Path-подобных объектов (PEP 519).

  • bpo-28720: Добавлен collections.abc.AsyncGenerator.

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

  • bpo-28513: Документирован интерфейс командной строки zipfile.

ТестыTests

  • bpo-28666: Теперь test.support.rmtree может удалять каталоги, недоступные для записи или чтения.

  • bpo-23839: Различные кеши теперь очищаются перед запуском каждого тестового файла.

СборкаBuild

  • bpo-10656: Исправлена сборка вне дерева исходников на AIX. Патч от Tristan Carel и Michael Haubenwallner.

  • bpo-26359: Переименовать –with-optimiations в –enable-optimizations.

  • bpo-28676: Предотвращает предупреждение о пропущенном объявлении 'getentropy' на macOS. Патч от Gareth Rees.

Python 3.6.0 бета 3Python 3.6.0 beta 3

Дата выпуска: 2016-10-31

Ядро и встроенные модулиCore and Builtins

  • bpo-28128: Предупреждение об устаревании для недопустимых escape-последовательностей в str и byte теперь выводит более точную информацию о месте ошибки. Патч от Serhiy Storchaka и Eric Smith.

  • bpo-28509: dict.update() больше не выделяет излишне много памяти.

  • bpo-28426: Исправлен потенциальный сбой в PyUnicode_AsDecodedObject() в отладочной сборке.

  • bpo-28517: Исправлена ошибка «off-by-one» в peephole-оптимизаторе, из-за которой сохранялся недостижимый код.

  • bpo-28214: Улучшено отображение исключений для проблемных атрибутов __set_name__.

  • bpo-23782: Исправлена возможная утечка памяти в _PyTraceback_Add() и потеря исключения в PyTraceBack_Here().

  • bpo-28471: Исправлено падение с сообщением «Python memory allocator called without holding the GIL» в socket.setblocking.

БиблиотекаLibrary

  • bpo-27517: Компрессор и декомпрессор LZMA больше не вызывают исключения при двукратном получении пустых данных. Патч от Benjamin Fogle.

  • bpo-28549: Исправлен сегфолт в curses.addch() с ncurses6.

  • bpo-28449: tarfile.open() с режимом «r» или «r:» теперь сначала пытается открыть tar-файл со сжатием, а затем без сжатия. В противном случае с ignore_zeros=True был 50% шанс неудачи.

  • bpo-23262: Модуль webbrowser теперь поддерживает Firefox 36+ и производные браузеры. Основано на патче от Oleg Broytman.

  • bpo-27939: Исправлены ошибки в tkinter.ttk.LabeledScale и tkinter.Scale, вызванные внутренним представлением шкалы в Tk как значения с плавающей запятой. tkinter.IntVar теперь работает, если для базовой переменной Tk установлено значение с плавающей запятой.

  • bpo-18844: Различные способы задания весов для random.choices() теперь дают одинаковые последовательности результатов.

  • bpo-28255: calendar.TextCalendar().prmonth() больше не выводит пробел в начале новой строки после печати календаря месяца. Патч от Xiang Zhang.

  • bpo-20491: Класс textwrap.TextWrapper теперь учитывает неразрывные пробелы. Основано на патче от Kaarle Ritvanen.

  • bpo-28353: os.fwalk() больше не завершается ошибкой на битых ссылках.

  • bpo-28430: Исправлена ошибка в итераторе реализованного на C asyncio.Future: он не принимал значение, отличное от None, при вызове it.send(val).

  • bpo-27025: Сгенерированные имена для виджетов Tkinter теперь начинаются с префикса “!” для удобочитаемости.

  • bpo-25464: Исправлен HList.header_exists() в модуле tkinter.tix путём добавления обходного пути для ошибки библиотеки Tix.

  • bpo-28488: shutil.make_archive() больше не добавляет запись “./” в ZIP-архив.

  • bpo-25953: re.sub() теперь вызывает ошибку для недопустимой числовой ссылки на группу в шаблоне замены, даже если шаблон не найден в строке. Сообщение об ошибке для недопустимой ссылки на группу теперь содержит индекс группы и позицию ссылки. На основе патча от SilentGhost.

  • bpo-18219: Оптимизация csv.DictWriter для большого количества столбцов. Патч от Mariatta Wijaya.

  • bpo-28448: Исправление: реализованный на C asyncio.Future не работал в Windows.

  • bpo-28480: Исправление ошибки сборки модуля socket при отключённой многопоточности.

  • bpo-24452: Добавлена поддержка Chrome в webbrowser на Mac OS X.

  • bpo-20766: Исправлена утечка ссылок в pdb при обработке обработчиков SIGINT.

  • bpo-28492: Исправление способа возбуждения исключения StopIteration в _asyncio.Future.

  • bpo-28500: Исправление asyncio для корректной обработки сборки мусора асинхронных генераторов из другого потока.

  • bpo-26923: Исправлено asyncio.Gather: отказ от отмены после завершения всех дочерних задач. Патч от Johannes Ebke.

  • bpo-26796: Не настраивать количество рабочих потоков для исполнителя пула потоков по умолчанию. Первоначальный патч от Hans Lawrenz.

  • bpo-28544: Реализация asyncio.Task на C.

Windows

  • bpo-28522: Исправление некорректного перераспределения буфера в getpathp.c

СборкаBuild

  • bpo-28444: Исправляет отсутствующие модули расширений при кросс-компиляции.

  • bpo-28208: Обновление сборки Windows и установщиков OS X для использования SQLite 3.14.2.

  • bpo-28248: Обновляет сборку Windows и установщики OS X для использования OpenSSL 1.0.2j.

ТестыTests

  • bpo-26944: Исправление test_posix для Android, где ‘id -G’ полностью неверен или отсутствует эффективный gid.

  • bpo-28409: regrtest: исправлен парсер аргументов командной строки.

Python 3.6.0 бета 2Python 3.6.0 beta 2

Дата выпуска: 2016-10-10

Ядро и встроенные модулиCore and Builtins

  • bpo-28183: Оптимизация и очистка итерации по словарю.

  • bpo-26081: Добавлена реализация asyncio.Future на C. Оригинальный патч от Yury Selivanov.

  • bpo-28379: Добавлены проверки корректности и тесты для PyUnicode_CopyCharacters(). Исправление от Xiang Zhang.

  • bpo-28376: Тип итератора длинных диапазонов теперь зарегистрирован как Iterator. Исправление от Oren Milman.

  • bpo-28376: Создание экземпляров range_iterator вызовом типа range_iterator теперь устарело. Патч от Oren Milman.

  • bpo-28376: Конструктор range_iterator теперь проверяет, что шаг (step) не равен 0. Исправление от Oren Milman.

  • bpo-26906: Разрешение специальных методов неинициализированного типа теперь вызывает неявную инициализацию типа вместо ошибки.

  • bpo-18287: PyType_Ready() теперь проверяет, что tp_name не равен NULL. Исходное исправление от Niklas Koep.

  • bpo-24098: Исправлена возможная аварийная остановка при изменении AST во время его компиляции.

  • bpo-28201: Словарь уменьшает возможность второго конфликта в хеш-таблице, когда хеши имеют одинаковые младшие биты.

  • bpo-28350: Строковые константы с нулевым символом больше не интернируются.

  • bpo-26617: Исправлена аварийная остановка при запуске сборщика мусора во время выполнения колбэков слабых ссылок.

  • bpo-27942: Строковые константы теперь интернируются рекурсивно в кортежах и неизменяемых множествах.

  • bpo-21578: Исправлено вводящее в заблуждение сообщение об ошибке при вызове ImportError с недопустимыми именованными аргументами.

  • bpo-28203: Исправлен неверный тип в сообщении об ошибке complex(1.0, {2:3}). Исправление от Soumya Sharma.

  • bpo-28086: Одиночный позиционный аргумент-вариадик подтипа кортежа передавался без изменений в функцию, определённую на C. Теперь он преобразуется в точный кортеж.

  • bpo-28214: Теперь __set_name__ ищется в классе, а не в экземпляре.

  • bpo-27955: Запасной вариант – чтение устройства /dev/urandom, если системный вызов getrandom() завершается с EPERM, например, при блокировке SECCOMP.

  • bpo-28192: Не импортировать readline в изолированном режиме.

  • Обновление внутренних баз данных Unicode до версии 9.0.0.

  • bpo-28131: Исправлена регрессия в zipimport.compile_source(). zipimport должен использовать тот же уровень оптимизации, что и интерпретатор.

  • bpo-28126: Замена Py_MEMCPY на memcpy(). Visual Studio может корректно оптимизировать memcpy().

  • bpo-28120: исправлен dict.pop() для разделённого словаря при попытке удалить «ожидающий ключ» (ещё не вставленный в разделённую таблицу). Исправление от Xiang Zhang.

  • bpo-26182: Выдаётся DeprecationWarning, когда ключевые слова async и await используются в качестве имени переменной/атрибута/класса/функции.

БиблиотекаLibrary

  • bpo-27998: Исправлена поддержка путей в виде bytes в os.scandir() на Windows. Исправление от Eryk Sun.

  • bpo-28317: Дизассемблер теперь декодирует аргумент FORMAT_VALUE.

  • bpo-26293: Исправлена запись ZIP-файлов, которые начинаются не с начала файла. Смещения в ZIP-файле теперь отсчитываются от начала архива в соответствии со спецификацией.

  • bpo-28380: Функции unittest.mock Mock с autospec теперь корректно поддерживают assert_called, assert_not_called и assert_called_once.

  • bpo-27181: удалить statistics.geometric_mean и отложить до версии 3.7.

  • bpo-28229: Модуль lzma теперь поддерживает pathlib.

  • bpo-28321: Исправлена запись символов не из BMP в бинарном формате в plistlib.

  • bpo-28225: Модуль bz2 теперь поддерживает pathlib. Первоначальное исправление от Ethan Furman.

  • bpo-28227: gzip теперь поддерживает pathlib. Исправление от Ethan Furman.

  • bpo-27358: Оптимизировано слияние аргументов **kwargs и улучшено сообщение об ошибке при передаче не-отображения в качестве **kwargs.

  • bpo-28257: Улучшено сообщение об ошибке при передаче неитерируемого объекта в качестве позиционного аргумента-вариадика. Добавлен опкод BUILD_TUPLE_UNPACK_WITH_CALL.

  • bpo-28322: Исправлены возможные сбои при распаковке объектов itertools из некорректных данных pickle. Основано на патче от John Leitch.

  • bpo-28228: imghdr теперь поддерживает pathlib.

  • bpo-28226: compileall теперь поддерживает pathlib.

  • bpo-28314: Исправлено объявление функции (флаги C) для метода getiterator() класса xml.etree.ElementTree.Element.

  • bpo-28148: Прекращение использования localtime() и gmtime() в модуле time.

    Внедрён платформенно-независимый API _PyTime_localtime, аналогичный POSIX localtime_r, но доступный на всех платформах. Патч от Ed Schouten.

  • bpo-28253: Исправлены функции календаря для крайних месяцев: 0001-01 и 9999-12.

    Методы itermonthdays() и itermonthdays2() перереализованы таким образом, что они не вызывают itermonthdates(), что может привести к переполнению или потере точности datetime.date.

  • bpo-28275: Исправлена возможная ошибка использования после освобождения (use-after-free) в методах decompress() классов LZMADecompressor и BZ2Decompressor. Оригинальный патч от John Leitch.

  • bpo-27897: Исправлена возможная аварийная остановка в sqlite3.Connection.create_collation() при передаче недопустимого строкоподобного объекта в качестве имени. Патч от Xiang Zhang.

  • bpo-18844: Теперь random.choices() использует k как аргумент только по ключу (keyword-only argument), чтобы повысить читаемость в типовых случаях и привести к единообразию с сигнатурами, используемыми в других языках.

  • bpo-18893: Исправлена некорректная обработка исключений в Lib/ctypes/macholib/dyld.py. Патч от Madison May.

  • bpo-27611: Исправлена поддержка корневого окна по умолчанию в модуле tkinter.tix. Добавлен параметр master в конструктор DisplayStyle.

  • bpo-27348: В модуле traceback восстановлено форматирование сообщений об исключениях вида «Исключение: None». Это исправляет регрессию, появившуюся в 3.5a2.

  • bpo-25651: Разрешено использование ложных значений в параметре msg функции subTest().

  • bpo-27778: Исправлена утечка памяти в os.getrandom(), когда вызов getrandom() прерывается сигналом, а обработчик сигнала возбуждает исключение Python.

  • bpo-28200: Исправлена утечка памяти в Windows в модуле os (исправлена функция path_converter()).

  • bpo-25400: RobotFileParser теперь корректно возвращает значения по умолчанию для crawl_delay и request_rate. Первоначальный патч от Peter Wirtz.

  • bpo-27932: Предотвращена утечка памяти в win32_ver().

  • Исправлена ошибка UnboundLocalError в socket._sendfile_use_sendfile.

  • bpo-28075: Добавлена проверка на ERROR_ACCESS_DENIED в реализации os.stat() для Windows. Патч от Eryk Sun.

  • bpo-22493: Предупреждение, возникающее при использовании встроенных флагов в середине регулярного выражения, теперь содержит (усечённый) шаблон регулярного выражения. Патч от Tim Graham.

  • bpo-25270: Предотвращено возбуждение SystemError функцией codecs.escape_encode() при передаче пустой последовательности байтов.

  • bpo-28181: Получение antigravity через HTTPS. Патч от Kaartic Sivaraam.

  • bpo-25895: Включение поддержки схем URL WebSocket в urllib.parse.urljoin. Патч от Gergely Imreh и Markus Holtermann.

  • bpo-28114: Исправлен сбой в parse_envlist(), когда env содержит байтовые строки. Патч от Eryk Sun.

  • bpo-27599: Исправлено переполнение буфера в binascii.b2a_qp() и binascii.a2b_qp().

  • bpo-27906: Исправлено истощение приёма сокетов при высоком TCP-трафике. Патч от Kevin Conway.

  • bpo-28174: Обработка случая, когда SO_REUSEPORT не поддерживается должным образом. Патч от Seth Michael Larson.

  • bpo-26654: Добавлена проверка functools.partial в asyncio.Handle.__repr__. Патч от iceboy.

  • bpo-26909: Исправлен медленный ввод-вывод каналов в asyncio. Патч от INADA Naoki.

  • bpo-28176: Исправлено состояние гонки колбэков в asyncio.SelectorLoop.sock_connect.

  • bpo-27759: Исправлено некорректное удержание недействительных файловых дескрипторов селекторами. Патч от Mark Williams.

  • bpo-28368: Отказ от наблюдения за процессами, если к наблюдателю дочерних процессов не прикреплён цикл. Патч от Vincent Michel.

  • bpo-28369: Возбуждать RuntimeError, когда файловый дескриптор транспорта используется с add_reader, add_writer и т.д.

  • bpo-28370: Ускорение asyncio.StreamReader.readexactly. Патч от Коренберг Марк.

  • bpo-28371: Помечено как устаревшее передачу asyncio.Handles в run_in_executor.

  • bpo-28372: Исправлено asyncio для поддержки форматирования не-Python корутин.

  • bpo-28399: Удаление UNIX-сокета из файловой системы перед привязкой. Патч от Коренберг Марк.

  • bpo-27972: Запрещено задачам ожидать самих себя.

Windows

  • bpo-28402: Добавлены подписанные файлы каталогов для stdlib в Windows.

  • bpo-28333: Включена поддержка Unicode для приглашений ps1/ps2 и input(). (Патч от Eryk Sun)

  • bpo-28251: Улучшения справочных руководств в Windows.

  • bpo-28110: launcher.msi использует разные коды продукта для 32-битной и 64-битной версий

  • bpo-28161: Открытие CON для записи завершается ошибкой

  • bpo-28162: WindowsConsoleIO.readall() завершается ошибкой, если первая строка начинается с Ctrl+Z

  • bpo-28163: WindowsConsoleIO.fileno() передаёт неверные флаги в _open_osfhandle

  • bpo-28164: _PyIO_get_console_type не работает для различных путей

  • bpo-28137: Переименование файла пути Windows в ._pth

  • bpo-28138: Файл ._pth в Windows должен разрешать импорт site

C API

  • bpo-28426: Объявлены устаревшими недокументированные функции PyUnicode_AsEncodedObject(), PyUnicode_AsDecodedObject(), PyUnicode_AsDecodedUnicode() и PyUnicode_AsEncodedUnicode().

СборкаBuild

  • bpo-28258: Исправлена сборка с эстонской локалью (цели python-config и distclean в Makefile). Патч от Arfrever Frehtes Taifersar Arahesis.

  • bpo-26661: setup.py теперь определяет системную libffi с multiarch wrapper.

  • bpo-15819: Удаляет избыточную опцию каталога поиска include для сборки вне дерева исходников.

ТестыTests

  • bpo-28217: Добавлен модуль _testconsole для тестирования ввода с консоли.

Python 3.6.0 бета 1Python 3.6.0 beta 1

Дата выпуска: 2016-09-12

Ядро и встроенные модулиCore and Builtins

  • bpo-23722: Ячейка __class__, используемая super() без аргументов, теперь инициализируется из type.__new__ вместо __build_class__, поэтому методы класса, полагающиеся на это, теперь будут корректно работать при вызове из методов метакласса во время создания класса. Патч от Martin Teichmann.

  • bpo-25221: Исправлен повреждённый результат PyLong_FromLong(0) при компиляции Python с NSMALLPOSINTS = 0.

  • bpo-27080: Реализована поддержка форматирования для PEP 515. Первоначальный патч от Chris Angelico.

  • bpo-27199: В tarfile добавлена возможность задавать размер буфера copyfileobj для повышения пропускной способности. Патч от Jason Fried.

  • bpo-27948: В f-строках обратные слеши разрешены только внутри фигурных скобок (где находятся выражения). Это критическое изменение по сравнению с альфа-версиями 3.6, где обратные слеши допускались в любом месте f-строки. Кроме того, выражения внутри f-строк должны заключаться в фигурные скобки, а не в управляющие последовательности, такие как f'\x7b"hi"\x7d'.

  • bpo-28046: Удаление платформенно-зависимых каталогов из sys.path.

  • bpo-28071: Добавлен ранний выход при вычислении разности с пустым множеством.

  • bpo-25758: Предотвращает излишнее кодирование имени файла в zipimport (исправление от Eryk Sun)

  • bpo-25856: Атрибут __module__ классов расширений и функций теперь интернируется. Это приводит к более компактным данным pickle при использовании протокола 4.

  • bpo-27213: Переработаны опкоды CALL_FUNCTION* для получения более короткого и эффективного байткода. Патч от Demur Rumed, дизайн от Serhiy Storchaka, рецензировано Serhiy Storchaka и Victor Stinner.

  • bpo-26331: Реализована поддержка токенизации для PEP 515. Патч от Georg Brandl.

  • bpo-27999: Использование «global после использования» теперь вызывает SyntaxError, то же самое для nonlocal. Патч от Ivan Levkivskyi.

  • bpo-28003: Реализация PEP 525 – Асинхронные генераторы.

  • bpo-27985: Реализация PEP 526 – Синтаксис аннотаций переменных. Патч от Ivan Levkivskyi.

  • bpo-26058: Добавлена новая приватная версия во встроенный тип dict, увеличиваемая при каждом создании словаря и каждом его изменении. Реализация PEP 509.

  • bpo-27364: Пара обратный слеш-символ, не являющаяся корректной escape-последовательностью, теперь генерирует DeprecationWarning. Патч от Emanuel Barry.

  • bpo-27350: Реализация dict изменена по образцу PyPy. Она стала более компактной и сохраняет порядок вставки. (Концепция разработана Raymond Hettinger, исправление от Inada Naoki.)

  • bpo-27911: Удалены лишние проверки ошибок в exec_builtin_or_dynamic().

  • bpo-27078: Добавлен опкод BUILD_STRING. Оптимизировано вычисление f-строк.

  • bpo-17884: Python теперь требует системы с inttypes.h и stdint.h.

  • bpo-27961: Требовать от платформ поддержки long long. Python уже много лет не компилировался без long long, так что это в основном формальность.

  • bpo-27355: Удалена поддержка Windows CE. Она никогда не была завершена, и Windows CE больше не является актуальной платформой для Python.

  • Реализация PEP 523.

  • bpo-27870: Сдвиг влево нуля на большое целое число больше не пытается выделить большие объёмы памяти.

  • bpo-25402: В преобразовании целого числа в десятичную строку улучшена оценка требуемой промежуточной памяти и удалена излишне строгая проверка переполнения. Патч от Serhiy Storchaka.

  • bpo-27214: В long_invert более аккуратно обрабатывается модификация объекта, возвращённого long_add, и удалена лишняя проверка для малых long. Спасибо Oren Milman за анализ и патч.

  • bpo-27506: Поддержка передачи аргумента «delete» метода bytes/bytearray.translate() по ключевому слову.

  • bpo-27812: Корректно очищается обратная ссылка на генератор из его фрейма, чтобы предотвратить аварийные остановки в frame.clear().

  • bpo-27811: Исправлена аварийная остановка при финализации корутины, которая не была ожидана (awaited), с включённым режимом «предупреждения как ошибки».

  • bpo-27587: Исправлена ещё одна проблема, найденная PVS-Studio: проверка нулевого указателя после использования 'def' в _PyState_AddModule(). Первоначальное исправление от Christian Heimes.

  • bpo-27792: Операция взятия остатка, применяемая к bool и другим подклассам int, теперь всегда возвращает int. Ранее тип результата зависел от входных значений. Патч от Xiang Zhang.

  • bpo-26984: int() теперь всегда возвращает экземпляр точного int.

  • bpo-25604: Исправлена незначительная ошибка в целочисленном истинном делении; эта ошибка могла потенциально приводить к результатам с ошибкой в один ulp на платформах с ненадёжными реализациями ldexp.

  • bpo-24254: Пространство имён определения класса теперь по умолчанию упорядоченное.

  • bpo-27662: Исправлена проверка переполнения в List_New: исходный код проверял Py_SIZE_MAX вместо корректной верхней границы Py_SSIZE_T_MAX. Патч от Xiang Zhang.

  • bpo-27782: Импорт модуля-расширения с несколькими фазами теперь корректно позволяет использовать поле m_methods для добавления функций уровня модуля в экземпляры типов, не являющихся модулями, возвращаемые из Py_create_mod. Исправление от Xiang Zhang.

  • bpo-27936: Функция round() принимала второй аргумент None для одних типов, но не для других. Исправлена несогласованность – теперь None принимается для всех числовых типов.

  • bpo-27487: Предупреждение, если аргумент подмодуля для «python -m» или runpy.run_module() найден в sys.modules после импорта родительских пакетов, но до выполнения подмодуля.

  • bpo-27157: Только сам type() теперь принимает форму с одним аргументом. Патч от Eryk Sun и Emanuel Barry.

  • bpo-27558: Исправлена SystemError в реализации оператора «raise». В совершенно новом потоке теперь возбуждается RuntimeError, так как нет активного исключения для повторного возбуждения. Исправление написано Xiang Zhang.

  • bpo-28008: Реализация PEP 530 – асинхронные включения.

  • bpo-27942: Исправлена утечка памяти в codeobject.c

БиблиотекаLibrary

  • bpo-28732: Исправлен сбой в os.spawnv() при отсутствии элементов в args.

  • bpo-28485: Всегда вызывать ValueError для отрицательного параметра compileall.compile_dir(workers=…), даже если многопоточность недоступна.

  • bpo-28037: Использовать sqlite3_get_autocommit() вместо ручной установки Connection->inTransaction.

  • bpo-25283: Атрибуты tm_gmtoff и tm_zone теперь доступны на всех платформах в возвращаемых значениях time.localtime() и time.gmtime().

  • bpo-24454: Группы объекта сопоставления регулярного выражения теперь доступны через __getitem__. “mo[x]” эквивалентно “mo.group(x)”.

  • bpo-10740: sqlite3 больше не выполняет неявный коммит открытой транзакции перед DDL-выражениями.

  • bpo-17941: Добавлен параметр module в collections.namedtuple().

  • bpo-22493: Инлайновые флаги теперь следует использовать только в начале регулярного выражения. Выдаётся предупреждение об устаревании, если они используются в середине регулярного выражения.

  • bpo-26885: xmlrpc теперь поддерживает десериализацию дополнительных типов данных, используемых реализацией Apache XML-RPC для чисел и None.

  • bpo-28070: Исправлен разбор инлайнового флага verbose в регулярных выражениях.

  • bpo-19500: Добавлено возобновление SSL-сессии на стороне клиента в модуль ssl.

  • bpo-28022: Устарели аргументы, связанные с ssl, в пользу SSLContext. Устаревание включает ручное создание SSLSocket и certfile/keyfile (или аналогичных) в ftplib, httplib, imaplib, smtplib, poplib и urllib.

  • bpo-28043: 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: Изменены некоторые RuntimeError в модуле zipfile на более подходящие типы. Улучшены некоторые сообщения об ошибках и отладочный вывод.

  • bpo-17909: json.load и json.loads теперь поддерживают бинарный ввод, закодированный как UTF-8, UTF-16 или UTF-32. Патч от Serhiy Storchaka.

  • bpo-27137: чистая реализация на Python для functools.partial теперь соответствует поведению ускоренной C-реализации в отношении создания подклассов, сериализации и текстового представления. Патч от Emanuel Barry и Serhiy Storchaka.

  • Исправлены возможные целочисленные переполнения и крахи в модуле mmap при нестандартных сценариях использования.

  • bpo-1703178: Исправлена возможность передачи опции –link-objects команде build_ext из distutils.

  • bpo-28019: itertools.count() больше не округляет нецелый шаг в диапазоне от 1.0 до 2.0 до 1.

  • bpo-18401: Pdb теперь поддерживает именованный аргумент ‘readrc’ для управления тем, следует ли читать файлы .pdbrc. Патч от Martin Matusiak и Sam Kimbrel.

  • bpo-25969: Обновлена грамматика lib2to3 для поддержки обобщённой распаковки, добавленной в Python 3.5.

  • bpo-14977: mailcap теперь соблюдает порядок строк в файлах mailcap (принцип «первое совпадение»), как того требует RFC 1542. Патч от Michael Lazar.

  • bpo-28082: Константы флагов re преобразованы в IntFlag.

  • bpo-28025: Все константы модуля ssl преобразованы в IntEnum и IntFlags. Свойства SSLContext теперь возвращают флаги и перечисления.

  • bpo-23591: Добавлены Flag, IntFlag и auto() в модуль enum.

  • bpo-433028: Добавлена поддержка модифицирующих диапазонов в регулярных выражениях.

  • bpo-24594: Выполняется проверка параметра persist при открытии базы данных MSI.

  • bpo-17582: xml.etree.ElementTree теперь сохраняет пробелы в атрибутах. (Патч от Duane Griffin. Проверено и одобрено Stefan Behnel.)

  • bpo-28047: Исправлен расчет длины строки, используемой для base64 CTE в новых политиках email.

  • bpo-27576: Исправлен порядок вызовов в OrderedDict.__init__().

  • email.generator.DecodedGenerator теперь поддерживает ключевое слово policy.

  • bpo-28027: Удалить недокументированные модули из Lib/plat-*: IN, CDROM, DLFCN, TYPES, CDIO и STROPTS.

  • bpo-27445: Не передавать str(_charset) в MIMEText.set_payload(). Патч от Claude Paroz.

  • bpo-24277: Новое API email больше не экспериментальное, документация переработана и переписана с акцентом на новое API.

  • bpo-22450: urllib теперь включает заголовок Accept: */* среди заголовков по умолчанию. Это делает результаты запросов REST API более последовательными и предсказуемыми, особенно при использовании прокси-серверов.

  • lib2to3.pgen3.driver.load_grammar() теперь создаёт стабильный файл кэша между запусками при одинаковом входном файле Grammar.txt независимо от настройки рандомизации хеша.

  • bpo-28005: Разрешить распространение ImportErrors в реализации кодировки.

  • bpo-26667: Поддержка path-подобных объектов в importlib.util.

  • bpo-27570: Избегать вызовов memcpy() и подобных с нулевой длиной и нулевыми указателями источника в модулях «ctypes» и «array».

  • bpo-22233: Разрывать строки заголовков email только по символам CR и LF, указанным в RFC, а не по произвольным концовкам строк Unicode. Также исправлена ошибка при парсинге HTTP-заголовков.

  • bpo-27331: Классы email.mime теперь все принимают необязательный аргумент policy.

  • bpo-27988: Исправлена некорректная мутация списка payload в email.iter_attachments.

  • bpo-16113: Добавлена поддержка SHA-3 и SHAKE в модуль hashlib.

  • Устранено предупреждение о тавтологическом сравнении указателей в _scproxy.c.

  • bpo-27776: Функция os.urandom() теперь блокируется на Linux 3.17 и новее до инициализации пула энтропии системного urandom для повышения безопасности. Это изменение является частью PEP 524.

  • bpo-27778: Предоставить системный вызов Linux getrandom() в качестве новой функции os.getrandom(). Это изменение является частью PEP 524.

  • bpo-27691: Исправлен разбор полей GEN_RID альтернативных имён субъекта в сертификатах X.509 в модуле ssl.

  • bpo-18844: Добавлена функция random.choices().

  • bpo-25761: Улучшено сообщение об ошибке при усечённых данных pickle в C-реализации unpickler. Теперь в некоторых случаях вызывается UnpicklingError вместо AttributeError и ValueError.

  • bpo-26798: Добавлен BLAKE2 (blake2b и blake2s) в hashlib.

  • bpo-26032: Оптимизирован поиск по шаблону в pathlib с помощью os.scandir(); теперь он примерно в 1,5–4 раза быстрее.

  • bpo-25596: Оптимизированы функции glob() и iglob() в модуле glob; теперь они примерно в 3–6 раз быстрее.

  • bpo-27928: Добавлен scrypt (функция формирования ключа на основе пароля) в модуль hashlib (требуется OpenSSL 1.1.0).

  • bpo-27850: Удаление 3DES из списка шифров по умолчанию модуля ssl для защиты от атаки sweet32 (CVE-2016-2183).

  • bpo-27766: Добавить ChaCha20 Poly1305 в список шифров по умолчанию в модуле ssl. (Требуется OpenSSL 1.1.0 или LibreSSL).

  • bpo-25387: Проверять возвращаемое значение winsound.MessageBeep.

  • bpo-27866: Добавлен метод SSLContext.get_ciphers() для получения списка всех включённых шифров.

  • bpo-27744: Добавлен AF_ALG (криптография ядра Linux) в модуль socket.

  • bpo-26470: Перенос модулей ssl и hashlib на OpenSSL 1.1.0.

  • bpo-11620: Исправлена поддержка SND_MEMORY в winsound.PlaySound. На основе патча от Tim Lesher.

  • bpo-11734: Добавлена поддержка 16-разрядных чисел с плавающей запятой стандарта IEEE 754 в модуль struct. На основе патча от Eli Stevens.

  • bpo-27919: Помечена опция extra_path в distutils packaging как устаревшая.

  • bpo-23229: Добавлены новые константы cmath: cmath.inf и cmath.nan для соответствия math.inf и math.nan, а также cmath.infj и cmath.nanj для соответствия формату complex repr.

  • bpo-27842: csv.DictReader теперь возвращает строки типа OrderedDict. (Автор: Steve Holden.)

  • Удалена поддержка передачи файлового дескриптора в os.access. Раньше это никогда не работало, но и исключения не вызывало.

  • bpo-12885: Исправлена ошибка в distutils при обнаружении символической ссылки.

  • bpo-27881: Исправлены возможные ошибки при установке sqlite3.Connection.isolation_level. Основано на патче Сян Чжана.

  • bpo-27861: Исправлен сбой в sqlite3.Connection.cursor(), когда фабрика создаёт не курсор. Патч Сян Чжана.

  • bpo-19884: Избегайте ложного вывода в OS X с Gnu Readline.

  • bpo-27706: Восстановлено детерминированное поведение random.Random().seed() для строковых начальных значений при использовании версии посева 1. Это позволяет последовательностям вызовов random() точно соответствовать тем, что были в Python 2. Патч Нофар Шнайдер.

  • bpo-10513: Исправлена регрессия в Connection.commit(). Операторы не должны сбрасываться после фиксации.

  • bpo-12319: Добавлена поддержка передачи с разделением на фрагменты (chunked transfer encoding) для запросов http.client.HTTPConnection. Класс urllib.request.AbstractHTTPHandler больше не требует заголовка Content-Length. Если HTTP-запрос имеет тело в виде файла или итератора, но без заголовка Content-Length, библиотека теперь использует chunked transfer-encoding.

  • Новая версия typing.py из https://github.com/python/typing: - Collection (только для 3.6) (bpo-27598) - Добавлен FrozenSet в __all__ (upstream #261) - исправлено падение в _get_type_vars() (upstream #259) - Удалено ограничение на dict в ForwardRef._eval_type (upstream #252)

  • bpo-27832: Сделать параметр _normalize конструктора Fraction только ключевым словом, так что Fraction(2, 3, 4) теперь вызывает TypeError.

  • bpo-27539: Исправлен ненормализованный результат Fraction.__pow__ в случае отрицательного показателя и отрицательного основания.

  • bpo-21718: cursor.description теперь доступен для запросов с CTE.

  • bpo-27819: В distutils sdists теперь на всех платформах по умолчанию создаются дистрибутивы в формате “gztar” (gzipped tar), если не указан параметр “formats”.

  • bpo-2466: posixpath.ismount теперь правильно распознаёт точки монтирования, доступ к которым у пользователя отсутствует.

  • bpo-9998: На Linux ctypes.util.find_library теперь ищет разделяемые библиотеки в LD_LIBRARY_PATH.

  • bpo-27573: Сообщение при выходе из code.interact теперь настраивается.

  • bpo-27930: Улучшено поведение logging.handlers.QueueListener. Спасибо Paulo Andrade и Petr Viktorin за анализ и патч.

  • bpo-6766: Добавлен распределённый подсчёт ссылок в multiprocessing для поддержки вложенности разделяемых значений / proxy-объектов.

  • bpo-21201: Улучшена читаемость сообщения об ошибке multiprocessing. Спасибо Wojciech Walczak за патч.

  • asyncio: Добавлены set_protocol / get_protocol в Transports.

  • bpo-27456: asyncio: установлен TCP_NODELAY по умолчанию.

IDLE

  • bpo-15308: Добавлена команда «прервать выполнение» (^C) в меню Shell. Патч от Roger Serwy, обновлён Bayard Randel.

  • bpo-27922: Прекращено мерцание GUI-виджетов в тестах IDLE на экране.

  • bpo-27891: Импорты в модулях idlelib теперь единообразно сгруппированы и отсортированы.

  • bpo-17642: Добавлены более крупные размеры шрифтов для проекции в аудитории.

  • Добавлена версия в заголовок окна справки IDLE.

  • bpo-25564: В разделе о различиях IDLE и консоли упомянуто, что использование exec означает, что __builtins__ определён для каждого оператора.

  • bpo-27821: Исправлена регрессия в 3.6.0a3, которая не позволяла выбрать пользовательские наборы клавиш, если не была определена пользовательская тема.

C API

  • bpo-26900: Excluded underscored names and other private API from limited API.

  • bpo-26027: Add support for path-like objects in PyUnicode_FSConverter() & PyUnicode_FSDecoder().

ТестыTests

  • bpo-27427: Additional tests for the math module. Patch by Francisco Couzo.

  • bpo-27953: Skip math and cmath tests that fail on OS X 10.4 due to a poor libm implementation of tan.

  • bpo-26040: Improve test_math and test_cmath coverage and rigour. Patch by Jeff Allen.

  • bpo-27787: Вызов gc.collect() перед проверкой каждого теста на «зависшие потоки», поскольку зависшие потоки являются слабыми ссылками.

СборкаBuild

  • bpo-27566: Исправляет цель clean в makefile заморозки (патч от Lisa Roach)

  • bpo-27705: Обновляет сообщение в validate_ucrtbase.py

  • bpo-27976: Deprecate building _ctypes with the bundled copy of libffi on non-OSX UNIX platforms.

  • bpo-27983: Отсутствие инструмента llvm-profdata при использовании clang, необходимого для PGO-линковки, теперь вызывает ошибку на этапе конфигурации, а не сборки, когда включён --with-optimizations. Также улучшена возможность поиска llvm-profdata на macOS и некоторых версиях Linux.

  • bpo-21590: Support for DTrace and SystemTap probes.

  • bpo-26307: Сборка profile-opt теперь применяет PGO ко встроенным модулям.

  • bpo-26359: Add the –with-optimizations flag to turn on LTO and PGO build support when available.

  • bpo-27917: Установлены триплеты платформы для сборок Android.

  • bpo-25825: 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: Fix LTO builds on OS X.

  • bpo-17128: Build OS X installer with a private copy of OpenSSL. Also provide a sample Install Certificates command script to install a set of root certificates from the third-party certifi module.

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

  • bpo-27952: Исправлена работа Tools/scripts/fixcid.py с Python 3 и текущим модулем «re», устранены некорректные экранирования обратной косой чертой в Python, а также исправлена ошибка разбора экранированных кавычек C.

Windows

  • bpo-28065: Update xz dependency to 5.2.2 and build it from source.

  • bpo-25144: Обеспечивает установку TargetDir до продолжения настраиваемой установки.

  • bpo-1602: Windows console doesn’t input or print Unicode (PEP 528)

  • bpo-27781: Change file system encoding on Windows to UTF-8 (PEP 529)

  • bpo-27731: Opt-out of MAX_PATH on Windows 10

  • bpo-6135: Adds encoding and errors parameters to subprocess.

  • bpo-27959: Adds oem encoding, alias ansi to mbcs, move aliasmbcs to codec lookup.

  • bpo-27982: The functions of the winsound module now accept keyword arguments.

  • bpo-20366: Build full text search support into SQLite on Windows.

  • bpo-27756: Добавлены новые иконки для файлов и процессов Python в Windows. Дизайн – Cherry Wang.

  • bpo-27883: Обновление sqlite до 3.14.1.0 на Windows.

Python 3.6.0 альфа 4Python 3.6.0 alpha 4

Дата выпуска: 2016-08-15

Ядро и встроенные модулиCore and Builtins

  • bpo-27704: Оптимизировано создание bytes и bytearray из байтоподобных объектов и итерируемых объектов. Скорость увеличена до 3 раз для коротких объектов. Оригинальный патч от Naoki Inada.

  • bpo-26823: Большие блоки повторяющихся строк в traceback теперь сокращаются как «[Предыдущая строка повторена еще {count} раз]» во встроенном отображении traceback. Патч от Emanuel Barry.

  • bpo-27574: Уменьшены накладные расходы на разбор именованных аргументов в функциях, реализованных с помощью Argument Clinic.

  • bpo-22557: Теперь импорт уже импортированных модулей выполняется до 2,5 раз быстрее.

  • bpo-17596: Добавлен <wincrypt.h> для поддержки сборки с Min GW.

  • bpo-17599: В Windows переименована внутренняя структура REPARSE_DATA_BUFFER для устранения конфликта с определением из Min GW.

  • bpo-27507: Добавлена проверка целочисленного переполнения в bytearray.extend(). Исправление от Xiang Zhang.

  • bpo-27581: Не полагаться на обёртывание для проверки переполнения в PySequence_Tuple(). Исправление от Xiang Zhang.

  • bpo-1621: Избегать знакового целочисленного переполнения в операциях со списками и кортежами. Патч от Xiang Zhang.

  • bpo-27419: Стандартная функция __import__() больше не ищет «__import__» в globals или builtins при импорте подмодулей или использовании «from import». Исправлена ошибка, приводившая к падению при выводе предупреждения о невозможности разрешения пакета из __spec__ или __package__.

  • bpo-27083: Учтена переменная окружения PYTHONCASEOK в Windows.

  • bpo-27514: Слишком много статически вложенных блоков теперь вызывает SyntaxError вместо SystemError.

  • bpo-27366: Реализован PEP 487 (Упрощённая настройка создания классов). При создании подкласса метод класса __init_subclass__ вызывается у базового класса. Дескрипторы инициализируются с помощью __set_name__ после создания класса.

БиблиотекаLibrary

  • bpo-26027: Добавлена поддержка PEP 519/__fspath__() в модули os и os.path. Включает код от Jelle Zijlstra. (См. также: bpo-27524)

  • bpo-27598: Добавлена коллекция Collections в collections.abc. Патч от Ivan Levkivskyi, документация от Neil Girdhar.

  • bpo-25958: Поддержка «анти-регистрации» специальных методов из различных ABC, таких как __hash__, __iter__ или __len__. Все они (и ещё несколько) могут быть установлены в None в классе-реализации, и поведение будет таким, как если бы метод вообще не был определён. (Ранее этот механизм существовал только для __hash__, чтобы сделать изменяемые классы нехешируемыми.) Код предоставлен Andrew Barnert и Ivan Levkivskyi.

  • bpo-16764: Поддержка именованных аргументов для zlib.decompress(). Патч от Xiang Zhang.

  • bpo-27736: Предотвращение segfault после повторной инициализации интерпретатора из-за проблемы со счётчиком ссылок, внесённой в код для bpo-27038 в версии 3.6.0a3. Патч от Xiang Zhang.

  • bpo-25628: Параметры verbose и rename для collections.namedtuple теперь являются только ключевыми.

  • bpo-12345: Добавлена математическая константа тау в модули math и cmath. См. также PEP 628.

  • bpo-26823: traceback.StackSummary.format теперь сокращает большие блоки повторяющихся строк как «[Предыдущая строка повторена еще {count} раз]» (это изменение также влияет на другие операции отображения traceback в модуле). Патч от Emanuel Barry.

  • bpo-27664: Добавлена возможность указания префикса имени потока в concurrent.futures.thread.ThreadPoolExecutor().

  • bpo-27181: Добавлены функции geometric_mean и harmonic_mean в модуль statistics.

  • bpo-27573: code.interact теперь выводит сообщение при выходе.

  • bpo-6422: Добавлен метод autorange для объектов timeit.Timer.

  • bpo-27773: Исправлены некоторые ошибки управления памятью для server_hostname в _ssl.wrap_socket().

  • bpo-26750: unittest.mock.create_autospec() теперь корректно работает для подклассов property() и других дескрипторов данных. Удалён никогда не публиковавшийся и не документированный кортеж unittest.mock.DescriptorTypes.

  • bpo-26754: Недокументированная поддержка произвольных bytes-подобных объектов в качестве пути в compile() и аналогичных функциях теперь считается устаревшей.

  • bpo-26800: Недокументированная поддержка произвольных bytes-подобных объектов в качестве путей в функциях os теперь считается устаревшей.

  • bpo-26981: Добавлена прослойка совместимости _order_ для enum.Enum для кодовых баз Python 2/3.

  • bpo-27661: Добавлен именованный аргумент tzinfo в datetime.combine.

  • В модуле curses теперь вызывается ошибка, если в window.getstr() или window.instr() передано отрицательное значение.

  • bpo-27783: Исправлена возможная работа с неинициализированной памятью в operator.methodcaller.

  • bpo-27774: Исправлен возможный Py_DECREF на не принадлежащем объекте в _sre.

  • bpo-27760: Исправлено возможное целочисленное переполнение в binascii.b2a_qp.

  • bpo-27758: Исправлено возможное целочисленное переполнение в модуле _csv для больших длин записей.

  • bpo-27568: Предотвращение атаки HTTPoxy (CVE-2016-1000110). Переменная HTTP_PROXY игнорируется, когда установлена переменная окружения REQUEST_METHOD, что указывает на работу скрипта в режиме CGI.

  • bpo-7063: Удалён мёртвый код из обработки срезов модуля «array». Патч от Chuck.

  • bpo-27656: Не предполагать, что sched.h определяет какие-либо константы SCHED_*.

  • bpo-27130: В модуле «zlib» исправлена работа с большими буферами (обычно 4 ГиБ) при сжатии и распаковке. Ранее входные данные были ограничены 4 ГиБ, а операции сжатия и распаковки не обрабатывали результаты размером 4 ГиБ должным образом.

  • bpo-24773: Реализован PEP 495 (Устранение неоднозначности местного времени).

  • Константа EPOLLEXCLUSIVE (если она определена) теперь доступна в модуле select.

  • bpo-27567: Константы EPOLLRDHUP и POLLRDHUP теперь доступны в модуле select.

  • bpo-1621: Избегание переполнения при отрицании знакового int в модуле «audioop».

  • bpo-27533: Освобождение GIL в nt._isdir

  • bpo-17711: Исправлена распаковка по постоянному идентификатору с протоколом 0. Оригинальный патч Алессандро Вассалотти.

  • bpo-27522: Избежать непреднамеренной циклической ссылки в email.feedparser.

  • bpo-27512: Исправлено падение (segfault) при вызове os.fspath() на методе __fspath__(), который возбуждал исключение. Патч от Xiang Zhang.

IDLE

  • bpo-27714: text_textview и test_autocomplete теперь проходят при повторном запуске в том же процессе. Это происходит, когда test_idle падает при запуске с опцией -w, но без -jn. Исправлено предупреждение из test_config.

  • bpo-27621: Сообщения об ошибках валидации ответов запроса теперь выводятся в самом поле запроса, а не в отдельном окне сообщений. Переделаны тесты для соответствия. Добавлены улучшения для Mac OSX. Оригинальный патч от Mark Roseman.

  • bpo-27620: Клавиша Escape теперь закрывает окно запроса как отменённое.

  • bpo-27609: IDLE: табуляция после начальных пробелов должна именно табулировать, а не вызывать автодополнение. Это исправляет проблему с написанием докстрингов, отступы в которых сделаны как минимум дважды.

  • bpo-27609: Явно возвращать None, когда есть также возвраты не-None. В нескольких случаях инвертировано условие и удалён один return.

  • bpo-25507: IDLE больше не выполняет ошибочный код из-за своих импортов tkinter. Пользователи должны включать те же импорты, которые требуются для прямого запуска в Python.

  • bpo-27173: Добавлен 'IDLE Modern Unix' во встроенные наборы клавиш. Набор по умолчанию теперь зависит от платформы. Добавлены тесты для изменений в модуле config.

  • bpo-27452: Добавлены счётчик строк и CRC в дамп теста configHandler в IDLE.

ТестыTests

  • bpo-25805: Пропускает тест в test_pkgutil, который не работает, когда __name__ == __main__. Патч от SilentGhost.

  • bpo-27472: Добавляет test.support.unix_shell как путь к стандартной оболочке.

  • bpo-27369: В test_pyexpat избегаем проверки деталей сообщения об ошибке, которые изменились в Expat 2.2.0.

  • bpo-27594: Предотвращает ошибку утверждения при запуске test_ast с включённым покрытием: гарантирует, что объект кода имеет корректный номер первой строки. Патч предложен Иваном Левкивским.

Windows

  • bpo-27647: Обновляет встроенный Tcl/Tk до версии 8.6.6.

  • bpo-27610: Добавлены метаданные PEP 514 в установщик Windows

  • bpo-27469: Добавляет расширение оболочки для запускатора, чтобы перетаскивание работало корректно.

  • bpo-27309: Включает правильные стили Windows в манифесте python[w].exe.

СборкаBuild

  • bpo-27713: Подавляет ложные предупреждения сборки при обновлении файлов bootstrap в importlib. Патч от Xiang Zhang

  • bpo-25825: Исправляет ссылки на Modules/python.exp, который требуется в AIX. Ссылки были случайно изменены в версии 3.5.0a1.

  • bpo-27453: Вызов CPP в configure должен использовать CPPFLAGS. Патч от Chi Hsuan Yen.

  • bpo-27641: Сценарий configure теперь вставляет комментарии в makefile, чтобы предотвратить кросс-компиляцию исполняемых файлов pgen и _freeze_importlib.

  • bpo-26662: Устанавливает PYTHON_FOR_GEN в configure как программу Python, используемую для генерации файлов во время сборки.

  • bpo-10910: Избегает ошибок компиляции C++ на FreeBSD и OS X. Также обновляет проверки версий FreeBSD для исходного обходного решения ctype UTF-8.

Python 3.6.0 альфа 3Python 3.6.0 alpha 3

Дата выпуска: 2016-07-11

Ядро и встроенные модулиCore and Builtins

  • bpo-27473: Исправлено возможное целочисленное переполнение при конкатенации bytes и bytearray. Исправление от Xiang Zhang.

  • bpo-23034: Вывод специальной сборки Python с определёнными макросами COUNT_ALLOCS, SHOW_ALLOC_COUNT или SHOW_TRACK_COUNT теперь по умолчанию отключён. Его можно снова включить с помощью опции “-X showalloccount”. Теперь вывод осуществляется в stderr вместо stdout.

  • bpo-27443: __length_hint__() итераторов bytearray больше не возвращает отрицательное целое число для изменённого bytearray.

  • bpo-27007: Методы класса fromhex() подклассов bytes и bytearray теперь возвращают экземпляр соответствующего подкласса.

БиблиотекаLibrary

  • bpo-26844: Исправлено сообщение об ошибке для imp.find_module(), чтобы оно ссылалось на «path» вместо «name». Патч Льва Максимова.

  • bpo-23804: Исправлены вызовы recv() с нулевой длиной в SSL: теперь они не блокируются и не вызывают ошибку о нечистом EOF.

  • bpo-27466: Изменён формат времени, возвращаемый http.cookie.time2netscape, чтобы соответствовать netscape-формату cookie и быть согласованным с документацией.

  • bpo-21708: Устаревшее поведение dbm.dumb, отличающееся от обычного поведения dbm: создание базы данных в режимах ‘r’ и ‘w’ и изменение базы данных в режиме ‘r’.

  • bpo-26721: Изменяет атрибут socketserver.StreamRequestHandler.wfile, чтобы реализовать BufferedIOBase. В частности, метод write() больше не выполняет частичную запись.

  • bpo-22115: В класс tkinter.Variable добавлены методы trace_add, trace_remove и trace_info. Они заменяют старые методы trace_variable, trace, trace_vdelete и trace_vinfo, которые используют устаревшие команды Tcl и могут не работать в будущих версиях Tcl. Исправлено поведение старых методов отслеживания: trace_vdelete() с неправильным режимом больше не ломает отслеживание, trace_vinfo() теперь всегда возвращает список пар строк, отслеживание в режиме "u" теперь работает.

  • bpo-26243: Теперь только аргумент level функции zlib.compress() является именованным. Первый аргумент – только позиционный.

  • bpo-27038: Тип DirEntry теперь доступен как os.DirEntry. Патч предоставлен Jelle Zijlstra.

  • bpo-27186: Обновлены os.fspath()/PyOS_FSPath() для проверки, что возвращаемое значение __fspath__() является str или bytes.

  • bpo-18726: Все необязательные параметры функций dump(), dumps(), load() и loads(), а также конструкторов классов JSONEncoder и JSONDecoder в модуле json теперь являются только именованными.

  • bpo-27319: Методы selection_set(), selection_add(), selection_remove() и selection_toggle() виджета ttk.TreeView теперь позволяют передавать несколько элементов как отдельные аргументы вместо передачи в виде кортежа. Объявлена устаревшей недокументированная возможность вызова метода selection() с аргументами.

  • bpo-27079: Исправлены функции curses.ascii isblank(), iscntrl() и ispunct().

  • bpo-27294: Числовое состояние в repr для объектов событий Tkinter теперь представляется как комбинация известных флагов.

  • bpo-27177: Объекты Match в модуле re теперь поддерживают объекты, подобные индексам, в качестве индексов групп. Основано на патчах Jeroen Demeyer и Xiang Zhang.

  • bpo-26754: Некоторые функции (compile() и т.д.) принимали аргумент filename, закодированный как итерируемый объект из целых чисел. Теперь принимаются только строки и байтоподобные объекты.

  • bpo-26536: socket.ioctl теперь поддерживает SIO_LOOPBACK_FAST_PATH. Патч от Daniel Stokes.

  • bpo-27048: Предотвращает сбой distutils в Windows, когда переменные окружения содержат символы, отличные от ASCII.

  • bpo-27330: Исправлены возможные утечки в модуле ctypes.

  • bpo-27238: Избавление от голых except в модуле turtle. Патч от Jelle Zijlstra.

  • bpo-27122: Если исключение возбуждается в контексте, управляемом contextlib.ExitStack(), и один из генераторов стека выхода перехватывает и возбуждает его в цепочке, не возбуждать повторно исходное исключение при выходе, пропускать новое цепочечное. Это предотвращает ошибку PEP 479, описанную в issue25782.

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

  • bpo-27278: Исправление реализации os.urandom() с использованием getrandom() на Linux. Урезание размера до INT_MAX и циклический сбор случайных байтов до получения достаточного количества, вместо прямого приведения Py_ssize_t к int.

БиблиотекаLibrary

  • bpo-16864: sqlite3.Cursor.lastrowid теперь поддерживает оператор REPLACE. Первоначальный патч от Alex LordThorsen.

  • bpo-26386: Исправлены операции выбора ttk.TreeView с идентификаторами элементов, содержащими пробелы.

  • bpo-8637: Учитывать программу постраничного просмотра, заданную переменной окружения MANPAGER (в приоритете над заданной переменной PAGER).

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

  • bpo-22636: Устранение проблем внедрения команд оболочки с ctypes.util.find_library().

БиблиотекаLibrary

  • bpo-16182: Исправлены различные функции в модуле «readline» для использования кодировки локали, а также исправлены get_begidx() и get_endidx() для возврата индексов кодовых точек.

  • bpo-27392: Добавлен метод loop.connect_accepted_socket(). Патч от Jim Fulton.

IDLE

  • bpo-27477: Диалоги поиска IDLE теперь используют ttk-виджеты.

  • bpo-27173: Добавлен 'IDLE Modern Unix' во встроенные наборы клавиш. Набор по умолчанию теперь зависит от платформы. Добавлены тесты для изменений в модуле config.

  • bpo-27452: Исправлена работа командной строки "idle-test> python test_help.py". __file__ теперь относителен, когда python запускается в каталоге файла.

  • bpo-27452: Добавлены счётчик строк и CRC в дамп теста configHandler в IDLE.

  • bpo-27380: IDLE: добавлен query.py с базовым диалогом Query и ttk-виджетами. Модуль содержит подклассы SectionName, ModuleName и HelpSource, которые используются для получения информации от пользователей через configdialog и файл =>Load Module. Каждый подкласс имеет свои проверки корректности. Использование ModuleName позволяет пользователям редактировать неправильные имена модулей вместо того, чтобы начинать заново. Добавлены тесты и удалены два файла, объединенные в новый.

  • bpo-27372: Test_idle больше не изменяет локаль.

  • bpo-27365: Разрешены не-ASCII символы в IDLE NEWS.txt для имён участников.

  • bpo-27245: IDLE: корректное удаление пользовательских тем и привязок клавиш. Ранее при запуске IDLE из консоли или через import выдавался каскад предупреждений. Патч от Serhiy Storchaka.

  • bpo-24137: Запускать IDLE, test_idle и htest с отключенным корневым окном tkinter по умолчанию. Исправлены код и тесты, не работающие при таком ограничении. Исправлены htest, чтобы не создавать второе избыточное корневое окно и mainloop.

  • bpo-27310: Исправлена ошибка запуска IDLE.app на OS X из-за остаточного импорта.

C API

  • bpo-26754: PyUnicode_FSDecoder() принимал аргумент имени файла, закодированный как итерируемый объект из целых чисел. Теперь принимаются только строки и байтоподобные объекты.

СборкаBuild

  • bpo-28066: Исправляет логику поиска каталогов сборки для сгенерированных include-файлов при сборке вне дерева исходников.

  • bpo-27442: В sysconfig.get_config_vars() добавлено значение 'ANDROID_API_LEVEL', указывающее уровень API Android, под который собран Python.

  • bpo-27434: Интерпретатор, используемый для кросс-сборки и найденный в PATH, теперь должен быть той же основной версии (например, 3.6), что и собираемый исходный код.

  • bpo-26930: Обновляет сборки Windows для использования OpenSSL 1.0.2h.

  • bpo-23968: Каталог платформы переименован из plat-$(MACHDEP) в plat-$(PLATFORM_TRIPLET). Каталог конфигурации (LIBPL) переименован из config-$(LDVERSION) в config-$(LDVERSION)-$(PLATFORM_TRIPLET). Модуль _sysconfigdata, специфичный для платформы, устанавливается в каталог платформы и переименовывается с включением ABIFLAGS.

  • Не используйте поддержку больших файлов для GNU/Hurd.

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

  • bpo-27332: Исправлен тип первого аргумента функций уровня модуля, генерируемых Argument Clinic. Патч от Petr Viktorin.

  • bpo-27418: Исправлен Tools/importbench/importbench.py.

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

  • bpo-19489: Поле поиска перенесено из боковой панели в заголовок и подвал каждой страницы. Исправление от Ammar Askar.

  • bpo-27285: Обновлена документация, чтобы отразить устаревание pyvenv и привести к единому термину «виртуальное окружение». Патч от Steve Piercy.

ТестыTests

  • bpo-27027: Добавлена test.support.is_android, которая равна True, если это сборка для Android.

Python 3.6.0 альфа 2Python 3.6.0 alpha 2

Дата выпуска: 2016-06-13

Ядро и встроенные модулиCore and Builtins

  • bpo-27095: Упрощён MAKE_FUNCTION и удалён опкод MAKE_CLOSURE. Патч от Demur Rumed.

  • bpo-27190: Генерировать NotSupportedError, если sqlite3 старше 3.3.1. Патч от Dave Sawyer.

  • bpo-27286: Исправлена компиляция опкода BUILD_MAP_UNPACK_WITH_CALL. Вызов функции с обобщённой распаковкой (PEP 448) и конфликтующими именами ключевых аргументов мог приводить к неопределённому поведению.

  • bpo-27140: Добавлен опкод BUILD_CONST_KEY_MAP.

  • bpo-27186: Добавлена поддержка объектов os.PathLike для open() (часть PEP 519).

  • bpo-27066: Исправлен SystemError, если пользовательская функция открытия (для open()) возвращает отрицательное число без установки исключения.

  • bpo-26983: float() теперь всегда возвращает экземпляр точного float. Предупреждение об устаревании выдаётся, если __float__ возвращает экземпляр строгого подкласса float. В будущих версиях Python это может стать ошибкой.

  • bpo-27097: Интерпретатор Python теперь примерно на 7% быстрее благодаря оптимизированному декодированию инструкций. На основе патча от Demur Rumed.

  • bpo-26647: Интерпретатор Python теперь использует 16-битный wordcode вместо байткода. Патч от Demur Rumed.

  • bpo-23275: разрешено присваивание в пустой список целей в круглых скобках: () = iterable.

  • bpo-27243: Обновлён протокол __aiter__: вместо возврата ожидаемого объекта, который разрешается в асинхронный итератор, асинхронный итератор должен возвращаться напрямую. Использование первого варианта вызовет PendingDeprecationWarning.

БиблиотекаLibrary

  • Закомментированы константы сокетов (SO_REUSEPORT) и модуля posix (O_SHLOCK, O_EXLOCK), доступные через API, но не реализованные в GNU/Hurd. Они всё равно не работали бы во время выполнения.

  • bpo-27025: генерируемые имена для виджетов Tkinter теперь стали более осмысленными и узнаваемыми.

  • bpo-25455: исправлены аварийные завершения в repr рекурсивных объектов ElementTree.Element и functools.partial.

  • bpo-27294: улучшено представление repr для объектов событий Tkinter.

  • bpo-20508: улучшено сообщение исключения в IPv{4,6}Network.__getitem__. Патч от Gareth Rees.

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

  • bpo-26556: Обновление expat до версии 2.1.1, исправление CVE-2015-1283.

  • Исправление уязвимости снятия TLS в smtplib, CVE-2016-0772. Сообщено командой Oststrom.

БиблиотекаLibrary

  • bpo-21386: Реализовано недостающее свойство IPv4Address.is_global. Оно документировано начиная с 07a5610bae9d. Первоначальный патч от Roger Luethi.

  • bpo-27029: удалена устаревшая поддержка универсального режима перевода строк из ZipFile.open().

  • bpo-27030: неизвестные экранированные последовательности, состоящие из '\' и буквы ASCII в регулярных выражениях, теперь считаются ошибками. Флаг re.LOCALE теперь можно использовать только с байтовыми шаблонами.

  • bpo-27186: Добавлена поддержка os.PathLike для DirEntry (часть PEP 519). Первоначальный патч от Jelle Zijlstra.

  • bpo-20900: Команда register в distutils теперь корректно декодирует HTTP-ответы. Первоначальный патч от ingrid.

  • bpo-27186: добавлена поддержка os.PathLike в pathlib, снят его временный статус (часть PEP 519). Первоначальный патч от Dusty Phillips.

  • bpo-27186: Добавлена поддержка объектов os.PathLike для os.fsencode() и os.fsdecode() (часть PEP 519).

  • bpo-27186: Представлены os.PathLike и os.fspath() (часть PEP 519).

  • Новая версия typing.py предоставляет несколько новых классов и возможностей: @overload вне заглушек, Reversible, DefaultDict, Text, ContextManager, Type[], NewType(), TYPE_CHECKING и множество исправлений ошибок (обратите внимание, что некоторые новые возможности еще не реализованы в mypy или других статических анализаторах). Также добавлены классы для PEP 492 (Awaitable, AsyncIterable, AsyncIterator) (фактически они появились в 3.5.1, но не были упомянуты).

  • bpo-25738: Остановлена отправка тела сообщения в http.server.BaseHTTPRequestHandler.send_error() для кода 205 Reset Content. Также не отправляются поля заголовка Content в ответах без тела. Патч от Susumu Koshiba.

  • bpo-21313: Исправлен модуль platform для корректной работы, когда sys.version содержит усечённую информацию о сборке.

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

  • bpo-26839: В Linux os.urandom() теперь вызывает getrandom() с GRND_NONBLOCK для перехода на чтение /dev/urandom, если пул энтропии urandom ещё не инициализирован. Патч написан Колмом Бакли (Colm Buckley).

БиблиотекаLibrary

  • bpo-23883: добавлены отсутствующие API в __all__ для соответствия документированным API следующих модулей: cgi, mailbox, mimetypes, plistlib и smtpd. Патчи от Jacek Kołodziej.

  • bpo-27164: В модуле zlib разрешена декомпрессия сырых потоков Deflate с предопределённым zdict. Основано на патче от Xiang Zhang.

  • bpo-24291: Исправлено wsgiref.simple_server.WSGIRequestHandler для полной записи данных клиенту. Ранее могли происходить частичные записи и усечение данных. Также wsgiref.handler.ServerHandler теперь может обрабатывать частичные записи в stdout, но это устарело.

  • bpo-21272: используется _sysconfigdata.py для инициализации distutils.sysconfig.

  • bpo-19611: inspect теперь сообщает о неявных параметрах .0, генерируемых компилятором для областей видимости включений и выражений-генераторов, как если бы это были позиционные параметры с именем implicit0. Патч от Jelle Zijlstra.

  • bpo-26809: Добавлено __all__ в string. Патч от Emanuel Barry.

  • bpo-26373: subprocess.Popen.communicate теперь корректно игнорирует BrokenPipeError, когда дочерний процесс завершается до вызова .communicate() во всех/большинстве случаев.

  • Поиск имён констант IntEnum в модулях signal, socket и ssl теперь возвращает согласованное имя для значений, имеющих несколько имён. Например: signal.Signals(6) теперь ссылается на себя как signal.SIGALRM, а не переключается между ним и signal.SIGIOT в зависимости от seed хеш-рандомизации интерпретатора.

  • bpo-27167: уточнён текст сообщения об ошибке subprocess.CalledProcessError, когда дочерний процесс завершился из-за сигнала.

  • bpo-25931: не определять имена socketserver.Forking* на платформах, таких как Windows, которые не поддерживают os.fork().

  • bpo-21776: distutils.upload теперь корректно обрабатывает HTTPError. Первоначальный патч от Claudiu Popa.

  • bpo-26526: замена пользовательской проверки дерева разбора в модуле parser на простой DFA-валидатор.

  • bpo-27114: Исправлена ошибка PermissionError в SSLContext._load_windows_store_certs.

  • bpo-18383: Избегание создания дублирующих фильтров при использовании filterwarnings и simplefilter. Основано на патче от Alex Shkop.

  • bpo-23026: winreg.QueryValueEx() теперь возвращает целое число для типа REG_QWORD.

  • bpo-26741: Деструктор subprocess.Popen теперь выводит предупреждение ResourceWarning, если дочерний процесс всё ещё выполняется.

  • bpo-27056: Оптимизированы pickle.load() и pickle.loads() – десериализация множества мелких объектов выполняется до 10% быстрее.

  • bpo-21271: В вызов reset_mock добавлены новые только-ключевые параметры.

IDLE

  • bpo-5124: Вставка с выделенным текстом теперь заменяет выделение на X11. Это соответствует поведению вставки в Windows, Mac, большинстве современных приложений Linux и виджетах ttk. Первоначальное исправление от Serhiy Storchaka.

  • bpo-24750: Все полосы прокрутки в IDLE заменены на версии ttk. Там, где необходимо, добавлены минимальные тесты для проверки изменений.

  • bpo-24759: IDLE требует tk 8.5 и доступность виджетов ttk. Удалены ставшие ненужными проверки версий tk и код для старых версий. Добавлен тест для раскраски синтаксиса IDLE.

  • bpo-27239: Функции idlelib.macosx.isXyzTk инициализируются по мере необходимости.

  • bpo-27262: Код отвязки Aqua, включающий контекстные меню, перенесён в macosx.

  • bpo-24759: Уточнено в idlelib.idle_test.__init__, что этот каталог является закрытой реализацией test.test_idle и инструментом для сопровождающих.

  • bpo-27196: Прекратить появление предупреждений ‘ThemeChanged’ при запуске тестов IDLE. Они сохранялись после подавления других предупреждений в #20567. Применить решение Serhiy Storchaka с update_idletasks к четырём тестовым файлам. Записать этот дополнительный совет в idle_test/README.txt

  • bpo-20567: Переработан idle_test/README.txt с рекомендациями по предотвращению предупреждений tk от тестов. Рекомендации применены к нескольким тестам IDLE.

  • bpo-24225: Обновлён idlelib/README.txt с новыми именами файлов и обработчиками событий.

  • bpo-27156: Удалён устаревший код, не используемый IDLE.

  • bpo-27117: Обеспечить работу colorizer htest и turtledemo с тёмными темами. Перенести код настройки цветов текстового виджета в новую функцию.

  • bpo-24225: Переименовано множество файлов idlelib/*.py и idle_test/test_*.py. Файлы отредактированы для замены старых имён на новые в тех случаях, когда старое имя относилось к модулю, а не к содержащемуся в нём классу. Подробнее см. в описании задачи и разделе IDLE в «Что нового в Python 3.6».

  • bpo-26673: Когда tk сообщает размер шрифта 0, изменять на размер 10. Такие шрифты в Linux препятствовали открытию диалога настройки.

  • bpo-21939: Добавлен тест для перколятора IDLE. Первоначальное исправление от Saimadhav Heblikar.

  • bpo-21676: Добавлен тест для диалога замены IDLE. Первоначальное исправление от Saimadhav Heblikar.

  • bpo-18410: Добавлен тест для диалога поиска IDLE. Первоначальное исправление от Westley Martínez.

  • bpo-21703: Добавлен тест для делегата отмены. Патч в основном от Саймадхава Хебликара.

  • bpo-27044: Добавлен ConfigDialog.remove_var_callbacks для предотвращения утечек памяти.

  • bpo-23977: Добавлены дополнительные проверки в test_delegator.

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

  • bpo-16484: URL по умолчанию PYTHONDOCS изменён на «https:», исправлены результирующие ссылки на нижний регистр. Патч Шона Родмана, тест Каушика Надикудити.

  • bpo-24136: Документировать новый синтаксис распаковки PEP 448 версии 3.5.

  • bpo-22558: добавлены недостающие ссылки из документации на исходный код модулей, написанных на Python. Патч от Yoni Lavi.

ТестыTests

  • bpo-25285: regrtest теперь использует подпроцессы при использовании опции командной строки -j1: каждый тестовый файл выполняется в новом дочернем процессе. Раньше опция -j1 игнорировалась.

  • bpo-25285: Скрипт Tools/buildbot/test.bat теперь по умолчанию использует -j1 для выполнения каждого тестового файла в новом дочернем процессе.

Windows

  • bpo-27064: Запускатель py.exe теперь по умолчанию использует Python 3. При интерактивном использовании запускатель Windows py.exe больше не отдаёт предпочтение установленной версии Python 2 перед Python 3 по умолчанию.

СборкаBuild

  • bpo-27229: Исправлено правило pgen для кросс-компиляции при сборке внутри дерева исходников. Патч от Xavier de Gaye.

  • bpo-26930: Обновлён 32-разрядный установщик для OS X 10.5+ для сборки и компоновки с OpenSSL 1.0.2h.

Windows

C API

  • bpo-27186: Добавлена функция PyOS_FSPath() (часть PEP 519).

  • bpo-26282: PyArg_ParseTupleAndKeywords() теперь поддерживает только позиционные параметры.

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

  • bpo-26282: Argument Clinic теперь поддерживает только позиционные и именованные параметры в одной функции.

Python 3.6.0 альфа 1Python 3.6.0 alpha 1

Дата выпуска: 2016-05-16

Ядро и встроенные модулиCore and Builtins

  • bpo-20041: Исправлен TypeError, когда frame.f_trace устанавливается в None. Патч от Ксавье де Гай (Xavier de Gaye).

  • bpo-26168: Исправлена возможная утечка ссылок при сбое Py_BuildValue() с форматом «N».

  • bpo-26991: Исправление возможной утечки ссылок при создании функции с аннотациями.

  • bpo-27039: Исправлен bytearray.remove() для значений больше 127. Основано на патче от Joe Jevnik.

  • bpo-23640: int.from_bytes() больше не обходит конструкторы подклассов.

  • bpo-27005: Оптимизирован классовый метод float.fromhex() для точных чисел с плавающей запятой. Теперь он работает в 2 раза быстрее.

  • bpo-18531: Единственный именованный аргумент подтипа dict передавался без изменений в функцию, определённую на C. Теперь он преобразуется в точный dict.

  • bpo-26811: gc.get_objects() больше не содержит повреждённый кортеж с нулевым указателем.

  • bpo-20120: Использование RawConfigParser для разбора .pypirc, удаление поддержки интерполяции, непреднамеренно добавленной при переходе на Python 3. Поведение больше не выполняет интерполяцию в файлах .pypirc, совпадая с поведением в Python 2.7 и Setuptools 19.0.

  • bpo-26249: Функции управления памятью из домена PyMem_Malloc() (PYMEM_DOMAIN_MEM) теперь используют распределитель pymalloc, а не системный malloc(). Приложения, вызывающие PyMem_Malloc() без удержания GIL, теперь могут аварийно завершаться. Используйте переменную окружения PYTHONMALLOC=debug для проверки использования распределителей памяти в вашем приложении.

  • bpo-26802: Оптимизированы вызовы функций, использующие только распаковку, например func(*tuple) (без других позиционных аргументов и без именованных): избегается копирование кортежа. Патч написан Joe Jevnik.

  • bpo-26659: Встроенный тип slice теперь поддерживает сборку циклических ссылок.

  • bpo-26718: super.__init__ больше не приводит к утечке памяти при многократном вызове. ПРИМЕЧАНИЕ: Прямой вызов super.__init__ не рекомендуется!

  • bpo-27138: Исправлен комментарий в документации для FileFinder.find_spec().

  • bpo-27147: Упоминание PEP 420 в документации importlib.

  • bpo-25339: PYTHONIOENCODING теперь имеет приоритет над локалью при установке обработчика ошибок для stdin и stdout.

  • bpo-26494: Исправлен сбой при итерации истощающих итераторов. Затронутые классы: общие итераторы последовательностей, итераторы str, bytes, bytearray, list, tuple, set, frozenset, dict, OrderedDict, соответствующие представления и итератор os.scandir().

  • bpo-26574: Оптимизированы bytes.replace(b'', b'.') и bytearray.replace(b'', b'.'). Патч написан Джошем Снайдером.

  • bpo-26581: Если в одной строке файла исходного кода Python указано несколько кодировок (coding cookie), учитывается только первая.

  • bpo-19711: Добавлены тесты для перезагрузки пакетов пространства имён.

  • bpo-21099: Переключить соответствующие тесты importlib на использование API PEP 451.

  • bpo-26563: Отладочные перехватчики распределителей памяти Python теперь вызывают фатальную ошибку, если функции семейства PyMem_Malloc() вызываются без удержания GIL.

  • bpo-26564: При ошибке отладочные перехватчики распределителей памяти Python теперь используют модуль tracemalloc для получения трассировки того места, где был выделен блок памяти.

  • bpo-26558: Отладочные перехватчики распределителя памяти Python PyObject_Malloc() теперь обнаруживают, когда функции вызываются без удержания GIL.

  • bpo-26516: Добавлена переменная окружения PYTHONMALLOC для установки распределителей памяти Python и/или установки отладочных перехватчиков.

  • bpo-26516: Функция PyMem_SetupDebugHooks() теперь также может использоваться в Python, скомпилированном в режиме выпуска.

  • bpo-26516: Переменная окружения PYTHONMALLOCSTATS теперь также может использоваться в Python, скомпилированном в режиме выпуска. Теперь она не действует, если установлена в пустую строку.

  • bpo-26516: В отладочном режиме отладочные перехватчики теперь также устанавливаются для распределителей памяти Python, когда Python сконфигурирован без pymalloc.

  • bpo-26464: Исправление str.translate() для случая, когда строка в ASCII и первая замена удаляет символ, а следующая замена использует не-ASCII символ или строку длиннее 1 символа. Регрессия, внесённая в Python 3.5.0.

  • bpo-22836: Обеспечение осмысленности отчётов об исключениях от PyErr_Display() и PyErr_WriteUnraisable(), даже если их форматирование вызывает вторичные ошибки. Это влияет на отчёты, создаваемые sys.__excepthook__() и при возникновении исключения в __del__().

  • bpo-26302: Исправлено поведение: запятая больше не считается допустимым символом в именах cookie.

  • bpo-26136: Повышено предупреждение при возбуждении StopIteration в генераторе с PendingDeprecationWarning до DeprecationWarning. Патч Аниша Шаха.

  • bpo-26204: Компилятор теперь игнорирует все константные выражения: bytes, str, int, float, complex, константы-имена (None, False, True), Ellipsis и ast.Constant; не только str и int. Например, 1.0 теперь игнорируется в def f(): 1.0.

  • bpo-4806: Предотвращение маскировки исходного исключения TypeError при использовании распаковки со звездочкой (*) в вызовах функций. На основе патча Хагена Фюрстенау (Hagen Fürstenau) и Дэниела Урбана (Daniel Urban).

  • bpo-26146: Добавлен новый тип узла AST: ast.Constant. Он может использоваться внешними оптимизаторами AST, но компилятор не генерирует напрямую такой узел.

  • bpo-23601: Ускорено выделение объектов ключей словаря за счёт использования распределителя малых объектов Python. (Вклад Джулиана Тейлора.)

  • bpo-18018: Импорт вызывает ImportError вместо SystemError, если предпринимается попытка относительного импорта без известного родительского пакета.

  • bpo-25843: При компиляции кода не объединять константы, если они равны, но имеют разные типы. Например, f1, f2 = lambda: 1, lambda: 1.0 теперь правильно компилируется в две разные функции: f1() возвращает 1 (int), а f2() возвращает 1.0 (float), даже если 1 и 1.0 равны.

  • bpo-26107: Формат атрибута co_lnotab объектов кода изменён для поддержки отрицательного смещения номера строки.

  • bpo-26154: Добавлена новая приватная функция _PyThreadState_UncheckedGet() для получения текущего состояния потока Python, но без фатальной ошибки, если оно NULL. Эту новую функцию следует использовать вместо прямого доступа к переменной _PyThreadState_Current. Переменная больше не доступна начиная с Python 3.5.1, чтобы скрыть точную реализацию атомарных типов C во избежание проблем с компилятором.

  • bpo-25791: Если __package__ != __spec__.parent или если ни __package__, ни __spec__ не определены, то вызывается ImportWarning.

  • bpo-22995: [ОБНОВЛЕНИЕ] Закомментирован один из тестов на возможность сериализации (pickle) в _PyObject_GetState() из-за регрессий, возникших в проектах на Cython.

  • bpo-25961: Запрещены нулевые символы в имени типа.

  • bpo-25973: Исправлен segfault при привязке имени, начинающегося с двух подчёркиваний, в недопустимом операторе nonlocal.

  • bpo-22995: Экземпляры типов-расширений с состоянием, которые не являются подклассами list или dict и не реализуют никаких связанных с pickle методов (__reduce__, __reduce_ex__, __getnewargs__, __getnewargs_ex__ или __getstate__), больше не могут быть сериализованы с помощью pickle. Включая memoryview.

  • bpo-20440: Массовая замена небезопасного кода установки атрибутов на специальный макрос Py_SETREF.

  • bpo-25766: Специальный метод __bytes__() теперь работает в подклассах str.

  • bpo-25421: Методы __sizeof__ встроенных типов теперь используют динамический базовый размер. Это позволяет sys.getsize() корректно работать с их подклассами, в которых определён __slots__.

  • bpo-25709: исправлена проблема с конкатенацией строк на месте и кешем utf-8.

  • bpo-5319: Новый API Py_FinalizeEx(), позволяющий Python устанавливать код возврата 120 при ошибке сброса буферизованных потоков.

  • bpo-25485: telnetlib.Telnet теперь является менеджером контекста.

  • bpo-24097: Исправлен сбой в object.__reduce__(), если имя слота освобождается внутри __getattr__.

  • bpo-24731: Исправлен сбой при преобразовании объектов со специальными методами __bytes__, __trunc__ и __float__, которые возвращают экземпляры подклассов bytes, int и float, в соответствующие подклассы bytes, int и float.

  • bpo-25630: исправление возможного segfault при разборе аргументов в функциях, принимающих пути файловой системы.

  • bpo-23564: исправлена частично сломанная проверка корректности во внутренностях _posixsubprocess относительно того, как fds_to_pass передавались дочернему процессу. Ошибка не имела фактического влияния, так как subprocess.py уже её избегал.

  • bpo-25388: исправлен сбой токенизатора при обработке недекодируемого исходного кода с нулевым байтом.

  • bpo-25462: хеш ключа теперь вычисляется только один раз в большинстве операций в C-реализации OrderedDict.

  • bpo-22995: реализация по умолчанию __reduce__ и __reduce_ex__ теперь отклоняет встроенные типы, у которых не определён __new__.

  • bpo-24802: избегание выхода за границы буфера при передаче байтоподобных объектов в int(), float(), compile(), exec() и eval(). Эти объекты не обязательно завершаются нулевым байтом, но функции предполагали, что это так.

  • bpo-25555: исправление парсера и AST: заполнение lineno и col_offset узла “arg” при компиляции AST из объектов Python.

  • bpo-24726: исправлен сбой и утечка NULL в repr() OrderedDict, который был изменён прямыми вызовами методов dict.

  • bpo-25449: итерация по OrderedDict с ключами с нестабильным хешем теперь вызывает KeyError как в C-реализации, так и в реализации на Python.

  • bpo-25395: исправлен сбой при сборке мусора сильно вложенных структур OrderedDict.

  • bpo-25401: Оптимизация bytes.fromhex() и bytearray.fromhex(): теперь они работают от 2 до 3.5 раз быстрее.

  • bpo-25399: Оптимизация bytearray % args с использованием нового приватного API _PyBytesWriter. Форматирование теперь выполняется в 2.5–5 раз быстрее.

  • bpo-25274: sys.setrecursionlimit() теперь вызывает RecursionError, если новый предел рекурсии слишком низок в зависимости от текущей глубины рекурсии. Также изменена формула «нижней отметки», чтобы сделать её монотонной. Эта отметка используется для принятия решения о сбросе флага переполнения состояния потока.

  • bpo-24402: исправление input() для вывода приглашения в перенаправленный stdout, когда sys.stdout.fileno() завершается ошибкой.

  • bpo-25349: Оптимизация bytes % args с использованием нового приватного API _PyBytesWriter. Форматирование теперь выполняется до 2 раз быстрее.

  • bpo-24806: предотвращение создания подклассов встроенных типов, которым не разрешено наследование, через множественное наследование.

  • bpo-25301: Декодер UTF-8 теперь работает до 15 раз быстрее для обработчиков ошибок: ignore, replace и surrogateescape.

  • bpo-24848: исправлен ряд ошибок в декодировании UTF-7 некорректных данных.

  • bpo-25267: Кодировщик UTF-8 теперь работает до 75 раз быстрее для обработчиков ошибок: ignore, replace, surrogateescape, surrogatepass. Патч написан совместно с Serhiy Storchaka.

  • bpo-25280: Сообщения трассировки импорта, выводимые в подробном режиме (-v), больше не форматируются дважды.

  • bpo-25227: Оптимизация кодировщиков ASCII и latin1 с обработчиком ошибок surrogateescape: теперь они работают до 3 раз быстрее. Первоначальный патч написан Serhiy Storchaka.

  • bpo-25003: В Solaris 11.3 и новее os.urandom() теперь использует функцию getrandom() вместо getentropy(). Функция getentropy() блокируется для генерации энтропии очень высокого качества, но os.urandom() не нуждается в такой высококачественной энтропии.

  • bpo-9232: Изменена грамматика Python, чтобы разрешить завершающие запятые в списке аргументов объявления функции. Например, “def f(*, a = 3,): pass” теперь допустимо. Патч от Mark Dickinson.

  • bpo-24965: Реализован PEP 498 «Литеральная строковая интерполяция». Это позволяет встраивать выражения внутрь f-строк, которые преобразуются в обычные строки во время выполнения. Если x=3, то f'value={x}' == 'value=3'. Патч от Eric V. Smith.

  • bpo-26478: Исправлены семантические ошибки при использовании бинарных операторов с представлениями словарей и кортежами.

  • bpo-26171: Исправлена возможная арифметическая переполнение и повреждение кучи в zipimporter.get_data().

  • bpo-25660: Исправлено поведение клавиши TAB в REPL с readline.

  • bpo-26288: Оптимизирована функция PyLong_AsDouble.

  • bpo-26289: Оптимизировано деление с округлением вниз и деление по модулю для однозначных длинных целых. Микротесты показывают ускорение в 2–2,5 раза. Встроенная функция divmod теперь также работает примерно на 10% быстрее. (См. также: bpo-26315)

  • bpo-25887: Вызывается RuntimeError при ожидании объекта корутины более одного раза.

БиблиотекаLibrary

  • bpo-27057: Исправлен os.set_inheritable() на Android: ioctl() блокируется SELinux и завершается с EACCESS. Функция теперь использует fcntl() в качестве запасного варианта. Патч написан Michał Bednarski.

  • bpo-27014: Исправлена бесконечная рекурсия при использовании typing.py. Спасибо Kalle Tuure!

  • bpo-27031: Удалены фиктивные методы в классах виджетов Tkinter: tk_menuBar() и tk_bindForTraversal().

  • bpo-14132: Исправлена обработка перенаправлений в urllib.request, когда целевой URL содержит только строку запроса. Первоначальное исправление от Ján Janech.

  • bpo-17214: Модуль «urllib.request» теперь процентно кодирует не-ASCII байты найденные в URL-адресах перенаправления. Некоторые серверы отправляют поля заголовка Location с не-ASCII байтами, но «http.client» требует, чтобы целевой запрос был кодируем в ASCII, в противном случае возбуждается UnicodeEncodeError. На основе патча от Christian Heimes.

  • bpo-27033: Значение по умолчанию параметра decode_data для конструкторов smtpd.SMTPChannel и smtpd.SMTPServer изменено на False.

  • bpo-27034: Удалён устаревший класс asynchat.fifo.

  • bpo-26870: Добавлена функция readline.set_auto_history(), которая позволяет запретить автоматическое добавление записей в список истории. На основе патча от Tyler Crompton.

  • bpo-26039: zipfile.ZipFile.open() теперь можно использовать для записи данных в ZIP-файл, а не только для извлечения. Патч от Thomas Kluyver.

  • bpo-26892: Учтён флаг debuglevel в urllib.request.HTTPHandler. Патч предоставлен Chi Hsuan Yen.

  • bpo-22274: В модуле subprocess разрешено перенаправление stderr в\nstdout, даже если stdout не перенаправлен. Патч от Akira Li.

  • bpo-26807: Атрибут files у mock_open больше не вызывает ошибку при readline в конце файла. Патч от Yolanda Robla.

  • bpo-25745: Исправлена утечка userptr в деструкторе панели curses.

  • bpo-26977: Удалён ненужный и игнорируемый вызов вспомогательной функции суммы квадратов в statistics.pvariance.

  • bpo-26002: В statistics.median используется bisect вместо линейного поиска. Патч от Upendra Kuma.

  • bpo-25974: Используется новый метод Decimal.as_integer_ratio() в модуле statistics. Патч от Stefan Krah.

  • bpo-26996: Добавлен модуль secrets, как описано в PEP 506.

  • bpo-26881: Модуль modulefinder теперь поддерживает расширенные аргументы опкодов.

  • bpo-23815: Исправлены сбои, связанные с напрямую созданными экземплярами типов в модулях _tkinter и curses.panel.

  • bpo-17765: weakref.ref() больше не игнорирует молча именованные аргументы. Патч от Georg Brandl.

  • bpo-26873: xmlrpc теперь возбуждает ResponseError для неподдерживаемых тегов типов вместо того чтобы молча возвращать неверный результат.

  • bpo-26915: Методы __contains__ в абстрактных базовых классах коллекций теперь сначала проверяют идентичность, а затем равенство. Это лучше соответствует поведению конкретных классов, позволяет корректно обрабатывать NaN и упрощает рассуждение об инвариантах контейнеров.

  • bpo-26711: Исправлено сравнение plistlib.Data с другими типами.

  • bpo-24114: Исправлена неинициализированная переменная в ctypes.util.

    Ошибка возникает только на SunOS, когда реализация ctypes ищет программу crle. Патч от Xiang Zhang. Тестировал на SunOS Kees Bos.

  • bpo-26864: В urllib.request изменена проверка хостов для обхода прокси по no_proxy: теперь она регистронезависима и не сопоставляется с несвязанными именами хостов которые случайно имеют обходимый хост в качестве суффикса. Патч от Xiang Zhang.

  • bpo-24902: Вывод URL сервера при запуске http.server. Исходный патч от Felix Kaiser.

  • bpo-25788: fileinput.hook_encoded() теперь поддерживает аргумент «errors» для передачи в open. Оригинальный патч от Джозефа Хэкмана.

  • bpo-26634: recursive_repr() теперь устанавливает __qualname__ обёртки. Патч от Xiang Zhang.

  • bpo-26804: urllib.request теперь предпочитает переменные окружения прокси в нижнем регистре, а не в ВЕРХНЕМ или Смешанном_Регистре. Патч предоставлен Hans-Peter Jansen.

  • bpo-26837: assertSequenceEqual() теперь корректно выводит нестроковые различающиеся элементы (например, bytes в режиме -b). Это затрагивает assertListEqual() и assertTupleEqual().

  • bpo-26041: Из сообщений об устаревании функций platform.dist() и platform.linux_distribution() удалена фраза «will be removed in Python 3.7». Патч от Kumaripaba Miyurusara Athukorala.

  • bpo-26822: Объекты itemgetter, attrgetter и methodcaller больше не игнорируют молча именованные аргументы.

  • bpo-26733: Дизассемблирование класса теперь дизассемблирует методы класса и статические методы. Патч от Xiang Zhang.

  • bpo-26801: Исправлена обработка ошибок в shutil.get_terminal_size(): перехватывается AttributeError вместо NameError. Патч написан Emanuel Barry.

  • bpo-24838: Форматы ustar и gnu в tarfile теперь корректно вычисляют пределы полей имени и ссылки для многобайтовых кодировок символов, таких как utf-8.

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

  • bpo-26657: Исправление уязвимости обхода каталогов (directory traversal) в http.server на Windows. Исправляет регрессию, внесённую в 3.3.4rc1 и 3.4.0rc1. На основе патча Филиппа Хагемайстера (Philipp Hagemeister).

БиблиотекаLibrary

  • bpo-26717: Прекращено кодирование путей WSGI, преобразованных в Latin-1, с помощью UTF-8. Патч от Anthony Sottile.

  • bpo-26782: Добавлен STARTUPINFO в subprocess.__all__ в Windows.

  • bpo-26404: Добавлен контекстный менеджер в socketserver. Патч от Авива Паливоды.

  • bpo-26735: Исправлен os.urandom() в Solaris 11.3 и новее при чтении более 1024 байт: вызывать getrandom() несколько раз с ограничением 1024 байта за вызов.

  • bpo-26585: Удалён http.server._quote_html() и используется html.escape(quote=False). Патч от Сяна Чжана.

  • bpo-26685: Возбуждается OSError, если закрытие сокета завершается ошибкой.

  • bpo-16329: Добавлен .webm в mimetypes.types_map. Патч от Giampaolo Rodola’.

  • bpo-13952: Добавлен .csv в mimetypes.types_map. Патч от Geoff Wilson.

  • bpo-26587: модуль site теперь позволяет файлам .pth указывать файлы для добавления в sys.path (например, zip-файлы).

  • bpo-25609: Представлены contextlib.AbstractContextManager и typing.ContextManager.

  • bpo-26709: Исправлена проблема Y2038 при загрузке двоичных PList-файлов.

  • bpo-23735: Обрабатывается изменение размера терминала в Readline 6.3+ с помощью установки собственного обработчика SIGWINCH. Патч от Eric Price.

  • bpo-25951: Изменено SSLSocket.sendall() для возврата None, как явно документировано для обычных сокетов. Патч от Авива Паливоды.

  • bpo-26586: В http.server теперь отправляется ответ «413 Request header fields too large», если для разбора слишком много полей заголовка, вместо прерывания соединения и возбуждения необработанного исключения. Патч от Xiang Zhang.

  • bpo-26676: Добавлен отсутствующий XMLPullParser в ElementTree.__all__.

  • bpo-22854: Изменено поведение BufferedReader.writable() и BufferedWriter.readable(): теперь они всегда возвращают False.

  • bpo-26492: Исчерпанный итератор array.array теперь соответствует поведению итераторов других изменяемых последовательностей: он остаётся исчерпанным, даже если итерируемый массив расширяется.

  • bpo-26641: doctest.DocFileTest и doctest.testfile() теперь поддерживают пакеты (модуль, разделённый на несколько каталогов) для параметра package.

  • bpo-25195: Исправлена регрессия в mock.MagicMock. _Call является подклассом tuple (изменение 3603bae63c13 работает только для классов), поэтому пришлось реализовать __ne__ самостоятельно. Патч от Andrew Plummer.

  • bpo-26644: Возбуждается ValueError вместо SystemError, когда отрицательная длина передаётся в SSLSocket.recv() или read().

  • bpo-23804: Исправлены методы SSL recv(0) и read(0): теперь они возвращают ноль байт вместо до 1024.

  • bpo-26616: Исправлена ошибка в методе datetime.astimezone().

  • bpo-26637: Модуль importlib теперь выдаёт ImportError вместо TypeError, если __import__() вызывается во время процесса завершения Python, но sys.path уже очищен (установлен в None).

  • bpo-21925: warnings.formatwarning() теперь перехватывает исключения при вызове linecache.getline() и tracemalloc.get_object_traceback(), чтобы можно было залогировать ResourceWarning, возникающие поздно во время завершения работы Python.

  • bpo-23848: В Windows faulthandler.enable() теперь также устанавливает обработчик исключений для дампа стека вызовов всех потоков Python при любом исключении Windows, а не только при сигналах UNIX (SIGSEGV, SIGFPE, SIGABRT).

  • bpo-26530: Добавлены C-функции _PyTraceMalloc_Track() и _PyTraceMalloc_Untrack() для отслеживания блоков памяти с помощью модуля tracemalloc. Добавлен _PyTraceMalloc_GetTraceback() для получения стека вызовов объекта.

  • bpo-26588: _tracemalloc теперь поддерживает трассировку выделений памяти в нескольких адресных пространствах (доменах).

  • bpo-24266: При компиляции с Readline 7 нажатие Ctrl+C во время поиска по истории Readline теперь отменяет режим поиска.

  • bpo-26590: Реализован безопасный финализатор для типа _socket.socket. Теперь он освобождает GIL для закрытия сокета.

  • bpo-18787: spwd.getspnam() теперь вызывает PermissionError, если у пользователя нет прав.

  • bpo-26560: Предотвращено возможное исключение ValueError в BaseHandler.start_response. Первоначальный патч от Peter Inglesby.

  • bpo-26567: Добавлена новая функция PyErr_ResourceWarning() для передачи уничтоженного объекта. Добавлен атрибут source в warnings.WarningMessage. Добавлена warnings._showwarnmsg(), которая использует tracemalloc для получения стека вызовов, где был выделен исходный объект.

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

  • bpo-26313: ssl.py _load_windows_store_certs завершается ошибкой, если хранилище сертификатов Windows пусто. Патч от Baji.

БиблиотекаLibrary

  • bpo-26569: Исправлены pyclbr.readmodule() и pyclbr.readmodule_ex() для поддержки импорта пакетов.

  • bpo-26499: Учтён остаток Content-Length в HTTPResponse.readline() и read1(). Основано на патче от Silent Ghost. Также документировано, что HTTPResponse теперь поддерживает эти методы.

  • bpo-25320: Обрабатываются сокеты в каталогах, которые сканирует unittest discovery. Патч от Victor van den Elzen.

  • bpo-16181: cookiejar.http2time() теперь возвращает None, если год больше datetime.MAXYEAR.

  • bpo-26513: Исправлено определение платформы Windows Server в модуле platform.

  • bpo-23718: Исправлен разбор времени на неделе 0 до 1 января. Исходный патч от Tamás Bence Gedai.

  • bpo-26323: Добавлены методы Mock.assert_called() и Mock.assert_called_once() в unittest.mock. Патч написан Amit Saha.

  • bpo-20589: Вызов Path.owner() и Path.group() в Windows теперь вызывает NotImplementedError вместо ImportError.

  • bpo-26177: Исправлен метод keys() для виджетов Canvas и Scrollbar.

  • bpo-15068: Устранена избыточная буферизация в fileinput. Параметр bufsize теперь устарел и игнорируется.

  • bpo-19475: Добавлен необязательный аргумент timespec в метод datetime.isoformat() для выбора точности временной компоненты.

  • bpo-2202: Исправлена ошибка UnboundLocalError в AbstractDigestAuthHandler.get_algorithm_impls. Исходный патч от Mathieu Dupuy.

  • bpo-26167: Минимизированы накладные расходы в copy.copy() и copy.deepcopy(). Оптимизировано копирование и глубокое копирование bytearray, NotImplemented, срезов, коротких списков, кортежей, словарей, множеств.

  • bpo-25718: Исправлены сериализация и копирование итератора accumulate() с total равным None.

  • bpo-26475: Исправлен вывод отладочной информации для регулярных выражений с флагом (?x).

  • bpo-26482: Разрешена сериализация рекурсивных деков.

  • bpo-26335: Сделать mmap.write() возвращающим количество записанных байт, как другие методы write. Патч от Jakub Stasiak.

  • bpo-26457: Исправлены методы subnets() в классах IP-сетей для случая, когда результирующая длина префикса равна максимальной. Основано на патче от Xiang Zhang.

  • bpo-26385: Удалять файл, если внутренний вызов open() в NamedTemporaryFile() завершается ошибкой. Патч от Silent Ghost.

  • bpo-26402: Исправлен клиент XML-RPC для повторной попытки при закрытии сервером постоянного соединения. Это было регрессией, связанной с новым исключением http.client.RemoteDisconnected в 3.5.0a4.

  • bpo-25913: Начальный <~ теперь необязателен в base64.a85decode() с adobe=True. Патч от Swati Jaiswal.

  • bpo-26186: Удалена некорректная проверка типа в importlib.util.LazyLoader.

  • bpo-26367: importlib.__import__() вызывает ImportError, как builtins.__import__(), когда указан level, но не указан соответствующий пакет.

  • bpo-26309: В модуле «socketserver» запрос закрывается (закрывается подключённый сокет), когда verify_request() возвращает false. Патч от Aviv Palivoda.

  • bpo-23430: Изменение модуля socketserver – теперь перехватываются только исключения, наследуемые от Exception (а не BaseException). SystemExit и KeyboardInterrupt больше не вызывают метод handle_error() и теперь останавливают однопоточный сервер.

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

  • bpo-25939: В Windows хранилище сертификатов открывается только для чтения в ssl.enum_certificates.

БиблиотекаLibrary

  • bpo-25995: os.walk() больше не использует файловые дескрипторы пропорционально глубине дерева.

  • bpo-25994: Добавлены метод close() и поддержка протокола менеджера контекста для итератора os.scandir().

  • bpo-23992: multiprocessing: MapResult больше не завершается немедленно при исключении.

  • bpo-26243: Добавлена поддержка именованных аргументов для zlib.compress(). Исправление от Aviv Palivoda.

  • bpo-26117: Итератор os.scandir() теперь закрывает файловый дескриптор не только при завершении итерации, но и при ошибке.

  • bpo-25949: __dict__ для экземпляра OrderedDict теперь создаётся только при необходимости.

  • bpo-25911: Восстановлена поддержка путей в виде байтов в os.walk() в Windows.

  • bpo-26045: Добавлено предложение использовать UTF-8 в сообщении об ошибке при отправке строки не в Latin-1 через http.client.

  • bpo-26039: Добавлены zipfile.ZipInfo.from_file() и zipfile.ZipInfo.is_dir(). Исправление от Thomas Kluyver.

  • bpo-12923: Счётчик перенаправлений FancyURLopener сбрасывается даже в случае исключения. Основано на патчах Brian Brazil и Daniel Rocco.

  • bpo-25945: Исправлен сбой при десериализации объекта functools.partial с некорректным состоянием. Исправлена утечка при неудачном конструировании functools.partial. Атрибуты «args» и «keywords» объекта functools.partial теперь всегда имеют типы tuple и dict соответственно.

  • bpo-26202: copy.deepcopy() теперь корректно копирует объекты range() с неатомарными атрибутами.

  • bpo-23076: Path.glob() теперь вызывает ValueError, если вызван с некорректным шаблоном. Патч от Thomas Nyberg.

  • bpo-19883: Исправлены возможные целочисленные переполнения в zipimport.

  • bpo-26227: На Windows функции getnameinfo(), gethostbyaddr() и gethostbyname_ex() модуля socket теперь декодируют имя хоста из кодовой страницы ANSI, а не UTF-8.

  • bpo-26099: Модуль site теперь записывает ошибку в stderr, если модуль sitecustomize можно импортировать, но его выполнение вызывает ImportError. То же изменение для usercustomize.

  • bpo-26147: xmlrpc теперь работает со строками, которые невозможно закодировать с помощью используемой кодировки, отличной от UTF-8.

  • bpo-25935: Сборщик мусора теперь разрывает циклические ссылки с OrderedDict.

  • bpo-16620: Исправлен AttributeError в msilib.Directory.glob().

  • bpo-26013: Добавлена совместимость с повреждёнными сериализованными объектами протокола 2, созданными в старых версиях Python 3 (3.4.3 и ниже).

  • bpo-26129: Приём нецелочисленных значений в grp.getgrgid() помечен как устаревший.

  • bpo-25850: По умолчанию включена кросс-компиляция для 64-разрядной версии Windows.

  • bpo-25822: Добавлены докстринги к полям результатов urllib.parse. Исправление предоставлено Swati Jaiswal.

  • bpo-22642: Механизм разбора опций модуля trace переведён на argparse. Исправление предоставлено SilentGhost.

  • bpo-24705: Исправлено поведение sysconfig._parse_makefile – теперь корректно раскрываются переменные ${}, расположенные перед переменными $().

  • bpo-26069: Удалены устаревшие API в модуле trace.

  • bpo-22138: Исправлено поведение mock.patch при патчинге дескрипторов. Восстанавливаются исходные значения после патчинга. Патч предоставлен Sean McCully.

  • bpo-25672: В модуле ssl включён режим SSL_MODE_RELEASE_BUFFERS, если это безопасно.

  • bpo-26012: Не обходить символические ссылки для шаблона ** в pathlib.Path.[r]glob().

  • bpo-24120: Игнорировать PermissionError при обходе дерева с помощью pathlib.Path.[r]glob(). Патч от Ulrich Petri.

  • bpo-21815: В части данных imap-ответов теперь допускаются символы ], чтобы обрабатывать флаги с квадратными скобками, которые принимают и генерируют такие серверы, как gmail.

  • bpo-25447: fileinput теперь использует sys.stdin как есть, если у него нет атрибута buffer (восстановлена обратная совместимость).

  • bpo-25971: Оптимизировано создание Fractions из чисел с плавающей точкой – в 2 раза быстрее, а из Decimals – в 3 раза.

  • bpo-25802: Оставшиеся реализации importlib.abc.Loader.load_module() задокументированы как устаревшие.

  • bpo-25928: Добавлен метод Decimal.as_integer_ratio().

  • bpo-25447: Копирование объекта-обёртки lru_cache() теперь всегда работает независимо от типа обёрнутого объекта (возвращается исходный объект без изменений).

  • bpo-25768: Функции в compileall теперь возвращают логические значения вместо целых чисел; добавлены документация и тесты для возвращаемых значений.

  • bpo-24103: Исправлена возможная ошибка use-after-free в ElementTree.XMLPullParser.

  • bpo-25860: os.fwalk() больше не пропускает оставшиеся каталоги при возникновении ошибки. Оригинальный патч от Samson Lee.

  • bpo-25914: Исправлен и упрощён OrderedDict.__sizeof__.

  • bpo-25869: Оптимизировано глубокое копирование ElementTree – теперь в 20 раз быстрее.

  • bpo-25873: Оптимизирован обход ElementTree. Итерация по элементам Element.iter() теперь на 40% быстрее, итерация по тексту Element.itertext() – до 2,5 раз быстрее.

  • bpo-25902: Исправлены различные проблемы с подсчётом ссылок в итерации ElementTree.

  • bpo-22227: Итератор TarFile переписан с использованием генератора. Эта реализация проще, чем через класс.

  • bpo-25638: Оптимизирован ElementTree.iterparse() – теперь в 2 раза быстрее. Оптимизирован разбор ElementTree – теперь на 10% быстрее.

  • bpo-25761: Улучшено обнаружение ошибок в повреждённых pickle-данных.

  • bpo-25717: Восстановлено прежнее поведение: теперь снова допускается большинство ошибок fstat() при открытии файлов. Это было регрессией в 3.5a1, из-за чего в особых случаях переставали работать анонимные временные файлы.

  • bpo-24903: Исправлена регрессия в количестве аргументов, которое принимает compileall при указании ‘-d’. Проверка количества аргументов полностью удалена, так как она всё равно никогда не работала корректно.

  • bpo-25764: В модуле подпроцесса сохраняется любое исключение, вызванное сбоем fork() при использовании preexec_fn.

  • bpo-25771: Уточнено сообщение об исключении в importlib.util.resolve_name(), когда аргумент package не указан, но необходим.

  • bpo-6478: Кэш регулярных выражений _strptime теперь сбрасывается после смены часового пояса с помощью time.tzset().

  • bpo-14285: При выполнении пакета с опцией «python -m package», если инициализация пакета завершается ошибкой, теперь выводится корректная трассировка. Модуль «runpy» теперь позволяет исключениям из инициализации пакета передаваться обратно вызывающему коду, а не вызывает ImportError.

  • bpo-19771: Также в runpy и опции «-m» убрано нерелевантное сообщение «… is a package and cannot be directly executed», если пакет не удалось даже инициализировать (например, из-за проблем с файлом *.pyc).

  • bpo-25177: Исправлена проблема со средним арифметическим очень маленьких и очень больших чисел. Побочный эффект: statistics.mean и statistics.variance теперь работают значительно быстрее.

  • bpo-25718: Исправлено копирование объекта с состоянием, булево значение которого равно False.

  • bpo-10131: Исправлено глубокое копирование документов minidom. Основано на патче от Marian Ganisin.

  • bpo-7990: dir() для ElementTree.Element теперь выводит свойства: tag, text, tail и attrib. Исправление от Santoso Wijaya.

  • bpo-25725: Исправлена утечка ссылок в pickle.loads() при десериализации некорректных данных, включая кортежные инструкции.

  • bpo-25663: В комплитере Readline избегать дублирования глобальных имён, а также искать сначала в глобальном пространстве имён, а затем во встроенном.

  • bpo-25688: Исправлена утечка файла в ElementTree.iterparse() при возникновении ошибки.

  • bpo-23914: Исправлен SystemError, возникающий при десериализации битых pickle-данных.

  • bpo-25691: Исправлен сбой при удалении атрибутов ElementTree.Element.

  • bpo-25624: ZipFile теперь всегда записывает заголовок ZIP_STORED для записей каталогов. Исправление от Dingyuan Wang.

  • bpo-25626: Изменены три функции 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: Избегает некорректных ошибок, вызываемых os.makedirs(exist_ok=True), когда операционная система отдаёт приоритет ошибкам типа EACCES над EEXIST.

  • bpo-25593: Изменена семантика EventLoop.stop() в asyncio.

  • bpo-6973: Когда известно, что процесс subprocess.Popen завершился, не позволяйте методам send_signal(), terminate() или kill() выполнять какие-либо действия, так как они потенциально могут отправить сигнал другому процессу.

  • bpo-23883: Добавлены недостающие 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: В дополнении Readline теперь getattr() вызывается только один раз для каждого атрибута. Также завершаются имена атрибутов, таких как свойства и слоты, которые перечислены dir(), но ещё не созданы в экземпляре.

  • bpo-25498: Исправлен сбой при сборке мусора объектов ctypes, созданных обёрткой memoryview. Это была регрессия, внесённая в 3.5a1. Основано на патче от Eryksun.

  • bpo-25584: Добавлено «escape» в список __all__ в модуле glob.

  • bpo-25584: Исправлена рекурсивная glob() с шаблонами, начинающимися с **.

  • bpo-25446: Исправлена регрессия в поддержке AUTH LOGIN в smtplib.

  • bpo-18010: Исправлена функция поиска модулей веб-сервера pydoc для обработки исключений при импорте пакетов.

  • bpo-25554: Устранены циклические ссылки в разборе регулярных выражений.

  • bpo-18973: Интерфейс командной строки модуля calendar теперь использует argparse вместо optparse.

  • bpo-25510: fileinput.FileInput.readline() теперь возвращает b’’ вместо ‘’ в конце, если FileInput был открыт в бинарном режиме. Патч от Ryosuke Ito.

  • bpo-25503: Исправлен inspect.getdoc() для унаследованных докстрингов свойств. Оригинальный патч от John Mark Vandenberg.

  • bpo-25515: Всегда используется os.urandom как источник случайности в uuid.uuid4.

  • bpo-21827: Исправлен textwrap.dedent() для случая, когда наибольший общий пробельный символ является подстрокой наименьшего ведущего пробела. Основано на патче от Robert Li.

  • bpo-25447: Объекты-обёртки lru_cache() теперь можно копировать и сериализовать (возвращая исходный объект без изменений).

  • bpo-25390: typing: не падать при Union[str, Pattern].

  • bpo-25441: asyncio: вызывать ошибку из drain(), когда сокет закрыт.

  • bpo-25410: Проведена очистка и исправлены мелкие ошибки в C-реализации OrderedDict.

  • bpo-25411: Улучшена поддержка Unicode в SMTPHandler за счёт более эффективного использования пакета email. Спасибо пользователю simon04 за патч.

  • Перемещён модуль imp из PendingDeprecationWarning в DeprecationWarning.

  • bpo-25407: Удалены упоминания о том, что модуль formatter будет удалён в Python 3.6.

  • bpo-25406: Исправлена ошибка в C-реализации OrderedDict.move_to_end(), которая вызывала segmentation fault или зависание при итерации после перемещения нескольких элементов в начало упорядоченного словаря.

  • bpo-25382: pickletools.dis() теперь выводит неявный индекс memo для кода операции MEMOIZE.

  • bpo-25357: Добавлен необязательный параметр newline в binascii.b2a_base64(). base64.b64encode() использует его, чтобы избежать копирования памяти.

  • bpo-24164: Объекты, которые требуют вызова __new__ с именованными аргументами, теперь можно сериализовать с помощью протоколов pickle старше версии 4.

  • bpo-25364: zipfile теперь работает в сборках с отключёнными потоками.

  • bpo-25328: SMTPChannel из smtpd теперь корректно вызывает ValueError, если и decode_data, и enable_SMTPUTF8 установлены в true.

  • bpo-16099: RobotFileParser теперь поддерживает расширения Crawl-delay и Request-rate. Исправление от Nikolay Bogoychev.

  • bpo-25316: distutils вызывает OSError вместо DistutilsPlatformError, если MSVC не установлен.

  • bpo-25380: Исправлен протокол для кода операции STACK_GLOBAL в pickletools.opcodes.

  • bpo-23972: Обновлён метод создания датаграммных сокетов в asyncio – теперь перед привязкой сокета можно задать опции reuseport и reuseaddr. По аналогии с существующим методом create_server опция reuseaddr для датаграммных сокетов по умолчанию равна True, если ОС – posix (за исключением платформы Cygwin). Патч от Chris Laws.

  • bpo-25304: Добавлена функция asyncio.run_coroutine_threadsafe(). Она позволяет передать корутину в цикл событий из другого потока, возвращая объект concurrent.futures.Future. Автор: Vincent Michel.

  • bpo-25232: Исправлен CGIRequestHandler: теперь строка запроса отделяется от URL по первому знаку вопроса (?), а не по последнему. Патч от Xiang Zhang.

  • bpo-24657: Предотвращено схлопывание слешей в части запроса URL в CGIRequestHandler, как если бы это был путь. Патч от Xiang Zhang.

  • bpo-25287: Не добавлять crypt.METHOD_CRYPT в crypt.methods, если он не поддерживается. Проверяется поддержка; например, на OpenBSD он может не поддерживаться.

  • bpo-23600: Реализация по умолчанию метода tzinfo.fromutc() возвращала неверные результаты в некоторых случаях.

  • bpo-25203: При неудачном вызове readline.set_completer_delims() модуль больше не остаётся в несогласованном состоянии.

  • bpo-25011: rlcompleter теперь пропускает частные и специальные имена атрибутов, если только префикс не начинается с подчёркиваний.

  • bpo-25209: rlcompleter теперь может добавлять пробел или двоеточие после завершённого ключевого слова.

  • bpo-22241: Имя timezone.utc теперь просто ‘UTC’, а не ‘UTC-00:00’.

  • bpo-23517: Методы datetime.datetime fromtimestamp() и utcfromtimestamp() теперь округляют микросекунды до ближайшего целого с разрешением спорных случаев в пользу чётного (ROUND_HALF_EVEN), как round(float), вместо округления в сторону минус бесконечности (ROUND_FLOOR).

  • bpo-23552: Timeit теперь выдаёт предупреждение, когда между лучшим и худшим временем существенная разница (в 4 раза). Патч от Serhiy Storchaka.

  • bpo-24633: site-packages/README переименован в README.txt.

  • bpo-24879: help() и pydoc теперь могут перечислять поля именованных кортежей в порядке их определения, а не в алфавитном. Порядок определяется атрибутом _fields, если он присутствует.

  • bpo-24874: Улучшена скорость itertools.cycle() и сделан его pickle более компактным.

  • Исправлена ошибка в itertools.cycle.__setstate__(), возникавшая, когда первый аргумент не был списком.

  • bpo-20059: urllib.parse теперь выбрасывает ValueError для всех недопустимых портов. Патч от Martin Panter.

  • bpo-24360: Улучшен __repr__ для argparse.Namespace() в случае недопустимых идентификаторов. Патч от Matthias Bussonnier.

  • bpo-23426: run_setup был сломан в distutils. Патч от Alexander Belopolsky.

  • bpo-13938: 2to3 преобразует StringTypes в кортеж. Патч от Mark Hammond.

  • bpo-2091: open() принимал строку режима ‘U’, содержащую ‘+’, но ‘U’ можно использовать только с ‘r’. Патч от Jeff Balogh и John O’Connor.

  • bpo-8585: Улучшены тесты для zipimporter2. Патч от Mark Lawrence.

  • bpo-18622: unittest.mock.mock_open().reset_mock вызывал бесконечную рекурсию. Патч от Nicola Palumbo и Laurent De Buyst.

  • bpo-24426: Оптимизация быстрого поиска в регулярных выражениях теперь работает для шаблонов, начинающихся с захватывающих групп. Теперь эту оптимизацию нельзя отключить во время компиляции.

  • bpo-23661: unittest.mock side_effects снова могут быть исключениями. Это было регрессией по сравнению с Python 3.4. Патч от Ignacio Rossi.

  • bpo-13248: Удалена устаревшая функция inspect.getmoduleinfo.

  • bpo-25578: Исправлена (ещё одна) утечка памяти в SSLSocket.getpeercer().

  • bpo-25530: По умолчанию отключён уязвимый протокол SSLv3 при создании ssl.SSLContext.

  • bpo-25569: Исправлена утечка памяти в SSLSocket.getpeercert().

  • bpo-25471: Сокеты, возвращаемые accept(), не должны считаться неблокирующими.

  • bpo-25319: При повторной инициализации threading.Event базовое условие должно использовать обычную блокировку, а не рекурсивную.

  • Пропускать getaddrinfo, если хост уже разрешён. Исправление от A. Jesse Jiryu Davis.

  • bpo-26050: Добавлен метод asyncio.StreamReader.readuntil(). Исправление от Марка Коренберга.

  • bpo-25924: Избегать излишней сериализации вызовов getaddrinfo(3) на OS X версии 10.5 и выше. Первоначальное исправление от A. Jesse Jiryu Davis.

  • bpo-26406: Избегать излишней сериализации вызовов getaddrinfo(3) на текущих версиях OpenBSD и NetBSD. Исправление от A. Jesse Jiryu Davis.

  • bpo-26848: Исправлена обработка пустого ввода в asyncio/subprocess.communicate(). Исправление от Jack O’Connor.

  • bpo-27040: Добавлен метод loop.get_exception_handler

  • bpo-27041: asyncio: добавлен метод loop.create_future

IDLE

  • bpo-20640: Добавлены тесты для idlelib.configHelpSourceEdit. Исправление от Saimadhav Heblikar.

  • В разделе ‘Различия между IDLE и консолью’ документации IDLE уточнить, как запуск с IDLE влияет на sys.modules и стандартные потоки.

  • bpo-25507: исправлено некорректное изменение в IOBinding, которое мешало печати. Расширен htest IOBinding для включения всех основных функций IOBinding.

  • bpo-25905: Отменено нежелательное преобразование ' в ’ (правый одиночный кавычка) в README.txt, открывать этот файл и NEWS.txt с кодировкой ‘ascii’. Перекодировать CREDITS.txt в utf-8 и открывать его с ‘utf-8’.

  • bpo-15348: Останавливать движок отладчика (обычно в пользовательском процессе) перед закрытием окна отладчика (работающего в процессе IDLE). Это предотвращает RuntimeErrors, которые перехватывались и игнорировались.

  • bpo-24455: Предотвратить зависание 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: Улучшен внешний вид строки состояния окна редактора IDLE. Патч от Mark Roseman.

  • bpo-25313: Изменена обработка новых встроенных цветовых тем текста для лучшего решения проблемы совместимости, вызванной добавлением IDLE Dark. Последовательно использовать пересмотренный idleConf.CurrentTheme везде в idlelib.

  • bpo-24782: Конфигурация расширений теперь является вкладкой в диалоге настроек IDLE, а не отдельным диалогом. Прежние вкладки теперь представлены отсортированным списком. Патч от Mark Roseman.

  • bpo-22726: Повторно активировать кнопку справки в диалоге конфигурации с некоторым содержимым о других кнопках и новой теме IDLE Dark.

  • bpo-24820: У IDLE теперь есть встроенная цветовая тема текста ‘IDLE Dark’. Она более или менее инвертированная IDLE Classic, с тёмно-синим фоном. Строки, комментарии, ключевые слова, … по-прежнему зелёные, красные, оранжевые, … . Чтобы использовать её с IDLE, выпущенными до ноября 2015, нажмите кнопку ‘Save as New Custom Theme’ и введите новое имя, например ‘Custom Dark’. Пользовательская тема будет работать с любым релизом IDLE и может быть изменена.

  • bpo-25224: README.txt теперь является индексом idlelib для разработчиков IDLE и любопытных пользователей. Предыдущее пользовательское содержание теперь находится в главе документации IDLE. ‘IDLE’ теперь означает ‘Integrated Development and Learning Environment’.

  • bpo-24820: Пользователи теперь могут задавать цвета точек останова в Settings -> Custom Highlighting. Оригинальный патч от Mark Roseman.

  • bpo-24972: Фон неактивного выделения теперь соответствует фону активного выделения, как настроено пользователем, на всех системах. Найденные элементы теперь всегда выделяются на Windows. Первоначальный патч от Mark Roseman.

  • bpo-24570: Idle: сделать подсказки и окна автодополнения видимыми на Mac, затронутых регрессией tk. Первоначальный патч от Mark Roseman.

  • bpo-24988: Контекстные меню ScrolledList в IDLE (используемые в отладчике) теперь работают на Mac Aqua. Патч от Mark Roseman.

  • bpo-24801: Сделать правый клик для контекстного меню работающим на Mac Aqua. Патч от Mark Roseman.

  • bpo-25173: Связать диалоговые окна tkinter с конкретным виджетом. Для Mac OSX сделать их «листом». Патч от Mark Roseman.

  • bpo-25198: Улучшено начальное средство просмотра HTML, теперь используемое для справки IDLE. Правильно выравнивать моноширинный текст (патч от Mark Roseman). Дать фрагменту кода очень похожий на Sphinx светло-голубовато-серый фон. Повторно использовать начальные ширину и высоту, заданные пользователями для оболочки и редактора. При использовании меню оглавления (TOC) помещать заголовок раздела в верхнюю часть экрана.

  • bpo-25225: Сократить и переписать раздел документации IDLE о цветах текста.

  • bpo-21995: поясняются некоторые различия между IDLE и консольным Python.

  • bpo-22820: разъясняется необходимость print при запуске файла из редактора Idle.

  • bpo-25224: документация: дополнен список возможностей Idle и раздел о работе без подпроцесса.

  • bpo-25219: обновлена документация по параметрам командной строки Idle. Некоторые параметры отсутствовали, а примечания были неверны.

  • bpo-24861: большая часть idlelib является приватной и может измениться. Для запуска Idle используйте idleib.idle.*. См. idlelib.__init__.__doc__.

  • bpo-25199: Idle: добавлены синхронизирующие комментарии для будущих сопровождающих.

  • bpo-16893: Замена 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: объявлен устаревшим неиспользуемый idlelib.idlever; возможно, будет удалён в 3.6.

  • bpo-24790: удалён лишний код (который также создавал конфликты между ветками 2 и 3).

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

  • bpo-26736: Для внешних ссылок в документации по возможности используется HTTPS.

  • bpo-6953: Переработана документация модуля Readline: сгруппированы связанные функции, добавлены подробности, например, какие базовые функции и переменные Readline задействованы.

  • bpo-23606: В документацию ctypes добавлено примечание о cdll.msvcrt.

  • bpo-24952: уточнён аргумент размера по умолчанию для stack_size() в модулях «threading» и «_thread». Патч от Mattip.

  • bpo-26014: Обновлена документация по упаковке для 3.x: * ссылки «See also» на новую документацию теперь добавлены на страницы устаревшей документации * обновлены ссылки на документацию setuptools

ТестыTests

  • bpo-21916: Добавлены тесты для модуля turtle. Патч от ingrid, Gregory Loyse и Jelle Zijlstra.

  • bpo-26295: При использовании «python3 -m test –testdir=TESTDIR» regrtest не добавляет префикс «test.» к именам тестовых модулей.

  • bpo-26523: Пул потоков multiprocessing (multiprocessing.dummy.Pool) не имел тестов.

  • bpo-26015: Добавлены новые тесты для сериализации (pickling) итераторов изменяемых последовательностей.

  • bpo-26325: Добавлена функция test.support.check_no_resource_warning(), проверяющая, что ResourceWarning не возникает.

  • bpo-25940: Изменён test_ssl: теперь чаще используется внутренний локальный сервер. Это позволяет не полагаться на svn.python.org, который недавно изменил корневой сертификат.

  • bpo-25616: Тесты для OrderedDict выделены из test_collections в отдельный файл test_ordered_dict.

  • bpo-25449: добавлены тесты для подклассов OrderedDict.

  • bpo-25188: Добавлен -P/–pgo в test.regrtest для подавления вывода ошибок при запуске тестового набора для целей PGO-сборки. Первоначальный патч от Alecsandru Patrascu.

  • bpo-22806: Добавлена команда python -m test --list-tests для вывода списка тестов.

  • bpo-18174: python -m test --huntrleaks ... теперь также проверяет утечку файловых дескрипторов. Патч написан Ричардом Оудкерком.

  • bpo-25260: Исправлен python -m test --coverage в Windows. Удалён список игнорируемых каталогов.

  • PCbuild\rt.bat теперь принимает неограниченное количество аргументов для передачи в regrtest.py. Ранее существовало ограничение в 9.

  • bpo-26583: Пропускать test_timestamp_overflow в test_import, если запись файлов байт-кода невозможна.

СборкаBuild

  • bpo-21277: Не пытаться линковать _ctypes с библиотекой ffi_convenience.

  • bpo-26884: Исправлена компоновка модулей расширения для кросс-сборок. Патч от Xavier de Gaye.

  • bpo-26932: Исправлена поддержка констант RTLD_*, определённых как значения перечисления, а не через макросы (в частности, на Android). Патч от Chi Hsuan Yen.

  • bpo-22359: Отключены правила для запуска _freeze_importlib и pgen при кросс-компиляции. Вывод этих программ обычно и так сохраняется вместе с исходным кодом и всё равно пересоздаётся при нативной сборке. Патч от Xavier de Gaye.

  • bpo-21668: Модули audioop, _datetime, _ctypes_test теперь линкуются с libm, кроме Mac OS X. Исправление от Chi Hsuan Yen.

  • bpo-25702: Добавлен параметр конфигурации –with-lto, включающий оптимизацию во время компоновки (LTO) при сборке с make profile-opt. Известно, что некоторые компиляторы и инструментальные цепочки могут выдавать нестабильный код при использовании LTO – перед использованием рекомендуется тщательно всё протестировать. Эта оптимизация может дать ускорение на несколько процентов по сравнению с использованием одного profile-opt.

  • bpo-26624: Добавлена проверка версии ucrtbase[d].dll с предупреждением для старых версий.

  • bpo-17603: Устранена ошибка о несуществующем файле fileblocks.o с помощью проверки st_blocks на более низком уровне в struct stat.

  • bpo-26079: Исправлена папка сборки для tix-8.4.3.6. Патч от Bjoern Thiel.

  • bpo-26465: Обновлены сборки Windows для использования OpenSSL 1.0.2g.

  • bpo-25348: Добавлены аргументы --pgo и --pgo-job в PCbuild\build.bat для сборки с профильно-ориентированной оптимизацией (PGO). Старый скрипт PCbuild\build_pgo.bat удалён.

  • bpo-25827: Добавлена поддержка сборки с ICC в configure, включая новый флаг --with-icc.

  • bpo-25696: Исправлена установка Python в UNIX при использовании make -j9.

  • bpo-24986: теперь Python можно собрать в Windows без ошибок, даже если внешние библиотеки недоступны.

  • bpo-24421: Компиляция Modules/_math.c выполняется один раз, до сборки расширений. Ранее он мог некорректно скомпилироваться, если сборки math и cmath выполнялись одновременно.

  • bpo-26465: Обновлён установщик для OS X 10.5+ (только 32-бит) для сборки и линковки с OpenSSL 1.0.2g.

  • bpo-26268: Обновлены сборки Windows для использования OpenSSL 1.0.2f.

  • bpo-25136: Поддержка новых текстовых stub-библиотек SDK Apple Xcode 7.

  • bpo-24324: Не включать предупреждения о недостижимом коде при использовании gcc, так как эта опция некорректно работала в старых версиях gcc и была молча удалена, начиная с gcc-4.5.

Windows

  • bpo-27053: Обновление make_zip.py для корректной генерации ZIP-файла библиотеки.

  • bpo-26268: Обновлён скрипт prepare_ssl.py для работы с релизами OpenSSL, которые не включают содержимое каталога include (то есть, версии 1.0.2e и новее).

  • bpo-26071: созданные бинарники bdist_wininst не запускаются и не находят 32-битный Python

  • bpo-26073: обновление списка магических чисел в загрузчике

  • bpo-26065: исключает venv из библиотеки при генерации встраиваемого дистрибутива.

  • bpo-25022: Удалён устаревший каталог PC/example_nt/.

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

  • bpo-26799: исправление python-gdb.py: не получать типы C один раз при загрузке кода Python, а получать их по запросу. Типы C могут измениться, если python-gdb.py загружается до исполняемого файла Python. Патч написан Thomas Ilsche.

  • bpo-26271: исправление инструмента Freeze для корректного использования флагов, переданных через configure. Патч от Daniel Shaulov.

  • bpo-26489: добавление поддержки распаковки словарей в Tools/parser/unparse.py. Патч от Guo Ci Teo.

  • bpo-26316: исправление опечатки в имени переменной в Argument Clinic.

  • bpo-25440: Исправлен вывод python-config –extension-suffix.

  • bpo-25154: Скрипт pyvenv устарел; вместо него рекомендуется использовать python3 -m venv.

C API

  • bpo-26312: Теперь при всех ошибках программирования, связанных с использованием PyArg_ParseTupleAndKeywords(), возбуждается SystemError. Ранее в некоторых подобных случаях возбуждалось RuntimeError.

  • bpo-26198: ValueError теперь возбуждается вместо TypeError при переполнении буфера при разборе строк формата “es#” и “et#”. SystemError теперь возбуждается вместо TypeError при программной ошибке в разборе строки формата.

Python 3.5.3 финальнаяPython 3.5.3 final

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

Между 3.5.3rc1 и финальной версией 3.5.3 изменений кода не было.

Python 3.5.3 кандидат в релизы 1Python 3.5.3 release candidate 1

Дата выпуска: 2017-01-02

Ядро и встроенные модулиCore and Builtins

  • bpo-29073: Форматирование bytearray больше не обрезается на первом нулевом байте.

  • bpo-28932: Не включать <sys/random.h>, если его не существует.

  • bpo-28147: Исправление утечки памяти в split-table словарях: setattr() не должен преобразовывать объединённую таблицу в раздельную.

  • bpo-25677: Исправление позиционирования каретки синтаксической ошибки для блоков с отступами. Основано на патче Майкла Лейзелла.

  • bpo-29000: Исправлено форматирование байтов восьмеричных чисел с нулевым заполнением в альтернативной форме.

  • bpo-28512: Исправлена установка атрибута offset у SyntaxError функциями PyErr_SyntaxLocationEx() и PyErr_SyntaxLocationObject().

  • bpo-28991: functools.lru_cache() была подвержена трудноуловимой ошибке реентерабельности, вызванной «обезьяньим» патчем функции len().

  • bpo-28648: Исправлен сбой в Py_DecodeLocale() в отладочной сборке на Mac OS X при декодировании астральных символов. Патч от Xiang Zhang.

  • bpo-19398: Лишний слеш больше не добавляется к компонентам sys.path в случае пустых компонентов PYTHONPATH во время компиляции.

  • bpo-28426: Исправлен потенциальный сбой в PyUnicode_AsDecodedObject() в отладочной сборке.

  • bpo-23782: Исправлена возможная утечка памяти в _PyTraceback_Add() и потеря исключения в PyTraceBack_Here().

  • bpo-28379: Добавлены проверки корректности и тесты для PyUnicode_CopyCharacters(). Исправление от Xiang Zhang.

  • bpo-28376: Тип итератора длинных диапазонов теперь зарегистрирован как Iterator. Исправление от Oren Milman.

  • bpo-28376: Конструктор range_iterator теперь проверяет, что шаг (step) не равен 0. Исправление от Oren Milman.

  • bpo-26906: Разрешение специальных методов неинициализированного типа теперь вызывает неявную инициализацию типа вместо ошибки.

  • bpo-18287: PyType_Ready() теперь проверяет, что tp_name не равен NULL. Исходное исправление от Niklas Koep.

  • bpo-24098: Исправлена возможная аварийная остановка при изменении AST во время его компиляции.

  • bpo-28350: Строковые константы с нулевым символом больше не интернируются.

  • bpo-26617: Исправлена аварийная остановка при запуске сборщика мусора во время выполнения колбэков слабых ссылок.

  • bpo-27942: Строковые константы теперь интернируются рекурсивно в кортежах и неизменяемых множествах.

  • bpo-21578: Исправлено вводящее в заблуждение сообщение об ошибке при вызове ImportError с недопустимыми именованными аргументами.

  • bpo-28203: Исправлен неверный тип в сообщении об ошибке из complex(1.0, {2:3}). Исправление от Soumya Sharma.

  • bpo-27955: Запасной вариант – чтение устройства /dev/urandom, если системный вызов getrandom() завершается с EPERM, например, при блокировке SECCOMP.

  • bpo-28131: Исправлена регрессия в zipimport.compile_source(). zipimport должен использовать тот же уровень оптимизации, что и интерпретатор.

  • bpo-25221: Исправлен повреждённый результат PyLong_FromLong(0) при компиляции Python с NSMALLPOSINTS = 0.

  • bpo-25758: Предотвращает излишнее кодирование имени файла в zipimport (исправление от Eryk Sun)

  • bpo-28189: dictitems_contains больше не игнорирует ошибки сравнения. (Исправление от Xiang Zhang)

  • bpo-27812: Корректно очищается обратная ссылка на генератор из его фрейма, чтобы предотвратить аварийные остановки в frame.clear().

  • bpo-27811: Исправлена аварийная остановка при финализации корутины, которая не была ожидана (awaited), с включённым режимом «предупреждения как ошибки».

  • bpo-27587: Исправлена ещё одна проблема, найденная PVS-Studio: проверка нулевого указателя после использования 'def' в _PyState_AddModule(). Первоначальное исправление от Christian Heimes.

  • bpo-26020: Порядок вычисления литерала множества не соответствовал задокументированному поведению.

  • bpo-27782: Импорт модуля-расширения с несколькими фазами теперь корректно позволяет использовать поле m_methods для добавления функций уровня модуля в экземпляры типов, не являющихся модулями, возвращаемые из Py_create_mod. Исправление от Xiang Zhang.

  • bpo-27936: Функция round() принимала второй аргумент None для одних типов, но не для других. Исправлена несогласованность – теперь None принимается для всех числовых типов.

  • bpo-27487: Предупреждение, если аргумент подмодуля для «python -m» или runpy.run_module() найден в sys.modules после импорта родительских пакетов, но до выполнения подмодуля.

  • bpo-27558: Исправлена SystemError в реализации оператора «raise». В совершенно новом потоке теперь возбуждается RuntimeError, так как нет активного исключения для повторного возбуждения. Исправление написано Xiang Zhang.

  • bpo-27419: Стандартная __import__() больше не ищет «__import__» в globals или builtins для импорта подмодулей или «from import». Исправлена обработка ошибки нестрокового имени пакета.

  • bpo-27083: Учтена переменная окружения PYTHONCASEOK в Windows.

  • bpo-27514: Слишком много статически вложенных блоков теперь вызывает SyntaxError вместо SystemError.

  • bpo-27473: Исправлено возможное целочисленное переполнение при конкатенации bytes и bytearray. Исправление от Xiang Zhang.

  • bpo-27507: Добавлена проверка целочисленного переполнения в bytearray.extend(). Исправление от Xiang Zhang.

  • bpo-27581: Не полагаться на обёртывание для проверки переполнения в PySequence_Tuple(). Исправление от Xiang Zhang.

  • bpo-27443: __length_hint__() итераторов bytearray больше не возвращает отрицательное целое число для изменённого bytearray.

  • bpo-27942: Исправлена утечка памяти в codeobject.c

БиблиотекаLibrary

  • bpo-15812: inspect.getframeinfo() теперь корректно показывает первую строку контекста. Патч от Sam Breese.

  • bpo-29094: Смещения в ZIP-файле, созданном с внешним объектом файла и режимами «w» и «x», теперь отсчитываются от начала файла.

  • bpo-13051: Исправлены ошибки рекурсии в большом или изменённом curses.textpad.Textbox. Основано на патче от Tycho Andersen.

  • bpo-29119: Исправлены слабые ссылки в чистой реализации Python метода move_to_end() в collections.OrderedDict. Предложено Andra Bogildea.

  • bpo-9770: Предикаты curses.ascii теперь корректно работают с отрицательными целыми числами.

  • bpo-28427: Старые ключи не должны удалять новые значения из WeakValueDictionary при сборке из другого потока.

  • bpo-28923: Удалены артефакты редактора из Tix.py.

  • bpo-28871: Исправлен сбой при освобождении глубокого ElementTree.

  • bpo-19542: Исправлены ошибки в WeakValueDictionary.setdefault() и WeakValueDictionary.pop(), когда сборка мусора происходит в другом потоке.

  • bpo-20191: Исправлен сбой в resource.prlimit() при передаче последовательности, не владеющей своими элементами, в качестве ограничений.

  • bpo-28779: multiprocessing.set_forkserver_preload() приводил к сбою процесса forkserver, если предварительно загруженный модуль создавал экземпляры некоторых объектов multiprocessing, таких как блокировки.

  • bpo-28847: dbm.dumb теперь поддерживает чтение файлов только для чтения и больше не записывает индексный файл, если он не был изменён.

  • bpo-25659: В ctypes предотвращён сбой при вызове методов from_buffer() и from_buffer_copy() для абстрактных классов, таких как Array.

  • bpo-28732: Исправлен сбой в os.spawnv() при отсутствии элементов в args.

  • bpo-28485: Всегда вызывать ValueError для отрицательного параметра compileall.compile_dir(workers=…), даже если многопоточность недоступна.

  • bpo-28387: Исправлен возможный сбой в деаллокаторе _io.TextIOWrapper, когда сборщик мусора вызывается в другом потоке. Основано на патче от Sebastian Cufre.

  • bpo-27517: Компрессор и декомпрессор LZMA больше не вызывают исключения при двукратном получении пустых данных. Патч от Benjamin Fogle.

  • bpo-28549: Исправлен сегфолт в curses.addch() с ncurses6.

  • bpo-28449: tarfile.open() с режимом «r» или «r:» теперь сначала пытается открыть tar-файл со сжатием, а затем без сжатия. В противном случае с ignore_zeros=True был 50% шанс неудачи.

  • bpo-23262: Модуль webbrowser теперь поддерживает Firefox 36+ и производные браузеры. Основано на патче от Oleg Broytman.

  • bpo-27939: Исправлены ошибки в tkinter.ttk.LabeledScale и tkinter.Scale, вызванные внутренним представлением шкалы в Tk как значения с плавающей запятой. tkinter.IntVar теперь работает, если для базовой переменной Tk установлено значение с плавающей запятой.

  • bpo-28255: calendar.TextCalendar().prmonth() больше не выводит пробел в начале новой строки после печати календаря месяца. Патч от Xiang Zhang.

  • bpo-20491: Класс textwrap.TextWrapper теперь учитывает неразрывные пробелы. Основано на патче от Kaarle Ritvanen.

  • bpo-28353: os.fwalk() больше не завершается ошибкой на битых ссылках.

  • bpo-25464: Исправлен HList.header_exists() в модуле tkinter.tix путём добавления обходного пути для ошибки библиотеки Tix.

  • bpo-28488: shutil.make_archive() больше не добавляет запись «./» в ZIP-архив.

  • bpo-24452: Добавлена поддержка Chrome в webbrowser на Mac OS X.

  • bpo-20766: Исправлена утечка ссылок в pdb при обработке обработчиков SIGINT.

  • bpo-26293: Исправлена запись ZIP-файлов, которые начинаются не с начала файла. Смещения в ZIP-файле теперь отсчитываются от начала архива в соответствии со спецификацией.

  • bpo-28321: Исправлена запись символов не из BMP в бинарном формате в plistlib.

  • bpo-28322: Исправлены возможные сбои при распаковке объектов itertools из некорректных данных pickle. Основано на патче от John Leitch.

  • Исправлены возможные целочисленные переполнения и крахи в модуле mmap при нестандартных сценариях использования.

  • bpo-1703178: Исправлена возможность передачи опции –link-objects команде build_ext из distutils.

  • bpo-28253: Исправлены функции календаря для крайних месяцев: 0001-01 и 9999-12.

    Методы itermonthdays() и itermonthdays2() перереализованы таким образом, что они не вызывают itermonthdates(), что может привести к переполнению или потере точности datetime.date.

  • bpo-28275: Исправлена возможная ошибка использования после освобождения (use-after-free) в методах decompress() классов LZMADecompressor и BZ2Decompressor. Оригинальный патч от John Leitch.

  • bpo-27897: Исправлена возможная аварийная остановка в sqlite3.Connection.create_collation() при передаче недопустимого строкоподобного объекта в качестве имени. Патч от Xiang Zhang.

  • bpo-18893: Исправлена некорректная обработка исключений в Lib/ctypes/macholib/dyld.py. Патч от Madison May.

  • bpo-27611: Исправлена поддержка корневого окна по умолчанию в модуле tkinter.tix.

  • bpo-27348: В модуле traceback восстановлено форматирование сообщений об исключениях вида «Исключение: None». Это исправляет регрессию, появившуюся в 3.5a2.

  • bpo-25651: Разрешено использование ложных значений в параметре msg функции subTest().

  • bpo-27932: Предотвращена утечка памяти в win32_ver().

  • Исправлена ошибка UnboundLocalError в socket._sendfile_use_sendfile.

  • bpo-28075: Добавлена проверка на ERROR_ACCESS_DENIED в реализации os.stat() для Windows. Патч от Eryk Sun.

  • bpo-25270: Предотвращено возбуждение SystemError функцией codecs.escape_encode() при передаче пустой последовательности байтов.

  • bpo-28181: Получение antigravity через HTTPS. Патч от Kaartic Sivaraam.

  • bpo-25895: Включение поддержки схем URL WebSocket в urllib.parse.urljoin. Патч от Gergely Imreh и Markus Holtermann.

  • bpo-27599: Исправлено переполнение буфера в binascii.b2a_qp() и binascii.a2b_qp().

  • bpo-19003: Модуль email.generator теперь заменяет только \r и/или \n окончания строк в соответствии с RFC, вместо всех концов строк Unicode.

  • bpo-28019: itertools.count() больше не округляет нецелый шаг в диапазоне от 1.0 до 2.0 до 1.

  • bpo-25969: Обновлена грамматика lib2to3 для поддержки обобщённой распаковки, добавленной в Python 3.5.

  • bpo-14977: mailcap теперь соблюдает порядок строк в файлах mailcap (принцип «первое совпадение»), как того требует RFC 1542. Патч от Michael Lazar.

  • bpo-24594: Выполняется проверка параметра persist при открытии базы данных MSI.

  • bpo-17582: xml.etree.ElementTree теперь сохраняет пробелы в атрибутах. (Патч от Duane Griffin. Проверено и одобрено Stefan Behnel.)

  • bpo-28047: Исправлен расчет длины строки, используемой для base64 CTE в новых политиках email.

  • bpo-27445: Не передавать str(_charset) в MIMEText.set_payload(). Патч от Claude Paroz.

  • bpo-22450: urllib теперь включает заголовок Accept: */* среди заголовков по умолчанию. Это делает результаты запросов REST API более последовательными и предсказуемыми, особенно при использовании прокси-серверов.

  • lib2to3.pgen3.driver.load_grammar() теперь создаёт стабильный файл кэша между запусками при одинаковом входном файле Grammar.txt независимо от настройки рандомизации хеша.

  • bpo-27570: Избегать вызовов memcpy() и подобных с нулевой длиной и нулевыми указателями источника в модулях «ctypes» и «array».

  • bpo-22233: Разрывать строки заголовков email только по символам CR и LF, указанным в RFC, а не по произвольным концовкам строк Unicode. Также исправлена ошибка при парсинге HTTP-заголовков.

  • bpo-27988: Исправлена некорректная мутация списка payload в email.iter_attachments.

  • bpo-27691: Исправлен разбор полей GEN_RID альтернативных имён субъекта в сертификатах X.509 в модуле ssl.

  • bpo-27850: Удаление 3DES из списка шифров по умолчанию модуля ssl для защиты от атаки sweet32 (CVE-2016-2183).

  • bpo-27766: Добавить ChaCha20 Poly1305 в список шифров по умолчанию в модуле ssl. (Требуется OpenSSL 1.1.0 или LibreSSL).

  • bpo-26470: Перенос модулей ssl и hashlib на OpenSSL 1.1.0.

  • Удалена поддержка передачи файлового дескриптора в os.access. Раньше это никогда не работало, но и исключения не вызывало.

  • bpo-12885: Исправлена ошибка в distutils при обнаружении символической ссылки.

  • bpo-27881: Исправлены возможные ошибки при установке sqlite3.Connection.isolation_level. Основано на патче Сян Чжана.

  • bpo-27861: Исправлен сбой в sqlite3.Connection.cursor(), когда фабрика создаёт не курсор. Патч Сян Чжана.

  • bpo-19884: Избегайте ложного вывода в OS X с Gnu Readline.

  • bpo-27706: Восстановлено детерминированное поведение random.Random().seed() для строковых начальных значений при использовании версии посева 1. Это позволяет последовательностям вызовов random() точно соответствовать тем, что были в Python 2. Патч Нофар Шнайдер.

  • bpo-10513: Исправлена регрессия в Connection.commit(). Операторы не должны сбрасываться после фиксации.

  • Новая версия typing.py из https://github.com/python/typing: Collection (только для 3.6) (bpo-27598). Добавлен FrozenSet в __all__ (upstream #261). Исправлен сбой в _get_type_vars() (upstream #259). Удалено ограничение dict в ForwardRef._eval_type (upstream #252).

  • bpo-27539: Исправлен ненормализованный результат Fraction.__pow__ в случае отрицательного показателя и отрицательного основания.

  • bpo-21718: cursor.description теперь доступен для запросов с CTE.

  • bpo-2466: posixpath.ismount теперь правильно распознаёт точки монтирования, доступ к которым у пользователя отсутствует.

  • bpo-27773: Исправлены некоторые ошибки управления памятью для server_hostname в _ssl.wrap_socket().

  • bpo-26750: unittest.mock.create_autospec() теперь корректно работает для подклассов property() и других дескрипторов данных.

  • В модуле curses теперь вызывается ошибка, если в window.getstr() или window.instr() передано отрицательное значение.

  • bpo-27783: Исправлена возможная работа с неинициализированной памятью в operator.methodcaller.

  • bpo-27774: Исправлен возможный Py_DECREF на не принадлежащем объекте в _sre.

  • bpo-27760: Исправлено возможное целочисленное переполнение в binascii.b2a_qp.

  • bpo-27758: Исправлено возможное целочисленное переполнение в модуле _csv для больших длин записей.

  • bpo-27568: Предотвращение атаки HTTPoxy (CVE-2016-1000110). Переменная HTTP_PROXY игнорируется, когда установлена переменная окружения REQUEST_METHOD, что указывает на работу скрипта в режиме CGI.

  • bpo-27656: Не предполагать, что sched.h определяет какие-либо константы SCHED_*.

  • bpo-27130: В модуле «zlib» исправлена работа с большими буферами (обычно 4 ГиБ) при сжатии и распаковке. Ранее входные данные были ограничены 4 ГиБ, а операции сжатия и распаковки не обрабатывали результаты размером 4 ГиБ должным образом.

  • bpo-27533: Освобождение GIL в nt._isdir

  • bpo-17711: Исправлена распаковка по постоянному идентификатору с протоколом 0. Оригинальный патч Алессандро Вассалотти.

  • bpo-27522: Избежать непреднамеренной циклической ссылки в email.feedparser.

  • bpo-26844: Исправлено сообщение об ошибке для imp.find_module(), чтобы оно ссылалось на «path» вместо «name». Патч Льва Максимова.

  • bpo-23804: Исправлены вызовы recv() с нулевой длиной в SSL: теперь они не блокируются и не вызывают ошибку о нечистом EOF.

  • bpo-27466: Изменён формат времени, возвращаемый http.cookie.time2netscape, чтобы соответствовать netscape-формату cookie и быть согласованным с документацией.

  • bpo-26664: Исправлен activate.fish – удалено неправильное использование $.

  • bpo-22115: Исправлена трассировка переменных Tkinter: trace_vdelete() с неправильным режимом больше не ломает трассировку, trace_vinfo() теперь всегда возвращает список пар строк, трассировка в режиме «u» теперь работает.

  • Исправлена проблема области видимости в importlib.util.LazyLoader, из-за которой возникало UnboundLocalError при ленивой загрузке модуля, уже помещённого в sys.modules.

  • bpo-27079: Исправлены функции curses.ascii isblank(), iscntrl() и ispunct().

  • bpo-26754: Некоторые функции (compile() и т.д.) принимали аргумент filename, закодированный как итерируемый объект из целых чисел. Теперь принимаются только строки и байтоподобные объекты.

  • bpo-27048: Предотвращает сбой distutils в Windows, когда переменные окружения содержат символы, отличные от ASCII.

  • bpo-27330: Исправлены возможные утечки в модуле ctypes.

  • bpo-27238: Избавление от голых except в модуле turtle. Патч от Jelle Zijlstra.

  • bpo-27122: Если исключение возбуждается в контексте, управляемом contextlib.ExitStack(), и один из генераторов стека выхода перехватывает и возбуждает его в цепочке, не возбуждать повторно исходное исключение при выходе, пропускать новое цепочечное. Это предотвращает ошибку PEP 479, описанную в issue25782.

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

  • bpo-27278: Исправление реализации os.urandom() с использованием getrandom() на Linux. Урезание размера до INT_MAX и циклический сбор случайных байтов до получения достаточного количества, вместо прямого приведения Py_ssize_t к int.

БиблиотекаLibrary

  • bpo-26386: Исправлены операции выбора ttk.TreeView с идентификаторами элементов, содержащими пробелы.

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

  • bpo-22636: Устранение проблем внедрения команд оболочки с ctypes.util.find_library().

БиблиотекаLibrary

  • bpo-16182: Исправлены различные функции в модуле «readline» для использования кодировки локали, а также исправлены get_begidx() и get_endidx() для возврата индексов кодовых точек.

  • bpo-27392: Добавлен метод loop.connect_accepted_socket(). Патч от Jim Fulton.

  • bpo-27930: Улучшено поведение logging.handlers.QueueListener. Спасибо Paulo Andrade и Petr Viktorin за анализ и патч.

  • bpo-21201: Улучшена читаемость сообщения об ошибке multiprocessing. Спасибо Wojciech Walczak за патч.

  • bpo-27456: asyncio: установлен TCP_NODELAY по умолчанию.

  • bpo-27906: Исправлено истощение приёма сокетов при высоком TCP-трафике. Патч от Kevin Conway.

  • bpo-28174: Обработка случая, когда SO_REUSEPORT не поддерживается должным образом. Патч от Seth Michael Larson.

  • bpo-26654: Добавлена проверка functools.partial в asyncio.Handle.__repr__. Патч от iceboy.

  • bpo-26909: Исправлен медленный ввод-вывод каналов в asyncio. Патч от INADA Naoki.

  • bpo-28176: Исправлено состояние гонки колбэков в asyncio.SelectorLoop.sock_connect.

  • bpo-27759: Исправлено некорректное удержание недействительных файловых дескрипторов селекторами. Патч от Mark Williams.

  • bpo-28368: Отказ от наблюдения за процессами, если к наблюдателю дочерних процессов не прикреплён цикл. Патч от Vincent Michel.

  • bpo-28369: Возбуждать RuntimeError, когда файловый дескриптор транспорта используется с add_reader, add_writer и т.д.

  • bpo-28370: Ускорение asyncio.StreamReader.readexactly. Патч от Коренберг Марк.

  • bpo-28371: Помечено как устаревшее передачу asyncio.Handles в run_in_executor.

  • bpo-28372: Исправлено asyncio для поддержки форматирования не-Python корутин.

  • bpo-28399: Удаление UNIX-сокета из файловой системы перед привязкой. Патч от Коренберг Марк.

  • bpo-27972: Запрещено задачам ожидать самих себя.

  • bpo-26923: Исправлено asyncio.Gather: отказ от отмены после завершения всех дочерних задач. Патч от Johannes Ebke.

  • bpo-26796: Не настраивать количество рабочих потоков для исполнителя пула потоков по умолчанию. Первоначальный патч от Hans Lawrenz.

  • bpo-28600: Оптимизация loop.call_soon().

  • bpo-28613: Исправлено get_event_loop(): возвращает текущий цикл при вызове из корутин/колбэков.

  • bpo-28639: Исправлено inspect.isawaitable: всегда возвращает bool. Патч от Justin Mayfield.

  • bpo-28652: Методы цикла теперь отклоняют типы сокетов, которые они не поддерживают.

  • bpo-28653: Исправлена утечка ссылок в functools.lru_cache.

  • bpo-28703: Исправлено asyncio.iscoroutinefunction для обработки объектов Mock.

  • bpo-24142: Чтение повреждённого конфигурационного файла оставляло парсер в нерабочем состоянии. Оригинальный патч от Florian Höch.

  • bpo-28990: Исправлена проблема зависания SSL при закрытии соединения до завершения рукопожатия. (Патч от HoHo-Ho)

IDLE

  • bpo-15308: Добавлена команда «прервать выполнение» (^C) в меню Shell. Патч от Roger Serwy, обновлён Bayard Randel.

  • bpo-27922: Прекращено мерцание GUI-виджетов в тестах IDLE на экране.

  • Добавлена версия в заголовок окна справки IDLE.

  • bpo-25564: В разделе о различиях IDLE и консоли упомянуто, что использование exec означает, что __builtins__ определён для каждого оператора.

  • bpo-27714: text_textview и test_autocomplete теперь проходят при повторном запуске в том же процессе. Это происходит, когда test_idle падает при запуске с опцией -w, но без -jn. Исправлено предупреждение из test_config.

  • bpo-25507: IDLE больше не выполняет ошибочный код из-за своих импортов tkinter. Пользователи должны включать те же импорты, которые требуются для прямого запуска в Python.

  • bpo-27452: Добавлены счётчик строк и CRC в дамп теста configHandler в IDLE.

  • bpo-27365: Разрешены не-ASCII символы в IDLE NEWS.txt для имён участников.

  • bpo-27245: IDLE: корректное удаление пользовательских тем и привязок клавиш. Ранее при запуске IDLE из консоли или через import выдавался каскад предупреждений. Патч от Serhiy Storchaka.

C API

  • bpo-28808: PyUnicode_CompareWithASCIIString() теперь никогда не вызывает исключений.

  • bpo-26754: PyUnicode_FSDecoder() принимал аргумент имени файла, закодированный как итерируемый объект из целых чисел. Теперь принимаются только строки и байтоподобные объекты.

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

  • bpo-28513: Документирован интерфейс командной строки zipfile.

ТестыTests

  • bpo-28950: Запрещено комбинировать -j0 с -T/-l/-M в аргументах командной строки regrtest.

  • bpo-28666: Теперь test.support.rmtree может удалять каталоги, недоступные для записи или чтения.

  • bpo-23839: Различные кеши теперь очищаются перед запуском каждого тестового файла.

  • bpo-28409: regrtest: исправлен парсер аргументов командной строки.

  • bpo-27787: Вызов gc.collect() перед проверкой каждого теста на «зависшие потоки», поскольку зависшие потоки являются слабыми ссылками.

  • bpo-27369: В test_pyexpat избегаем проверки деталей сообщения об ошибке, которые изменились в Expat 2.2.0.

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

  • bpo-27952: Исправлена работа Tools/scripts/fixcid.py с Python 3 и текущим модулем «re», устранены некорректные экранирования обратной косой чертой в Python, а также исправлена ошибка разбора экранированных кавычек C.

  • bpo-27332: Исправлен тип первого аргумента функций уровня модуля, генерируемых Argument Clinic. Патч от Petr Viktorin.

  • bpo-27418: Исправлен Tools/importbench/importbench.py.

Windows

  • bpo-28251: Улучшения справочных руководств в Windows.

  • bpo-28110: launcher.msi использует разные коды продукта для 32-битной и 64-битной версий

  • bpo-25144: Обеспечивает установку TargetDir до продолжения настраиваемой установки.

  • bpo-27469: Добавляет расширение оболочки для запускатора, чтобы перетаскивание работало корректно.

  • bpo-27309: Включены корректные стили Windows в манифесте python[w].exe.

СборкаBuild

  • bpo-29080: Убирает жёсткую зависимость от hg.exe в PCBuild/build.bat

  • bpo-23903: Добавлены пропущенные имена в PC/python3.def.

  • bpo-10656: Исправлена сборка вне дерева исходников на AIX. Патч от Tristan Carel и Michael Haubenwallner.

  • bpo-26359: Переименовать –with-optimiations в –enable-optimizations.

  • bpo-28444: Исправляет отсутствующие модули расширений при кросс-компиляции.

  • bpo-28248: Обновляет сборку Windows и установщики OS X для использования OpenSSL 1.0.2j.

  • bpo-28258: Исправлена сборка с эстонской локалью (цели python-config и distclean в Makefile). Патч от Arfrever Frehtes Taifersar Arahesis.

  • bpo-26661: setup.py теперь определяет системную libffi с multiarch wrapper.

  • bpo-28066: Исправляет логику поиска каталогов сборки для сгенерированных include-файлов при сборке вне дерева исходников.

  • bpo-15819: Удаляет избыточную опцию каталога поиска include для сборки вне дерева исходников.

  • bpo-27566: Исправляет цель clean в makefile заморозки (патч от Lisa Roach)

  • bpo-27705: Обновляет сообщение в validate_ucrtbase.py

  • bpo-27983: Отсутствие инструмента llvm-profdata при использовании clang, необходимого для PGO-линковки, теперь вызывает ошибку на этапе конфигурации, а не сборки, когда включён --with-optimizations. Также улучшена возможность поиска llvm-profdata на macOS и некоторых версиях Linux.

  • bpo-26307: Сборка profile-opt теперь применяет PGO ко встроенным модулям.

  • bpo-26359: Добавить флаг configure –with-optimizations.

  • bpo-27713: Подавляет ложные предупреждения сборки при обновлении файлов bootstrap в importlib. Патч от Xiang Zhang

  • bpo-25825: Исправляет ссылки на Modules/python.exp и ld_so_aix, которые требуются на AIX. Обновляет ссылки на путь установки, изменённый в 3.2a4, и отменяет изменённые ссылки на дерево сборки, сделанные в 3.5.0a1.

  • bpo-27453: Вызов CPP в configure должен использовать CPPFLAGS. Патч от Chi Hsuan Yen.

  • bpo-27641: Сценарий configure теперь вставляет комментарии в makefile, чтобы предотвратить кросс-компиляцию исполняемых файлов pgen и _freeze_importlib.

  • bpo-26662: Устанавливает PYTHON_FOR_GEN в configure как программу Python, используемую для генерации файлов во время сборки.

  • bpo-10910: Избегает ошибок компиляции C++ на FreeBSD и OS X. Также обновляет проверки версий FreeBSD для исходного обходного решения ctype UTF-8.

  • bpo-28676: Предотвращает предупреждение о пропущенном объявлении 'getentropy' на macOS. Патч от Gareth Rees.

Python 3.5.2 финальнаяPython 3.5.2 final

Дата выпуска: 2016-06-26

Ядро и встроенные модулиCore and Builtins

  • bpo-26930: Обновляет сборки Windows для использования OpenSSL 1.0.2h.

ТестыTests

  • bpo-26867: В Ubuntu openssl OP_NO_SSLv3 принудительно включён по умолчанию; исправлен тест.

IDLE

  • bpo-27365: Разрешено использование не-ASCII символов в idlelib/NEWS.txt – минимальная часть для версии 3.5.2.

Python 3.5.2, кандидат в релиз 1Python 3.5.2 release candidate 1

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

Ядро и встроенные модулиCore and Builtins

  • bpo-27066: Исправлен SystemError, если пользовательская функция открытия (для open()) возвращает отрицательное число без установки исключения.

  • bpo-20041: Исправлен TypeError, когда frame.f_trace устанавливается в None. Патч от Ксавье де Гай (Xavier de Gaye).

  • bpo-26168: Исправлена возможная утечка ссылок при сбое Py_BuildValue() с форматом «N».

  • bpo-26991: Исправление возможной утечки ссылок при создании функции с аннотациями.

  • bpo-27039: Исправлен bytearray.remove() для значений больше 127. Патч от Джо Джевника (Joe Jevnik).

  • bpo-23640: int.from_bytes() больше не обходит конструкторы подклассов.

  • bpo-26811: gc.get_objects() больше не содержит повреждённый кортеж с нулевым указателем.

  • bpo-20120: Использование RawConfigParser для разбора .pypirc, удаление поддержки интерполяции, непреднамеренно добавленной при переходе на Python 3. Поведение больше не выполняет интерполяцию в файлах .pypirc, совпадая с поведением в Python 2.7 и Setuptools 19.0.

  • bpo-26659: Встроенный тип slice теперь поддерживает сборку циклических ссылок.

  • bpo-26718: super.__init__ больше не приводит к утечке памяти при многократном вызове. ПРИМЕЧАНИЕ: Прямой вызов super.__init__ не рекомендуется!

  • bpo-25339: PYTHONIOENCODING теперь имеет приоритет над локалью при установке обработчика ошибок для stdin и stdout.

  • bpo-26494: Исправлен сбой при итерации истощающих итераторов. Затронутые классы: общие итераторы последовательностей, итераторы str, bytes, bytearray, list, tuple, set, frozenset, dict, OrderedDict, соответствующие представления и итератор os.scandir().

  • bpo-26581: Если в одной строке файла исходного кода Python указано несколько кодировок (coding cookie), учитывается только первая.

  • bpo-26464: Исправление str.translate() для случая, когда строка в ASCII и первая замена удаляет символ, а следующая замена использует не-ASCII символ или строку длиннее 1 символа. Регрессия, внесённая в Python 3.5.0.

  • bpo-22836: Обеспечение осмысленности отчётов об исключениях от PyErr_Display() и PyErr_WriteUnraisable(), даже если их форматирование вызывает вторичные ошибки. Это влияет на отчёты, создаваемые sys.__excepthook__() и при возникновении исключения в __del__().

  • bpo-26302: Исправлено поведение: запятая больше не считается допустимым символом в именах cookie.

  • bpo-4806: Предотвращение маскировки исходного исключения TypeError при использовании распаковки со звездочкой (*) в вызовах функций. На основе патча Хагена Фюрстенау (Hagen Fürstenau) и Дэниела Урбана (Daniel Urban).

  • bpo-27138: Исправлен комментарий в документации для FileFinder.find_spec().

  • bpo-26154: Добавлена новая приватная функция _PyThreadState_UncheckedGet() для получения текущего состояния потока Python, но без фатальной ошибки, если оно NULL. Эту новую функцию следует использовать вместо прямого доступа к переменной _PyThreadState_Current. Переменная больше не доступна начиная с Python 3.5.1, чтобы скрыть точную реализацию атомарных типов C во избежание проблем с компилятором.

  • bpo-26194: Deque.insert() давал странные результаты для ограниченных deque, достигших максимального размера. Теперь при попытке вставки в полный deque будет возбуждаться IndexError.

  • bpo-25843: При компиляции кода не объединять константы, если они равны, но имеют разные типы. Например, f1, f2 = lambda: 1, lambda: 1.0 теперь правильно компилируется в две разные функции: f1() возвращает 1 (int), а f2() возвращает 1.0 (int), даже если 1 и 1.0 равны.

  • bpo-22995: [ОБНОВЛЕНИЕ] Закомментирован один из тестов на возможность сериализации (pickle) в _PyObject_GetState() из-за регрессий, возникших в проектах на Cython.

  • bpo-25961: Запрещены нулевые символы в имени типа.

  • bpo-25973: Исправлен segfault при привязке имени, начинающегося с двух подчёркиваний, в недопустимом операторе nonlocal.

  • bpo-22995: Экземпляры типов-расширений с состоянием, которые не являются подклассами list или dict и не реализуют никаких связанных с pickle методов (__reduce__, __reduce_ex__, __getnewargs__, __getnewargs_ex__ или __getstate__), больше не могут быть сериализованы с помощью pickle. Включая memoryview.

  • bpo-20440: Массовая замена небезопасного кода установки атрибутов на специальный макрос Py_SETREF.

  • bpo-25766: Специальный метод __bytes__() теперь работает в подклассах str.

  • bpo-25421: Методы __sizeof__ встроенных типов теперь используют динамический базовый размер. Это позволяет sys.getsize() корректно работать с их подклассами, в которых определён __slots__.

  • bpo-25709: исправлена проблема с конкатенацией строк на месте и кешем utf-8.

  • bpo-27147: Упоминание PEP 420 в документации importlib.

  • bpo-24097: Исправлен сбой в object.__reduce__(), если имя слота освобождается внутри __getattr__.

  • bpo-24731: Исправлен сбой при преобразовании объектов со специальными методами __bytes__, __trunc__ и __float__, которые возвращают экземпляры подклассов bytes, int и float, в соответствующие подклассы bytes, int и float.

  • bpo-26478: Исправлены семантические ошибки при использовании бинарных операторов с представлениями словарей и кортежами.

  • bpo-26171: Исправлена возможная арифметическая переполнение и повреждение кучи в zipimporter.get_data().

  • bpo-25660: Исправлено поведение клавиши TAB в REPL с readline.

  • bpo-25887: Вызывается RuntimeError при ожидании объекта корутины более одного раза.

  • bpo-27243: Обновлён протокол __aiter__: вместо возврата ожидаемого объекта, который разрешается в асинхронный итератор, асинхронный итератор должен возвращаться напрямую. Использование первого варианта вызовет PendingDeprecationWarning.

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

  • bpo-26556: Обновление expat до версии 2.1.1, исправление CVE-2015-1283.

  • Исправление уязвимости снятия TLS в smtplib, CVE-2016-0772. Сообщено командой Oststrom.

БиблиотекаLibrary

  • bpo-21386: Реализовано недостающее свойство IPv4Address.is_global. Оно документировано начиная с 07a5610bae9d. Первоначальный патч от Roger Luethi.

  • bpo-20900: Команда register в distutils теперь корректно декодирует HTTP-ответы. Первоначальный патч от ingrid.

  • Новая версия typing.py предоставляет несколько новых классов и возможностей: @overload вне заглушек, DefaultDict, Text, ContextManager, Type[], NewType(), TYPE_CHECKING, а также множество исправлений ошибок (обратите внимание, что некоторые новые возможности ещё не реализованы в mypy или других статических анализаторах). Также добавлены классы для PEP 492 (Awaitable, AsyncIterable, AsyncIterator) (фактически они появились в 3.5.1, но не были упомянуты).

  • bpo-25738: Остановлена отправка тела сообщения в http.server.BaseHTTPRequestHandler.send_error() для кода 205 Reset Content. Также не отправляются поля заголовка Content в ответах без тела. Патч от Susumu Koshiba.

  • bpo-21313: Исправлен модуль platform для корректной работы, когда sys.version содержит усечённую информацию о сборке.

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

  • bpo-26839: В Linux os.urandom() теперь вызывает getrandom() с GRND_NONBLOCK для перехода на чтение /dev/urandom, если пул энтропии urandom ещё не инициализирован. Патч написан Колмом Бакли (Colm Buckley).

БиблиотекаLibrary

  • bpo-27164: В модуле zlib разрешена декомпрессия сырых потоков Deflate с предопределённым zdict. Основано на патче от Xiang Zhang.

  • bpo-24291: Исправлено wsgiref.simple_server.WSGIRequestHandler для полной записи данных клиенту. Ранее могли происходить частичные записи и усечение данных. Также wsgiref.handler.ServerHandler теперь может обрабатывать частичные записи в stdout, но это устарело.

  • bpo-26809: Добавлено __all__ в string. Патч от Emanuel Barry.

  • bpo-26373: subprocess.Popen.communicate теперь корректно игнорирует BrokenPipeError, когда дочерний процесс завершается до вызова .communicate() во всех/большинстве случаев.

  • bpo-21776: distutils.upload теперь корректно обрабатывает HTTPError. Первоначальный патч от Claudiu Popa.

  • bpo-27114: Исправлена ошибка PermissionError в SSLContext._load_windows_store_certs.

  • bpo-18383: Избегание создания дублирующих фильтров при использовании filterwarnings и simplefilter. Основано на патче от Alex Shkop.

  • bpo-27057: Исправлен os.set_inheritable() на Android: ioctl() блокируется SELinux и завершается с EACCESS. Функция теперь использует fcntl() в качестве запасного варианта. Патч написан Michał Bednarski.

  • bpo-27014: Исправлена бесконечная рекурсия при использовании typing.py. Спасибо Kalle Tuure!

  • bpo-14132: Исправлена обработка перенаправлений в urllib.request, когда целевой URL содержит только строку запроса. Первоначальное исправление от Ján Janech.

  • bpo-17214: Модуль «urllib.request» теперь процентно кодирует не-ASCII байты найденные в URL-адресах перенаправления. Некоторые серверы отправляют поля заголовка Location с не-ASCII байтами, но «http.client» требует, чтобы целевой запрос был кодируем в ASCII, в противном случае возбуждается UnicodeEncodeError. На основе патча от Christian Heimes.

  • bpo-26892: Учтён флаг debuglevel в urllib.request.HTTPHandler. Патч предоставлен Chi Hsuan Yen.

  • bpo-22274: В модуле subprocess разрешено перенаправление stderr в\nstdout, даже если stdout не перенаправлен. Патч от Akira Li.

  • bpo-26807: Атрибут files у mock_open больше не вызывает ошибку при readline в конце файла. Патч от Yolanda Robla.

  • bpo-25745: Исправлена утечка userptr в деструкторе панели curses.

  • bpo-26977: Удалён ненужный и игнорируемый вызов вспомогательной функции суммы квадратов в statistics.pvariance.

  • bpo-26881: Модуль modulefinder теперь поддерживает расширенные аргументы опкодов.

  • bpo-23815: Исправлены сбои, связанные с напрямую созданными экземплярами типов в модулях _tkinter и curses.panel.

  • bpo-17765: weakref.ref() больше не игнорирует молча именованные аргументы. Патч от Georg Brandl.

  • bpo-26873: xmlrpc теперь возбуждает ResponseError для неподдерживаемых тегов типов вместо того чтобы молча возвращать неверный результат.

  • bpo-26711: Исправлено сравнение plistlib.Data с другими типами.

  • bpo-24114: Исправлена неинициализированная переменная в ctypes.util.

    Ошибка возникает только на SunOS, когда реализация ctypes ищет программу crle. Патч от Xiang Zhang. Тестировал на SunOS Kees Bos.

  • bpo-26864: В urllib.request изменена проверка хостов для обхода прокси по no_proxy: теперь она регистронезависима и не сопоставляется с несвязанными именами хостов которые случайно имеют обходимый хост в качестве суффикса. Патч от Xiang Zhang.

  • bpo-26634: recursive_repr() теперь устанавливает __qualname__ обёртки. Патч от Xiang Zhang.

  • bpo-26804: urllib.request теперь предпочитает переменные окружения прокси в нижнем регистре, а не в ВЕРХНЕМ или Смешанном_Регистре. Патч предоставлен Hans-Peter Jansen.

  • bpo-26837: assertSequenceEqual() теперь корректно выводит нестроковые различающиеся элементы (например, bytes в режиме -b). Это затрагивает assertListEqual() и assertTupleEqual().

  • bpo-26041: Из сообщений об устаревании функций platform.dist() и platform.linux_distribution() удалена фраза «will be removed in Python 3.7». Патч от Kumaripaba Miyurusara Athukorala.

  • bpo-26822: Объекты itemgetter, attrgetter и methodcaller больше не игнорируют молча именованные аргументы.

  • bpo-26733: Дизассемблирование класса теперь дизассемблирует методы класса и статические методы. Патч от Xiang Zhang.

  • bpo-26801: Исправлена обработка ошибок в shutil.get_terminal_size(): перехватывается AttributeError вместо NameError. Патч написан Emanuel Barry.

  • bpo-24838: Форматы ustar и gnu в tarfile теперь корректно вычисляют пределы полей имени и ссылки для многобайтовых кодировок символов, таких как utf-8.

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

  • bpo-26657: Исправление уязвимости обхода каталогов (directory traversal) в http.server на Windows. Исправляет регрессию, внесённую в 3.3.4rc1 и 3.4.0rc1. На основе патча Филиппа Хагемайстера (Philipp Hagemeister).

БиблиотекаLibrary

  • bpo-26717: Прекращено кодирование путей WSGI, преобразованных в Latin-1, с помощью UTF-8. Патч от Anthony Sottile.

  • bpo-26735: Исправлен os.urandom() в Solaris 11.3 и новее при чтении более 1024 байт: вызывать getrandom() несколько раз с ограничением 1024 байта за вызов.

  • bpo-16329: Добавлен .webm в mimetypes.types_map. Патч от Giampaolo Rodola’.

  • bpo-13952: Добавлен .csv в mimetypes.types_map. Патч от Geoff Wilson.

  • bpo-26709: Исправлена проблема Y2038 при загрузке двоичных PList-файлов.

  • bpo-23735: Обрабатывается изменение размера терминала в Readline 6.3+ с помощью установки собственного обработчика SIGWINCH. Патч от Eric Price.

  • bpo-26586: В http.server теперь отправляется ответ «413 Request header fields too large», если для разбора слишком много полей заголовка, вместо прерывания соединения и возбуждения необработанного исключения. Патч от Xiang Zhang.

  • bpo-22854: Изменено поведение BufferedReader.writable() и BufferedWriter.readable(): теперь они всегда возвращают False.

  • bpo-25195: Исправлена регрессия в mock.MagicMock. _Call является подклассом tuple (изменение 3603bae63c13 работает только для классов), поэтому пришлось реализовать __ne__ самостоятельно. Патч от Andrew Plummer.

  • bpo-26644: Возбуждается ValueError вместо SystemError, когда отрицательная длина передаётся в SSLSocket.recv() или read().

  • bpo-23804: Исправлены методы SSL recv(0) и read(0): теперь они возвращают ноль байт вместо до 1024.

  • bpo-26616: Исправлена ошибка в методе datetime.astimezone().

  • bpo-21925: warnings.formatwarning() теперь перехватывает исключения в linecache.getline(...), чтобы иметь возможность логировать ResourceWarning, отправленные с опозданием во время завершения работы интерпретатора Python.

  • bpo-24266: При компиляции с Readline 7 нажатие Ctrl+C во время поиска по истории Readline теперь отменяет режим поиска.

  • bpo-26560: Предотвращено возможное исключение ValueError в BaseHandler.start_response. Первоначальный патч от Peter Inglesby.

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

  • bpo-26313: ssl.py _load_windows_store_certs завершается ошибкой, если хранилище сертификатов Windows пусто. Патч от Baji.

БиблиотекаLibrary

  • bpo-26569: Исправлены pyclbr.readmodule() и pyclbr.readmodule_ex() для поддержки импорта пакетов.

  • bpo-26499: Учтён остаток Content-Length в HTTPResponse.readline() и read1(). Основано на патче от Silent Ghost. Также документировано, что HTTPResponse теперь поддерживает эти методы.

  • bpo-25320: Обрабатываются сокеты в каталогах, которые сканирует unittest discovery. Патч от Victor van den Elzen.

  • bpo-16181: cookiejar.http2time() теперь возвращает None, если год больше datetime.MAXYEAR.

  • bpo-26513: Исправлено определение платформы Windows Server в модуле platform.

  • bpo-23718: Исправлен разбор времени на неделе 0 до 1 января. Исходный патч от Tamás Bence Gedai.

  • bpo-20589: Вызов Path.owner() и Path.group() в Windows теперь вызывает NotImplementedError вместо ImportError.

  • bpo-26177: Исправлен метод keys() для виджетов Canvas и Scrollbar.

  • bpo-15068: Устранена избыточная буферизация в модуле fileinput. Параметр bufsize больше не используется.

  • bpo-2202: Исправлена ошибка UnboundLocalError в AbstractDigestAuthHandler.get_algorithm_impls. Исходный патч от Mathieu Dupuy.

  • bpo-25718: Исправлены сериализация и копирование итератора accumulate() с total равным None.

  • bpo-26475: Исправлен вывод отладочной информации для регулярных выражений с флагом (?x).

  • bpo-26457: Исправлены методы subnets() в классах IP-сетей для случая, когда результирующая длина префикса равна максимальной. Основано на патче от Xiang Zhang.

  • bpo-26385: Удалять файл, если внутренний вызов open() в NamedTemporaryFile() завершается ошибкой. Патч от Silent Ghost.

  • bpo-26402: Исправлен клиент XML-RPC для повторной попытки при закрытии сервером постоянного соединения. Это было регрессией, связанной с новым исключением http.client.RemoteDisconnected в 3.5.0a4.

  • bpo-25913: Начальный <~ теперь необязателен в base64.a85decode() с adobe=True. Патч от Swati Jaiswal.

  • bpo-26186: Удалена некорректная проверка типа в importlib.util.LazyLoader.

  • bpo-26367: importlib.__import__() вызывает SystemError, как и builtins.__import__(), когда указан level, но без сопровождающего пакета.

  • bpo-26309: В модуле «socketserver» запрос закрывается (закрывается подключённый сокет), когда verify_request() возвращает false. Патч от Aviv Palivoda.

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

  • bpo-25939: В Windows хранилище сертификатов открывается только для чтения в ssl.enum_certificates.

БиблиотекаLibrary

  • bpo-25995: os.walk() больше не использует файловые дескрипторы пропорционально глубине дерева.

  • bpo-26117: Итератор os.scandir() теперь закрывает файловый дескриптор не только при завершении итерации, но и при ошибке.

  • bpo-25911: Восстановлена поддержка путей в виде байтов в os.walk() в Windows.

  • bpo-26045: Добавлено предложение использовать UTF-8 в сообщении об ошибке при отправке строки не в Latin-1 через http.client.

  • bpo-12923: Счётчик перенаправлений FancyURLopener сбрасывается даже в случае исключения. Основано на патчах Brian Brazil и Daniel Rocco.

  • bpo-25945: Исправлен сбой при десериализации объекта functools.partial с некорректным состоянием. Исправлена утечка при неудачном конструировании functools.partial. Атрибуты «args» и «keywords» объекта functools.partial теперь всегда имеют типы tuple и dict соответственно.

  • bpo-26202: copy.deepcopy() теперь корректно копирует объекты range() с неатомарными атрибутами.

  • bpo-23076: Path.glob() теперь вызывает ValueError, если вызван с некорректным шаблоном. Патч от Thomas Nyberg.

  • bpo-19883: Исправлены возможные целочисленные переполнения в zipimport.

  • bpo-26227: На Windows функции getnameinfo(), gethostbyaddr() и gethostbyname_ex() модуля socket теперь декодируют имя хоста из кодовой страницы ANSI, а не UTF-8.

  • bpo-26147: xmlrpc теперь работает со строками, которые невозможно закодировать с помощью используемой кодировки, отличной от UTF-8.

  • bpo-25935: Сборщик мусора теперь разрывает циклические ссылки с OrderedDict.

  • bpo-16620: Исправлен AttributeError в msilib.Directory.glob().

  • bpo-26013: Добавлена совместимость с повреждёнными сериализованными объектами протокола 2, созданными в старых версиях Python 3 (3.4.3 и ниже).

  • bpo-25850: По умолчанию включена кросс-компиляция для 64-разрядной версии Windows.

  • bpo-17633: Улучшена поддержка пространств имён пакетов в zipimport.

  • bpo-24705: Исправлено поведение sysconfig._parse_makefile – теперь корректно раскрываются переменные ${}, расположенные перед переменными $().

  • bpo-22138: Исправлено поведение mock.patch при патчинге дескрипторов. Восстанавливаются исходные значения после патчинга. Патч предоставлен Sean McCully.

  • bpo-25672: В модуле ssl включён режим SSL_MODE_RELEASE_BUFFERS, если это безопасно.

  • bpo-26012: Не обходить символические ссылки для шаблона ** в pathlib.Path.[r]glob().

  • bpo-24120: Игнорировать PermissionError при обходе дерева с помощью pathlib.Path.[r]glob(). Патч от Ulrich Petri.

  • bpo-25447: fileinput теперь использует sys.stdin как есть, если у него нет атрибута buffer (восстановлена обратная совместимость).

  • bpo-25447: Копирование объекта-обёртки lru_cache() теперь всегда работает независимо от типа обёрнутого объекта (возвращается исходный объект без изменений).

  • bpo-24103: Исправлена возможная ошибка use-after-free в ElementTree.XMLPullParser.

  • bpo-25860: os.fwalk() больше не пропускает оставшиеся каталоги при возникновении ошибки. Оригинальный патч от Samson Lee.

  • bpo-25914: Исправлен и упрощён OrderedDict.__sizeof__.

  • bpo-25902: Исправлены различные проблемы с подсчётом ссылок в итерации ElementTree.

  • bpo-25717: Восстановлено прежнее поведение: теперь снова допускается большинство ошибок fstat() при открытии файлов. Это было регрессией в 3.5a1, из-за чего в особых случаях переставали работать анонимные временные файлы.

  • bpo-24903: Исправлена регрессия в количестве аргументов, которое принимает compileall при указании ‘-d’. Проверка количества аргументов полностью удалена, так как она всё равно никогда не работала корректно.

  • bpo-25764: В модуле подпроцесса сохраняется любое исключение, вызванное сбоем fork() при использовании preexec_fn.

  • bpo-6478: Кэш регулярных выражений _strptime теперь сбрасывается после смены часового пояса с помощью time.tzset().

  • bpo-14285: При выполнении пакета с опцией «python -m package», если инициализация пакета завершается ошибкой, теперь выводится корректная трассировка. Модуль «runpy» теперь позволяет исключениям из инициализации пакета передаваться обратно вызывающему коду, а не вызывает ImportError.

  • bpo-19771: Также в runpy и опции «-m» убрано нерелевантное сообщение «… is a package and cannot be directly executed», если пакет не удалось даже инициализировать (например, из-за проблем с файлом *.pyc).

  • bpo-25177: Исправлена проблема со средним арифметическим очень маленьких и очень больших чисел. Побочный эффект: statistics.mean и statistics.variance теперь работают значительно быстрее.

  • bpo-25718: Исправлено копирование объекта с состоянием, булево значение которого равно False.

  • bpo-10131: Исправлено глубокое копирование документов minidom. Основано на патче от Marian Ganisin.

  • bpo-25725: Исправлена утечка ссылок в pickle.loads() при десериализации некорректных данных, включая кортежные инструкции.

  • bpo-25663: В комплитере Readline избегать дублирования глобальных имён, а также искать сначала в глобальном пространстве имён, а затем во встроенном.

  • bpo-25688: Исправлена утечка файла в ElementTree.iterparse() при возникновении ошибки.

  • bpo-23914: Исправлен SystemError, возникающий при десериализации битых pickle-данных.

  • bpo-25691: Исправлен сбой при удалении атрибутов ElementTree.Element.

  • bpo-25624: ZipFile теперь всегда записывает заголовок ZIP_STORED для записей каталогов. Исправление от Dingyuan Wang.

  • Пропускать getaddrinfo, если хост уже разрешён. Исправление от A. Jesse Jiryu Davis.

  • bpo-26050: Добавлен метод asyncio.StreamReader.readuntil(). Исправление от Марка Коренберга.

  • bpo-25924: Избегать излишней сериализации вызовов getaddrinfo(3) на OS X версии 10.5 и выше. Первоначальное исправление от A. Jesse Jiryu Davis.

  • bpo-26406: Избегать излишней сериализации вызовов getaddrinfo(3) на текущих версиях OpenBSD и NetBSD. Исправление от A. Jesse Jiryu Davis.

  • bpo-26848: Исправлена обработка пустого ввода в asyncio/subprocess.communicate(). Исправление от Jack O’Connor.

  • bpo-27040: Добавлен метод loop.get_exception_handler

  • bpo-27041: asyncio: добавлен метод loop.create_future

  • bpo-27223: asyncio: исправлены _read_ready и _write_ready для учёта _conn_lost. Исправление от Łukasz Langa.

  • bpo-22970: asyncio: исправлена ошибка при отмене Condition.wait. Исправление от David Coles.

IDLE

  • bpo-5124: Вставка с выделенным текстом теперь заменяет выделение на X11. Это соответствует поведению вставки в Windows, Mac, большинстве современных приложений Linux и виджетах ttk. Первоначальное исправление от Serhiy Storchaka.

  • bpo-24759: Уточнено в idlelib.idle_test.__init__, что этот каталог является закрытой реализацией test.test_idle и инструментом для сопровождающих.

  • bpo-27196: Прекратить появление предупреждений ‘ThemeChanged’ при запуске тестов IDLE. Они сохранялись после подавления других предупреждений в #20567. Применить решение Serhiy Storchaka с update_idletasks к четырём тестовым файлам. Записать этот дополнительный совет в idle_test/README.txt

  • bpo-20567: Переработан idle_test/README.txt с рекомендациями по предотвращению предупреждений tk от тестов. Рекомендации применены к нескольким тестам IDLE.

  • bpo-27117: Обеспечить работу colorizer htest и turtledemo с тёмными темами. Перенести код настройки цветов текстового виджета в новую функцию.

  • bpo-26673: Когда tk сообщает размер шрифта 0, изменять на размер 10. Такие шрифты в Linux препятствовали открытию диалога настройки.

  • bpo-21939: Добавлен тест для перколятора IDLE. Первоначальное исправление от Saimadhav Heblikar.

  • bpo-21676: Добавлен тест для диалога замены IDLE. Первоначальное исправление от Saimadhav Heblikar.

  • bpo-18410: Добавлен тест для диалога поиска IDLE. Первоначальное исправление от Westley Martínez.

  • bpo-21703: Добавлен тест для делегатора отмены IDLE. Первоначальное исправление от Saimadhav Heblikar .

  • bpo-27044: Добавлен ConfigDialog.remove_var_callbacks для предотвращения утечек памяти.

  • bpo-23977: Добавлены дополнительные проверки в test_delegator.

  • bpo-20640: Добавлены тесты для idlelib.configHelpSourceEdit. Исправление от Saimadhav Heblikar.

  • В разделе ‘Различия между IDLE и консолью’ документации IDLE уточнить, как запуск с IDLE влияет на sys.modules и стандартные потоки.

  • bpo-25507: исправлено некорректное изменение в IOBinding, которое мешало печати. Расширен htest IOBinding для включения всех основных функций IOBinding.

  • bpo-25905: Отменено нежелательное преобразование ' в ’ (правый одиночный кавычка) в README.txt, открывать этот файл и NEWS.txt с кодировкой ‘ascii’. Перекодировать CREDITS.txt в utf-8 и открывать его с ‘utf-8’.

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

  • bpo-19489: Поле поиска перенесено из боковой панели в заголовок и подвал каждой страницы. Исправление от Ammar Askar.

  • bpo-24136: Документировать новый синтаксис распаковки PEP 448 версии 3.5.

  • bpo-26736: Для внешних ссылок в документации по возможности используется HTTPS.

  • bpo-6953: Переработана документация модуля Readline: сгруппированы связанные функции, добавлены подробности, например, какие базовые функции и переменные Readline задействованы.

  • bpo-23606: В документацию ctypes добавлено примечание о cdll.msvcrt.

  • bpo-25500: Исправлена документация: теперь она не утверждает, что __import__ ищется в глобальной области видимости.

  • bpo-26014: Обновлена документация по упаковке для 3.x: * ссылки «See also» на новую документацию теперь добавлены на страницы устаревшей документации * обновлены ссылки на документацию setuptools

ТестыTests

  • bpo-21916: Добавлены тесты для модуля turtle. Патч от ingrid, Gregory Loyse и Jelle Zijlstra.

  • bpo-26523: Пул потоков multiprocessing (multiprocessing.dummy.Pool) не имел тестов.

  • bpo-26015: Добавлены новые тесты для сериализации (pickling) итераторов изменяемых последовательностей.

  • bpo-26325: Добавлена функция test.support.check_no_resource_warning(), проверяющая, что ResourceWarning не возникает.

  • bpo-25940: Изменён test_ssl: теперь используется self-signed.pythontest.net. Это позволяет не зависеть от svn.python.org, который недавно сменил корневой сертификат.

  • bpo-25616: Тесты для OrderedDict выделены из test_collections в отдельный файл test_ordered_dict.

  • bpo-26583: Пропускать test_timestamp_overflow в test_import, если запись файлов байт-кода невозможна.

СборкаBuild

  • bpo-26884: Исправлена компоновка модулей расширения для кросс-сборок. Патч от Xavier de Gaye.

  • bpo-22359: Отключены правила для запуска _freeze_importlib и pgen при кросс-компиляции. Вывод этих программ обычно и так сохраняется вместе с исходным кодом и всё равно пересоздаётся при нативной сборке. Патч от Xavier de Gaye.

  • bpo-27229: Исправлено правило pgen для кросс-компиляции при сборке внутри дерева исходников. Патч от Xavier de Gaye.

  • bpo-21668: Привязать модули audioop, _datetime, _ctypes_test к libm, за исключением Mac OS X. Патч от Xavier de Gaye.

  • bpo-25702: Добавлен параметр конфигурации –with-lto, включающий оптимизацию во время компоновки (LTO) при сборке с make profile-opt. Известно, что некоторые компиляторы и инструментальные цепочки могут выдавать нестабильный код при использовании LTO – перед использованием рекомендуется тщательно всё протестировать. Эта оптимизация может дать ускорение на несколько процентов по сравнению с использованием одного profile-opt.

  • bpo-26624: Добавлена проверка версии ucrtbase[d].dll с предупреждением для старых версий.

  • bpo-17603: Устранена ошибка о несуществующем файле fileblocks.o с помощью проверки st_blocks на более низком уровне в struct stat.

  • bpo-26079: Исправлена папка сборки для tix-8.4.3.6. Патч от Bjoern Thiel.

  • bpo-26465: Обновлены сборки Windows для использования OpenSSL 1.0.2g.

  • bpo-24421: Компиляция Modules/_math.c выполняется один раз, до сборки расширений. Ранее он мог некорректно скомпилироваться, если сборки math и cmath выполнялись одновременно.

  • bpo-25348: Добавлены аргументы --pgo и --pgo-job в PCbuild\build.bat для сборки с профильной оптимизацией (PGO). Старый скрипт PCbuild\build_pgo.bat теперь устарел и просто вызывает PCbuild\build.bat --pgo %*.

  • bpo-25827: Добавлена поддержка сборки с ICC в configure, включая новый флаг --with-icc.

  • bpo-25696: Исправлена установка Python в UNIX при использовании make -j9.

  • bpo-26930: Обновлён 32-разрядный установщик для OS X 10.5+ для сборки и компоновки с OpenSSL 1.0.2h.

  • bpo-26268: Обновлены сборки Windows для использования OpenSSL 1.0.2f.

  • bpo-25136: Поддержка новых текстовых stub-библиотек SDK Apple Xcode 7.

  • bpo-24324: Не включать предупреждения о недостижимом коде при использовании gcc, так как эта опция некорректно работала в старых версиях gcc и была молча удалена, начиная с gcc-4.5.

Windows

  • bpo-27053: Обновление make_zip.py для корректной генерации ZIP-файла библиотеки.

  • bpo-26268: Обновлён скрипт prepare_ssl.py для работы с релизами OpenSSL, которые не включают содержимое каталога include (то есть, версии 1.0.2e и новее).

  • bpo-26071: созданные бинарники bdist_wininst не запускаются и не находят 32-битный Python

  • bpo-26073: обновление списка магических чисел в загрузчике

  • bpo-26065: исключает venv из библиотеки при генерации встраиваемого дистрибутива.

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

  • bpo-26799: исправление python-gdb.py: не получать типы C один раз при загрузке кода Python, а получать их по запросу. Типы C могут измениться, если python-gdb.py загружается до исполняемого файла Python. Патч написан Thomas Ilsche.

  • bpo-26271: исправление инструмента Freeze для корректного использования флагов, переданных через configure. Патч от Daniel Shaulov.

  • bpo-26489: добавление поддержки распаковки словарей в Tools/parser/unparse.py. Патч от Guo Ci Teo.

  • bpo-26316: исправление опечатки в имени переменной в Argument Clinic.

Windows

Python 3.5.1 финальнаяPython 3.5.1 final

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

Ядро и встроенные модулиCore and Builtins

  • bpo-25709: исправлена проблема с конкатенацией строк на месте и кешем utf-8.

Windows

  • bpo-25715: установщик Python 3.5.1 показывает неверный путь обновления и некорректную логику обнаружения загрузчика.

Python 3.5.1 кандидат в релизы 1Python 3.5.1 release candidate 1

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

Ядро и встроенные модулиCore and Builtins

  • bpo-25630: исправление возможного segfault при разборе аргументов в функциях, принимающих пути файловой системы.

  • bpo-23564: исправлена частично сломанная проверка корректности во внутренностях _posixsubprocess относительно того, как fds_to_pass передавались дочернему процессу. Ошибка не имела фактического влияния, так как subprocess.py уже её избегал.

  • bpo-25388: исправлен сбой токенизатора при обработке недекодируемого исходного кода с нулевым байтом.

  • bpo-25462: хеш ключа теперь вычисляется только один раз в большинстве операций в C-реализации OrderedDict.

  • bpo-22995: реализация по умолчанию __reduce__ и __reduce_ex__ теперь отклоняет встроенные типы, у которых не определён __new__.

  • bpo-25555: исправление парсера и AST: заполнение lineno и col_offset узла “arg” при компиляции AST из объектов Python.

  • bpo-24802: избегание выхода за границы буфера при передаче байтоподобных объектов в int(), float(), compile(), exec() и eval(). Эти объекты не обязательно завершаются нулевым байтом, но функции предполагали, что это так.

  • bpo-24726: исправлен сбой и утечка NULL в repr() OrderedDict, который был изменён прямыми вызовами методов dict.

  • bpo-25449: итерация по OrderedDict с ключами с нестабильным хешем теперь вызывает KeyError как в C-реализации, так и в реализации на Python.

  • bpo-25395: исправлен сбой при сборке мусора сильно вложенных структур OrderedDict.

  • bpo-25274: sys.setrecursionlimit() теперь вызывает RecursionError, если новый предел рекурсии слишком низок в зависимости от текущей глубины рекурсии. Также изменена формула «нижней отметки», чтобы сделать её монотонной. Эта отметка используется для принятия решения о сбросе флага переполнения состояния потока.

  • bpo-24402: исправление input() для вывода приглашения в перенаправленный stdout, когда sys.stdout.fileno() завершается ошибкой.

  • bpo-24806: предотвращение создания подклассов встроенных типов, которым не разрешено наследование, через множественное наследование.

  • bpo-24848: исправлен ряд ошибок в декодировании UTF-7 некорректных данных.

  • bpo-25280: Сообщения трассировки импорта, выводимые в подробном режиме (-v), больше не форматируются дважды.

  • bpo-25003: В Solaris 11.3 и новее os.urandom() теперь использует функцию getrandom() вместо getentropy(). Функция getentropy() блокируется для генерации энтропии очень высокого качества, но os.urandom() не нуждается в такой высококачественной энтропии.

  • bpo-25182: stdprinter (используемый как sys.stderr до загрузки модуля io при запуске) теперь использует обработчик ошибок backslashreplace.

  • bpo-25131: Номер строки и смещение столбца для литералов множеств/словарей и генераторов теперь соответствуют открывающей скобке.

  • bpo-25150: Скрыты приватные символы _Py_atomic_xxx из публичного заголовочного файла Python.h для исправления ошибки компиляции с OpenMP. PyThreadState_GET() становится псевдонимом PyThreadState_Get() для предотвращения несовместимости ABI.

БиблиотекаLibrary

  • bpo-25626: Изменены три функции 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: Избегает некорректных ошибок, вызываемых os.makedirs(exist_ok=True), когда операционная система отдаёт приоритет ошибкам типа EACCES над EEXIST.

  • bpo-25593: Изменена семантика EventLoop.stop() в asyncio.

  • bpo-6973: Когда известно, что процесс subprocess.Popen завершился, не позволяйте методам send_signal(), terminate() или kill() выполнять какие-либо действия, так как они потенциально могут отправить сигнал другому процессу.

  • bpo-25590: В автодополнении Readline getattr() вызывается только один раз для каждого атрибута.

  • bpo-25498: Исправлен сбой при сборке мусора объектов ctypes, созданных обёрткой memoryview. Это была регрессия, внесённая в 3.5a1. Основано на патче от Eryksun.

  • bpo-25584: Добавлено «escape» в список __all__ в модуле glob.

  • bpo-25584: Исправлена рекурсивная glob() с шаблонами, начинающимися с **.

  • bpo-25446: Исправлена регрессия в поддержке AUTH LOGIN в smtplib.

  • bpo-18010: Исправлена функция поиска модулей веб-сервера pydoc для обработки исключений при импорте пакетов.

  • bpo-25554: Устранены циклические ссылки в разборе регулярных выражений.

  • bpo-25510: fileinput.FileInput.readline() теперь возвращает b’’ вместо ‘’ в конце, если FileInput был открыт в бинарном режиме. Патч от Ryosuke Ito.

  • bpo-25503: Исправлен inspect.getdoc() для унаследованных докстрингов свойств. Оригинальный патч от John Mark Vandenberg.

  • bpo-25515: Всегда используется os.urandom как источник случайности в uuid.uuid4.

  • bpo-21827: Исправлен textwrap.dedent() для случая, когда наибольший общий пробельный символ является подстрокой наименьшего ведущего пробела. Основано на патче от Robert Li.

  • bpo-25447: Объекты-обёртки lru_cache() теперь можно копировать и сериализовать (возвращая исходный объект без изменений).

  • bpo-25390: typing: не падать при Union[str, Pattern].

  • bpo-25441: asyncio: вызывать ошибку из drain(), когда сокет закрыт.

  • bpo-25410: Проведена очистка и исправлены мелкие ошибки в C-реализации OrderedDict.

  • bpo-25411: Улучшена поддержка Unicode в SMTPHandler за счёт более эффективного использования пакета email. Спасибо пользователю simon04 за патч.

  • bpo-25407: Удалены упоминания о том, что модуль formatter будет удалён в Python 3.6.

  • bpo-25406: Исправлена ошибка в C-реализации OrderedDict.move_to_end(), которая вызывала segmentation fault или зависание при итерации после перемещения нескольких элементов в начало упорядоченного словаря.

  • bpo-25364: zipfile теперь работает в сборках с отключёнными потоками.

  • bpo-25328: SMTPChannel из smtpd теперь корректно вызывает ValueError, если и decode_data, и enable_SMTPUTF8 установлены в true.

  • bpo-25316: distutils вызывает OSError вместо DistutilsPlatformError, если MSVC не установлен.

  • bpo-25380: Исправлен протокол для кода операции STACK_GLOBAL в pickletools.opcodes.

  • bpo-23972: Обновлён метод создания датаграммных сокетов в asyncio – теперь перед привязкой сокета можно задать опции reuseport и reuseaddr. По аналогии с существующим методом create_server опция reuseaddr для датаграммных сокетов по умолчанию равна True, если ОС – posix (за исключением платформы Cygwin). Патч от Chris Laws.

  • bpo-25304: Добавлена функция asyncio.run_coroutine_threadsafe(). Она позволяет передать корутину в цикл событий из другого потока, возвращая объект concurrent.futures.Future. Автор: Vincent Michel.

  • bpo-25232: Исправлен CGIRequestHandler: теперь строка запроса отделяется от URL по первому знаку вопроса (?), а не по последнему. Патч от Xiang Zhang.

  • bpo-24657: Предотвращено схлопывание слешей в части запроса URL в CGIRequestHandler, как если бы это был путь. Патч от Xiang Zhang.

  • bpo-24483: Реализация functools.lru_cache() на C теперь вычисляет хеш ключа только один раз.

  • bpo-22958: Конструктор и метод update класса weakref.WeakValueDictionary теперь принимают именованные аргументы self и dict.

  • bpo-22609: Конструктор collections.UserDict теперь принимает именованный аргумент self.

  • bpo-25111: Исправлено сравнение объектов traceback.FrameSummary.

  • bpo-25262: Добавлена поддержка опкода BINBYTES8 в реализации распаковщика (unpickler) на Python. Старшие 32 бита 64-битного размера для опкодов BINUNICODE8 и BINBYTES8 больше не игнорируются молча на 32-битных платформах в реализации на C.

  • bpo-25034: Исправлена проблема string.Formatter с автонумерацией и вложенными спецификациями формата (format_specs). Патч от Anthon van der Neut.

  • bpo-25233: Переписана внутренняя реализация asyncio.Queue и asyncio.Semaphore для большей понятности и корректности.

  • bpo-25203: При неудачном вызове readline.set_completer_delims() модуль больше не остаётся в несогласованном состоянии.

  • bpo-23600: Реализация по умолчанию метода tzinfo.fromutc() возвращала неверные результаты в некоторых случаях.

  • bpo-23329: Разрешена сборка модуля ssl со старыми версиями LibreSSL.

  • Предотвращено переполнение в _Unpickler_Read.

  • bpo-25047: Объявление кодировки XML, записываемое Element Tree, теперь учитывает регистр букв, заданный пользователем. Это восстанавливает возможность указывать имена кодировок в верхнем регистре, например «UTF-8», как было в Python 2.

  • bpo-25135: Сделано безопаснее использование deque_clear(): теперь дека опустошается перед очисткой. Это помогает избежать возможных проблем с повторной входимостью (reentrancy).

  • bpo-19143: Модуль platform теперь читает версию Windows из kernel32.dll, чтобы избежать прослоек совместимости.

  • bpo-25092: Исправлена ошибка datetime.strftime(), когда errno уже было установлено в EINVAL.

  • bpo-23517: Исправлено округление в методах 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: Исправлены datetime.datetime.now() и datetime.datetime.utcnow() в Windows для поддержки дат после 2038 года. Это было регрессией, внесённой в Python 3.5.0.

  • bpo-25108: В функциях traceback print_stack(), format_stack() и extract_stack(), вызванных без аргументов, пропущены внутренние кадры.

  • bpo-25118: Исправлена регрессия Python 3.5.0 в os.waitpid() на Windows.

  • bpo-24684: socket.socket.getaddrinfo() теперь вызывает PyUnicode_AsEncodedString() вместо метода encode() у строки хоста, чтобы правильно обрабатывать пользовательские строки с методом encode(), который не возвращает байтовую строку. Кодер IDNA теперь вызывается напрямую, а не через метод encode() строки.

  • bpo-25060: Корректно вычисляется использование стека опкодом BUILD_MAP.

  • bpo-24857: Сравнение call_args с длинной последовательностью теперь корректно возвращает логическое значение, а не вызывает исключение. Патч от A Kaptur.

  • bpo-23144: Обеспечено, что HTMLParser.feed() возвращает все данные, даже когда convert_charrefs равно True.

  • bpo-24982: shutil.make_archive() с форматом «zip» теперь добавляет записи для директорий (включая пустые) в ZIP-файл.

  • bpo-25019: Исправлен сбой, вызванный установкой нестрокового ключа парсера expat. На основе патча John Leitch.

  • bpo-16180: Выход из pdb при синтаксической ошибке в файле, а не зацикливание пользователя в бесконечном цикле. Патч от Xavier de Gaye.

  • bpo-24891: Исправлено состояние гонки при запуске Python, если файловый дескриптор stdin (0), stdout (1) или stderr (2) закрыт во время создания объектов sys.stdin, sys.stdout и sys.stderr. Теперь в случае неудачи при создании объекта эти атрибуты устанавливаются в None, а не вызывают исключение OSError. Первоначальный патч написал Marco Paolini.

  • bpo-24992: Исправлены обработка ошибок и состояние гонки (связанное со сборкой мусора) в конструкторе collections.OrderedDict.

  • bpo-24881: Исправлена установка двоичного режима в реализации FileIO на Python для Windows и Cygwin. Патч от Akira Li.

  • bpo-25578: Исправлена (ещё одна) утечка памяти в SSLSocket.getpeercer().

  • bpo-25530: По умолчанию отключён уязвимый протокол SSLv3 при создании ssl.SSLContext.

  • bpo-25569: Исправлена утечка памяти в SSLSocket.getpeercert().

  • bpo-25471: Сокеты, возвращаемые accept(), не должны считаться неблокирующими.

  • bpo-25319: При повторной инициализации threading.Event базовое условие должно использовать обычную блокировку, а не рекурсивную.

  • bpo-21112: Исправлена регрессия в unittest.expectedFailure для подклассов. Патч от Berker Peksag.

  • bpo-24764: cgi.FieldStorage.read_multi() теперь игнорирует заголовок Content-Length в заголовках частей. Патч написан Peter Landry и проверен Pierre Quentel.

  • bpo-24913: Исправлена ошибка переполнения в deque.index(). Обнаружено Джоном Лейчем и Брайсом Дарлингом.

  • bpo-24774: Исправлена docstring в http.server.test. Патч от Chiu-Hsiang Hsu.

  • bpo-21159: Улучшено сообщение в configparser.InterpolationMissingOptionError. Патч от Łukasz Langa.

  • bpo-20362: Корректно учитывать TestCase.longMessage в assertRegex. Патч от Ilia Kurenkov.

  • bpo-23572: Исправление functools.singledispatch для классов с ложными метаклассами. Патч от Ethan Furman.

  • asyncio: ensure_future() теперь принимает ожидаемые объекты.

IDLE

  • bpo-15348: Останавливать движок отладчика (обычно в пользовательском процессе) перед закрытием окна отладчика (работающего в процессе IDLE). Это предотвращает RuntimeErrors, которые перехватывались и игнорировались.

  • bpo-24455: Предотвратить зависание 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: Улучшен внешний вид строки состояния окна редактора IDLE. Патч от Mark Roseman.

  • bpo-25313: Изменена обработка новых встроенных цветовых тем текста для лучшего решения проблемы совместимости, вызванной добавлением IDLE Dark. Последовательно использовать пересмотренный idleConf.CurrentTheme везде в idlelib.

  • bpo-24782: Конфигурация расширений теперь является вкладкой в диалоге настроек IDLE, а не отдельным диалогом. Прежние вкладки теперь представлены отсортированным списком. Патч от Mark Roseman.

  • bpo-22726: Повторно активировать кнопку справки в диалоге конфигурации с некоторым содержимым о других кнопках и новой теме IDLE Dark.

  • bpo-24820: У IDLE теперь есть встроенная цветовая тема текста ‘IDLE Dark’. Она более или менее инвертированная IDLE Classic, с тёмно-синим фоном. Строки, комментарии, ключевые слова, … по-прежнему зелёные, красные, оранжевые, … . Чтобы использовать её с IDLE, выпущенными до ноября 2015, нажмите кнопку ‘Save as New Custom Theme’ и введите новое имя, например ‘Custom Dark’. Пользовательская тема будет работать с любым релизом IDLE и может быть изменена.

  • bpo-25224: README.txt теперь является индексом idlelib для разработчиков IDLE и любопытных пользователей. Предыдущее пользовательское содержание теперь находится в главе документации IDLE. ‘IDLE’ теперь означает ‘Integrated Development and Learning Environment’.

  • bpo-24820: Пользователи теперь могут задавать цвета точек останова в Settings -> Custom Highlighting. Оригинальный патч от Mark Roseman.

  • bpo-24972: Фон неактивного выделения теперь соответствует фону активного выделения, как настроено пользователем, на всех системах. Найденные элементы теперь всегда выделяются на Windows. Первоначальный патч от Mark Roseman.

  • bpo-24570: Idle: сделать подсказки и окна автодополнения видимыми на Mac, затронутых регрессией tk. Первоначальный патч от Mark Roseman.

  • bpo-24988: Контекстные меню ScrolledList в IDLE (используемые в отладчике) теперь работают на Mac Aqua. Патч от Mark Roseman.

  • bpo-24801: Сделать правый клик для контекстного меню работающим на Mac Aqua. Патч от Mark Roseman.

  • bpo-25173: Связать диалоговые окна tkinter с конкретным виджетом. Для Mac OSX сделать их «листом». Патч от Mark Roseman.

  • bpo-25198: Улучшено начальное средство просмотра HTML, теперь используемое для справки IDLE. Правильно выравнивать моноширинный текст (патч от Mark Roseman). Дать фрагменту кода очень похожий на Sphinx светло-голубовато-серый фон. Повторно использовать начальные ширину и высоту, заданные пользователями для оболочки и редактора. При использовании меню оглавления (TOC) помещать заголовок раздела в верхнюю часть экрана.

  • bpo-25225: Сократить и переписать раздел документации IDLE о цветах текста.

  • bpo-21995: поясняются некоторые различия между IDLE и консольным Python.

  • bpo-22820: разъясняется необходимость print при запуске файла из редактора Idle.

  • bpo-25224: документация: дополнен список возможностей Idle и раздел о работе без подпроцесса.

  • bpo-25219: обновлена документация по параметрам командной строки Idle. Некоторые параметры отсутствовали, а примечания были неверны.

  • bpo-24861: большая часть idlelib является приватной и может измениться. Для запуска Idle используйте idleib.idle.*. См. idlelib.__init__.__doc__.

  • bpo-25199: Idle: добавлены синхронизирующие комментарии для будущих сопровождающих.

  • bpo-16893: заменён 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: объявлен устаревшим неиспользуемый idlelib.idlever; возможно, будет удалён в 3.6.

  • bpo-24790: удалён лишний код (который также создавал конфликты между ветками 2 и 3).

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

  • bpo-22558: добавлены недостающие ссылки из документации на исходный код модулей, написанных на Python. Патч от Yoni Lavi.

  • bpo-12067: переписана секция «Сравнения» в главе «Выражения» справочника по языку. Некоторые детали сравнения смешанных типов были неверными или неоднозначными. NotImplemented актуален только на более низком уровне, чем глава «Выражения». Добавлены детали сравнения объектов range(), а также описание поведения по умолчанию и рекомендации по согласованности для пользовательских классов. Патч от Andy Maier.

  • bpo-24952: уточнён аргумент размера по умолчанию для stack_size() в модулях «threading» и «_thread». Патч от Mattip.

  • bpo-23725: переработана документация по tempfile. Отмечен устаревший статус mktemp. Патч от Zbigniew Jędrzejewski-Szmek.

  • bpo-24808: обновлены типы некоторых полей PyTypeObject. Патч от Joseph Weston.

  • bpo-22812: исправлены примеры обнаружения тестов в unittest. Патч от Pam McA’Nulty.

ТестыTests

  • bpo-25449: добавлены тесты для подклассов OrderedDict.

  • bpo-25099: test_compileall больше не завершается ошибкой, когда элемент sys.path недоступен для записи (часто встречается при административных установках в Windows).

  • bpo-23919: предотвращает появление диалогов assert в тестовом наборе.

  • PCbuild\rt.bat теперь принимает неограниченное количество аргументов для передачи в regrtest.py. Ранее существовало ограничение в 9.

СборкаBuild

  • bpo-24915: добавлена поддержка LLVM для сборок с PGO и использование тестового набора для генерации профилировочных данных. Первоначальный патч от Alecsandru Patrascu из Intel.

  • bpo-24910: MSI-установщики для Windows теперь имеют уникальные отображаемые имена.

  • bpo-24986: теперь Python можно собрать в Windows без ошибок, даже если внешние библиотеки недоступны.

Windows

  • bpo-25450: обновлены ярлыки для запуска Python из каталога установки.

  • bpo-25164: изменён каталог установки по умолчанию для всех пользователей на соответствующий каталогу для одного пользователя.

  • bpo-25143: улучшены сообщения об ошибках установщика для неподдерживаемых платформ.

  • bpo-25163: в установщике отображается правильный каталог при использовании нестандартных настроек.

  • bpo-25361: отключено использование инструкций SSE2 в 32-битной сборке Windows

  • bpo-25089: добавлено логирование в установщик на случай, если при обновлении не выбран загрузчик.

  • bpo-25165: При удалении Windows не следует удалять лаунчер, если остаются другие версии.

  • bpo-25112: В лаунчере py.exe отсутствуют значки.

  • bpo-25102: Установщик Windows не выполняет предварительную компиляцию для -O или -OO.

  • bpo-25081: Кнопка «Назад» в установщике при обновлении возвращает на страницу обновления.

  • bpo-25091: Увеличивает размер шрифта в установщике.

  • bpo-25126: Уточняется, что невеб-установщик загрузит некоторые компоненты.

  • bpo-25213: Восстанавливает requestedExecutionLevel в манифесте для отключения виртуализации UAC.

  • bpo-25022: Удалён устаревший каталог PC/example_nt/.

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

  • bpo-25440: Исправлен вывод python-config –extension-suffix.

Python 3.5.0 финальныйPython 3.5.0 final

Дата релиза: 2015-09-13

СборкаBuild

  • bpo-25071: Установщик Windows не должен требовать параметр TargetDir при тихой установке.

Python 3.5.0, кандидат в релизы 4Python 3.5.0 release candidate 4

Дата релиза: 2015-09-09

БиблиотекаLibrary

  • bpo-25029: Исправлена ошибка MemoryError в test_strptime.

СборкаBuild

  • bpo-25027: Откатывает опции частичной статической сборки и добавляет vcruntime140.dll в установку Windows.

Python 3.5.0, кандидат в релизы 3Python 3.5.0 release candidate 3

Дата релиза: 2015-09-07

Ядро и встроенные модулиCore and Builtins

  • bpo-24305: Предотвращает учёт кадров стека подсистемы импорта параметром warnings.warn(stacklevel=).

  • bpo-24912: Предотвращает присваивание __class__ неизменяемым встроенным объектам.

  • bpo-24975: Исправлена компиляция AST для синтаксиса PEP 448.

БиблиотекаLibrary

  • bpo-24917: Выход за границы буфера при чтении в time_strftime().

  • bpo-24748: Для решения проблемы совместимости с py2exe и pywin32 функция imp.load_dynamic() снова игнорирует ранее загруженные модули, чтобы поддерживать замену модулей Python на модули расширений. Патч от Петра Викторина.

  • bpo-24635: Исправлена ошибка в typing.py, при которой isinstance([], typing.Iterable) возвращал True один раз, а затем False при последующих вызовах.

  • bpo-24989: Исправлено чтение за границей буфера в BytesIO.readline(), если позиция установлена за пределами размера. На основе патча Джона Лейча.

  • bpo-24913: Исправлена ошибка переполнения в deque.index(). Обнаружено Джоном Лейчем и Брайсом Дарлингом.

Python 3.5.0, кандидат в релизы 2Python 3.5.0 release candidate 2

Дата выпуска: 2015-08-25

Ядро и встроенные модулиCore and Builtins

  • bpo-24769: Интерпретатор теперь корректно запускается при отключённой динамической загрузке. Патч от Petr Viktorin.

  • bpo-21167: Операции с NAN теперь корректно обрабатываются, когда Python компилируется с ICC, даже если не указан -fp-model strict.

  • bpo-24492: «Пакет», у которого отсутствует атрибут __name__ при попытке выполнить инструкцию from .. import ..., вызовет ImportError вместо AttributeError.

БиблиотекаLibrary

  • bpo-24847: Удалена зависимость от vcruntime140.dll в Tcl/Tk.

  • bpo-24839: platform._syscmd_ver вызывает DeprecationWarning

  • bpo-24867: Исправлен Task.get_stack() для корутин, определённых с async def

Python 3.5.0, кандидат в релизы 1Python 3.5.0 release candidate 1

Дата выпуска: 2015-08-09

Ядро и встроенные модулиCore and Builtins

  • bpo-24667: Изменяет размер odict во всех случаях, когда изменяется размер нижележащего словаря.

БиблиотекаLibrary

  • bpo-24824: Сигнатуры codecs.encode() и codecs.decode() теперь совместимы с pydoc.

  • bpo-24634: Импорт uuid не должен пытаться загружать libc в Windows

  • bpo-24798: _msvccompiler.py некорректно поддерживает манифесты

  • bpo-4395: Улучшено тестирование и документация бинарных операторов. Патч от Martin Panter.

  • bpo-23973: Обновление typing.py из репозитория GitHub.

  • bpo-23004: mock_open() теперь корректно читает бинарные данные, когда тип read_data – bytes. Начальный патч от Aaron Hill.

  • bpo-23888: Обработка дробных значений времени в сроке действия cookie. Патч от ssh.

  • bpo-23652: Добавлена возможность компиляции модуля select с заголовками libc из Linux Standard Base, которые не содержат некоторые макросы EPOLL. Патч от Matt Frank.

  • bpo-22932: Исправлены часовые пояса в email.utils.formatdate. Патч от Dmitry Shachnev.

  • bpo-23779: imaplib вызывает TypeError, если аутентификатор пытается прервать соединение. Патч от Craig Holmquist.

  • bpo-23319: Исправлен ctypes.BigEndianStructure, корректная перестановка байтов. Патч написан Matthieu Gautier.

  • bpo-23254: Документировано, как закрыть слушающий сокет TCPServer. Патч от Martin Panter.

  • bpo-19450: Обновлены сборки установщиков Windows и OS X для использования SQLite 3.8.11.

  • bpo-17527: Добавлен метод PATCH в wsgiref.validator. Патч от Luca Sbardella.

  • bpo-24791: Исправлена регрессия грамматики для синтаксиса вызова: ‘g(*a or b)’.

IDLE

  • bpo-23672: Разрешить IDLE редактировать и запускать файлы, в именах которых есть астральные символы. Патч от Mohd Sanad Zaki Rizvi.

  • bpo-24745: Шрифт по умолчанию в редакторе Idle. Замена Courier на платформозависимый TkFixedFont. Это не должно повлиять на текущие пользовательские настройки шрифта. При возникновении проблем отредактируйте $HOME/.idlerc/config-main.cfg и удалите записи 'fontxxx' из раздела [Editor Window]. Исправление от Mark Roseman.

  • bpo-21192: Редактор Idle. При запуске файла его имя отображается в строке перезапуска. Лишние приглашения больше не выводятся. Оригинальный патч от Adnan Umer.

  • bpo-13884: Меню Idle. Удалены отрывные линии. Патч от Roger Serwy.

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

  • bpo-24129: Уточнена справочная документация по разрешению имён. В частности, убрано предположение, что читатели знакомы со схемой разрешения имён, используемой в Python до введения лексической области видимости для пространств имён функций. Патч от Ivan Levkivskyi.

  • bpo-20769: Улучшена документация по reload(). Патч от Dorian Pula.

  • bpo-23589: Из FAQ удалено дублирующееся предложение. Патч от Yongzhi Pan.

  • bpo-24729: Исправлено руководство по вводу-выводу – приведено в соответствие с реализацией параметра encoding функции open.

ТестыTests

  • bpo-24751: При запуске regrtest с опцией командной строки -w прогон тестов больше не помечается как неудачный, если при повторном запуске все тесты проходят.

Python 3.5.0 бета 4Python 3.5.0 beta 4

Дата выпуска: 2015-07-26

Ядро и встроенные модулиCore and Builtins

  • bpo-23573: Восстановлена оптимизация методов bytes.rfind() и bytearray.rfind() для однобайтового аргумента в Linux.

  • bpo-24569: Сделать вычисление словарей по PEP 448 более согласованным.

  • bpo-24583: Исправлен сбой при изменении множества во время его обновления.

  • bpo-24407: Исправлен сбой при изменении словаря во время его обновления.

  • bpo-24619: Новый подход к токенизации async/await. Как следствие, теперь возможно создавать однострочные функции вида ‘async def foo(): await ..’.

  • bpo-24687: Устранена утечка ссылок при SyntaxError в аннотациях параметров функций.

  • bpo-15944: memoryview: разрешены произвольные форматы при приведении к bytes. Патч от Martin Panter.

БиблиотекаLibrary

  • bpo-23441: rcompleter теперь выводит символ табуляции вместо отображения возможных вариантов завершения для пустого слова. Начальный патч от Martin Sekera.

  • bpo-24683: Исправлены сбои в функциях _json, вызываемых с аргументами неподходящего типа.

  • bpo-21697: shutil.copytree() теперь корректно обрабатывает символические ссылки, указывающие на каталоги. Патч от Eduardo Seabra и Thomas Kluyver.

  • bpo-14373: Исправлено падение с ошибкой сегментации при вызове gc.collect() во время построения lru_cache (реализация на C).

  • bpo-24695: Исправлена регрессия в traceback.print_exception(). Если exc_traceback равен None, не следует выводить заголовок трассировки, как описано в документации.

  • bpo-24620: Random.setstate() теперь проверяет значение последнего элемента состояния.

  • bpo-22485: Исправлена проблема, из-за которой inspect.getsource возвращал некорректные результаты для вложенных функций.

  • bpo-22153: Улучшена документация по unittest. Патч от Martin Panter и evilzero.

  • bpo-24580: Символьные ссылки на открытую группу в шаблонах re теперь явно запрещены, как и числовые ссылки на группы.

  • bpo-24206: Исправлены методы __eq__ и __ne__ классов inspect.

  • bpo-24631: Исправлена регрессия в модуле timeit при многострочной настройке setup.

  • bpo-18622: unittest.mock.mock_open().reset_mock вызывал бесконечную рекурсию. Патч от Nicola Palumbo и Laurent De Buyst.

  • bpo-23661: unittest.mock side_effects снова могут быть исключениями. Это было регрессией по сравнению с Python 3.4. Патч от Ignacio Rossi.

  • bpo-24608: chunk.Chunk.read() теперь всегда возвращает bytes, а не str.

  • bpo-18684: Исправлено чтение за пределами буфера в модуле re.

  • bpo-24259: tarfile теперь возбуждает ReadError, если архив обрезан внутри сегмента данных.

  • bpo-15014: SMTP.auth() и SMTP.login() теперь поддерживают необязательный аргумент initial-response (из RFC 4954) для команды SMTP AUTH.

  • bpo-24669: Исправлен inspect.getsource() для функций ‘async def’. Патч от Kai Groner.

  • bpo-24688: ast.get_docstring() для функций ‘async def’.

СборкаBuild

  • bpo-24603: Обновлены сборки Windows и установщик OS X 10.5 для использования OpenSSL 1.0.2d.

Python 3.5.0 бета 3Python 3.5.0 beta 3

Дата выпуска: 2015-07-05

Ядро и встроенные модулиCore and Builtins

  • bpo-24467: Исправлена возможная ошибка чтения за пределами буфера в bytearray. Объект bytearray теперь всегда выделяет место для завершающего нулевого байта, и его буфер теперь всегда завершается нулём.

  • Обновление до Unicode 8.0.0.

  • bpo-24345: Добавлен слот Py_tp_finalize для стабильного ABI.

  • bpo-24400: Введён отдельный тип для корутин PEP 492; добавлены 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: Добавлены gi_yieldfrom для генераторов и cr_await для корутин. Предоставлено Benno Leslie и Yury Selivanov.

  • bpo-19235: Добавлено новое исключение RecursionError. Патч от Georg Brandl.

БиблиотекаLibrary

  • bpo-21750: mock_open.read_data теперь можно читать из каждого экземпляра, как это было в Python 3.3.

  • bpo-24552: Исправлено использование после освобождения в случае ошибки в модуле _pickle.

  • bpo-24514: tarfile теперь допускает числовые поля, состоящие только из пробельных символов.

  • bpo-19176: Исправлены ошибки, связанные с doctype(), в C-реализации ElementTree. Подкласс XMLParser с методом doctype() по умолчанию больше не выдаёт предупреждение об устаревании. Прямой вызов doctype() теперь выдаёт предупреждение. Метод doctype() парсера теперь не вызывается, если вызывается doctype() целевого объекта. На основе патча от Martin Panter.

  • bpo-20387: Восстановлена семантическая корректность преобразования туда-обратно в tokenize/untokenize для блоков с отступами табуляцией.

  • bpo-24456: Исправлена возможная ошибка чтения за пределами буфера в функциях adpcm2lin() и lin2adpcm() модуля audioop.

  • bpo-24336: Декоратор contextmanager теперь работает с функциями, имеющими именованные аргументы с именами «func» и «self». Патч от Martin Panter.

  • bpo-24522: Исправлено возможное целочисленное переполнение в ускорителе модуля json.

  • bpo-24489: Обеспечено, чтобы ранее установленный errno языка C не мешал работе cmath.polar().

  • bpo-24408: Исправлен AttributeError в методах measure() и metrics() класса tkinter.Font.

  • bpo-14373: C-реализация functools.lru_cache() теперь может использоваться с методами.

  • bpo-24347: Установлено KeyError, если PyDict_GetItemWithError возвращает NULL.

  • bpo-24348: Убраны лишние incref/decref.

  • bpo-24359: Проверка изменения размера OrderedDict во время итерации.

  • bpo-24368: Поддержка именованных аргументов в методах OrderedDict.

  • bpo-24362: Упрощена логика изменения размера быстрых узлов в C-реализации OrderedDict.

  • bpo-24377: Исправлена утечка ссылки в OrderedDict.__repr__.

  • bpo-24369: Защита от изменения ключей во время итерации.

ТестыTests

  • bpo-24373: _testmultiphase и xxlimited теперь используют tp_traverse и tp_finalize для предотвращения утечек ссылок, возникающих при объединении tp_dealloc с PyType_FromSpec (см. bpo-16690 для подробностей).

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

  • bpo-24458: Обновлена документация, чтобы охватить многофазную инициализацию для модулей-расширений (PEP 489). Патч от Petr Viktorin.

  • bpo-24351: Уточнено, что подразумевается под «идентификатором» в контексте экземпляров string.Template.

СборкаBuild

  • bpo-24432: Обновлены сборки Windows и установщик OS X 10.5 для использования OpenSSL 1.0.2c.

Python 3.5.0 бета 2Python 3.5.0 beta 2

Дата выпуска: 2015-05-31

Ядро и встроенные модулиCore and Builtins

  • bpo-24284: Методы startswith и endswith класса str больше не возвращают True при поиске пустой строки, если индексы полностью выходят за диапазон.

  • bpo-24115: Обновлены вызовы PyObject_IsTrue(), PyObject_Not(), PyObject_IsInstance(), PyObject_RichCompareBool() и _PyDict_Contains() для корректной проверки и обработки ошибок.

  • bpo-24328: Исправлен импорт модулей-расширений из одного символа.

  • bpo-11205: В словарных литералах ключ вычисляется до значения.

  • bpo-24285: Исправлен регресс, препятствовавший импорту модулей-расширений изнутри пакетов. Патч от Petr Viktorin.

БиблиотекаLibrary

  • bpo-23247: Исправлен сбой в StreamWriter.reset() кодеков CJK.

  • bpo-24270: Добавлены функции math.isclose() и cmath.isclose() в соответствии с PEP 485. Предоставлено Chris Barker и Tal Einat.

  • bpo-5633: Исправлен timeit, когда инструкция является строкой, а настройка – нет.

  • bpo-24326: Исправлен audioop.ratecv() с нестандартным аргументом weightB. Оригинальный патч от David Moore.

  • bpo-16991: Добавлена C-реализация OrderedDict.

  • bpo-23934: Исправлен inspect.signature для корректного отказа для встроенных типов, не имеющих информации о сигнатуре. Первоначальный патч от James Powell.

Python 3.5.0 бета 1Python 3.5.0 beta 1

Дата выпуска: 2015-05-24

Ядро и встроенные модулиCore and Builtins

  • bpo-24276: Исправлена оптимизация геттера дескриптора property.

  • bpo-24268: PEP 489: Многофазная инициализация модулей расширений. Исправление от Петра Викторина.

  • bpo-23955: Добавлена опция pyvenv.cfg для подавления поиска в реестре/окружении при генерации sys.path на Windows.

  • bpo-24257: Исправлена системная ошибка при сравнении поддельных объектов types.SimpleNamespace.

  • bpo-22939: Исправлено целочисленное переполнение в объекте итератора. Исправление от Клемана Руо.

  • bpo-23985: Исправлена возможная запись за границы буфера при удалении среза из начала bytearray и последующем добавлении других байтовых данных.

  • bpo-24102: Исправлена проверка типа исключения в стандартных обработчиках ошибок.

  • bpo-15027: Кодировщик UTF-32 теперь работает в 3–7 раз быстрее.

  • bpo-23290: Оптимизация set_merge() для случая, когда целевое множество пусто. (Автор: Serhiy Storchaka.)

  • bpo-2292: PEP 448: Дополнительные обобщения распаковки.

  • bpo-24096: Сделать warnings.warn_explicit более устойчивым к изменению списка warnings.filters.

  • bpo-23996: Предотвращение сбоя, когда делегированный генератор возбуждает ненормализованное исключение StopIteration. Исправление от Stefan Behnel.

  • bpo-23910: Оптимизация вызовов геттеров property(). Исправление от Joe Jevnik.

  • bpo-23911: Перенос загрузочного кода importlib, основанного на путях, в отдельный замороженный модуль.

  • bpo-24192: Исправление импорта пакетов пространств имён.

  • bpo-24022: Исправление сбоя токенизатора при обработке не поддающегося декодированию исходного кода.

  • bpo-9951: Добавлен метод hex() для bytes, bytearray и memoryview.

  • bpo-22906: PEP 479: Изменение обработки StopIteration внутри генераторов.

  • bpo-24017: PEP 492: Корутины с синтаксисом async и await.

БиблиотекаLibrary

  • bpo-14373: Добавлена реализация на C для functools.lru_cache(). Основано на патчах от Matt Joiner и Alexey Kachayev.

  • bpo-24230: Модуль tempfile теперь принимает bytes для параметров prefix, suffix и dir и возвращает bytes в таких случаях (соответствует API модуля os).

  • bpo-22189: collections.UserString теперь поддерживает __getnewargs__(), __rmod__(), casefold(), format_map(), isprintable() и maketrans(). Исправление от Joe Jevnik.

  • bpo-24244: Предотвращение завершения при обнаружении неверной форматной строки в strftime на Windows.

  • bpo-23973: PEP 484: Добавление модуля typing.

  • bpo-23086: Абстрактный базовый класс collections.abc.Sequence() добавил параметры start и stop в метод index() примеси. Исправление от Devin Jeanpierre.

  • bpo-20035: Модуль tkinter._fix, использовавшийся для настройки окружения Tcl/Tk на Windows, заменён на приватную функцию в модуле _tkinter, которая не вносит постоянных изменений в окружение.

  • bpo-24257: Исправлена ошибка сегментации в конструкторе sqlite3.Row при поддельном типе курсора.

  • bpo-15836: Утверждения assertRaises(), assertRaisesRegex(), assertWarns() и assertWarnsRegex() теперь проверяют тип первого аргумента для предотвращения возможных ошибок пользователя. Основано на патче от Daniel Wagner-Hall.

  • bpo-9858: Добавление недостающих заглушек методов в _io.RawIOBase. Исправление от Laura Rupprecht.

  • bpo-22955: Объекты attrgetter, itemgetter и methodcaller в модуле operator теперь поддерживают сериализацию (pickling). Добавлено читаемое и воспроизводимое repr для этих объектов. Основано на патче от Josh Rosenberg.

  • bpo-22107: tempfile.gettempdir() и tempfile.mkdtemp() теперь повторяют попытку, если каталог с выбранным именем уже существует, как на Windows, так и на Unix. tempfile.mkstemp() теперь завершается с ошибкой заранее, если родительский каталог недействителен (не существует или является файлом) на Windows.

  • bpo-23780: Улучшено сообщение об ошибке в os.path.join() при одном аргументе.

  • bpo-6598: повышена точность времени и расширен диапазон случайных чисел в email.utils.make_msgid() для усиления уникальности идентификатора сообщения.

  • bpo-24091: исправлены различные крахи в граничных случаях в C-реализации ElementTree.

  • bpo-21931: msilib.FCICreate() теперь вызывает TypeError при некорректном аргументе вместо ValueError с ложным кодом ошибки FCI. Исправление от Jeffrey Armstrong.

  • bpo-13866: в urllib.parse.urlencode добавлен аргумент quote_via.

  • bpo-20098: новая опция политики mangle_from для email: по умолчанию True для compat32, но False для всех остальных политик.

  • bpo-24211: библиотека email теперь поддерживает RFC 6532: может генерировать заголовки, используя utf-8 вместо закодированных слов.

  • bpo-16314: добавлена поддержка сжатия LZMA в distutils.

  • bpo-21804: poplib теперь поддерживает RFC 6856 (UTF8).

  • bpo-18682: оптимизированы функции pprint для встроенных скалярных типов.

  • bpo-22027: smtplib теперь поддерживает RFC 6531 (SMTPUTF8).

  • bpo-23488: объекты генератора случайных чисел теперь потребляют в 2 раза меньше памяти на 64-битных системах.

  • bpo-1322: функции platform.dist() и platform.linux_distribution() теперь устарели. Первоначальная правка от Vajrasky Kok.

  • bpo-22486: добавлена функция math.gcd(). Функция fractions.gcd() теперь устарела. Основано на правке Mark Dickinson.

  • bpo-24064: строки документации Property() теперь доступны для записи. (Правка от Berker Peksag.)

  • bpo-22681: добавлена поддержка кодировки koi8_t.

  • bpo-22682: добавлена поддержка кодировки kz1048.

  • bpo-23796: методы peek и read1 класса BufferedReader теперь вызывают ValueError при вызове на закрытом объекте. Правка от John Hergenroeder.

  • bpo-21795: smtpd теперь поддерживает расширение 8BITMIME, когда новый аргумент конструктора decode_data установлен в False.

  • bpo-24155: оптимизирован heapq.heapify() для лучшей кэш-производительности при построении кучи из больших списков.

  • bpo-21800: imaplib теперь поддерживает RFC 5161 (enable), RFC 6855 (utf8/internationalized email) и автоматически кодирует не-ASCII имена пользователей и пароли в UTF8.

  • bpo-20274: при вызове _sqlite.Connection теперь выдаётся ошибка, если переданы именованные аргументы. Ранее они молча игнорировались.

  • bpo-20274: удалены игнорируемые и ошибочные параметры «kwargs» из трёх методов METH_VARARGS в _sqlite.Connection.

  • bpo-24134: проверки assertRaises(), assertRaisesRegex(), assertWarns() и assertWarnsRegex() теперь выдают предупреждение об устаревании, если вызываемый объект равен None или в режиме контекстного менеджера переданы именованные аргументы, кроме msg.

  • bpo-24018: добавлен абстрактный базовый класс collections.abc.Generator. Предложено Stefan Behnel.

  • bpo-23880: getint() и getdouble() из Tkinter теперь поддерживают Tcl_Obj. getdouble() из Tkinter теперь поддерживает любые числа (в частности int).

  • bpo-22619: добавлена поддержка отрицательного предела в модуле traceback. На основе правки Dmitry Kazakov.

  • bpo-24094: исправлен возможный крах в json.encode при использовании плохо ведущих себя подклассов dict.

  • bpo-9246: на POSIX os.getcwd() теперь поддерживает пути длиннее 1025 байт. Правка от William Orr.

  • bpo-17445: добавлена difflib.diff_bytes() для поддержки сравнения строк байт (исправляет регрессию из Python 2).

  • bpo-23917: возврат к последовательной компиляции, если ProcessPoolExecutor не существует. Правка от Claudiu Popa.

  • bpo-23008: исправлено разрешение атрибутов с булевым значением False в pydoc.

  • Исправление ошибки asyncio issue 235: метод put у LifoQueue и PriorityQueue не увеличивал счётчик незавершённых задач (ошибка возникла при объединении очередей JoinableQueue и Queue).

  • bpo-23908: функции os теперь отклоняют пути со встроенным нулевым символом в Windows вместо того, чтобы молча обрезать их.

  • bpo-23728: binascii.crc_hqx() мог возвращать целое число вне диапазона 0–0xffff для пустых данных.

  • bpo-23887: у urllib.error.HTTPError теперь есть корректное представление repr(). Исправление от Berker Peksag.

  • asyncio: новые API цикла событий: set_task_factory() и get_task_factory().

  • asyncio: функция async() устарела в пользу ensure_future().

  • bpo-24178: asyncio.Lock, Condition, Semaphore и BoundedSemaphore поддерживают новый синтаксис ‘async with’. Вклад Юрия Селиванова.

  • bpo-24179: поддержка ‘async for’ для asyncio.StreamReader. Вклад Юрия Селиванова.

  • bpo-24184: добавлены абстрактные базовые классы AsyncIterator и AsyncIterable в collections.abc. Вклад Юрия Селиванова.

  • bpo-22547: реализован информативный __repr__ для inspect.BoundArguments. Вклад Юрия Селиванова.

  • bpo-24190: реализован метод inspect.BoundArgument.apply_defaults(). Вклад Юрия Селиванова.

  • bpo-20691: добавлен аргумент ‘follow_wrapped’ в inspect.Signature.from_callable() и inspect.signature(). Вклад Юрия Селиванова.

  • bpo-24248: объявлены устаревшими inspect.Signature.from_function() и inspect.Signature.from_builtin().

  • bpo-23898: исправлен inspect.classify_class_attrs() для поддержки атрибутов с перегруженными __eq__ и __bool__. Исправление от Mike Bayer.

  • bpo-24298: исправлен inspect.signature() для корректного разворачивания обёрток вокруг привязанных методов.

IDLE

  • bpo-23184: удалены неиспользуемые имена и импорты в idlelib. Первоначальное исправление от Al Sweigart.

ТестыTests

  • bpo-21520: test_zipfile больше не завершается ошибкой, если слово ‘bad’ встречается где-либо в имени текущего каталога.

  • bpo-9517: script_helper перемещён в пакет support. Исправление от Christie Wilson.

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

  • bpo-22155: добавлен подраздел File Handlers с createfilehandler в документацию tkinter. Удалён устаревший пример из FAQ. Исправление от Martin Panter.

  • bpo-24029: документировано поведение связывания имён для импорта подмодулей.

  • bpo-24077: исправлена опечатка в man-странице для опции командной строки -I: должно быть -s, а не -S.

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

  • bpo-24000: улучшено отображение конвертеров Argument Clinic на устаревшие «форматные единицы». Документация обновлена соответствующим образом.

  • bpo-24001: конвертеры Argument Clinic теперь используют accept={type} вместо types={‘type’} для указания типов, которые принимает конвертер.

  • bpo-23330: h2py теперь поддерживает произвольные имена файлов в #include.

  • bpo-24031: make patchcheck теперь также поддерживает git-чекауты.

Python 3.5.0 alpha 4

Дата выпуска: 2015-04-19

Ядро и встроенные модулиCore and Builtins

  • bpo-22980: В Linux, GNU/KFreeBSD и Hurd расширения C теперь содержат архитектурную тройку в имени расширения, чтобы упростить тестирование сборок для разных ABI в одном рабочем дереве. В OS X имя расширения теперь включает информацию в стиле PEP 3149.

  • bpo-22631: Добавлена Linux-специфичная константа сокета CAN_RAW_FD_FRAMES. Патч от Джо Джевника.

  • bpo-23731: Реализован PEP 488: удаление файлов .pyo.

  • bpo-23726: Сборщик мусора (GC) больше не включается для пользовательских подклассов не-GC типов, не добавляющих новые поля. Патч от Юджина Тодера.

  • bpo-23309: Устранена взаимная блокировка при завершении, если поток-демон прерван во время удержания блокировки буферизованного объекта ввода-вывода, а главный поток пытается использовать тот же объект (обычно stdout или stderr). Вместо этого выводится фатальная ошибка.

  • bpo-22977: Исправлено форматирование сообщений об ошибках Windows в Wine. Патч от Мартина Пантера.

  • bpo-23466: Форматы %c, %o, %x и %X в форматировании bytes теперь вызывают TypeError, если аргумент не целое число.

  • bpo-24044: Исправлено возможное разыменование нулевого указателя в list.sort при нехватке памяти.

  • bpo-21354: Функция PyCFunction_New снова доступна в DLL Python.

БиблиотекаLibrary

  • bpo-23840: tokenize.open() теперь при ошибке закрывает временный бинарный файл, чтобы устранить предупреждение о ресурсах.

  • bpo-16914: Новый уровень отладки 2 в smtplib добавляет временные метки к отладочному выводу.

  • bpo-7159: urllib.request теперь может автоматически отправлять учётные данные после первого ответа 401. Это расширение является надмножеством улучшения из bpo-19494 и заменяет его.

  • bpo-23703: Исправлен регресс в urljoin(), возникший в версии 901e4e52b20a. Патч от Демиана Брехта.

  • bpo-4254: Добавлен _curses.update_lines_cols(). Патч от Арнона Яари.

  • bpo-19933: Для round добавлен аргумент по умолчанию ndigits. Патч от Вайраски Кока.

  • bpo-23193: В tarfile.TarFile.extract и tarfile.TarFile.extractall добавлен параметр numeric_owner. Патч от Майкла Фогта и Эрика Смита.

  • bpo-23342: Добавлена функция subprocess.run(), которая возвращает экземпляр CalledProcess, что обеспечивает более единообразный API по сравнению с существующими функциями call*.

  • bpo-21217: inspect.getsourcelines() теперь пытается вычислить начальную и конечную строки по объекту кода, что исправляет проблему при использовании лямбда-функции в качестве аргумента декоратора. Патч от Томаса Баллинджера и Эллисон Каптур.

  • bpo-24521: Исправлены возможные целочисленные переполнения в модуле pickle.

  • bpo-22931: Разрешены символы '[' и ']' в значениях cookie.

  • Атрибут keywords у functools.partial теперь всегда является словарём.

  • bpo-23811: Добавлен отсутствующий символ новой строки в сообщение об ошибке PyCompileError. Патч от Алекса Шкопа.

  • bpo-21116: Предотвращено чрезмерное потребление памяти при выделении разделяемого массива multiprocessing размером более 50% доступной оперативной памяти. Патч от Медерика Бокьена.

  • bpo-22982: Улучшена обработка метки порядка байтов (BOM) при перемещении на несколько позиций в файле текста, доступном для записи.

  • bpo-23464: Удалена устаревшая asyncio.JoinableQueue.

  • bpo-23529: Ограничен размер распакованных данных при чтении из GzipFile, BZ2File или LZMAFile. Это предотвращает атаки типа «отказ в обслуживании» с использованием сжатых «бомб» (сжатых данных, которые распаковываются до огромного размера). Патч от Мартина Пантера и Николауса Рата.

  • bpo-21859: Добавлена реализация io.FileIO на Python.

  • bpo-23865: Методы close() в нескольких модулях теперь идемпотентны и более надёжны при завершении. Если необходимо освободить несколько ресурсов, все они освобождаются, даже если возникают ошибки.

  • bpo-23400: В случае недоступности sem_open теперь возбуждается одно и то же исключение в Python 2 и 3. Патч от Дэвина Поттса.

  • bpo-10838: Модуль subprocess теперь включает SubprocessError и TimeoutError в список экспортируемых имён для пользователей, которым хватает смелости использовать from subprocess import *.

  • bpo-23411: В urllib.parse.__all__ добавлены DefragResult, ParseResult, SplitResult, DefragResultBytes, ParseResultBytes и SplitResultBytes. Патч от Мартина Пантера.

  • bpo-23881: Конструктор urllib.request.ftpwrapper теперь закрывает сокет в случае неудачного FTP-соединения, чтобы устранить предупреждение ResourceWarning.

  • bpo-23853: socket.socket.sendall() больше не сбрасывает таймаут сокета при каждой успешной отправке данных. Таймаут сокета теперь – это максимальная общая длительность отправки всех данных.

  • bpo-22721: Порядок многострочного вывода pprint для множества или словаря, содержащего упорядочиваемые и неупорядочиваемые элементы, больше не зависит от порядка итерации по множеству или словарю.

  • bpo-15133: _tkinter.tkapp.getboolean() теперь поддерживает Tcl_Obj и всегда возвращает bool. tkinter.BooleanVar теперь проверяет входные значения (принимает bool, int, str и Tcl_Obj). tkinter.BooleanVar.get() теперь всегда возвращает bool.

  • bpo-10590: xml.sax.parseString() теперь поддерживает строковый аргумент.

  • bpo-23338: Исправлено форматирование сообщений об ошибках ctypes в Cygwin. Патч от Makoto Kato.

  • bpo-15582: inspect.getdoc() теперь следует по цепочкам наследования.

  • bpo-2175: Анализаторы SAX теперь поддерживают символьный поток объекта InputSource.

  • bpo-16840: Tkinter теперь поддерживает 64-битные целые, добавленные в Tcl 8.4, и целые произвольной точности, добавленные в Tcl 8.5.

  • bpo-23834: Исправление socket.sendto(): для хранения результата sendto() используется тип Py_ssize_t из C вместо типа int.

  • bpo-23618: socket.socket.connect() теперь ожидает завершения соединения вместо того, чтобы вызывать InterruptedError, если соединение прерывается сигналами, обработчики сигналов не вызывают исключение, а сокет блокирующий или имеет таймаут. socket.socket.connect() по-прежнему вызывает InterruptedError для неблокирующих сокетов.

  • bpo-21526: Tkinter теперь поддерживает новый логический тип в Tcl 8.5.

  • bpo-23836: Исправление модуля faulthandler для обработки повторных вызовов его обработчиков сигналов.

  • bpo-23838: linecache теперь очищает кеш и возвращает пустой результат при MemoryError.

  • bpo-10395: Добавлена функция os.path.commonpath(). Реализована в posixpath и ntpath. Основано на патче от Rafik Draoui.

  • bpo-23611: Сериализация большего числа «lookupable» объектов (таких как непривязанные методы или вложенные классы) теперь поддерживается протоколами pickle < 4.

  • bpo-13583: sqlite3.Row теперь поддерживает срезовую индексацию.

  • bpo-18473: Исправлены отображения pickle, совместимые с 2to3 и 3to2. Исправлены неоднозначные обратные отображения. Добавлено много новых отображений. Отображение импорта больше не применяется к модулям, уже сопоставленным с полным именем.

  • bpo-23485: Теперь select.select() автоматически повторяется с пересчитанным таймаутом при прерывании сигналом, за исключением случаев, когда обработчик сигнала вызывает исключение. Это изменение является частью PEP 475.

  • bpo-23752: При создании из существующего файлового дескриптора io.FileIO() теперь вызывает fstat() только один раз. Раньше fstat() вызывался дважды, что было излишним.

  • bpo-23704: Объекты collections.deque() теперь поддерживают __add__, __mul__ и __imul__().

  • bpo-23171: csv.Writer.writerow() теперь поддерживает произвольные итерабельные объекты.

  • bpo-23745: Новый анализатор заголовков email теперь обрабатывает дублирующиеся имена параметров MIME без ошибки, аналогично поведению get_param.

  • bpo-22117: Исправление os.utime(): теперь он округляет метку времени в сторону минус бесконечности (-inf) вместо округления к нулю.

  • bpo-23310: Исправлен инициализатор MagicMock для работы с __methods__, как и configure_mock(). Патч от Kasia Jachim.

СборкаBuild

  • bpo-23817: FreeBSD теперь использует «1.0» в SOVERSION, как и другие операционные системы, вместо просто «1».

  • bpo-23501: Argument Clinic теперь по умолчанию генерирует код в отдельные файлы.

ТестыTests

  • bpo-23799: Добавлена test.support.start_threads() для запуска и очистки нескольких потоков.

  • bpo-22390: test.regrtest теперь выводит предупреждение, если после выполнения теста остаются временные файлы или каталоги.

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

  • bpo-18128: pygettext теперь использует стандартный формат +NNNN в заголовке POT-Creation-Date.

  • bpo-23935: Понимание Argument Clinic форматов, принимающих bytes, bytearrays и буферы, теперь согласовано как с документацией, так и с реализацией.

  • bpo-23944: Argument Clinic теперь переносит длинные прототипы impl на 78-м столбце.

  • bpo-20586: Argument Clinic теперь гарантирует, что у функций без документирующих строк есть сигнатуры.

  • bpo-23492: Argument Clinic теперь генерирует код разбора аргументов с помощью PyArg_Parse вместо PyArg_ParseTuple, если это возможно.

  • bpo-23500: Argument Clinic теперь умнее генерирует пустое определение макроса methoddef через “#ifndef”: оно создаётся только один раз, даже если Argument Clinic обрабатывает один и тот же символ несколько раз, и выводится после завершения всей обработки, а не сразу после первого использования.

C API

  • bpo-23998: PyImport_ReInitLock() теперь проверяет ошибку выделения блокировки.

Python 3.5.0 alpha 3

Дата выпуска: 2015-03-28

Ядро и встроенные модулиCore and Builtins

  • bpo-23573: Повышена производительность операций поиска в строках (str.find, str.index, str.count, оператор in, str.split, str.partition) при передаче аргументов разных типов (UCS1, UCS2, UCS4).

  • bpo-23753: Python больше не поддерживает платформы без stat() или fstat(); эти функции теперь обязательны.

  • bpo-23681: Опция -b теперь влияет на сравнение bytes с int.

  • bpo-23632: Memoryviews теперь поддерживают кортежную индексацию (в том числе для многомерных memoryviews).

  • bpo-23192: Исправлены лямбды-генераторы. Патч от Bruno Cauet.

  • bpo-23629: Исправлена реализация __sizeof__ по умолчанию для объектов переменного размера.

БиблиотекаLibrary

  • bpo-14260: Атрибут groupindex объекта шаблона регулярного выражения теперь является неизменяемым отображением.

  • bpo-23792: Игнорировать KeyboardInterrupt, когда активен пейджер pydoc. Это повторяет поведение стандартных пейджеров Unix и предотвращает закрытие pipepager, пока сам пейджер ещё работает.

  • bpo-23775: pprint() для OrderedDict теперь выводит то же представление, что и repr().

  • bpo-23765: Удалены вызовы IsBadStringPtr в ctypes

  • bpo-22364: Улучшены некоторые сообщения об ошибках в модуле re с использованием регулярных выражений для подсказок.

  • bpo-23742: ntpath.expandvars() больше не теряет несбалансированные одинарные кавычки.

  • bpo-21717: Функция zipfile.ZipFile.open теперь поддерживает режим ‘x’ (эксклюзивное создание).

  • bpo-21802: Читатель в BufferedRWPair теперь закрывается, даже если при закрытии писателя в BufferedRWPair.close() произошла ошибка.

  • bpo-23622: Неизвестные последовательности экранирования в регулярных выражениях, состоящие из '\' и буквы ASCII, теперь вызывают предупреждение об устаревании и будут запрещены в Python 3.6.

  • bpo-23671: string.Template теперь позволяет указывать параметр “self” как именованный аргумент. string.Formatter теперь позволяет указывать параметры “self” и “format_string” как именованные аргументы.

  • bpo-23502: Модуль pprint теперь поддерживает прокси-отображения.

  • bpo-17530: pprint теперь переносит длинные объекты bytes и bytearrays.

  • bpo-22687: Исправлены некоторые крайние случаи при разбиении слов в tetxtwrap. Устранена квадратичная сложность при разбиении длинных слов.

  • bpo-4727: Модуль copy теперь использует протокол pickle 4 (PEP 3154) и поддерживает копирование экземпляров классов, чей метод __new__ принимает только именованные аргументы.

  • bpo-23491: Добавлен модуль zipapp для поддержки создания исполняемых zip-архивов с кодом Python. Зарегистрированы расширения “.pyz” и “.pyzw” для этих архивов в Windows (PEP 441).

  • bpo-23657: Устранены явные проверки на str в zipapp, добавлена поддержка объектов pathlib.Path в качестве аргументов.

  • bpo-23688: Добавлена поддержка произвольных байтоподобных объектов и устранено ненужное копирование memoryview в gzip.GzipFile.write(). Оригинальный патч Вольфганга Майера.

  • bpo-23252: Добавлена поддержка записи ZIP-файлов в непозиционируемые потоки.

  • bpo-23647: Увеличено значение MAXLINE в imaplib для поддержки современных размеров почтовых ящиков.

  • bpo-23539: Если body равен None, http.client.HTTPConnection.request теперь устанавливает Content-Length в 0 для заголовков PUT, POST и PATCH, чтобы избежать ошибок 411 от некоторых веб-серверов.

  • bpo-22351: Конструктор nntplib.NNTP больше не оставляет соединение и сокет открытыми до очистки сборщиком мусора. Патч Мартина Пантера.

  • bpo-23704: Объекты collections.deque() теперь поддерживают методы index(), insert() и copy(). Это позволяет регистрировать deques как MutableSequence и улучшает их взаимозаменяемость со списками.

  • bpo-23715: signal.sigwaitinfo() и signal.sigtimedwait() теперь повторяются при прерывании сигналом, не входящим в параметр sigset, если обработчик сигнала не вызывает исключение. signal.sigtimedwait() пересчитывает тайм-аут с помощью монотонных часов при повторной попытке.

  • bpo-23001: Некоторые функции в модулях mmap, ossaudiodev, socket, ssl и codecs, которые принимали только байтоподобные объекты только для чтения, теперь также принимают байтоподобные объекты для записи.

  • bpo-23646: Если time.sleep() прерывается сигналом, ожидание теперь повторяется с пересчитанной задержкой, за исключением случаев, когда обработчик сигнала вызывает исключение (PEP 475).

  • bpo-23136: _strptime теперь единообразно обрабатывает все дни недели 0, включая 30 декабря предыдущего года. Основано на патче Джима Кэрролла.

  • bpo-23700: Итератор NamedTemporaryFile теперь хранит ссылку на экземпляр NamedTemporaryFile. Патч Богуслава Кабрды.

  • bpo-22903: Фиктивный тестовый пример, который unittest.loader создаёт при неудачном импорте тестового модуля, теперь можно сериализовать с помощью pickle.

  • bpo-22181: На Linux os.urandom() теперь использует новый системный вызов getrandom(), если он доступен; этот вызов был введён в ядре Linux 3.17. Он более надёжен и безопасен, поскольку избавляет от необходимости в файловом дескрипторе и ожидает, пока в ядре накопится достаточно энтропии.

  • bpo-2211: Обновлена реализация класса http.cookies.Morsel. Установка атрибутов key, value и coded_value напрямую теперь устарела. Методы update() и setdefault() теперь преобразуют и проверяют ключи. Сравнение на равенство теперь учитывает атрибуты key, value и coded_value. copy() теперь возвращает объект Morsel, а не dict. repr() теперь содержит все атрибуты. Оптимизирована проверка ключей и экранирование значений. Добавлены новые тесты. Оригинальный патч Демиана Брехта.

  • bpo-18983: Разрешён выбор единиц вывода в timeit. Патч Джулиана Гинди.

  • bpo-23631: Исправлена работа traceback.format_list при изменённом traceback.

  • bpo-23568: Добавлена поддержка rdivmod для объектов MagicMock(). Патч Хокана Лёвдаля.

  • bpo-2052: Добавлен параметр charset в HtmlDiff.make_file().

  • bpo-23668: Добавлена поддержка os.truncate и os.ftruncate в Windows.

  • bpo-23138: Исправлен разбор куки с отсутствующими ключами или значениями в cookiejar. Патч Демиана Брехта.

  • bpo-23051: Методы imap() и imap_unordered() multiprocessing.Pool теперь обрабатывают исключения, возникающие в итераторе. Патч Алона Диаманта и Дэвина Поттса.

  • bpo-23581: Добавлена поддержка matmul для MagicMock. Патч Хокана Лёвдаля.

  • bpo-23566: Функции enable(), register(), dump_traceback() и dump_traceback_later() модуля faulthandler теперь принимают файловые дескрипторы. Патч Вэй Ву.

  • bpo-22928: Отключены инъекции HTTP-заголовков в http.client. Оригинальный патч Демиана Брехта.

  • bpo-23615: Модули bz2, tarfile и tokenize теперь можно перезагружать с помощью imp.reload(). Патч Томаса Клюйвера.

  • bpo-23605: os.walk() теперь вызывает os.scandir() вместо os.listdir(). Использование os.scandir() уменьшает количество вызовов os.stat(). Первоначальный патч написан Беном Хойтом.

СборкаBuild

  • bpo-23585: make patchcheck проверяет, что интерпретатор собран.

ТестыTests

  • bpo-23583: Добавлены тесты для стандартных потоков ввода-вывода в IDLE.

  • bpo-22289: Предотвращены сбои test_urllib2net из-за тайм-аута ftp-соединения.

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

  • bpo-22826: Результат open() в Tools/freeze/bkfile.py теперь лучше совместим с обычными файлами (в частности, теперь он поддерживает протокол управления контекстом).

Python 3.5.0 alpha 2

Дата выпуска: 2015-03-09

Ядро и встроенные модулиCore and Builtins

  • bpo-23571: PyObject_Call() и PyCFunction_Call() теперь вызывают SystemError, если функция возвращает результат и порождает исключение. SystemError привязывается к предыдущему исключению.

БиблиотекаLibrary

  • bpo-22524: Новая функция os.scandir(), часть PEP 471: "Функция os.scandir() – лучший и более быстрый итератор каталогов". Патч написан Беном Хойтом (Ben Hoyt).

  • bpo-23103: Снижено потребление памяти для IPv4Address и IPv6Address.

  • bpo-21793: BaseHTTPRequestHandler снова записывает код ответа как число, а не как строковое представление перечисления. Патч от Демиана Брехта.

  • bpo-23476: В модуле ssl включён флаг OpenSSL X509_V_FLAG_TRUSTED_FIRST для хранилищ сертификатов, когда он доступен.

  • bpo-23576: Устранение зависания при чтении SSL, когда на уровне SSL достигнут EOF, но нижележащее соединение не закрыто.

  • bpo-23504: Добавлен __all__ в модуль types.

  • bpo-23563: Оптимизированы вспомогательные функции в urllib.parse.

  • bpo-7830: Устранение вложенности functools.partial.

  • bpo-20204: Добавлен атрибут __module__ классам _tkinter.

  • bpo-19980: Улучшена help() для нераспознанных строк. help('') теперь показывает справку по str. help('help') показывает справку по help(). Оригинальный патч от Марка Лоуренса.

  • bpo-23521: Исправлена реализация деления timedelta на чистом Python.

    Устранено OverflowError из timedelta * float для некоторых чисел с плавающей точкой; Исправлено округление при истинном делении timedelta.

  • bpo-21619: Объекты Popen больше не оставляют зомби после выхода в операторе with, если канал был разорван. Патч от Мартина Пантера.

  • bpo-22936: Сделано возможным показывать локальные переменные в трассировках как для модуля traceback, так и для unittest.

  • bpo-15955: Добавлена опция для ограничения размера вывода в bz2.decompress(). Патч от Николауса Рата.

  • bpo-6639: Функции модуля turtle на уровне модуля больше не вызывают TclError после закрытия окна.

  • bpo-814253: Ссылки на группы и условные ссылки на группы теперь работают в просмотре назад (lookbehind) в регулярных выражениях. (См. также: bpo-9179)

  • bpo-23215: Многобайтовые кодеки с пользовательскими обработчиками ошибок, игнорирующими ошибки, потребляли слишком много памяти и вызывали SystemError или MemoryError. Оригинальный патч от Алекси Торхамо.

  • bpo-5700: io.FileIO() вызывал flush() после закрытия файла. flush() не вызывался в close(), если closefd=False.

  • bpo-23374: Исправлен сбой pydoc с не-ASCII файлами, когда кодировка stdout отличается от кодировки файловой системы (например, на Mac OS).

  • bpo-23481: Удалён RC4 из списка шифров по умолчанию модуля SSL.

  • bpo-21548: Исправлены pydoc.synopsis() и pydoc.apropos() для модулей с пустыми строками документации.

  • bpo-22885: Исправлена уязвимость, позволяющая выполнение произвольного кода в модуле dbm.dumb. Оригинальный патч от Клаудиу Попа.

  • bpo-23239: ssl.match_hostname() теперь поддерживает сопоставление IP-адресов.

  • bpo-23146: Исправлена некорректная обработка абсолютных путей Windows с прямыми слешами в pathlib.

  • bpo-23096: Представление чисел с плавающей запятой в pickle с протоколом 0 теперь одинаково для реализаций на Python и C.

  • bpo-19105: pprint теперь эффективнее использует свободное место справа.

  • bpo-14910: Добавлен параметр allow_abbrev в argparse.ArgumentParser. Патч от Джонатана По (Jonathan Paugh), Стивена Бетарда (Steven Bethard), paul j3 и Дэниела Эрикссона (Daniel Eriksson).

  • bpo-21717: tarfile.open() теперь поддерживает режим 'x' (исключительное создание).

  • bpo-23344: marshal.dumps() теперь в среднем на 20–25% быстрее.

  • bpo-20416: marshal.dumps() с протоколами 3 и 4 теперь в среднем на 40–50% быстрее.

  • bpo-23421: Исправлено сжатие в CLI tarfile. Патч от wdv4758h.

  • bpo-23367: Исправлены возможные переполнения в модуле unicodedata.

  • bpo-23361: Исправлено возможное переполнение в коде создания подпроцесса для Windows.

  • logging.handlers.QueueListener теперь принимает именованный аргумент respect_handler_level; если он равен True, сообщения будут передаваться обработчикам с учётом их уровней.

  • bpo-19705: В turtledemo добавлена визуальная демонстрация алгоритма сортировки. Оригинальный патч от Джейсона Йео (Jason Yeo).

  • bpo-23801: Исправлена ошибка, из-за которой cgi.FieldStorage не всегда игнорировал всю преамбулу multipart-тела.

СборкаBuild

  • bpo-23445: Сборки PyDebug теперь по возможности используют gcc -Og, чтобы результирующий исполняемый файл был быстрее.

  • bpo-23686: В установщике для OS X 10.5 обновлена сборка OpenSSL до версии 1.0.2a.

C API

  • bpo-20204: Теперь выводится предупреждение об устаревании для встроенных типов, у которых нет атрибута __module__.

Windows

  • bpo-23465: Реализован PEP 486 – Обеспечение осведомлённости средства запуска Python о виртуальных окружениях. Патч от Пола Мура (Paul Moore).

  • bpo-23437: Каталог пользовательских сценариев в Windows теперь версионирован. Патч от Пола Мура (Paul Moore).

Python 3.5.0 alpha 1

Дата выпуска: 2015-02-08

Ядро и встроенные модулиCore and Builtins

  • bpo-23285: PEP 475 – обработка EINTR.

  • bpo-22735: Исправлено множество граничных случаев (включая аварийные завершения), связанных с пользовательскими реализациями mro().

  • bpo-22896: Избегайте использования PyObject_AsCharBuffer(), PyObject_AsReadBuffer() и PyObject_AsWriteBuffer().

  • bpo-21295: Откат некоторых изменений (bpo-16795) в номерах строк и смещениях столбцов AST, которые привели к регрессу.

  • bpo-22986: В некоторых случаях разрешено изменять __class__ объекта между динамическим и статическим типом.

  • bpo-15859: PyUnicode_EncodeFSDefault(), PyUnicode_EncodeMBCS() и PyUnicode_EncodeCodePage() теперь вызывают исключение, если объект не является строкой Unicode. Для PyUnicode_EncodeFSDefault() так уже было на платформах, отличных от Windows. Патч написан Кэмпбеллом Бартоном (Campbell Barton).

  • bpo-21408: Стандартный __ne__() теперь возвращает NotImplemented, если __eq__() вернул NotImplemented. Оригинальный патч от Мартина Пантера (Martin Panter).

  • bpo-23321: Исправлен сбой в str.decode(), когда обработчик ошибок возвращал строку замены, длиннее некорректных входных данных.

  • bpo-22286: Обработчики ошибок backslashreplace теперь работают при декодировании и трансляции.

  • bpo-23253: Отложенная загрузка ShellExecute[AW] в os.startfile для снижения накладных расходов при запуске на Windows.

  • bpo-22038: pyatomic.h теперь использует stdatomic.h или встроенные функции GCC для атомарного доступа к памяти, если они доступны. Патч написан Vitor de Lima и Gustavo Temple.

  • bpo-20284: Для bytes и bytearray добавлено форматирование с %-интерполяцией (также известное как printf).

  • bpo-23048: Исправлен выход из бесконечного цикла while в pdb.

  • bpo-20335: Конструктор bytes теперь возбуждает TypeError, если параметры encoding или errors заданы нестроковым аргументом. На основе патча от Renaud Blanch.

  • bpo-22834: Если текущая рабочая директория оказывается установленной на несуществующую, то import больше не будет возбуждать FileNotFoundError.

  • bpo-22869: Код запуска и остановки интерпретатора перенесён в новый выделенный модуль pylifecycle.c

  • bpo-22847: Повышена эффективность кеширования методов.

  • bpo-22335: Исправлен сбой при попытке увеличить bytearray до 0x7fffffff байт на 32-битной платформе.

  • bpo-22653: Исправлен отказ утверждения в режиме отладки при повторной вставке в словарь в режиме отладки.

  • bpo-22643: Исправлено целочисленное переполнение в операциях регистра Unicode (upper, lower, title, swapcase, casefold).

  • bpo-17636: Теперь поддерживаются циклические импорты, включающие относительные импорты.

  • bpo-22604: Исправлена ошибка утверждения в режиме отладки при делении комплексного числа на (nan+0j).

  • bpo-21052: Не возбуждать ImportWarning, если sys.path_hooks или sys.meta_path установлены в None.

  • bpo-16518: В сообщениях об ошибках теперь используется «требуется bytes-подобный объект» вместо гораздо более загадочного «'x' не поддерживает протокол буфера».

  • bpo-22470: Исправлены проблемы целочисленного переполнения в обработчиках ошибок «backslashreplace», «xmlcharrefreplace» и «surrogatepass».

  • bpo-22540: ускорены PyObject_IsInstance и PyObject_IsSubclass в распространённом случае, когда второй аргумент имеет метакласс type.

  • bpo-18711: Добавлена новая функция PyErr_FormatV, аналогичная PyErr_Format, но принимающая аргумент va_list.

  • bpo-22520: Исправлена проверка переполнения при создании repr объекта Unicode.

  • bpo-22519: Исправлена проверка переполнения в PyBytes_Repr.

  • bpo-22518: Исправлены проблемы целочисленного переполнения в кодировке latin-1.

  • bpo-16324: Параметр _charset класса MIMEText теперь также принимает экземпляры email.charset.Charset. Первоначальный патч от Claude Paroz.

  • bpo-1764286: Исправлена функция inspect.getsource() для поддержки декорированных функций. Патч от Claudiu Popa.

  • bpo-18554: os.__all__ включает функции posix.

  • bpo-21391: В модуле shutil используется os.path.abspath.

  • bpo-11471: Избегать генерации инструкции JUMP_FORWARD в конце if-блока, если нет ветки else. Первоначальный патч от Eugene Toder.

  • bpo-22215: Теперь возбуждается ValueError вместо TypeError, если аргумент str или bytes содержит недопустимый нулевой символ или байт.

  • bpo-22258: Исправлена внутренняя функция set_inheritable() на Illumos. Эта платформа предоставляет функцию ioctl(FIOCLEX), но её вызов завершается ошибкой с errno ENOTTY: «Inappropriate ioctl for device». Теперь set_inheritable() использует более медленный fcntl() (сначала F_GETFD, затем F_SETFD).

  • bpo-21389: В repr связанного метода отображается __qualname__ базовой функции.

  • bpo-22206: При использовании pthread функция PyThread_create_key() теперь устанавливает errno в ENOMEM и возвращает -1 (ошибку) при целочисленном переполнении.

  • bpo-20184: Для 30 встроенных функций добавлена интроспекция сигнатур на основе Argument Clinic.

  • bpo-22116: C-функции и методы (типа «builtin_function_or_method») теперь можно ссылаться через weakref. Патч от Wei Wu.

  • bpo-22077: Улучшены сообщения об ошибках индекса для bytearrays, bytes, списков и кортежей добавлением «или срезы». Для bytearrays добавлено «, not <typename>». Первоначальный патч от Claudiu Popa.

  • bpo-20179: К bytes и bytearray применён Argument Clinic. Патч от Tal Einat.

  • bpo-22082: Очистка интернированных строк в slotdefs.

  • База данных Unicode обновлена до версии 7.0.0.

  • bpo-21897: Исправление аварийного завершения при использовании атрибута f_locals с переменными замыкания, когда был вызван frame.clear().

  • bpo-21205: Добавлен новый атрибут __qualname__ для генератора – полное имя (qualified name), и он используется в представлении генератора (repr(gen)). Теперь имя генератора по умолчанию (атрибут __name__) берётся из функции, а не из кода. Для получения имени кода используйте gen.gi_code.co_name.

  • bpo-21669: С помощью эвристик в SyntaxError.__init__ парсер теперь пытается генерировать более осмысленные (или, по крайней мере, более дружественные для поисковых систем) сообщения об ошибках, когда «exec» и «print» используются как операторы.

  • bpo-21642: В условном выражении if-else разрешено использовать целое число, записанное без пробела между ним и ключевым словом else (например, True if 42else False), как допустимый синтаксис.

  • bpo-21523: Исправлено чрезмерно пессимистичное вычисление влияния на стек некоторых опкодов в компиляторе. Это также исправляет проблему квадратичного времени компиляции, заметную при компиляции кода с большим количеством операторов «and» и «or».

  • bpo-21418: Исправление аварийного завершения во встроенной функции super() при вызове без аргументов и без текущего фрейма (например, во встроенном Python).

  • bpo-21425: Исправлена очистка стандартных потоков в интерактивном интерпретаторе.

  • bpo-21435: В редких случаях при выполнении финализаторов для объектов в циклическом мусоре могло произойти некорректное разыменование указателя из-за незаметной ошибки во внутренней логике итерации.

  • bpo-21377: PyBytes_Concat() теперь пытается выполнить конкатенацию на месте, когда первый аргумент имеет счётчик ссылок равный 1. Патч от Nikolaus Rath.

  • bpo-20355: Параметры командной строки -W теперь имеют более высокий приоритет, чем переменная окружения PYTHONWARNINGS. Патч от Arfrever.

  • bpo-21274: Определение PATH_MAX для GNU/Hurd в Python/pythonrun.c.

  • bpo-20904: Поддержка установки точности FPU на m68k.

  • bpo-21209: Исправлена передача кортежей пользовательским объектам-генераторам с использованием синтаксиса yield from.

  • bpo-21193: pow(a, b, c) теперь вызывает ValueError вместо TypeError, когда b отрицательно. Патч от Josh Rosenberg.

  • bpo-21176: PEP 465: Добавлен оператор ‘@’ для умножения матриц.

  • bpo-21134: Исправление сегфолта при вызове str для неинициализированного объекта UnicodeEncodeError, UnicodeDecodeError или UnicodeTranslateError.

  • bpo-19537: Исправление выравнивания PyUnicode_DATA() на m68k. Патч от Andreas Schwab.

  • bpo-20929: Добавлено приведение типа для избежания сдвига отрицательного числа.

  • bpo-20731: Корректное позиционирование в файлах исходного кода, даже если они открыты в текстовом режиме. Патч от Serhiy Storchaka.

  • bpo-20637: Совместное использование ключей теперь работает и для словарей экземпляров подклассов. Патч от Peter Ingebretson.

  • bpo-8297: В сообщении об ошибке для отсутствующих атрибутов модуля теперь указывается имя модуля. Оригинальный патч от ysj.ray.

  • bpo-19995: %c, %o, %x и %X теперь вызывают TypeError для нецелочисленных входных данных.

  • bpo-19655: Парсер ASDL, используемый процессом сборки для генерации кода управления Python AST на C, был переписан. Новый парсер является самодостаточным и не требует длительного использования библиотеки парсер-генератора spark.py; spark.py удалён из исходной базы.

  • bpo-12546: Разрешено использование \x00 в качестве символа заполнения при использовании методов __format__ для str, int, float и complex.

  • bpo-20480: Добавлен ipaddress.reverse_pointer. Патч от Leon Weber.

  • bpo-13598: Изменён string.Formatter для поддержки автоматической нумерации полей подстановки. Теперь его поведение в этом отношении соответствует str.format(). Патчи от Phil Elson и Ramchandra Apte.

  • bpo-8931: Альтернативное форматирование («#») для типа «c» теперь вызывает исключение. В версиях до 3.5 «#» с «c» не имело эффекта. Теперь его указание является ошибкой. Патч от Torsten Landschoff.

  • bpo-23165: Выполнение проверки переполнения перед выделением памяти в функции _Py_char2wchar.

БиблиотекаLibrary

  • bpo-23399: pyvenv создаёт относительные символические ссылки, где это возможно.

  • bpo-20289: cgi.FieldStorage() теперь поддерживает протокол управления контекстом.

  • bpo-13128: Вывод заголовков ответа для CONNECT-запросов при debuglevel > 0. Патч от Demian Brecht.

  • bpo-15381: Оптимизирован io.BytesIO – теперь делает меньше выделений памяти и копирований.

  • bpo-22818: Разбиение по шаблону, который может соответствовать пустой строке, теперь выдаёт предупреждение. Шаблоны, способные соответствовать только пустой строке, теперь отклоняются.

  • bpo-23099: Закрытие io.BytesIO с экспортированным буфером теперь запрещено, чтобы не повредить экспортированный буфер.

  • bpo-23326: Удалены реализации __ne__. После исправления реализации __ne__ по умолчанию в bpo-21408 они стали избыточными.

  • bpo-23363: Исправлено возможное переполнение в itertools.permutations.

  • bpo-23364: Исправлено возможное переполнение в itertools.product.

  • bpo-23366: Исправлено возможное целочисленное переполнение в itertools.combinations.

  • bpo-23369: Исправлено возможное целочисленное переполнение в _json.encode_basestring_ascii.

  • bpo-23353: Исправлена обработка исключений в генераторах в PyEval_EvalFrameEx(). При входе теперь сохраняется или заменяется состояние исключения, даже если PyEval_EvalFrameEx() вызывается с throwflag=0. При выходе состояние исключения теперь всегда восстанавливается или заменяется, а не только если why равно WHY_YIELD или WHY_RETURN. Патч написан совместно с Antoine Pitrou.

  • bpo-14099: Восстановлена поддержка записи ZIP-файлов в потоки, которые поддерживают определение текущей позиции, но не поддерживают произвольное перемещение.

  • bpo-14099: Запись в ZipFile и чтение нескольких ZipExtFiles теперь потокобезопасны.

  • bpo-19361: Декодер JSON теперь возбуждает JSONDecodeError вместо ValueError.

  • bpo-18518: timeit теперь отклоняет операторы, которые невозможно скомпилировать вне функции или цикла (например, «return» или «break»).

  • bpo-23094: Исправлена readline с фреймами в реализации pickle на Python.

  • bpo-23268: Исправлены ошибки в сравнении классов ipaddress.

  • bpo-21408: Удалены некорректные реализации __ne__(), которые не возвращали NotImplemented, если __eq__() возвращал NotImplemented. Реализация __ne__() по умолчанию теперь работает правильно.

  • bpo-19996: email.feedparser.FeedParser теперь корректно обрабатывает (некорректно сформированные) заголовки без ключа, а не считает, что началось тело.

  • bpo-20188: Поддержка согласования протокола прикладного уровня (ALPN) в модуле ssl.

  • bpo-23133: Сериализация (pickling) объектов ipaddress теперь даёт более компактное и переносимое представление.

  • bpo-23248: Обновлены коды ошибок SSL из последней версии git OpenSSL.

  • bpo-23266: Значительно более быстрая реализация ipaddress.collapse_addresses() при наличии множества непоследовательных адресов.

  • bpo-23098: В модуле os теперь поддерживается 64-битный тип dev_t.

  • bpo-21817: Когда в задаче, переданной в ProcessPoolExecutor, возникает исключение, удалённая трассировка теперь отображается в родительском процессе. Патч от Claudiu Popa.

  • bpo-15955: Добавлена опция ограничения размера выходных данных при декомпрессии LZMA. Патч от Nikolaus Rath и Martin Panter.

  • bpo-23250: В модуле http.cookies теперь «HttpOnly» и «Secure» пишутся с заглавной буквы, как того требует стандарт.

  • bpo-23063: В команде check из distutils исправлен разбор reST с директивами code или code-block.

  • bpo-23209: selectors.BaseSelector.get_key() теперь возбуждает RuntimeError, если селектор закрыт. А selectors.BaseSelector.close() теперь очищает свою внутреннюю ссылку на сопоставление селектора, чтобы разорвать циклическую ссылку. Первоначальный патч написан Martin Richard. (См. также: bpo-23225)

  • bpo-17911: Предоставлен способ заполнения кэша строк (linecache) для модуля по PEP 302 без фактической загрузки кода.

  • bpo-17911: Предоставлен новый объектный API для трассировки, включая возможность не искать строки вообще до тех пор, пока трассировка не будет фактически отображена, без сохранения каких-либо оригинальных объектов в памяти.

  • bpo-19777: Добавлен классовый метод home() для объектов Path. Авторы: Victor Salgado и Mayank Tripathi.

  • bpo-23206: Сделать json.dumps(..., ensure_ascii=False) таким же быстрым, как стандартный случай ensure_ascii=True. Патч от Naoki Inada.

  • bpo-23185: Добавлены константы math.inf и math.nan.

  • bpo-23186: Добавлены методы ssl.SSLObject.shared_ciphers() и ssl.SSLSocket.shared_ciphers() для получения списка шифров клиента, отправленных при рукопожатии.

  • bpo-23143: Удалена совместимость с OpenSSL версий старше 0.9.8.

  • bpo-23132: Улучшена производительность и поддержка интроспекции методов сравнения, создаваемых functool.total_ordering.

  • bpo-19776: Добавлен метод expanduser() для объектов Path.

  • bpo-23112: Исправлена работа SimpleHTTPServer: теперь при перенаправлении с добавлением завершающего слеша корректно передаются строка запроса и фрагмент.

  • bpo-21793: Добавлены перечисления http.HTTPStatus (например, HTTPStatus.OK, HTTPStatus.NOT_FOUND). Патч от Demian Brecht.

  • bpo-23093: В модуле io разрешено больше операций с отсоединёнными потоками.

  • bpo-23111: В ftplib сделана версия ssl.PROTOCOL_SSLv23 версией протокола по умолчанию.

  • bpo-22585: На OpenBSD 5.6 и новее os.urandom() теперь вызывает getentropy() вместо чтения /dev/urandom для получения псевдослучайных байтов.

  • bpo-19104: pprint теперь генерирует вывод, пригодный для eval, для обёрнутых строк.

  • bpo-23071: Добавлены недостающие имена в codecs.__all__. Патч от Martin Panter.

  • bpo-22783: Pickling теперь использует опкод NEWOBJ вместо NEWOBJ_EX, если это возможно.

  • bpo-15513: Добавлена реализация __sizeof__ для классов pickle.

  • bpo-19858: pickletools.optimize() теперь учитывает опкод MEMOIZE, может выдавать более компактный результат и больше не генерирует некорректный вывод, если входные данные содержат опкоды MEMOIZE вместе с PUT или BINPUT.

  • bpo-22095: Исправлен HTTPConnection.set_tunnel при использовании порта по умолчанию. Значение порта в заголовке host устанавливалось в “None”. Патч от Demian Brecht.

  • bpo-23016: Предупреждение больше не вызывает AttributeError при запуске программы через pythonw.exe.

  • bpo-21775: shutil.copytree(): исправлен сбой при копировании на VFAT. Обработчик исключения предполагал, что объекты OSError всегда имеют атрибут 'winerror'. Это не так, поэтому сам обработчик вызывал AttributeError при запуске на Linux (и, предположительно, любой другой ОС не Windows). Патч от Greg Ward.

  • bpo-1218234: Исправлен inspect.getsource() для загрузки обновлённого исходного кода перезагруженного модуля. Первоначальный патч от Berker Peksag.

  • bpo-21740: Поддержка обёрнутых вызываемых объектов в doctest. Патч от Claudiu Popa.

  • bpo-23009: Убедиться, что selectors.EpollSelecrtor.select() работает, когда не зарегистрировано ни одного файлового дескриптора.

  • bpo-22959: В конструкторе http.client.HTTPSConnection атрибут check_hostname контекста теперь имеет приоритет перед параметром check_hostname.

  • bpo-22696: Добавлена функция sys.is_finalizing() для получения информации о завершении работы интерпретатора.

  • bpo-16043: Добавление ограничения по умолчанию на объём данных, возвращаемых функцией xmlrpclib.gzip_decode. Это решает проблему CVE-2013-1753.

  • bpo-14099: ZipFile.open() больше не переоткрывает нижележащий файл. Объекты, возвращаемые ZipFile.open(), теперь могут работать независимо от ZipFile, даже если ZipFile был создан с передачей файлоподобного объекта в качестве первого аргумента конструктора.

  • bpo-22966: Исправлено затирание имени файла .pyc в __pycache__ при компиляции исходного файла, содержащего несколько точек в имени.

  • bpo-21971: Обновлена документация turtledemo и модуль добавлен в индекс.

  • bpo-21032: Исправлена утечка сокета при сбое HTTPConnection.getresponse(). Оригинальный патч от Martin Panter.

  • bpo-22407: Использование флага re.LOCALE с строковыми шаблонами или re.ASCII объявлено устаревшим. Он никогда не работал.

  • bpo-22902: команда «ip» теперь используется в Linux для определения MAC-адреса в uuid.getnode(). Исправление от Bruno Cauet.

  • bpo-22960: Добавлен аргумент context в конструктор xmlrpclib.ServerProxy.

  • bpo-22389: Добавлена функция contextlib.redirect_stderr().

  • bpo-21356: Функция ssl.RAND_egd() сделана необязательной для поддержки LibreSSL. Доступность функции проверяется во время компиляции. Патч написан Бернардом Спилом (Bernard Spil).

  • bpo-22915: Парсер SAX теперь поддерживает файлы, открытые через файловый дескриптор или путь в виде байт.

  • bpo-22609: Конструкторы и методы обновления классов отображений в модуле collections теперь принимают аргумент self.

  • bpo-22940: Добавлена функция readline.append_history_file.

  • bpo-19676: Добавлен обработчик ошибок «namereplace».

  • bpo-22788: Добавлен параметр context в logging.handlers.HTTPHandler.

  • bpo-22921: SSLContext теперь может принимать параметр hostname, даже если OpenSSL не поддерживает SNI.

  • bpo-22894: TestCase.subTest() приводил к остановке набора тестов в режиме failfast, даже при отсутствии ошибок.

  • bpo-22796: Разбор HTTP-куки теперь выполняется строже, чтобы защититься от возможных атак внедрения.

  • bpo-22370: Определение Windows в pathlib стало более надёжным.

  • bpo-22841: Корутины отклоняются в asyncio add_signal_handler(). Патч от Ludovic.Gasc.

  • bpo-19494: Добавлен urllib.request.HTTPBasicPriorAuthHandler. Патч от Матея Цепла (Matej Cepl).

  • bpo-22578: Добавлены атрибуты к классу re.error.

  • bpo-22849: Исправлена возможная двойная очистка в конструкторе io.TextIOWrapper.

  • bpo-12728: Разные символы Unicode, имеющие одинаковый верхний регистр, но разный нижний, теперь сопоставляются в регистронезависимых регулярных выражениях.

  • bpo-22821: Исправлена fcntl() с целочисленным аргументом на 64-битных платформах с big-endian.

  • bpo-21650: Добавлена опция --sort-keys в интерфейс командной строки json.tool.

  • bpo-22824: Обновлён формат вывода reprlib для множеств: теперь используются литералы множеств. Патч предоставлен Беркером Пексагом (Berker Peksag).

  • bpo-22824: Обновлён формат вывода reprlib для массивов: пустые массивы отображаются без лишнего пустого списка. Предложено Сергеем Сторчакой (Serhiy Storchaka).

  • bpo-22406: Исправлен кодек uu_codec, некорректно портированный на 3.x. Основано на патче Мартина Пантера (Martin Panter).

  • bpo-17293: uuid.getnode() теперь определяет MAC-адрес в AIX с помощью netstat. Основано на патче Айварса Калванса (Aivars Kalvāns).

  • bpo-22769: Исправлена ttk.Treeview.tag_has() при вызове без аргументов.

  • bpo-22417: Проверка сертификатов по умолчанию в httplib (PEP 476).

  • bpo-22775: Исправлена десериализация http.cookies.SimpleCookie с протоколом 2 и выше. Патч от Тима Грема (Tim Graham).

  • bpo-22776: Исключённый код помещён в область действия блока try в SysLogHandler.emit().

  • bpo-22665: Добавлены отсутствующие get_terminal_size и SameFileError в shutil.__all__.

  • bpo-6623: Удалён устаревший класс Netrc в модуле ftplib. Патч от Мэтта Чапута (Matt Chaput).

  • bpo-17381: Исправлена обработка регистронезависимых диапазонов в регулярных выражениях.

  • bpo-22410: Функции уровня модуля в модуле re теперь кэшируют скомпилированные зависящие от локали регулярные выражения с учётом локали.

  • bpo-22759: Методы запросов на pathlib.Path() (exists(), is_dir(), и т.д.) теперь возвращают False, когда базовый вызов stat вызывает NotADirectoryError.

  • bpo-8876: distutils теперь переключается на копирование файлов, если жёсткая ссылка не работает. Это позволяет использовать специальные файловые системы, такие как общие папки VirtualBox.

  • bpo-22217: Для классов в модуле zipfile реализованы методы __repr__.

  • bpo-22457: Учтён load_tests в start_dir при обнаружении тестов.

  • bpo-18216: gettext теперь вызывает ошибку, если .mo-файл имеет неподдерживаемый номер основной версии. Патч от Aaron Hill.

  • bpo-13918: Добавлена функция locale.delocalize(), которая удаляет локализованное форматирование чисел из строки, представляющей число, без последующего преобразования в конкретный тип. Патч от Cédric Krier.

  • bpo-22676: Ускорена сериализация (pickling) глобальных объектов, у которых нет атрибута __module__.

  • bpo-18853: Исправлено ResourceWarning в shlex.__nain__.

  • bpo-9351: Значения по умолчанию, заданные через set_defaults у подпарсера argparse, больше не игнорируются, если они также заданы у родительского парсера.

  • bpo-7559: Ошибки импорта при загрузке тестов unittest теперь сообщаются как ошибки импорта с соответствующим исключением, а не как ошибки атрибутов после того, как импорт уже не удался.

  • bpo-19746: Добавлена возможность просматривать ошибки, возникшие при обнаружении тестов unittest, без выполнения тестового набора. Новый атрибут errors в TestLoader показывает эти некритические ошибки, обнаруженные в процессе поиска.

  • bpo-21991: Атрибут 'params' заголовков в email.headerregistry теперь доступен только для чтения (MappingProxyType). Ранее словарь был изменяемым, но при каждом обращении к атрибуту создавался новый.

  • bpo-22638: SSLv3 теперь отключён во всей стандартной библиотеке. Его можно включить только вручную, создав экземпляр SSLContext.

  • bpo-22641: В asyncio контекст SSL по умолчанию для клиентских соединений теперь создаётся с помощью ssl.create_default_context(), что повышает безопасность.

  • bpo-17401: В __repr__ io.FileIO теперь включён closefd.

  • bpo-21338: Добавлен тихий режим для compileall. Параметр quiet функций compile_{dir, file, path} теперь может принимать многоуровневое значение. Также опция -q командной строки теперь имеет многоуровневое значение. Патч от Thomas Kluyver.

  • bpo-20152: Модули array и cmath переведены на Argument Clinic.

  • bpo-18643: Добавлен socket.socketpair() в Windows.

  • bpo-22435: Исправлена утечка файловых дескрипторов при неудачной привязке (bind) в socketserver.

  • bpo-13096: Исправлен segfault в обработке больших значений POINTER в CTypes.

  • bpo-11694: В xdrlib теперь вызывается ConversionError, как описано в документации. Патч от Filip Gruszczyński и Claudiu Popa.

  • bpo-19380: Оптимизирован разбор регулярных выражений.

  • bpo-1519638: Теперь несовпавшие группы заменяются пустыми строками в re.sub() и re.subn().

  • bpo-18615: sndhdr.what и sndhdr.whathdr теперь возвращают именованный кортеж (namedtuple).

  • bpo-22462: Исправлено создание фиктивного фрейма в pyexpat, чтобы он отображался в трассировках исключений.

  • bpo-21965: Добавлена поддержка SSL в памяти для модуля ssl. Патч от Geert Jansen.

  • bpo-21173: Исправлено поведение len() для WeakKeyDictionary, когда .clear() был вызван при живом итераторе.

  • bpo-11866: Устранено состояние гонки при вычислении имён для новых потоков.

  • bpo-21905: Избежать RuntimeError в pickle.whichmodule() при изменении sys.modules во время итерации. Патч от Olivier Grisel.

  • bpo-11271: concurrent.futures.Executor.map() теперь принимает аргумент chunksize для пакетной обработки задач в дочерних процессах и повышения производительности ProcessPoolExecutor. Патч от Dan O’Reilly.

  • bpo-21883: os.path.join() и os.path.relpath() теперь вызывают TypeError с более понятным сообщением об ошибке для неподдерживаемых или несовместимых типов аргументов.

  • bpo-22219: Интерфейс командной строки модуля zipfile теперь добавляет записи для директорий (включая пустые) в ZIP-файл.

  • bpo-22449: В ssl.SSLContext.load_default_certs теперь учитываются переменные окружения SSL_CERT_DIR и SSL_CERT_FILE в Windows.

  • bpo-22508: Переменная email.__version__ удалена; код email больше не поставляется отдельно от stdlib, а __version__ не обновлялся в течение нескольких релизов.

  • bpo-20076: Добавлены непроизводные псевдонимы UTF-8 в таблицу псевдонимов локалей.

  • bpo-20079: В таблицу псевдонимов локалей добавлены локали, поддерживаемые в glibc 2.18.

  • bpo-20218: Добавлены удобные методы read_text/write_text и read_bytes/write_bytes для объектов pathlib.Path.

  • bpo-22396: На платформе 32-бит AIX не экспонируются os.posix_fadvise() и os.posix_fallocate(), так как их прототипы в системных заголовочных файлах некорректны.

  • bpo-22517: При удалении объекта io.BufferedRWPair очищаются его слабые ссылки.

  • bpo-22437: Количество захватывающих групп в регулярном выражении больше не ограничено 100.

  • bpo-17442: InteractiveInterpreter теперь отображает полную цепочку трассировки в своём методе showtraceback, чтобы соответствовать встроенному интерактивному интерпретатору.

  • bpo-23392: Добавлены тесты для C API модуля marshal, работающего с FILE*.

  • bpo-10510: Методы register и upload в distutils теперь используют концы строк CRLF, соответствующие стандартам HTML.

  • bpo-9850: Исправлен macpath.join() для пустого первого компонента. Патч от Олега Ошмяна.

  • bpo-5309: Команды build и build_ext из distutils теперь принимают опцию -j для включения параллельной сборки модулей расширения.

  • bpo-22448: Улучшена очистка отменённых дескрипторов таймера для предотвращения неограниченного использования памяти. Патч от Joshua Moore-Oliva.

  • bpo-22427: TemporaryDirectory больше не пытается выполнить очистку дважды при использовании в операторе with в генераторе.

  • bpo-22362: Запрещены неоднозначные восьмеричные escape-последовательности вне диапазона 0-0o377 в регулярных выражениях.

  • bpo-20912: Теперь каталоги, добавленные в ZIP-файл, имеют корректные атрибуты каталога Unix и MS-DOS.

  • bpo-21866: ZipFile.close() больше не записывает записи центрального каталога ZIP64, если allowZip64 имеет значение false.

  • bpo-22278: Исправлена проблема urljoin с относительными URL – регрессия, обнаруженная после внесения изменений в issue22118.

  • bpo-22415: Исправлен отладочный вывод опкода GROUPREF_EXISTS в модуле re. Удалены конечные пробелы в отладочном выводе.

  • bpo-22423: Необработанное исключение в потоке больше не вызывает необработанное AttributeError, если sys.stderr равен None.

  • bpo-21332: Обеспечить, чтобы bufsize=1 в subprocess.Popen() выбирал построчную буферизацию, а не блочную. Патч от Akira Li.

  • bpo-21091: Исправлена ошибка API: email.message.EmailMessage.is_attachment теперь является методом.

  • bpo-21079: Исправлен email.message.EmailMessage.is_attachment, чтобы он возвращал правильный результат, когда заголовок содержит как параметры, так и значение.

  • bpo-22247: Добавлен NNTPError в nntplib.__all__.

  • bpo-22366: urllib.request.urlopen будет принимать объект контекста (SSLContext) в качестве аргумента, который затем будет использоваться для HTTPS-соединения. Патч от Alex Gaynor.

  • bpo-4180: Реестры предупреждений теперь сбрасываются при изменении фильтров.

  • bpo-22419: Длина входящего HTTP-запроса в сервере wsgiref ограничена 65536 байт; для большей длины отправляется код ошибки 414. Патч предоставлен Devin Cook.

  • Нестрогий разбор cookie в http.cookies может представлять угрозу безопасности в сочетании с нестандартной обработкой cookie в некоторых веб-браузерах. Сообщил Sergey Bobrov

  • bpo-20537: Методы логирования теперь принимают экземпляр исключения, а также логическое значение или кортеж исключения. Спасибо Yury Selivanov за патч.

  • bpo-22384: Исключение в колбэке Tkinter больше не приводит к аварийному завершению программы при запуске с pythonw.exe.

  • bpo-22168: Предотвращено AttributeError в turtle с нестандартным Canvas на OS X.

  • bpo-21147: sqlite3 теперь вызывает исключение, если запрос содержит нулевой символ, вместо его усечения. На основе патча Victor Stinner.

  • bpo-13968: Модуль glob теперь поддерживает рекурсивный поиск в подкаталогах с помощью шаблона **.

  • bpo-21951: Исправлена ошибка в Tkinter на AIX при вызове команды Tcl с пустой строкой или аргументом-кортежем.

  • bpo-21951: Tkinter теперь с большой вероятностью вызывает MemoryError вместо падения при неудачном выделении памяти.

  • bpo-22338: Исправлена ошибка в модуле json при неудачном выделении памяти.

  • bpo-12410: imaplib.IMAP4 теперь поддерживает протокол управления контекстом. Оригинальный патч от Tarek Ziadé.

  • bpo-21270: В объектах mock.call теперь переопределяются методы кортежей, чтобы их можно было использовать как обычные атрибуты вызова.

  • bpo-16662: load_tests() теперь выполняется безусловно, если присутствует в __init__.py пакета. TestLoader.loadTestsFromModule() по-прежнему принимает use_load_tests, но он устарел и игнорируется. Добавлен и задокументирован новый только-ключевой атрибут pattern. Исправление предоставлено Robert Collins, доработано Barry Warsaw.

  • bpo-22226: Первая буква больше не удаляется из ключа «status» в результате Treeview.heading().

  • bpo-19524: Исправлена утечка ресурсов в HTTP-соединении при получении неверного ответа. Патч от Martin Panter.

  • bpo-20421: Добавлен метод .version() для SSL-сокетов, возвращающий фактическую используемую версию протокола.

  • bpo-19546: Исключения configparser больше не раскрывают детали реализации. Убраны цепочки KeyErrors, что приводит к более чистым трассировкам. Патч от Claudiu Popa.

  • bpo-22051: turtledemo больше не перезагружает примеры для повторного запуска. Инициализация переменных и настройка GUI должны выполняться в main(), которая вызывается при каждом запуске демонстрации, но не при импорте.

  • bpo-21933: Пользователи turtledemo могут изменять размер шрифта кода через меню или с помощью control(command) «-» или «+» или control-колесо мыши. Оригинальный патч от Lita Cho.

  • bpo-21597: Разделитель между текстовой панелью turtledemo и холстом для рисования теперь можно захватить и перетаскивать мышью. Текстовую панель кода можно расширить, чтобы легко просматривать или копировать текст на всю ширину. Холст можно расширить на небольших экранах. Оригинальные патчи от Jan Kanis и Lita Cho.

  • bpo-18132: Кнопки turtledemo больше не исчезают при уменьшении окна. Оригинальные патчи от Jan Kanis и Lita Cho.

  • bpo-22043: time.monotonic() теперь всегда доступен. threading.Lock.acquire(), threading.RLock.acquire() и операции с сокетами теперь используют монотонные часы вместо системных, когда задан тайм-аут.

  • bpo-21527: В ThreadPoolExecutor добавлено число рабочих потоков по умолчанию, равное 5 × количество CPU. Патч от Claudiu Popa.

  • bpo-22216: smtplib теперь полнее сбрасывает своё состояние после quit. Наиболее заметным последствием прежнего поведения был сбой STARTTLS при последовательности connect/starttls/quit/connect/starttls.

  • bpo-22098: BigEndianStructure и LittleEndianStructure из ctypes теперь определяют пустой __slots__, чтобы подклассы не получали экземпляр dict по умолчанию. Патч от Claudiu Popa.

  • bpo-22185: Исправлена периодическая ошибка RuntimeError в threading.Condition.wait(), вызванная изменением очереди ожидающих без удержания блокировки. Патч от Doug Zongker.

  • bpo-22287: На UNIX _PyTime_gettimeofday() теперь использует clock_gettime(CLOCK_REALTIME), если это возможно. Как побочный эффект, Python теперь зависит от библиотеки librt на Solaris и на Linux (только с glibc старше 2.17).

  • bpo-22182: Используйте e.args для корректной распаковки исключений в distutils.file_util.move_file. Патч от Claudiu Popa.

  • Модуль webbrowser теперь использует start_new_session=True подпроцесса вместо потенциально опасного вызова preexec_fn=os.setsid.

  • bpo-22042: signal.set_wakeup_fd(fd) теперь вызывает исключение, если файловый дескриптор находится в блокирующем режиме.

  • bpo-16808: inspect.stack() теперь возвращает именованный кортеж вместо обычного. Патч от Daniel Shahaf.

  • bpo-22236: Исправлены операции копирования изображений Tkinter в режиме NoDefaultRoot.

  • bpo-2527: Добавлен аргумент globals к функциям timeit для переопределения пространства имён globals, в котором выполняется замеряемый код. Патч от Ben Roberts.

  • bpo-22118: urllib.parse переключён на использование семантики RFC 3986 для разрешения относительных URL вместо RFC 1808 и 2396. Патч от Demian Brecht.

  • bpo-21549: В TarFile.list() добавлен параметр «members».

  • bpo-19628: Разрешено указывать глубину рекурсии compileall с помощью опции -r.

  • bpo-15696: Добавлена реализация __sizeof__ для объектов mmap в Windows.

  • bpo-22068: Предотвращены циклические ссылки с переменными и шрифтами в Tkinter.

  • bpo-22165: SimpleHTTPRequestHandler теперь поддерживает нераскодируемые имена файлов.

  • bpo-15381: Оптимизировано построчное чтение в io.BytesIO.

  • bpo-8797: Немедленно вызывать HTTPError при неудачной базовой аутентификации. Первоначальный патч от Sam Bull.

  • bpo-20729: Восстановлено использование ленивых iterkeys()/itervalues()/iteritems() в модуле mailbox.

  • bpo-21448: Изменено поведение FeedParser.feed(), чтобы избежать сложности O(N**2) при разборе длинных строк. Оригинальный патч от Raymond Hettinger.

  • bpo-22184: Фабрика декораторов functools.lru_cache теперь выдаёт более раннее и понятное сообщение об ошибке, если пользователь забыл обязательные параметры.

  • bpo-17923: Шаблоны glob(), оканчивающиеся на косую черту, больше не соответствуют не-директориям на AIX. Основано на патче от Delhallt.

  • bpo-21725: Добавлена поддержка RFC 6531 (SMTPUTF8) в smtpd.

  • bpo-22176: Обновление libffi модуля ctypes до версии 3.1. В этом выпуске добавлена поддержка архитектур Linux AArch64 и POWERPC ELF ABIv2 с прямым порядком байт (little endian).

  • bpo-5411: Добавлена поддержка формата “xztar” в модуле shutil.

  • bpo-21121: Не принуждать сторонние расширения C собираться с <<<<<<< HEAD -Werror=declaration-after-statement. ======= -Werror=declaration-after-statement. >>>>>>> 3f819ca138… bpo-35110: Исправлены непреднамеренные пробелы вокруг дефисов и тире. (GH-10231)

  • bpo-21975: Исправлен сбой при использовании неинициализированного sqlite3.Row (в частности, при распаковке (unpickling) сериализованного sqlite3.Row). Теперь sqlite3.Row инициализируется в методе __new__().

  • bpo-20170: Преобразование posixmodule для использования Argument Clinic.

  • bpo-21539: Добавлен аргумент exists_ok в Pathlib.mkdir() для имитации функциональности mkdir -p и os.makedirs(). При значении истина игнорируются FileExistsError. Исправление от Berker Peksag.

  • bpo-22127: Обход IDNA для чисто ASCII-имён хостов в модуле socket (в частности, для числовых IP).

  • bpo-21047: Установка значения по умолчанию для аргумента convert_charrefs HTMLParser в True. Патч от Berker Peksag.

  • Добавлен __all__ в html.entities.

  • bpo-15114: Строгий режим и аргумент strict HTMLParser, HTMLParser.error, и исключение HTMLParserError были удалены.

  • bpo-22085: Прекращена поддержка Tk 8.3 в Tkinter.

  • bpo-21580: Теперь Tkinter корректно обрабатывает аргументы bytes, передаваемые Tk. В частности, это позволяет инициализировать изображения из двоичных данных.

  • bpo-22003: При инициализации из объекта bytes, io.BytesIO() теперь откладывает создание копии до момента изменения, что повышает производительность и использование памяти в некоторых сценариях. Патч от David Wilson.

  • bpo-22018: В Windows сигнал set_wakeup_fd() теперь также поддерживает сокеты. Побочным эффектом является то, что Python зависит от библиотеки WinSock.

  • bpo-22054: Добавлены функции os.get_blocking() и os.set_blocking() для получения и установки блокирующего режима файлового дескриптора (False, если установлен флаг O_NONBLOCK, и True в противном случае). Эти функции недоступны в Windows.

  • bpo-17172: Сделать turtledemo активным при запуске на OS X, даже при выполнении через подпроцесс. Патч от Lita Cho.

  • bpo-21704: Исправление ошибки сборки _multiprocessing, когда семафоры недоступны. Патч от Arfrever Frehtes Taifersar Arahesis.

  • bpo-20173: Преобразование SHA-1, SHA-256, SHA-512 и MD5 для использования Argument Clinic. Патч от Vajrasky Kok.

  • Исправление repr(_socket.socket) на Windows 64-bit: не вызывать OverflowError на закрытом сокете. repr(socket.socket) уже работает корректно.

  • bpo-22033: Строковые представления большинства классов, реализованных на Python, теперь содержат фактическое имя класса вместо жёстко заданного.

  • bpo-21947: Модуль dis теперь может дизассемблировать объекты-генераторы-итераторы на основе их атрибута gi_code. Патч от Clement Rouault.

  • bpo-16133: Метод asynchat.async_chat.handle_read() теперь игнорирует исключения BlockingIOError.

  • bpo-22044: Исправлено преждевременное DECREF в call_tzinfo_method. Патч от Tom Flanagan.

  • bpo-19884: readline: Отключать клавишу-модификатор meta, если stdout не является терминалом, чтобы не записывать ANSI-последовательность "\033[1034h" в stdout. Эта последовательность используется на некоторых терминалах (например, TERM=xterm-256color) для включения поддержки 8-битных символов.

  • bpo-4350: Удалён ряд устаревших и давно неработающих методов Tkinter.

  • bpo-6167: Scrollbar.activate() теперь возвращает имя активного элемента, если аргумент не указан. Scrollbar.set() теперь всегда принимает только 2 аргумента.

  • bpo-15275: Очистка и ускорение модуля ntpath.

  • bpo-21888: plistlib.load() и plistlib.loads() теперь работают, если указан параметр fmt.

  • bpo-22032: Теперь для форматирования полных имён классов, реализованных на Python, всегда используется __qualname__ вместо __name__.

  • bpo-22031: repr-представления теперь всегда используют шестнадцатеричный формат с префиксом "0x", когда содержат идентификатор в форме " at 0x…".

  • bpo-22018: signal.set_wakeup_fd() теперь вызывает OSError вместо ValueError при сбое fstat().

  • bpo-21044: tarfile.open() теперь обрабатывает fileobj с целочисленным атрибутом 'name'. Основано на патче Антуана Пьетри.

  • bpo-21966: Учитывается опция командной строки -q при запуске модуля code.

  • bpo-19076: Не передавайте избыточный аргумент 'file' в self.error().

  • bpo-16382: Улучшено сообщение об исключении warnings.warn() для некорректной категории. Первоначальный патч от Фила Элсона.

  • bpo-21932: os.read() теперь использует тип Py_ssize_t() вместо int для размера, чтобы поддерживать чтение более 2 ГБ за один раз. В Windows размер усекается до INT_MAX. Как и при любом вызове os.read(), ОС может прочитать меньше байт, чем запрошено.

  • bpo-21942: Исправлен просмотр исходных файлов в режиме сервера pydoc в Windows.

  • bpo-11259: asynchat.async_chat().set_terminator() теперь вызывает ValueError, если количество полученных байт отрицательное.

  • bpo-12523: asynchat.async_chat.push() теперь вызывает TypeError, если не получает строку байт.

  • bpo-21707: Добавлен отсутствующий аргумент kwonlyargcount в ModuleFinder.replace_paths_in_code().

  • bpo-20639: вызов Path.with_suffix('') позволяет снова удалить суффикс. Патч от July Tikhonov.

  • bpo-21714: Запрещено создание недопустимых путей с помощью Path.with_name(). Оригинальный патч от Antony Lee.

  • bpo-15014: Добавлен метод 'auth' в smtplib для упрощения реализации механизмов аутентификации; он используется внутренне в методе login.

  • bpo-21151: Исправлен segfault в модуле winreg, когда None передаётся в качестве значения REG_BINARY в SetValueEx. Патч от John Ehresman.

  • bpo-21090: io.FileIO.readall() больше не игнорирует ошибки ввода-вывода. Раньше он игнорировал ошибки ввода-вывода, если хотя бы первый вызов C read() завершался успешно.

  • bpo-5800: параметр headers в wsgiref.headers.Headers теперь необязателен. Первоначальный патч от Pablo Torres Navarrete и SilentGhost.

  • bpo-21781: ssl.RAND_add() теперь поддерживает строки длиннее 2 ГБ.

  • bpo-21679: Предотвращение лишних вызовов fstat() во время open(). Патч от Bohuslav Kabrda.

  • bpo-21863: cProfile теперь отображает имя модуля функций-расширений C в дополнение к их собственному имени.

  • bpo-11453: asyncore: теперь выводит ResourceWarning при уничтожении незакрытого объекта file_wrapper. Деструктор теперь закрывает файл, если это необходимо. Метод close() теперь можно вызывать дважды: второй вызов ничего не делает.

  • bpo-21858: Улучшена обработка исключений Python в модуле sqlite3.

  • bpo-21476: Обеспечено удаление TextIOWrapper из email.parser.BytesParser после разбора, чтобы входной файл не закрывался неожиданно.

  • bpo-20295: imghdr теперь распознаёт изображения в формате OpenEXR.

  • bpo-21729: Использован оператор 'with' в модуле dbm.dumb для гарантированного закрытия файлов. Патч от Claudiu Popa.

  • bpo-21491: socketserver: исправлено состояние гонки при завершении дочерних процессов.

  • bpo-21719: Добавлено поле st_file_attributes в os.stat_result в Windows.

  • bpo-21832: Требовать, чтобы входные данные именованного кортежа были строками.

  • bpo-21722: Команда distutils “upload” теперь завершается с ненулевым кодом возврата при ошибке загрузки. Патч от Martin Dengler.

  • bpo-21723: asyncio.Queue: поддержка любого типа чисел (например, float) для максимального размера. Патч от Vajrasky Kok.

  • bpo-21711: поддержка каталогов “site-python” удалена из модуля site (устарело в 3.4).

  • bpo-17552: новый метод socket.sendfile(), позволяющий отправлять файл через сокет с помощью высокопроизводительного os.sendfile() в UNIX. Патч от Giampaolo Rodola’.

  • bpo-18039: dbm.dump.open() теперь всегда создаёт новую базу данных, когда флаг имеет значение ‘n’. Патч от Claudiu Popa.

  • bpo-21326: Добавлен новый метод is_closed() в asyncio.BaseEventLoop. Методы run_forever() и run_until_complete() asyncio.BaseEventLoop теперь вызывают исключение, если цикл событий был закрыт.

  • bpo-21766: Предотвращение уязвимости в CGIHTTPServer путём декодирования URL-путей перед проверкой наличия CGI-скрипта.

  • bpo-21310: Исправлена возможная утечка ресурсов при неудачном вызове open().

  • bpo-21256: Вывод именованных аргументов в вызове мок-функции должен быть в детерминированном порядке. Это поможет писать лучшие доктесты.

  • bpo-21677: Исправлена цепочка ненормализованных исключений в методах close() модуля io.

  • bpo-11709: Исправлена функция pydoc.help, чтобы она не завершалась ошибкой, когда sys.stdin не является корректным файлом.

  • bpo-21515: tempfile.TemporaryFile теперь использует флаг os.O_TMPFILE, если он доступен.

  • bpo-13223: Исправлена pydoc.writedoc, чтобы HTML-документация для методов, использующих ‘self’ в примерах кода, генерировалась корректно.

  • bpo-21463: В urllib.request исправлена очистка FTP-кэша.

  • bpo-21618: Модуль подпроцессов мог не закрывать открытые файловые дескрипторы, унаследованные вызывающим процессом, если они превышали ограничения POSIX. В системах с работающим интерфейсом /proc/self/fd или /dev/fd максимальное количество теперь игнорируется, и закрываются все дескрипторы.

  • bpo-20383: Введён importlib.util.module_from_spec() как предпочтительный способ создания нового модуля.

  • bpo-21552: Исправлено возможное целочисленное переполнение при слишком длинных строках в модуле tkinter на 64-битных платформах.

  • bpo-14315: Модуль zipfile теперь игнорирует дополнительные поля в центральном каталоге, которые слишком коротки для разбора, вместо того чтобы позволить ошибке struct.unpack всплывать, так как такие «плохие данные» встречаются во многих реальных zip-файлах и игнорируются другими инструментами.

  • bpo-13742: Добавлены параметры “key” и “reverse” в heapq.merge(). (Первый черновик патча предоставлен Simon Sapin.)

  • bpo-21402: tkinter.ttk теперь работает, когда корневое окно по умолчанию не установлено.

  • bpo-3015: Функция _tkinter.create() теперь создаёт объект tkapp с параметром wantobject=1 по умолчанию.

  • bpo-10203: sqlite3.Row теперь действительно поддерживает протокол последовательности. В частности, поддерживает reverse() и отрицательные индексы. Оригинальный патч от Claudiu Popa.

  • bpo-18807: Если для виртуального окружения (venv) указано копирование (без симлинков), то алиасы интерпретатора python (python, python3) теперь создаются копированием, а не симлинками.

  • bpo-20197: Добавлена поддержка формата изображений WebP в модуль imghdr. Патч от Fabrice Aneche и Claudiu Popa.

  • bpo-21513: Ускорены некоторые свойства IP-адресов (IPv4Address, IPv6Address), такие как .is_private или .is_multicast.

  • bpo-21137: Улучшено repr для threading.Lock() и его вариантов: теперь отображается статус “locked” или “unlocked”. Патч от Berker Peksag.

  • bpo-21538: Модуль plistlib теперь поддерживает загрузку бинарных plist-файлов, когда размер ссылки или смещения не является степенью двойки.

  • bpo-21455: Добавлен backlog по умолчанию в socket.listen().

  • bpo-21525: Большинство методов Tkinter, которые принимали кортежи, теперь принимают также списки.

  • bpo-22166: С помощью новой внутренней вспомогательной функции _codecs._forget_codec модуль test_codecs теперь очищает кэши кодировок, чтобы избежать появления утечки ссылок.

  • bpo-22236: Тесты Tkinter теперь не переиспользуют корневое окно по умолчанию. Новое корневое окно создаётся для каждого класса тестов.

  • bpo-10744: Исправлены форматные строки PEP 3118 для объектов ctypes с нетривиальной формой.

  • bpo-20826: Оптимизирована функция ipaddress.collapse_addresses().

  • bpo-21487: Оптимизированы функции ipaddress.summarize_address_range() и ipaddress.{IPv4Network,IPv6Network}.subnets().

  • bpo-21486: Оптимизирован разбор сетевых масок в ipaddress.IPv4Network и ipaddress.IPv6Network.

  • bpo-13916: Запрещён обработчик ошибок surrogatepass для кодировок, отличных от UTF-*.

  • bpo-20998: Исправлено поведение re.fullmatch() для повторяющегося шаблона из одного символа с игнорированием регистра. Оригинальный патч от Matthew Barnett.

  • bpo-21075: fileinput.FileInput теперь читает байты из стандартного потока, если указан бинарный режим. Патч от Sam Kimbrel.

  • bpo-19775: Добавлен метод samefile() для объектов pathlib.Path. Первоначальный патч от Vajrasky Kok.

  • bpo-21226: Исправлена инициализация модулей в PyImport_ExecCodeModuleObject (и подобных функциях).

  • bpo-21398: Исправлена ошибка Unicode в постраничном выводе pydoc, когда документация содержит символы, не кодируемые в кодировке stdout.

  • bpo-16531: ipaddress.IPv4Network и ipaddress.IPv6Network теперь принимают аргумент-кортеж (address, netmask), чтобы можно было легко создавать объекты сети из существующих адресов.

  • bpo-21156: importlib.abc.InspectLoader.source_to_code() теперь является статическим методом.

  • bpo-21424: Упрощены и оптимизированы heaqp.nlargest() и nmsmallest() для выполнения меньшего числа сравнений кортежей.

  • bpo-21396: Исправлено поведение TextIOWrapper(…, write_through=True) – теперь он не принуждает к вызову flush() для нижележащего бинарного потока. Патч от akira.

  • bpo-18314: Unlink теперь удаляет точки соединения (junctions) в Windows. Патч от Kim Gräsman.

  • bpo-21088: Исправление регрессии в curses.window.addch() в версии 3.4.0. При переносе на Argument Clinic первые два аргумента были перепутаны местами.

  • bpo-21407: Модуль _decimal теперь поддерживает сигнатуры функций.

  • bpo-10650: Убран нестандартный параметр 'watchexp' из метода Decimal.quantize() в версии на Python. В C-версии его никогда не было.

  • bpo-21469: Снижен риск ложных срабатываний в robotparser – теперь перед возвратом True в can_fetch() проверяется, что robots.txt был прочитан или не существует.

  • bpo-19414: OrderedDict теперь помечает удалённые связи как непригодные. Это позволяет раньше получить ошибку, если связь удаляется во время итерации.

  • bpo-21421: Добавлен __slots__ в абстрактный класс MappingViews. Патч от Josh Rosenberg.

  • bpo-21101: Устранено двойное хеширование в оптимизированном коде на C для collections.Counter().

  • bpo-21321: itertools.islice() теперь освобождает ссылку на исходный итератор, когда срез исчерпан. Патч от Anton Afanasyev.

  • bpo-21057: TextIOWrapper теперь позволяет методу read() или read1() нижележащего бинарного потока возвращать произвольный байтоподобный объект (например, memoryview). Патч от Nikolaus Rath.

  • bpo-20951: SSLSocket.send() теперь вызывает SSLWantReadError или SSLWantWriteError на неблокирующем сокете, если операция должна была бы заблокироваться. Ранее он возвращал 0. Патч от Nikolaus Rath.

  • bpo-13248: Убран ранее устаревший хак дешёвого наследования в asyncore.dispatcher через __getattr__.

  • bpo-9815: assertRaises теперь пытается очищать ссылки на локальные переменные в трассировке исключения.

  • bpo-19940: ssl.cert_time_to_seconds() теперь интерпретирует переданную строку времени в часовом поясе UTC (как указано в RFC 5280), а не в местном часовом поясе.

  • bpo-13204: Вызов sys.flags.__new__ раньше приводил к аварийному завершению интерпретатора, теперь вызывает TypeError.

  • bpo-19385: Операции с закрытой базой данных dbm.dumb теперь всегда вызывают одно и то же исключение.

  • bpo-21207: Обнаруживается, когда кешированный файловый дескриптор os.urandom был закрыт или заменён, и он открывается заново.

  • bpo-21291: subprocess.Popen.wait() теперь потокобезопасен, поэтому несколько потоков могут одновременно вызывать wait() или poll() для одного экземпляра Popen, не теряя значение Popen.returncode.

  • bpo-21127: Объекты Path теперь можно создавать из экземпляров подклассов str (например, numpy.str_).

  • bpo-15002: Объект urllib.response теперь использует механизм _TemporaryFileWrapper (и _TemporaryFileCloser). Это даёт лучший способ управления закрытием файловых дескрипторов. Патч предоставлен Christian Theune.

  • bpo-12220: mindom теперь возбуждает собственное исключение ValueError с указанием, что не поддерживает пробелы в URI, вместо того чтобы позволять всплывать ValueError от ‘split’.

  • bpo-21068: Константы ssl.PROTOCOL* теперь являются элементами перечисления.

  • bpo-21276: posixmodule: не определять USE_XATTRS на KFreeBSD и Hurd.

  • bpo-21262: Новый метод assert_not_called для Mock. Возбуждает AssertionError, если mock был вызван.

  • bpo-21238: новый именованный аргумент unsafe для Mock. Он возбуждает AttributeError, если имя атрибута начинается с assert или assret.

  • bpo-20896: ssl.get_server_certificate() теперь использует PROTOCOL_SSLv23, а не PROTOCOL_SSLv3, для максимальной совместимости.

  • bpo-21239: patch.stopall() работал недетерминированно, когда одно и то же имя патчилось более одного раза.

  • bpo-21203: Обновлены fileConfig и dictConfig для устранения несоответствий. Спасибо Jure Koren за патч.

  • bpo-21222: Передача именованного аргумента name в mock.create_autospec теперь работает.

  • bpo-21197: Добавлена символическая ссылка lib64 -> lib в виртуальных окружениях на 64-битных POSIX-системах, отличных от OS X.

  • bpo-17498: Некоторые SMTP-серверы разрывают соединение после определённых ошибок, нарушая строгое соответствие RFC. Вместо потери кода ошибки при отправке последующей команды RSET, smtplib теперь возвращает код ошибки и откладывает возбуждение исключения SMTPServerDisconnected до выдачи следующей команды.

  • bpo-17826: Установка итерируемого side_effect на фиктивную функцию, созданную с помощью create_autospec, теперь работает. Патч от Kushal Das.

  • bpo-7776: Исправлен заголовок Host: и переподключение при использовании http.client.HTTPConnection.set_tunnel(). Патч от Nikolaus Rath.

  • bpo-20968: unittest.mock.MagicMock теперь поддерживает деление. Патч от Johannes Baiter.

  • bpo-21529: Исправление произвольного доступа к памяти в JSONDecoder.raw_decode при отрицательном втором параметре. Ошибка сообщена Guido Vranken. (См. также: CVE-2014-4616)

  • bpo-21169: getpass теперь обрабатывает не-ASCII символы, которые не может закодировать кодировка входного потока, путём перекодирования с обработчиком ошибок replace.

  • bpo-21171: Исправлен недокументированный API фильтра кодера rot13. Патч от Berker Peksag.

  • bpo-20539: Улучшено сообщение об ошибке math.factorial для больших положительных входных значений и изменён тип исключения (OverflowError -> ValueError) для больших отрицательных входных значений.

  • bpo-21172: Проверка isinstance смягчена с dict на collections.Mapping.

  • bpo-21155: asyncio.EventLoop.create_unix_server() теперь возбуждает ValueError, если path и sock заданы одновременно.

  • bpo-21136: Избегание ненужной нормализации Fractions, получаемых в результате возведения в степень и других операций. Патч от Raymond Hettinger.

  • bpo-17621: Введён importlib.util.LazyLoader.

  • bpo-21076: Константы модуля signal были преобразованы в перечисления. Патч от Giampaolo Rodola’.

  • bpo-20636: Улучшено repr виджетов Tkinter.

  • bpo-19505: Представления items, keys и values OrderedDict теперь поддерживают обратную итерацию с помощью reversed().

  • bpo-21149: Улучшена потокобезопасность при очистке логирования во время завершения интерпретатора. Спасибо Devin Jeanpierre за патч.

  • bpo-21058: Исправлена утечка файлового дескриптора в tempfile.NamedTemporaryFile(), закрывать файловый дескриптор, если io.open() завершается ошибкой

  • bpo-21200: Возвращать None из pkgutil.get_loader(), когда отсутствует __spec__.

  • bpo-21013: Улучшен ssl.create_default_context() при использовании для серверных сокетов для обеспечения лучшей безопасности по умолчанию.

  • bpo-20145: assertRaisesRegex и assertWarnsRegex теперь вызывают TypeError, если второй аргумент не является строкой или скомпилированным регулярным выражением.

  • bpo-20633: Относительный импорт заменён на абсолютный.

  • bpo-20980: Прекращена обёртка исключения при использовании ThreadPool.

  • bpo-21082: В os.makedirs больше не устанавливается umask для процесса в целом. Обратите внимание: это изменяет поведение makedirs при exist_ok=True.

  • bpo-20990: Исправлены проблемы, найденные pyflakes в multiprocessing.

  • bpo-21015: Контексты SSL теперь автоматически выбирают эллиптическую кривую для обмена ключами ECDH на OpenSSL 1.0.2 и новее, а в остальных случаях по умолчанию используется «prime256v1».

  • bpo-21000: Улучшен интерфейс командной строки утилиты json.tool.

  • bpo-20995: Улучшены стандартные шифры, используемые модулем ssl, для повышения безопасности и приоритета perfect forward secrecy.

  • bpo-20884: Больше не делается предположение, что __file__ определён в importlib.__init__.

  • bpo-21499: Игнорируется __builtins__ в нескольких тестах test_importlib.test_api.

  • bpo-20627: xmlrpc.client.ServerProxy теперь является контекстным менеджером.

  • bpo-19165: Модуль formatter теперь вызывает DeprecationWarning вместо PendingDeprecationWarning.

  • bpo-13936: Удалена возможность считать экземпляры datetime.time ложными в логических контекстах.

  • bpo-18931: Модуль selectors теперь поддерживает /dev/poll на Solaris. Патч от Джампаоло Родолы.

  • bpo-19977: Когда LC_TYPE локаль – это локаль POSIX (C локаль), sys.stdin и sys.stdout теперь используют обработчик ошибок surrogateescape вместо обработчика strict.

  • bpo-20574: Реализован инкрементальный декодер для кодировки cp65001 (кодовая страница Windows 65001, Microsoft UTF-8).

  • bpo-20879: Отложена инициализация таблиц кодирования и декодирования для base32, ascii85 и base85 в модуле base64, а также инициализация таблицы unquote_to_bytes() модуля urllib.parse, чтобы не тратить память, если эти модули не используются.

  • bpo-19157: добавлен широковещательный адрес в список доступных хостов для IPv6 в ipaddress.

  • bpo-11599: При сбое внешней команды (например, компилятора) distutils теперь выводит всю командную строку (а не только имя команды), если установлена переменная окружения DISTUTILS_DEBUG.

  • bpo-4931: Distutils больше не должен выдавать бесполезные сообщения «error: None». Функция distutils.util.grok_environment_error сохраняется, но считается устаревшей в документации.

  • bpo-20875: Предотвращена возможная ошибка NameError «'read' is not defined» в gzip. Патч от Клавдиу Попа.

  • bpo-11558: email.message.Message.attach теперь возвращает более полезное сообщение об ошибке, если attach вызывается для сообщения, для которого is_multipart равно False.

  • bpo-20283: Методы шаблонов RE теперь принимают строковые параметры keyword, как и задокументировано. Параметры pattern и source оставлены как устаревшие псевдонимы.

  • bpo-20778: Исправлен modulefinder для работы с модулями, содержащими только байт-код.

  • bpo-20791: copy.copy() теперь не создаёт копию, если на вход передан объект bytes. Начальный патч от Питера Оттена.

  • bpo-19748: На AIX time.mktime() теперь вызывает OverflowError для года вне диапазона [1902; 2037].

  • bpo-19573: inspect.signature: для констант вида параметра используется перечисление.

  • bpo-20726: inspect.signature: Signature и Parameter сделаны сериализуемыми (picklable).

  • bpo-17373: Добавлен метод inspect.Signature.from_callable.

  • bpo-20378: Улучшено строковое представление inspect.Signature и inspect.Parameter.

  • bpo-20816: Исправлен inspect.getcallargs() для возбуждения правильного TypeError при отсутствии обязательных keyword-only аргументов. Патч от Джереми Лоуина.

  • bpo-20817: Исправлен inspect.getcallargs() для корректного завершения с ошибкой, если отсутствует более 3 аргументов. Патч от Джереми Лоуина.

  • bpo-6676: Обеспечено возбуждение осмысленного исключения при попытке разбора более одного XML-документа на экземпляр pyexpat xmlparser. (Исходные патчи от Хирокадзу Ямамото и Амори Форжо д’Арка, с предложенной формулировкой от Дэвида Гаттериджа.)

  • bpo-21117: Исправлена работа inspect.signature для лучшей поддержки functools.partial. Из-за особенностей реализации functools.partial позиционно-ключевые аргументы, переданные как именованные, становятся только ключевыми.

  • bpo-20334: inspect.Signature и inspect.Parameter теперь хэшируемы. Спасибо Энтони Ли за сообщения об ошибках и предложения.

  • bpo-15916: doctest.DocTestSuite возвращает пустой unittest.TestSuite вместо возбуждения ValueError, если не найдено ни одного теста.

  • bpo-21209: Исправлен asyncio.tasks.CoroWrapper для обхода ошибки в реализации yield-from в CPython до версии 3.4.1.

  • asyncio: Добавлены свойства gi_{frame,running,code} в CoroWrapper (bpo-163).

  • bpo-21311: Предотвращение исключения в _osx_support при нестандартных конфигурациях компилятора. Патч от Джона Шакмайстера.

  • bpo-11571: Обеспечено, чтобы окно turtle становилось самым верхним при запуске на OS X.

  • bpo-21801: Проверка, что __signature__ равно None или является экземпляром Signature.

  • bpo-21923: Предотвращение AttributeError в distutils.sysconfig.customize_compiler из-за возможной неинициализированной _config_vars.

  • bpo-21323: Исправлен http.server для повторной обработки скриптов в подкаталогах CGI, нарушенной исправлением уязвимости bpo-19435. Патч от Зака Бирна.

  • bpo-22733: Исправлено ffi_prep_args, некорректно расширявшее нулями значения аргументов на 64-битной Windows.

  • bpo-23302: Установка TCP_NODELAY=1 по умолчанию при установке HTTPConnection. Убрано использование жестко заданного MSS, так как эта оптимизация больше не нужна при отключенном Nagle.

IDLE

  • bpo-20577: Настройка максимальной длины строки для расширения FormatParagraph перенесена с вкладки General диалога настроек Idle на вкладку FormatParagraph диалога Config Extensions. Патч от Таля Эйната.

  • bpo-16893: Обновлена глава документации Idle в соответствии с текущей версией и добавлена новая информация.

  • bpo-3068: Добавлен диалог конфигурации расширений Idle в меню Options. Изменения записываются в HOME/.idlerc/config-extensions.cfg. Оригинальный патч от Таля Эйната.

  • bpo-16233: Браузер модулей (File : Class Browser, Alt+C) требует окно редактора с именем файла. Если Class Browser запрашивается иным способом – из оболочки, окна вывода или редактора «Untitled», Idle больше не показывает диалог с ошибкой. Теперь открывается диалог Open Module (Alt+M). Если введено корректное имя и модуль открыт, то открывается и соответствующий браузер.

  • bpo-4832: Сохранение как файл Python автоматически добавляет .py к введённому имени (даже если система не показывает расширение). Некоторые системы автоматически добавляют .txt при выборе типа «Текстовые файлы».

  • bpo-21986: Объекты кода обычно не сериализуются модулем pickle. Соответственно, они больше не сериализуются при работе в Idle.

  • bpo-17390: Изменён заголовок окна редактора: убрано «Python», версия перемещена в конец.

  • bpo-14105: Точки останова отладчика Idle больше не исчезают при вставке или удалении строк.

  • bpo-17172: Turtledemo теперь можно запускать из Idle. Пока пункт находится в меню Help, но может быть перенесён в Run. Патч от Рамчандры Апта и Литы Чо.

  • bpo-21765: Добавлена поддержка не-ASCII идентификаторов в HyperParser.

  • bpo-21940: Добавлен unittest для WidgetRedirector. Начальный патч от Саймадхава Хеблекара.

  • bpo-18592: Добавлен unittest для SearchDialogBase. Патч от Фила Вебстера.

  • bpo-21694: Добавлен unittest для ParenMatch. Патч от Саймадхава Хеблекара.

  • bpo-21686: Добавлен unittest для HyperParser. Оригинальный патч от Саймадхава Хеблекара.

  • bpo-12387: Добавлены недостающие версии в верхнем (нижнем) регистре для стандартных клавиатурных комбинаций Idle в Windows, чтобы Caps Lock не отключал их. Патч от Роджера Серви.

  • bpo-21695: Закрытие окна результатов поиска в файлах во время выполнения поиска больше не закрывает Idle.

  • bpo-18910: Добавлен unittest для textView. Патч от Фила Вебстера.

  • bpo-18292: Добавлен unittest для AutoExpand. Патч от Сайадхава Хеблекара.

  • bpo-18409: Добавлен unittest для AutoComplete. Патч от Фила Вебстера.

  • bpo-21477: htest.py – улучшение фреймворка, полный набор тестов. Патчи от Saimadhav Heblikar

  • bpo-18104: Добавлен idlelib/idle_test/htest.py с несколькими примерами тестов, чтобы начать консолидацию и улучшение тестов Idle, проверяемых вручную. Другие файлы изменены по мере необходимости для работы с htest. Запуск модуля как __main__ выполняет все тесты.

  • bpo-21139: Изменена ширина абзаца по умолчанию на 72 символа, как рекомендовано в PEP 8.

  • bpo-21284: Тест переформатирования абзаца проходит после изменения пользователем ширины переформатирования.

  • bpo-17654: Обеспечена правильная настройка меню IDLE на OS X для сборок без фреймворка и для всех вариантов Tk.

  • bpo-23180: Пункт меню IDLE «Windows» переименован в «Window». Патч от Al Sweigart.

СборкаBuild

  • bpo-15506: Использован стандартный макрос autoconf PKG_PROG_PKG_CONFIG в скрипте configure.

  • bpo-22935: Разрешена компиляция модуля ssl, если openssl не поддерживает SSL 3.

  • bpo-22592: Прекращена поддержка компилятора Borland C для сборки Python. Модуль distutils по-прежнему поддерживает его для сборки расширений.

  • bpo-22591: Прекращена поддержка MS-DOS, особенно компилятора DJGPP (порт GCC для MS-DOS).

  • bpo-16537: Проверка, пуст ли self.extensions в setup.py. Патч от Jonathan Hosmer.

  • bpo-22359: Удалены некорректные использования рекурсивного make. Патч от Jonas Wagner.

  • bpo-21958: Определён HAVE_ROUND при сборке с Visual Studio 2013 и выше. Патч от Zachary Turner.

  • bpo-18093: программы, встраивающие среду выполнения CPython, теперь находятся в отдельном каталоге «Programs», а не в каталоге Modules.

  • bpo-15759: «make suspicious», «make linkcheck» и «make doctest» в Doc/ теперь выводят специальное сообщение только тогда, когда есть ошибки.

  • bpo-21141: Процесс сборки Windows больше не пытается найти Perl, вместо этого полагается на то, что исходники OpenSSL уже сконфигурированы и готовы к сборке. Скрипт PCbuild\build_ssl.py был переписан и переименован в PCbuild\prepare_ssl.py, и теперь занимается конфигурированием исходников OpenSSL как для 32-, так и для 64-битных платформ. Исходники OpenSSL, полученные с svn.python.org, всегда будут предварительно сконфигурированы и готовы к сборке.

  • bpo-21037: Добавлена опция сборки для включения поддержки AddressSanitizer.

  • bpo-19962: Процесс сборки Windows теперь создаёт «python.bat» в корне дерева исходников, который передаёт все аргументы самому последнему собранному интерпретатору.

  • bpo-21285: Рефакторинг и исправление проверки configure для curses, чтобы всегда искать в каталоге ncursesw.

  • bpo-15234: Для BerkelyDB и Sqlite найденные каталоги библиотек и заголовков добавляются только в том случае, если они ещё не проверяются. Это позволяет избежать явной зависимости от библиотек во время выполнения.

  • bpo-17861: Tools/scripts/generate_opcode_h.py автоматически перегенерирует Include/opcode.h из Lib/opcode.py, если последний изменяется.

  • bpo-20644: Поддержка сборки документации в установщике OS X для изменений сборки в 3.4.1: предполагается, что внешний sphinx-build доступен в /usr/bin.

  • bpo-20022: Исключено использование устаревшего bundlebuilder в сборках OS X.

  • bpo-15968: Сборки Tcl, Tk и Tix включены в решение сборки Windows.

  • bpo-17095: Исправлена поддержка shared в Modules/Setup.

  • bpo-21811: Ожидаемые исправления для поддержки версий OS X > 10.9.

  • bpo-21166: Предотвращение возможных segfault и других случайных сбоев Python <<<<<<< HEAD --generate-posix-vars в цели сборки pybuilddir.txt. ======= –generate-posix-vars в цели сборки pybuilddir.txt. >>>>>>> 3f819ca138… bpo-35110: Исправлены непреднамеренные пробелы вокруг дефисов и тире. (GH-10231)

  • bpo-18096: Исправлен порядок библиотек, возвращаемый python-config.

  • bpo-17219: Добавлен каталог сборки библиотек для кросс-сборок расширений Python.

  • bpo-22919: Сборка Windows обновлена для поддержки VC 14.0 (Visual Studio 2015), которая будет использоваться для официального выпуска.

  • bpo-21236: Сборка _msi.pyd с cabinet.lib вместо fci.lib

  • bpo-17128: Использовать частную версию OpenSSL для установщика OS X 10.5+.

C API

  • bpo-14203: Удалена устаревшая поддержка view==NULL в PyBuffer_FillInfo(), bytearray_getbuffer(), bytesiobuf_getbuffer() и array_buffer_getbuf(). Теперь все эти функции в таком случае вызывают BufferError.

  • bpo-22445: PyBuffer_IsContiguous() теперь выполняет точные проверки непрерывности, совместимые с флагом компиляции NPY_RELAXED_STRIDES_CHECKING из NumPy.\nРанее функция выдавала ложноотрицательные результаты для граничных случаев.

  • bpo-22079: PyType_Ready() теперь проверяет, что статически выделенный тип не имеет динамически выделенных базовых классов.

  • bpo-22453: Удалён недокументированный макрос PyObject_REPR().

  • bpo-18395: Переименовать _Py_char2wchar() в Py_DecodeLocale(),\nпереименовать _Py_wchar2char() в Py_EncodeLocale() и задокументировать эти функции.

  • bpo-21233: Добавлены новые функции C: PyMem_RawCalloc(), PyMem_Calloc(), PyObject_Calloc(), _PyObject_GC_Calloc(). bytes(int) теперь использует calloc() вместо malloc() для больших объектов, что быстрее и использует меньше памяти.

  • bpo-20942: PyImport_ImportFrozenModuleObject() больше не устанавливает __file__ в соответствии с тем, как это делает importlib; это затрагивает _frozen_importlib, а также любой модуль, загруженный с помощью imp.init_frozen().

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

  • bpo-19548: Обновлена документация модуля codecs для более полного описания различий между текстовыми кодировками и другими кодеками, а также внесены дополнительные уточнения. Патч от Martin Panter.

  • bpo-22394: Doc/Makefile теперь поддерживает make venv PYTHON=../python для создания виртуального окружения для генерации документации, например, make html PYTHON=venv/bin/python3.

  • bpo-21514: Документация модуля json теперь ссылается на новый JSON RFC 7159 вместо устаревшего RFC 4627.

  • bpo-21777: Методы двоичных последовательностей для bytes и bytearray теперь документированы явно, а не предполагается, что пользователи смогут вывести ожидаемое поведение из поведения соответствующих методов str.

  • bpo-6916: Убрать документацию для устаревшего класса asynchat.fifo.

  • bpo-17386: Расширена функциональность скрипта Doc/make.bat, чтобы сделать его гораздо более сопоставимым с Doc/Makefile.

  • bpo-21312: Обновлён файл шаблона thread_foobar.h для включения более новых API потоков. Патч от Jack McCracken.

  • bpo-21043: Удалена рекомендация по конкретным центрам сертификации и добавлено упоминание возможности загрузки системных сертификатов.

  • bpo-20765: Добавлена недостающая документация для PurePath.with_name() и PurePath.with_suffix().

  • bpo-19407: Новые руководства по установке и распространению пакетов на основе инструментов Python Packaging Authority. Существующие руководства сохранены в виде устаревших ссылок из документации distutils, так как они всё ещё содержат некоторый необходимый справочный материал для разработчиков инструментов, который больше нигде не описан.

  • bpo-19697: Документированы случаи, когда __main__.__spec__ равно None.

ТестыTests

  • bpo-18982: Добавлены тесты для CLI модуля calendar.

  • bpo-19548: Добавлены дополнительные проверки в test_codecs, чтобы гарантировать точность утверждений в обновлённой документации. Патч от Martin Panter.

  • bpo-22838: Все тесты test_re теперь работают с обнаружением тестов unittest.

  • bpo-22173: Обновлены тесты lib2to3 для использования обнаружения тестов unittest.

  • bpo-16000: Тест test_curses переведён на использование unittest.

  • bpo-21456: Пропускать два теста в test_urllib2net.py, если модуль _ssl не доступен. Патч от Remi Pointel.

  • bpo-20746: Исправлен test_pdb для запуска в режиме проверки утечек (-R). Патч от Xavier de Gaye.

  • bpo-22060: test_ctypes несколько очищен и упрощён; теперь он использует обнаружение тестов unittest для поиска своих тестов.

  • bpo-22104: regrtest.py больше не хранит ссылку на набор тестов, загруженных из тестовых модулей, которые не определяют test_main().

  • bpo-22111: Различные чистки в test_imaplib. Патч от Milan Oberkirch.

  • bpo-22002: Добавлена функция load_package_tests в test.support и использована для реализации/расширения обнаружения тестов в test_asyncio, test_email, test_importlib, test_json и test_tools.

  • bpo-21976: Исправлена test_ssl для принятия строк версий LibreSSL. Спасибо William Orr.

  • bpo-21918: Преобразовано test_tools из модуля в пакет, содержащий отдельные файлы тестов для каждого тестируемого скрипта.

  • bpo-9554: Использованы современные возможности unittest в test_argparse. Первоначальный патч от Denver Coneybeare и Radu Voicilas.

  • bpo-20155: Изменены имена HTTP-методов в падающих тестах test_httpservers, чтобы программное обеспечение фильтрации пакетов (в частности, Windows Base Filtering Engine) не мешало семантике транзакций, ожидаемой тестами.

  • bpo-19493: Выполнен рефакторинг тестового пакета ctypes: теперь тесты пропускаются явно, а не молча.

  • bpo-18492: Все ресурсы теперь разрешены, когда тесты запускаются не через regrtest.py.

  • bpo-21634: Исправление микробенчмарка pystone: теперь используется целочисленное деление вместо обычного, чтобы тестировать целые числа, а не числа с плавающей запятой. Версия pystone установлена на 1.2. Патч написан Lennart Regebro.

  • bpo-21605: Добавлены тесты для изображений Tkinter.

  • bpo-21493: Добавлен тест для ntpath.expanduser(). Оригинальный патч от Claudiu Popa.

  • bpo-19925: Добавлены тесты для модуля spwd. Оригинальный патч от Vajrasky Kok.

  • bpo-21522: Добавлены тесты Tkinter для Listbox.itemconfigure(), PanedWindow.paneconfigure() и Menu.entryconfigure().

  • bpo-17756: Исправлен тест test_code при запуске из установленного расположения.

  • bpo-17752: Исправлены тесты distutils при запуске из установленного расположения.

  • bpo-18604: Объединены проверки доступности GUI. Теперь все платформы, по крайней мере, проверяют, можно ли создать экземпляр Tk, когда запрашивается ресурс GUI.

  • bpo-21275: Исправлен тест сокета на KFreeBSD.

  • bpo-21223: Проходит test_site/test_startup_imports, когда некоторые расширения собраны как встроенные.

  • bpo-20635: Добавлены тесты для менеджеров геометрии Tk.

  • Добавлен тестовый пример для freeze.

  • bpo-20743: Исправлена утечка ссылок в test_tcl.

  • bpo-21097: Перемещено test_namespace_pkgs в test_importlib.

  • bpo-21503: Используется test_both() последовательно в test_importlib.

  • bpo-20939: Избегание различных сбоев сетевых тестов из-за нового перенаправления с http://www.python.org/ на https://www.python.org: используйте http://www.example.com.

  • bpo-20668: Тесты asyncio больше не полагаются на файл tests.txt. (Патч от Vajrasky Kok)

  • bpo-21093: Предотвращение сбоев ctypes test_macholib на OS X, если копия libz существует в $HOME/lib или /usr/local/lib.

  • bpo-22770: Предотвращение некоторых ошибок сегментации в Tk на OS X при запуске GUI-тестов.

  • bpo-23211: Обходной путь для сбоя test_logging на некоторых системах OS X 10.6.

  • bpo-23345: Предотвращение сбоев test_ssl с большими значениями уровня патча OpenSSL (например, 0.9.8zc).

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

  • bpo-22314: pydoc теперь работает, когда установлена переменная окружения LINES.

  • bpo-22615: Argument Clinic теперь поддерживает аргумент “type” для конвертера int. Это позволяет использовать конвертер int с перечислениями и typedef-объявлениями.

  • bpo-20076: Скрипт makelocalealias.py больше не игнорирует UTF-8 mapping.

  • bpo-20079: Теперь скрипт makelocalealias.py может анализировать файл SUPPORTED из исходных кодов glibc и поддерживает параметры командной строки для путей к исходникам.

  • bpo-22201: Интерфейс командной строки модуля zipfile теперь корректно извлекает ZIP-файлы с записями каталогов. Исправление от Ryan Wilson.

  • bpo-22120: Для функций, использующих преобразователь возвращаемого значения в беззнаковое целое, Argument Clinic теперь генерирует приведение к этому типу для сравнения с -1 в сгенерированном коде. (Это подавляет предупреждение компилятора.)

  • bpo-18974: Tools/scripts/diff.py теперь использует argparse вместо optparse.

  • bpo-21906: Исправление работы Tools/scripts/md5sum.py в Python 3. Исправление от Zachary Ware.

  • bpo-21629: Исправление функции «--converters» в Argument Clinic.

  • Добавлена поддержка yield from в 2to3.

  • Добавлена поддержка оператора умножения матриц из PEP 465 в 2to3.

  • bpo-16047: Исправление списка исключений модуля и обработки __file__ в freeze. Исправление от Meador Inge.

  • bpo-11824: Учёт тегов ABI в freeze. Исправление от Meador Inge.

  • bpo-20535: PYTHONWARNING больше не влияет на скрипт run_tests.py. Исправление от Arfrever Frehtes Taifersar Arahesis.

Windows

  • bpo-23260: Обновление установщика Windows

  • Встроенная версия Tcl/Tk обновлена до 8.6.3. Самый заметный результат этого изменения – добавление новых нативных диалогов выбора файлов при работе в Windows Vista или новее. Дополнительную информацию см. в TIP 432 от Tcl/Tk. Кроме того, эта версия Tcl/Tk включает поддержку Windows 10.

  • bpo-17896: Сборочные скрипты Windows теперь ожидают внешние исходники библиотек в PCbuild\..\externals вместо PCbuild\..\...

  • bpo-17717: Сборочные скрипты Windows теперь используют копию NASM, полученную с svn.python.org, для сборки OpenSSL.

  • bpo-21907: Улучшены пакетные скрипты для сборки Python.

  • bpo-22644: Встроенная версия OpenSSL обновлена до 1.0.1j.

  • bpo-10747: Использование версионированных меток в меню «Пуск» Windows. Исправление от Olive Kilburn.

  • bpo-22980: .pyd-файлы с тегом версии и платформы (например, «.cp35-win32.pyd») теперь будут загружаться в предпочтение перед файлами без тегов.

(Информацию о более старых версиях смотрите в файле HISTORY.)