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

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

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

Дата выпуска: 2020-09-05

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

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

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

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

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

  • bpo-29778: Обеспечивает загрузку python3.dll из правильных местоположений при встраивании Python (CVE-2020-15523).
  • bpo-41004: CVE-2020-14422: Методы __hash__() в ipaddress.IPv4Interface и ipaddress.IPv6Interface некорректно генерировали постоянные хеш-значения 32 и 128 соответственно. Это всегда приводило к коллизиям хешей. Исправление использует hash() для генерации хеш-значений на основе кортежа (адрес, длина маски, сетевой адрес).
  • 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-38945: Символы новой строки теперь экранируются при uu-кодировании, чтобы предотвратить их попадание в раздел содержимого закодированного файла. Это предотвращает вредоносное или случайное изменение данных в процессе декодирования.
  • bpo-38804: Исправлена уязвимость ReDoS в http.cookiejar. Патч от Бена Коллера.

БиблиотекаLibrary

  • bpo-39017: Предотвращает бесконечный цикл при чтении специально созданных TAR-файлов с помощью модуля tarfile (CVE-2019-20907).
  • bpo-41183: Использовать 3072-битные ключи RSA и подпись SHA-256 для тестовых сертификатов и ключей.
  • bpo-39503: AbstractBasicAuthHandler из urllib.request теперь разбирает все HTTP-заголовки WWW-Authenticate и принимает несколько вызовов (challenge) на заголовок: используется realm первого Basic-вызова.

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

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

В версии 3.5.9 не было новых изменений. 3.5.9 был выпущен из-за проблемы с кэшированием CDN, из-за которой некоторые пользователи загрузили предрелизную версию исходного .xz-архива 3.5.8. 3.5.9 идентична правильному релизу 3.5.8.

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

Дата выпуска: 2019-10-28

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

Python 3.5.8, кандидат в релизы 2Python 3.5.8 release candidate 2

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

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

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

БиблиотекаLibrary

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

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

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

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

  • bpo-37461: Исправлен бесконечный цикл при разборе специально сформированных заголовков писем. Патч от Abhilash Raj.
  • bpo-35907: CVE-2019-9948: предотвращение чтения файлов путём запрета схем URL local-file:// и local_file:// в URLopener().open() и URLopener().retrieve() из urllib.request.
  • bpo-34155: Исправлен разбор некорректных адресов электронной почты с более чем одним @ (например, a@b@c.com.) – теперь часть до второго @ не возвращается как корректный адрес. Патч от maxking и jpic.
  • bpo-36742: Исправлена некорректная обработка символов предварительной нормализации в urlsplit().
  • bpo-30458: Устранение CVE-2019-9740 путём запрета URL-путей, содержащих пробелы или управляющие символы, в базовом запросе http-клиента. Такие потенциально вредоносные URL для внедрения заголовков теперь вызывают исключение http.client.InvalidURL.

ТестыTests

  • bpo-36816: Обновить Lib/test/selfsigned_pythontestdotnet.pem в соответствии с новым TLS-сертификатом self-signed.pythontest.net.
  • bpo-36576: Пропускать тесты test_ssl и test_asyncio, падающие с OpenSSL 1.1.1.

СборкаBuild

  • bpo-36478: Исправить совместимость с ISO C89, необходимую для стандарта «gnu89» GCC 4.8: использовать C89 для циклов в перенесённом патче для pickle. Патч от Anthony Sottile.

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

Дата выпуска: 2019-03-17

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

  • bpo-36216: Изменяет urlsplit() так, что при наличии в URL символов, которые при IDNA-кодировании (нормализация NFKC) разлагаются на символы, влияющие на разбор URL, возникает ValueError.
  • bpo-35121: Не отправлять куки домена A без атрибута Domain в домен B, когда домен A является суффиксом домена B, при использовании cookiejar с политикой http.cookiejar.DefaultCookiePolicy. Исправление от Karthikeyan Singaravelan.

БиблиотекаLibrary

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

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

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

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

  • bpo-35746: [CVE-2019-5010] Исправление разыменования нулевого указателя в модуле ssl. Парсер сертификатов некорректно обрабатывал точки распространения CRL с пустым DP или URI. Вредоносный или ошибочный сертификат мог привести к ошибке сегментации. Уязвимость (TALOS-2018-0758) обнаружена Colin Read и Nicolas Edet из Cisco.
  • bpo-34791: xml.sax и xml.dom.domreg больше не используют переменные окружения для переопределения реализаций парсеров, когда sys.flags.ignore_environment установлен аргументами -E или -I.
  • bpo-34623: CVE-2018-14647: Ускоренный на C модуль _elementtree теперь инициализирует соль рандомизации хеша из _Py_HashSecret вместо стандартного CSPRNG библиотеки libexpat.

БиблиотекаLibrary

  • bpo-33329: Исправлена регрессия модуля multiprocessing на новых версиях glibc
  • bpo-33127: Модуль ssl теперь компилируется с LibreSSL 2.7.1.

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

Дата выпуска: 2018-08-02

Между 3.5.6rc1 и финальной версией 3.5.6 изменений не было.

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

Дата выпуска: 2018-07-19

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

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

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

  • bpo-33216: Уточнить документацию для CALL_FUNCTION_VAR, CALL_FUNCTION_KW и CALL_FUNCTION_VAR_KW.

Python 3.5.5, финальная версияPython 3.5.5 final

Дата выпуска: 2018-02-04

Новых изменений в версии 3.5.5 нет.

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

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

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

  • bpo-32551: Изменение инициализации sys.path[0] для bpo-29139 вызвало регрессию, выявив несоответствие в том, как инициализируется sys.path при выполнении __main__ из zip-файла, каталога или другого места импорта. Это считается потенциальной проблемой безопасности, так как может привести к тому, что привилегированные процессы неожиданно загрузят код из каталогов, контролируемых пользователем, в ситуациях, где ранее такого не происходило.

    Интерпретатор теперь последовательно избегает добавления родительского каталога места импорта в sys.path и гарантирует, что другие записи sys.path не будут случайно изменены при вставке места импорта, указанного в командной строке. (Изначально сообщалось как bpo-29723 против Python 3.6rc1, но тогда не заметили, что предстоящий выпуск Python 3.5.4 также будет затронут)

  • bpo-30657: Исправление возможного целочисленного переполнения в PyBytes_DecodeEscape, CVE-2017-1000158. Оригинальный патч от Jay Bosamiya; перенесён на Python 3 Miro Hrončok.

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

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

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

БиблиотекаLibrary

  • bpo-32072: Исправлены проблемы с бинарными plist-файлами:
    • Исправлено сохранение bytearrays.
    • Идентичные объекты будут сохраняться только один раз.
    • Равные ссылки будут загружаться как идентичные объекты.
    • Добавлена поддержка сохранения и загрузки рекурсивных структур данных.
  • bpo-31170: expat: обновление libexpat с 2.2.3 до 2.2.4. Исправлено копирование частичных символов для ввода UTF-8 (ошибка libexpat 115): https://github.com/libexpat/libexpat/issues/115

Python 3.5.4, финальная версияPython 3.5.4 final

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

БиблиотекаLibrary

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

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

Дата выпуска: 2017-07-23

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

  • bpo-30730: Предотвращено внедрение переменных окружения в подпроцессе на Windows. Предотвращена передача других переменных окружения и аргументов командной строки.
  • bpo-30694: Обновить копию expat с 2.2.0 до 2.2.1 для получения исправлений множества уязвимостей безопасности, включая: CVE-2017-9233 (DoS через бесконечный цикл внешней сущности), CVE-2016-9063 (целочисленное переполнение, повторное исправление), CVE-2016-0718 (исправление регрессионных ошибок из исправления CVE-2016-0718 в версии 2.2.0) и CVE-2012-0876 (хэш-флудинг счётчика с SipHash). Примечание: CVE-2016-5300 (использование OS-специфичных источников энтропии, таких как 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).
  • bpo-29591: Обновление копии expat с версии 2.1.1 до 2.2.0 для получения исправлений CVE-2016-0718 и CVE-2016-4472. Подробнее см. https://sourceforge.net/p/expat/bugs/537/.

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

  • bpo-30876: Относительный импорт из незагруженного пакета теперь повторно импортирует пакет вместо того, чтобы завершаться с SystemError. Относительный импорт из не-пакета теперь завершается с ImportError, а не SystemError.
  • bpo-30765: Избегание блокировки в pthread_mutex_lock(), когда PyThread_acquire_lock() запрашивается без блокировки.
  • bpo-27945: Исправлены различные ошибки сегментации со словарём при изменении входных коллекций во время поиска, вставки или сравнения. Основано на исправлениях от Duane Griffin и Tim Mitchell.
  • bpo-25794: Исправлены type.__setattr__() и type.__delattr__() для неинтернированных имён атрибутов. Основано на патче от Eryk Sun.
  • bpo-29935: Исправлены сообщения об ошибках в методе index() кортежа, списка и deque при передаче индексов неверного типа.
  • bpo-28876: bool(range) работает, даже если len(range) вызывает OverflowError.
  • bpo-29600: Исправлена обёртка возвращаемых значений корутины в StopIteration.
  • bpo-29537: Восстановлена совместимость во время выполнения с байткод-файлами, созданными CPython 3.5.0–3.5.2, и изменён цикл выполнения, чтобы избежать проблем, которые могли быть вызваны некорректным вариантом опкода BUILD_MAP_UNPACK_WITH_CALL, который они могут содержать. Патч от Petr Viktorin, Serhiy Storchaka и Nick Coghlan.
  • bpo-28598: Поддержка вызова __rmod__ для подклассов str перед str.__mod__. Патч от Martijn Pieters.
  • 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-29478: Если указано max_line_length=None при использовании политики Compat32, этот параметр больше не игнорируется. Патч от Mircea Cosbuc.

БиблиотекаLibrary

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

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

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

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

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

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

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

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

  • bpo-29169: Обновление zlib до версии 1.2.11.

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

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

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

  • bpo-30645: Исправлено вычисление пути в imp.load_package() для случаев, когда пакет распространяется только в виде байткода. Патч от Alexandru Ardelean.

  • bpo-23890: unittest.TestCase.assertRaises() теперь вручную разрывает циклические ссылки, чтобы объекты не оставались в памяти дольше, чем ожидается.

  • bpo-30149: inspect.signature() теперь поддерживает вызываемые объекты с параметрами переменного числа аргументов, обёрнутыми с помощью partialmethod. Исправление от Dong-hee Na.

  • bpo-29931: Исправлена проверка сравнения для объектов ipaddress.ip_interface. Патч от Sanjay Sundaresan.

  • bpo-24484: Избежание состояния гонки (race condition) при очистке в multiprocessing.

  • 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-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-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-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-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-29615: SimpleXMLRPCDispatcher больше не привязывает KeyError (или любое другое исключение) к исключениям, возникшим в диспетчеризованных методах. Исправление от Petr Motejlek.

  • bpo-29704: asyncio.subprocess.SubprocessStreamProtocol больше не закрывается до того, как будут закрыты все каналы.

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

  • bpo-29376: Исправлена ошибка утверждения в threading._DummyThread.is_alive().

  • bpo-29110: Исправлена утечка объекта файла в aifc.open(), когда файл задан как путь в файловой системе и не является допустимым форматом AIFF. Исправление от Anthony Zhang.

  • bpo-28961: Исправлен вспомогательный класс unittest.mock._Call: больше не игнорируется параметр name. Исправление от Jiajun Huang.

  • bpo-29532: Изменение словаря kwarg, переданного в functools.partial(), больше не влияет на объект partial после его создания.

  • 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-29011: Исправлено важное упущение: добавлен Deque в модуль typing.

  • bpo-29219: Исправлена бесконечная рекурсия в repr неинициализированных экземпляров ctypes.CDLL.

  • bpo-28969: Исправлено состояние гонки в C-реализации functools.lru_cache. KeyError мог возникнуть, когда кэшированная функция с полным кэшем одновременно вызывалась из разных потоков с одинаковыми незакэшированными аргументами.

  • bpo-29142: В urllib.request суффиксы в переменной окружения no_proxy с ведущими точками снова могут соответствовать связанным именам хостов (например, .b.c соответствует a.b.c). Исправление от Milan Oberkirch.

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

  • bpo-30176: Добавлены отсутствующие константы, связанные с атрибутами, в документацию curses.
  • bpo-26985: Добавлена отсутствующая информация об объекте кода в документацию inspect.
  • bpo-28929: Добавлена ссылка на исходный файл документации на GitHub.
  • bpo-25008: Документировать smtpd.py как фактически устаревший и добавить указатель на aiosmtpd, стороннюю замену на основе asyncio.
  • bpo-26355: Добавлена каноническая ссылка в заголовке каждой страницы на соответствующую основную версию документации. Исправление от Matthias Bussonnier.
  • bpo-29349: Исправлен синтаксис Python 2 в коде для сборки документации.

ТестыTests

  • bpo-30822: Исправлен парсер командной строки regrtest для возможности передачи -u extralargefile для запуска test_zipfile64.

  • bpo-30383: regrtest: Улучшена программа regrtest и перенесены возможности из ветки master.

    Добавлены опции: –coverage, –testdir, –list-tests (список тестовых файлов, не запускать их), –list-cases (список идентификаторов тестов, не запускать их, bpo-30523), –matchfile (загрузить список фильтров тестов из текстового файла, bpo-30540), –slowest (псевдоним для –slow).

    Улучшен вывод: добавлена временная метка, результат теста, текущие запущенные тесты, сводка «Tests result: xxx» с общей продолжительностью и т.д.

    Исправлен поиск утечек ссылок в regrtest, –huntrleaks: regrtest теперь прогревает кэши, явно создает все внутренние синглтоны, которые создаются по требованию, чтобы предотвратить ложные срабатывания при проверке утечек ссылок. (bpo-30675).

  • bpo-30357: test_thread: setUp() теперь использует support.threading_setup() и support.threading_cleanup() для ожидания завершения потоков, чтобы избежать случайных побочных эффектов на следующие тесты. Первоначальное исправление от Grzegorz Grzywacz.

  • bpo-28087: Пропуск test_asyncore и test_eintr при сбоях poll на macOS. Пропуск некоторых тестов select.poll при работе на macOS из-за нерешённых проблем с системной функцией poll на некоторых версиях macOS.

  • bpo-30197: Улучшены функции swap_attr() и swap_item() в модуле test.support. Теперь они работают, когда удаляется заменённый атрибут или элемент внутри оператора with. Старое значение атрибута или элемента (или None, если его не существует) теперь будет присваиваться цели предложения "as", если оно есть.

  • bpo-29571: чтобы соответствовать поведению флага re.LOCALE, test_re.test_locale_flag теперь использует locale.getpreferredencoding(False) для определения кодировки-кандидата для тестового регулярного выражения (что позволяет корректно пропускать тест, когда кодировка локали по умолчанию является многобайтовой).

СборкаBuild

  • bpo-29243: Предотвращает ненужную пересборку Python во время make test, make install и некоторых других целей make при настройке с --enable- optimizations.
  • bpo-23404: Больше не выполняется повторная генерация сгенерированных файлов на основе времени изменения файла: теперь это действие явное. Замените make touch на make regen-all.
  • bpo-29643: Исправлено: --enable-optimization не работало.

Windows

  • bpo-30687: Поиск msbuild.exe в Windows при сборке вместо vcvarsall.bat.
  • bpo-29392: Предотвращение сбоя при передаче недопустимых аргументов в модуль msvcrt.

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.

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 вне заглушек, 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-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. Основано на патче Кристиана Хаймса.

  • 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 при кросскомпиляции. Вывод этих программ обычно сохраняется вместе с исходным кодом и всё равно перегенерируется при нативной сборке. Патч Ксавьера де Гэ.
  • 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. * Правильный отступ для моноширинного текста (патч Марка Роземана). * Фрагментам кода задан очень похожий на 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: Исправлены совместимые с 2to3 и 3to2 отображения pickle. Исправлены неоднозначные обратные отображения. Добавлено много новых отображений. Импортное отображение больше не применяется к модулям, уже сопоставленным с полным именем.
  • 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-расширения собираться с -Werror=declaration-after-statement.
  • 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: Представления (repr) большинства классов, реализованных на 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 аргументов. Патч от Jeremiah Lowin.
  • 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: Предотвращает возможные сбои сегментации и другие случайные сбои python –generate-posix-vars в цели сборки pybuilddir.txt.
  • 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») теперь будут загружаться в предпочтение перед файлами без тегов.

Python 3.4.0 final

Дата выпуска: 2014-03-16

БиблиотекаLibrary

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

  • Слияние всех изменений документации, сделанных после ответвления 3.4.0rc1.

Python 3.4.0 release candidate 3

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

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

  • bpo-20786: Исправлены сигнатуры для dict.__delitem__ и property.__delete__ в модуле builtins.

БиблиотекаLibrary

  • bpo-20839: Не вызывать DeprecationWarning в поддерживаемом API pkgutil.get_loader(), когда __loader__ не установлен для модуля (а также когда pkgutil.find_loader() вызывается напрямую).

СборкаBuild

  • bpo-14512: Запускать pydoc -b вместо pydocgui.pyw на Windows.
  • bpo-20748: При удалении pip больше не остаётся pyc-файлов деинсталлятора.
  • bpo-20568: Установщик Windows теперь устанавливает команду без версии pip в дополнение к командам с версиями pip3 и pip3.4.
  • bpo-20757: Вспомогательная функция ensurepip для деинсталлятора Windows теперь пропускает удаление pip (вместо того чтобы завершаться ошибкой), если пользователь обновил pip до версии, отличной от той, что поставляется с ensurepip.
  • bpo-20465: Обновлены сборки установщиков для OS X и Windows для использования SQLite 3.8.3.1.

Python 3.4.0 release candidate 2

Дата выпуска: 2014-02-23

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

  • bpo-20625: Имена параметров в __annotations__ не искажались должным образом. Обнаружено Jonas Wielicki, патч от Yury Selivanov.
  • bpo-20261: В pickle поиск __getnewargs__ и __getnewargs_ex__ выполняется по типу объекта.
  • bpo-20619: Присвоить AST-узлам аргументов, передаваемых только по ключу, номер столбца и строки.
  • bpo-20526: Отмена изменений bpo-19466, которые привели к регрессии: больше не очищать состояние потоков Python на раннем этапе завершения работы Python.

БиблиотекаLibrary

  • bpo-20710: Строка сводки pydoc больше не отображает параметр “self” для связанных методов.
  • bpo-20566: Изменено asyncio.as_completed() для использования очереди, чтобы избежать поведения O(N**2).
  • bpo-20704: Реализован новый API отладки в asyncio. Добавлены новые методы BaseEventLoop.set_debug() и BaseEventLoop.get_debug(). Добавлена поддержка установки переменной ‘asyncio.tasks._DEBUG’ через переменную окружения ‘PYTHONASYNCIODEBUG’.
  • asyncio: Рефакторинг и исправления: BaseEventLoop.sock_connect() вызывает ошибку, если адрес не разрешён; используется __slots__ в Handle и TimerHandle; as_completed() и wait() вызывают TypeError, если переданный список Futures является единственным Future; call_soon() и другие функции ‘call_*()’ вызывают TypeError, если переданный колбэк является корутинной функцией; _ProactorBasePipeTransport использует _FlowControlMixin; WriteTransport.set_write_buffer_size() вызывает _maybe_pause_protocol() для рассмотрения приостановки приёма, если изменились пределы водяных знаков; исправлен _check_resolved_address() для IPv6-адресов; и другие мелкие улучшения, а также множественные обновления документации.
  • bpo-20684: Исправлено inspect.getfullargspec(), чтобы не следовать цепочкам __wrapped__. Сделано поведение согласованным с первым аргументом связанных методов. Патч от Nick Coghlan и Yury Selivanov.
  • bpo-20681: Добавлен новый API обработки ошибок в asyncio. Новые API: loop.set_exception_handler(), loop.default_exception_handler() и loop.call_exception_handler().
  • bpo-20673: Реализована поддержка UNIX Domain Sockets в asyncio. Новые API: loop.create_unix_connection(), loop.create_unix_server(), streams.open_unix_connection() и streams.start_unix_server().
  • bpo-20616: Добавлен метод format() для tracemalloc.Traceback.
  • bpo-19744: Шаг установки ensurepip теперь просто выводит предупреждение в stderr, а не завершается с ошибкой, если SSL/TLS недоступен. Это позволяет локальную установку сборок POSIX без поддержки SSL/TLS.
  • bpo-20594: Избежать конфликта имён с функцией libc posix_close.

СборкаBuild

  • bpo-20641: Запускать пользовательские действия MSI (установка pip, компиляция pyc) с флагом NoImpersonate для поддержки выполнения с повышенными правами (UAC).
  • bpo-20221: Удалено конфликтующее (или циклическое) определение hypot при компиляции с VS 2010 или выше. Первоначальный патч от Tabrez Mohammed.
  • bpo-20609: Восстановлена возможность сборки 64-битных бинарных файлов Windows на 32-битной Windows, которая была нарушена изменением в bpo-19788.

Python 3.4.0 release candidate 1

Дата выпуска: 2014-02-10

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

  • bpo-19255: Модуль builtins восстанавливается до начального состояния перед очисткой других модулей. Модули sys и builtins очищаются последними.
  • bpo-20588: Сделать Python-ast.c совместимым с C89.
  • bpo-20437: Исправлено 22 потенциальных ошибок при удалении ссылок на объекты.
  • bpo-20500: Отображение исключения при завершении работы интерпретатора больше не рискует вызвать ошибку утверждения в PyObject_Str.
  • bpo-20538: Инкрементальный декодер UTF-7 выдавал несогласованную строку при обрезании входных данных в секции BASE64.
  • bpo-20404: io.TextIOWrapper (и, следовательно, встроенная функция open()) теперь использует внутреннюю систему маркировки кодировок, добавленную в bpo-19619, для вызова LookupError для известных нетекстовых кодировок во время создания потока. Существующие проверки типа вывода остаются для работы с немаркированными сторонними кодировками.
  • bpo-17162: Добавлен PyType_GetSlot.
  • bpo-20162: Исправлена проблема выравнивания в хэш-функции siphash24(), которая вызывала сбой на PowerPC 64-bit (ppc64).

БиблиотекаLibrary

  • bpo-20530: Сигнатуры слотовых встроенных функций обновлены, чтобы отражать тот факт, что они принимают только позиционные аргументы.
  • bpo-20517: Функции модуля os, принимающие два имени файла, теперь регистрируют оба имени в исключении при сбое.
  • bpo-20563: API модуля ipaddress теперь считается стабильным.
  • bpo-14983: email.generator теперь всегда добавляет конец строки после каждого маркера границы MIME, а не только при наличии эпилога. Это исправляет ошибку соответствия RFC и решает проблему с подписанными частями MIME.
  • bpo-20540: Исправлена регрессия производительности (по сравнению с Python 3.2) при наложении соединения multiprocessing поверх TCP-сокета. Для небольших полезных нагрузок алгоритм Нейгла вводил задержки простоя перед полной передачей сообщения.
  • bpo-16983: Новый код разбора заголовков email теперь будет декодировать закодированные слова, которые (неправильно) окружены кавычками, и регистрировать дефект.
  • bpo-19772: email.generator больше не изменяет объект сообщения при преобразовании с понижением с 8-битных на 7-битные CTE.
  • bpo-20536: Модуль statistics теперь корректно обрабатывает экземпляры Decimal с положительными показателями степени.
  • bpo-18805: Разбор netmask/hostmask в ipaddress теперь более надёжно отфильтровывает недопустимые значения и корректно допускает любую допустимую длину префикса.
  • bpo-20481: Начиная с Python 3.4, модуль statistics требует, чтобы все входные данные для одной операции были одного согласованного типа, либо смесь int и одного другого согласованного типа. Это позволяет избежать некоторых проблем совместимости, возникших при предыдущем подходе с приведением к подходящему общему типу.
  • bpo-20478: Модуль statistics теперь обрабатывает входные данные collections.Counter как любой другой итерируемый объект.
  • bpo-17369: get_filename вызывал исключение, если кодировка параметра filename по RFC2231 была нарушена определённым образом. Это было регрессией по сравнению с python2.
  • bpo-20013: Некоторые IMAP-серверы отключаются при удалении текущего почтового ящика, и imaplib не обрабатывал этот случай корректно. Теперь он правильно обрабатывает «bye».
  • bpo-20531: Откат исправления для #19063 версии 3.4 и применение версии 3.3. То есть, не вызывать ошибку при передаче unicode в email.message.Message.set_payload.
  • bpo-20476: Если с любым из парсеров email используется политика, отличная от compat32, то теперь в качестве фабричного класса используется EmailMessage. Фабричный класс на самом деле должен браться из политики; это будет исправлено в 3.5.
  • bpo-19920: TarFile.list() больше не завершается ошибкой при выводе списка, содержащего не кодируемые символы. Основано на патче Vajrasky Kok.
  • bpo-20515: Исправлено разыменование NULL-указателя, введённое в bpo-20368.
  • bpo-19186: Восстановлено пространство имён символов expat в модуле pyexpat.
  • bpo-20053: ensurepip (и, следовательно, venv) больше не подвержены влиянию настроек в файле конфигурации pip по умолчанию.
  • bpo-20426: При передаче флага re.DEBUG, re.compile() выводит отладочную информацию каждый раз при вызове, независимо от кэша компиляции.
  • bpo-20368: Нулевой символ теперь корректно передаётся из Tcl в Python. Улучшена обработка ошибок в командах, связанных с переменными.
  • bpo-20435: Исправлен _pyio.StringIO.getvalue(), чтобы учитывать настройки перевода строк.
  • tracemalloc: Исправлено извлечение срезов трасс и извлечение среза traceback.
  • bpo-20354: Исправлена проблема выравнивания в модуле tracemalloc на 64-битных платформах. Ошибка наблюдалась на 64-битной Linux при использовании «make profile-opt».
  • bpo-17159: inspect.signature теперь принимает утиные типы функций, что добавляет поддержку функций Cython. Первоначальный патч от Stefan Behnel.
  • bpo-18801: Исправлен inspect.classify_class_attrs для корректной классификации object.__new__ и object.__init__.
  • Исправлено имя cmath.isinf в коде разбора аргументов.
  • bpo-20311: poll и epoll теперь округляют таймаут от нуля, а не к нулю, в модулях select и selectors: select.epoll.poll(), selectors.PollSelector.poll() и selectors.EpollSelector.poll(). Например, таймаут в одну микросекунду (1e-6) теперь округляется до одной миллисекунды (1e-3), а не до нуля. Однако свойство granularity и функция разрешения asyncio были снова удалены. (См. также: bpo-20452)
  • asyncio: Немного рефакторинга; различные исправления; добавлен контроль записи для pipe в Unix; Future.set_exception() теперь создаёт экземпляр исключения, если аргумент является классом; улучшен транспорт proactor pipe; поддержка wait_for(f, None); больше не логируются сломанные/отключённые каналы; для запрещённых аргументов subprocess_{shell,exec} используется ValueError вместо assert; добавлен удобный API для управления подпроцессами; добавлен метод StreamReader.at_eof(); правильно обрабатываются дублирующиеся корутины/future в gather(), wait(), as_completed(); для буферизации в StreamReader используется bytearray; и многое другое.
  • bpo-20288: исправлена обработка недопустимых числовых символьных ссылок в HTMLParser.
  • bpo-20424: реализация io.StringIO на Python теперь поддерживает одиночные суррогаты.
  • bpo-20308: inspect.signature теперь работает с классами, в которых нет определённых пользователем методов __init__ или __new__.
  • bpo-20372: inspect.getfile (и ряд других функций inspect, которые его используют) больше не вызывает неожиданную AttributeError для классов, определённых в C без __module__.
  • bpo-20356: форматирование inspect.signature использует символ '/' для отделения позиционных параметров от остальных.
  • bpo-20223: inspect.signature теперь поддерживает методы, определённые с помощью functools.partialmethods.
  • bpo-19456: ntpath.join() теперь правильно объединяет относительные пути при указании диска.
  • bpo-19077: очистка tempfile.TemporaryDirectory больше не завершается ошибкой при вызове во время завершения работы. Выдача предупреждения о ресурсах в __del__ больше не приводит к ошибке. Исправление предоставлено Antoine Pitrou.
  • bpo-20394: подавлено предупреждение Coverity в модуле audioop.
  • bpo-20367: исправлено поведение concurrent.futures.as_completed() при дублировании аргументов. Исправление предоставлено Glenn Langford.
  • bpo-8260: методы read(), readline() и readlines() класса codecs.StreamReader возвращали неполные данные, если их вызывали после readline() или read(size). Основано на исправлении Amaury Forgeot d’Arc.
  • bpo-20105: объединение исключений в codec теперь правильно устанавливает traceback исходного исключения в качестве атрибута __traceback__.
  • bpo-17481: inspect.getfullargspec() теперь использует API inspect.signature().
  • bpo-15304: concurrent.futures.wait() может блокироваться навсегда, даже если Future уже завершены. Исправление предоставлено Glenn Langford.
  • bpo-14455: plistlib: исправлена сериализация целых чисел в диапазоне unsigned long long, но за пределами signed long long для бинарных plist-файлов.

IDLE

  • bpo-20406: для заголовков окон Idle теперь используются значки приложений Python. Исправление в основном предоставлено Serhiy Storchaka.
  • Обновлён значок python.gif для обозревателя классов и обозревателя путей IDLE: со старой зелёной змеи на новую сине-жёлтую.
  • bpo-17721: удалена неработающая кнопка справки в диалоге конфигурации, пока мы не сделаем так, чтобы она действительно выдавала справку при нажатии. Исправление предоставлено Guilherme Simões.

ТестыTests

  • bpo-20532: тесты, использующие _testcapi, теперь помечены как только для CPython.
  • bpo-19920: добавлены тесты для TarFile.list(). Основано на исправлении Vajrasky Kok.
  • bpo-19990: добавлены тесты для модуля imghdr. Основано на исправлении Claudiu Popa.
  • bpo-20474: исправлены ложные срабатывания test_socket (unexpected success) на OS X 10.7+.

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

  • bpo-20530: формат сигнатуры Argument Clinic снова пересмотрен. Новый синтаксис легко читается человеком, при этом предотвращает ложные срабатывания. Синтаксис также расширяет синтаксис Python для обозначения «self» и позиционных параметров, позволяя объектам inspect.Signature быть абсолютно точными для всех поддерживаемых встроенных функций в Python 3.4.
  • bpo-20456: Argument Clinic теперь учитывает директивы условной компиляции препроцессора C в файлах, которые он анализирует. Когда блок Clinic находится внутри условного кода, он соответствующим образом корректирует выходные данные, в том числе автоматически генерирует пустой макрос methoddef.
  • bpo-20456: клонированные функции в Argument Clinic теперь используют правильное имя, а не имя исходной функции, для текстовых строк внутри сгенерированного кода.
  • bpo-20456: исправлены тестовый набор и функция «–converters» в Argument Clinic.
  • bpo-20456: Argument Clinic теперь позволяет задавать разные имена для параметра в Python и C, используя «as» в строке параметра.
  • bpo-20326: Argument Clinic теперь использует простую уникальную сигнатуру для аннотации текстовых сигнатур в строках документации, что приводит к меньшему количеству ложных срабатываний. Параметры self также явно помечаются, что позволяет inspect.Signature() однозначно обнаруживать (и пропускать) эти параметры.
  • bpo-20326: Argument Clinic теперь генерирует отдельные контрольные суммы для входного и выходного разделов блока, что позволяет внешним инструментам проверять, что входные данные не изменились (и, следовательно, выходные данные не устарели).

СборкаBuild

  • bpo-20465: обновление SQLite, поставляемого с установщиком OS X, до версии 3.8.3.

C API

  • bpo-20517: Добавлены новые функции, позволяющие исключениям OSError ссылаться на два имени файла вместо одного: PyErr_SetFromErrnoWithFilenameObjects() и PyErr_SetExcFromWindowsErrWithFilenameObjects().

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

  • bpo-20488: Изменена формулировка: теперь importlib – это единственная реализацией импорта, а не просто одна из реализаций.
  • bpo-6386: В учебном пособии уточнено, что при указании символической ссылки для запуска в sys.path добавляется каталог, содержащий выполняемый скрипт, а не сама символическая ссылка.

Python 3.4.0 beta 3

Дата выпуска: 2014-01-26

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

  • bpo-20189: Четыре дополнительных встроенных типа (PyTypeObject, PyMethodDescr_Type, _PyMethodWrapper_Type и PyWrapperDescr_Type) были изменены для предоставления информации интроспекции для встроенных объектов.
  • bpo-17825: Курсор «^» корректно позиционируется для SyntaxError и IndentationError.
  • bpo-2382: Курсор SyntaxError «^» теперь выводится в правильную позицию в большинстве случаев, когда в строке есть многобайтовые символы (перед «^»). Это всё ещё не работает корректно с широкими символами восточноазиатских языков.
  • bpo-18960: Первая строка Python-скрипта могла выполняться дважды, когда кодировка исходного кода была указана во второй строке. Теперь объявление кодировки исходного кода во второй строке не действует, если первая строка содержит что-либо, кроме комментария. «python -x» снова работает с файлами, содержащими объявления кодировки, и может использоваться для создания пакетных файлов Python в Windows.

БиблиотекаLibrary

  • asyncio: Различные улучшения и небольшие изменения, не все из которых перечислены ниже. Например, wait_for() теперь отменяет внутреннюю задачу при наступлении тайм-аута; изменён набор экспортируемых символов; Empty/Full переименованы в QueueEmpty/QueueFull; «with (yield from блокировка)» теперь использует отдельный менеджер контекста; readexactly() вызывает исключение, если прочитано недостаточно данных; доработки поддержки PTY.
  • bpo-20311: asyncio: Добавлен атрибут granularity в BaseEventLoop: максимум между разрешением метода BaseEventLoop.time() и разрешением селектора. Гранулярность используется в планировщике для округления времени и крайнего срока.
  • bpo-20311: selectors: Добавлен атрибут resolution в BaseSelector.
  • bpo-20189: unittest.mock больше не предполагает, что любой объект, для которого можно получить inspect.Signature, является вызываемым объектом, написанным на Python. Исправление предоставлено Michael Foord.
  • bpo-20317: ExitStack.__exit__ мог создавать самореферентную петлю, если исключение, вызванное операцией очистки, уже имело корректно установленный контекст (например, декоратором @contextmanager). Теперь это бесконечный цикл предотвращается проверкой того, установлен ли уже ожидаемый контекст, перед попыткой его исправить.
  • bpo-20374: Исправлена сборка с GNU readline >= 6.3.
  • bpo-20262: Теперь выводятся предупреждения при добавлении дублирующихся имён в ZIP-файл или при усечении слишком длинного комментария ZIP-файла.
  • bpo-20165: Модуль unittest больше не считает тесты, помеченные @expectedFailure, успешными, если они проходят.
  • bpo-18574: Добавлен отсутствующий символ новой строки в ответе 100-Continue от http.server.BaseHTTPRequestHandler. Патч от Nikolaus Rath.
  • bpo-20270: urllib.urlparse теперь поддерживает пустые порты.
  • bpo-20243: TarFile больше не вызывает ReadError при открытии в режиме записи.
  • bpo-20238: TarFile, открытый с внешним файловым объектом и режимом «w:gz», не записывал полный вывод при закрытии.
  • bpo-20245: Функции open в модуле tarfile теперь корректно обрабатывают пустой режим.
  • bpo-20242: Исправлены строки формата basicConfig() для альтернативных стилей форматирования. Спасибо kespindler за сообщение об ошибке и патч.
  • bpo-20246: Исправлено переполнение буфера в socket.recvfrom_into.
  • bpo-20206: Исправлен крайний случай в email.quoprimime.encode, где обрезались строки, заканчивающиеся символом, требующим кодирования, но без символа новой строки, путём использования более эффективного алгоритма, не содержащего этой ошибки. (См. также: bpo-5803)
  • bpo-19082: Рабочие примеры xmlrpc.server и xmlrpc.client. Как в модулях, так и в документации. Первоначальный патч предоставлен Vajrasky Kok.
  • bpo-20138: Функции wsgiref.application_uri() и wsgiref.request_uri() теперь соответствуют PEP 3333 при обработке URL, содержащих не-ASCII символы.
  • bpo-19097: Возвращается корректное исключение, когда cgi.FieldStorage передан некорректный файловый объект.
  • bpo-20152: Python/import.c перенесён на Argument Clinic.
  • bpo-13107: argparse и optparse больше не вызывают исключение при выводе справки в окружении с очень маленьким значением COLUMNS. Основано на патче Elazar Gershuni.
  • bpo-20207: Всегда отключать SSLv2, кроме случаев, когда явно запрошен PROTOCOL_SSLv2.
  • bpo-18960: Модуль tokenize теперь игнорирует объявление кодировки во второй строке, если первая строка содержит что-либо, кроме комментария.
  • bpo-20078: Чтение повреждённых zip-файлов больше не зависает со 100% загрузкой CPU.
  • bpo-20113: os.readv() и os.writev() теперь в случае ошибки возбуждают исключение OSError, а не возвращают -1.
  • bpo-19719: importlib.abc.MetaPathFinder.find_module(), PathEntryFinder.find_loader() и Loader.load_module() теперь используют API из PEP 451 для обеспечения обратной совместимости.
  • bpo-20144: inspect.Signature теперь поддерживает разбор простых символьных констант в качестве значений параметров по умолчанию в __text_signature__.
  • bpo-20072: Исправлены множественные ошибки в tkinter, когда wantobjects равен False.
  • bpo-20229: Устранено предупреждение об устаревании plistlib в platform.mac_ver().
  • bpo-14455: Исправлены некоторые проблемы с новой поддержкой двоичного plist в plistlib.

IDLE

  • bpo-17390: Добавлена версия Python в заголовок окна редактора IDLE. Авторы исходных патчей – Edmond Burnett и Kent Johnson.
  • bpo-18960: IDLE теперь игнорирует объявление кодировки на второй строке, если первая строка содержит что-либо, кроме комментария.

ТестыTests

  • bpo-20358: Тесты для curses.window.overlay и curses.window.overwrite больше не указывают min{row,col} > max{row,col}.
  • bpo-19804: Тест test_find_mac в test_uuid теперь пропускается, если не доступен исполняемый файл ifconfig.
  • bpo-19886: Использованы более точные оценки потребностей в памяти для тестов bigmem.

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

  • bpo-20390: Пресет вывода «file» в Argument Clinic теперь по умолчанию использует «{dirname}/clinic/{basename}.h».
  • bpo-20390: Синтаксис директивы «class» в Argument Clinic расширен двумя новыми обязательными аргументами: «typedef» и «type_object».
  • bpo-20390: Argument Clinic: если функции __new__ или __init__ не используют kwargs (или args), сгенерированные вызовы PyArg_NoKeywords (или PyArg_NoPositional) выполняются только при точном совпадении объекта типа.
  • bpo-20390: Argument Clinic теперь выдает ошибку, если обязательные параметры указаны после необязательных.
  • bpo-20390: Конвертеры Argument Clinic теперь имеют новый шаблон, в который можно внедрять код: «modifiers». Код, помещённый туда, выполняется в функции разбора после разбора аргументов, но до вызова impl.
  • bpo-20376: Argument Clinic теперь экранирует обратные слеши в строках документации.
  • bpo-20381: Argument Clinic теперь проверяет корректность значения аргумента по умолчанию, если также указан c_default, выдавая понятное сообщение об ошибке для недопустимых значений.
  • bpo-20189: Argument Clinic теперь гарантирует, что функции разбора для __new__ всегда имеют тип newfunc (тип слота tp_new). Аналогично, функции разбора для __init__ теперь всегда имеют тип initproc (тип tp_init).
  • bpo-20189: Argument Clinic теперь подавляет строку документации для функций __new__ и __init__, если строка документации не указана во входных данных.
  • bpo-20189: Argument Clinic теперь подавляет параметр «self» в impl для функций @staticmethod.
  • bpo-20294: Argument Clinic теперь поддерживает разбор аргументов для функций __new__ и __init__.
  • bpo-20299: Пользовательские конвертеры Argument Clinic теперь могут изменять значение по умолчанию c_default и py_default с помощью элемента класса.
  • bpo-20287: Вывод Argument Clinic теперь настраивается, что позволяет задерживать его вывод или даже перенаправлять в отдельный файл.
  • bpo-20226: Argument Clinic теперь допускает простые выражения (например, «sys.maxsize - 1») в качестве значений параметров по умолчанию.
  • bpo-19936: Добавлены биты исполняемости или строки shebang в скрипты Python, которые их требуют. Отключены биты исполняемости и строки shebang в тестовых файлах и файлах бенчмарков, чтобы предотвратить использование случайного системного Python, а также в исходных файлах модулей, не предоставляющих интерфейс командной строки. Исправлены строки shebang в скриптах unittestgui и checkpip.
  • bpo-20268: Argument Clinic теперь поддерживает клонирование параметров и конвертера возврата существующих функций.
  • bpo-20228: Argument Clinic теперь имеет специальную поддержку для специальных методов классов.
  • bpo-20214: Исправлен ряд мелких проблем и ошибок в документации Argument Clinic (подробности см. в issue).
  • bpo-20196: Исправлена ошибка, при которой Argument Clinic не генерировал корректный код разбора для функций с позиционными параметрами, где все аргументы необязательны.
  • bpo-18960: 2to3 и скрипт findnocoding.py теперь игнорируют объявление кодировки на второй строке, если первая строка содержит что-либо, кроме комментария.
  • bpo-19723: Комментарии-маркеры, которые использует Argument Clinic, изменены для улучшения читаемости.
  • bpo-20157: Когда Argument Clinic переименовывает параметр из-за совпадения его имени с ключевым словом C, это переименование больше не передаётся в PyArg_Parse.
  • bpo-20141: Улучшена поддержка Argument Clinic для единицы формата “O!” функции PyArg_Parse.
  • bpo-20144: Argument Clinic теперь поддерживает простые символические константы в качестве значений параметров по умолчанию.
  • bpo-20143: Номера строк в сообщениях об ошибках Argument Clinic теперь более точны.
  • bpo-20142: Переменные Py_buffer, создаваемые Argument Clinic, теперь инициализируются значением по умолчанию.

СборкаBuild

  • bpo-12837: Подавление предупреждения о тавтологическом сравнении на OS X под Clang в socketmodule.c.

Python 3.4.0 beta 2

Дата выпуска: 2014-01-05

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

  • bpo-17432: Удаление UCS2 из имён функций Unicode в python3.def.
  • bpo-19526: Исключение всего нового API из стабильного ABI. Исключения могут быть сделаны при наличии обоснованной необходимости.
  • bpo-19969: PyBytes_FromFormatV() теперь вызывает OverflowError, если аргумент “%c” выходит за диапазон [0; 255].
  • bpo-19995: %c, %o, %x и %X теперь выдают DeprecationWarning при нецелочисленном вводе; переформулирована документация, чтобы разъяснить, что целочисленный тип должен определять как __int__, так и __index__.
  • bpo-19787: PyThread_set_key_value() теперь всегда устанавливает значение. В Python 3.3 функция ничего не делала, если ключ уже существовал (если текущее значение – не NULL-указатель).
  • bpo-14432: Удалено поле состояния потока из структуры фрейма. Исправлен сбой, возникающий при создании генератора в потоке C, который уничтожается, пока генератор ещё используется. Проблема заключалась в том, что генератор содержит фрейм, а фрейм хранил ссылку на состояние Python уничтоженного потока C. Сбой происходит при установке трассирующей функции.
  • bpo-19576: PyGILState_Ensure() теперь инициализирует потоки. При запуске Python не имеет конкретного GIL. Если PyGILState_Ensure() вызывается из нового потока впервые, а PyEval_InitThreads() ещё не была вызвана, необходимо создать GIL.
  • bpo-17576: Теперь выдаётся предупреждение об устаревании, если __int__() или __index__() возвращают не экземпляр int.
  • bpo-19932: Исправление опечатки в import.h: пропущенные пробелы в прототипах функций.
  • bpo-19736: Добавлены константы statvfs уровня модуля, определённые для систем на основе GNU/glibc.
  • bpo-20097: Исправлено некорректное использование “self” в WindowsRegistryFinder модуля importlib.
  • bpo-19729: В str.format() исправлена рекурсивная подстановка в спецификаторе формата.
  • bpo-19638: Исправление возможного сбоя/неопределённого поведения при обработке огромных (более 2 миллиардов символов) входных строк в _Py_dg_strtod.

БиблиотекаLibrary

  • bpo-20154: Взаимоблокировка в asyncio.StreamReader.readexactly().
  • bpo-16113: Удаление модуля sha3 снова.
  • bpo-20111: pathlib.Path.with_suffix() теперь проверяет корректность переданного суффикса.
  • Исправление поломки в TestSuite.countTestCases(), вызванной bpo-11798.
  • bpo-20108: Избежание конфликта имён параметров в inspect.getcallargs().
  • bpo-19918: Исправление PurePath.relative_to() в Windows.
  • bpo-19422: Явное запрещение сокетов не типа SOCK_STREAM в модуле ssl вместо того, чтобы молча позволять им передавать незашифрованные данные.
  • bpo-20046: Таблица псевдонимов локалей больше не содержит сущности, которые могут быть вычислены. Обобщена поддержка модификатора евро.
  • bpo-20027: Исправлены псевдонимы локалей для деванагари.
  • bpo-20067: Переменные Tkinter теперь работают, когда wantobjects равно false.
  • bpo-19020: Tkinter теперь использует splitlist() вместо split() в методах configure.
  • bpo-19744: ensurepip теперь выдаёт более понятное сообщение об ошибке, когда Python собран без поддержки SSL/TLS (pip для работы в настоящее время требует этой поддержки, даже если он работает только с локальными wheel-файлами).
  • bpo-19734: ensurepip теперь игнорирует все переменные окружения pip, чтобы избежать странного поведения, основанного на пользовательских настройках конфигурации.
  • Исправлен TypeError при «setup.py upload –show-response».
  • bpo-20045: Исправлен «setup.py register –list-classifiers».
  • bpo-18879: Если метод ищется во временном файле, то теперь файл не закрывается до того, как метод будет потенциально вызван.
  • bpo-20037: Предотвращены сбои при открытии текстового файла на поздних этапах завершения интерпретатора.
  • bpo-19967: Благодаря PEP 442, asyncio.Future теперь использует деструктор для логирования необработанных исключений вместо специального класса _TracebackLogger.
  • В модуль asyncio добавлен метод класса Task.current_task().
  • bpo-19850: Устанавливается SA_RESTART в asyncio при регистрации обработчика сигнала, чтобы ограничить появление EINTR.
  • Реализовано управление потоком записи в asyncio для цикла событий proactor (Windows).
  • Изменено использование буфера записи в asyncio, чтобы избежать поведения O(N**2). Методы write()/sendto() теперь принимают bytearray/memoryview.
  • bpo-20034: Обновлено сопоставление псевдонимов в соответствии с последним файлом locale.alias из дистрибутива X.org с помощью makelocalealias.py.
  • bpo-5815: Исправлена поддержка локалей с модификаторами. Исправлена поддержка кодировок локали с дефисами.
  • bpo-20026: Исправлена обработка недопустимого уровня изоляции (неверный тип) в модуле sqlite.
  • bpo-18829: csv.Dialect() теперь проверяет тип полей delimiter, escapechar и quotechar. Оригинальный патч от Vajrasky Kok.
  • bpo-19855: uuid.getnode() в Unix теперь ищет в PATH исполняемые файлы, используемые для поиска MAC-адреса, с запасными вариантами /sbin и /usr/sbin.
  • bpo-20007: HTTPResponse.read(0) больше не закрывает соединение преждевременно. Оригинальный патч от Simon Sapin.
  • bpo-19946: multiprocessing теперь использует runpy для инициализации __main__ в дочерних процессах, когда это необходимо, что позволяет корректно обрабатывать скрипты без суффиксов и подмодули, использующие явные относительные импорты или иным образом полагающиеся на правильный импорт родительских модулей до выполнения.
  • bpo-19921: Когда Path.mkdir() вызывается с parents=True, все недостающие родительские каталоги создаются с правами по умолчанию, игнорируя аргумент mode (поведение аналогично команде POSIX «mkdir -p»).
  • bpo-19887: Улучшен алгоритм Path.resolve() для поддержки некоторых цепочек символьных ссылок.
  • bpo-19912: Исправлены многочисленные ошибки в ntpath.splitunc().
  • bpo-19911: ntpath.splitdrive() теперь корректно обрабатывает символ «İ» (U+0130, LATIN CAPITAL LETTER I WITH DOT ABOVE).
  • bpo-19532: Команда python -m compileall без указания файлов/каталогов теперь учитывает флаги -f и -q, а не игнорирует их.
  • bpo-19623: Исправлена запись в файлы без возможности поиска в модуле aifc.
  • bpo-19946: multiprocessing.spawn теперь вызывает ImportError, когда модуль, предназначенный для использования в качестве главного, не может быть импортирован.
  • bpo-17919: select.poll.register() снова работает с poll.POLLNVAL на AIX. Исправлено целочисленное переполнение в параметре eventmask.
  • bpo-19063: Если для body_encoding объекта Charset было установлено значение None, пакет email генерировал сообщение, утверждающее, что Content-Transfer-Encoding равен 7bit, и выдавал мусорный вывод для содержимого. Теперь это работает. Исправлены также некоторые другие ошибки set_payload при работе с не-ASCII. Кроме того, вызов set_payload с аргументом-строкой без указания charset теперь вызывает ошибку (это новая ошибка в версии 3.4).
  • bpo-15475: Добавлена реализация __sizeof__ для объектов itertools.
  • bpo-19944: Исправлен importlib.find_spec() так, чтобы он импортировал родительские модули по мере необходимости, и функция перемещена в importlib.util.
  • bpo-19880: Исправлена утечка ссылок в unittest.TestCase. Теперь явно разрываются циклические ссылки между фреймами и экземпляром _Outcome.
  • bpo-17429: platform.linux_distribution() теперь декодирует файлы из кодировки UTF-8 с обработчиком ошибок surrogateescape, вместо декодирования из кодировки локали в строгом режиме. Это исправляет функцию на Fedora 19, который, вероятно, является первым крупным релизом дистрибутива с не-ASCII именем. Патч написан Toshio Kuratomi.
  • bpo-19343: В модуле resource открыт доступ к API, специфичным для FreeBSD. Автор исходного патча – Koobs.
  • bpo-19929: В subprocess.Popen.communicate для повышения эффективности теперь используется os.read с буфером 32768 вместо 4096. Микротест показывает, что на Linux и OS X затраты процессорного времени снижаются примерно на 50%.
  • bpo-19506: В subprocess.Popen.communicate при передаче данных в stdin используется memoryview, чтобы избежать копирования. Загрузка ЦП снижается на 5–10%.
  • bpo-19876: selectors.unregister() больше не вызывает ValueError или OSError, если файловый дескриптор закрыт (при условии, что он был зарегистрирован).
  • bpo-19908: pathlib теперь правильно объединяет относительные пути Windows при наличии буквы диска. Автор исходного патча – Antoine Pitrou.
  • bpo-19296: Подавлено предупреждение компилятора в dbm_open.
  • bpo-6784: Строки из Python 2 теперь можно распаковать как байтовые объекты, если задать аргумент encoding объекта Unpickler равным 'bytes'. Исходный патч – Merlijn van Deen.
  • bpo-19839: Исправлен регресс в модуле bz2 при обработке данных, не в формате bzip2, на конце файла (EOF), а также аналогичная ошибка в модуле lzma.
  • bpo-19881: Исправлена ошибка упаковки, когда cpickle генерировал некорректные данные pickle для больших строк bytes (размером более 2**32-1).
  • bpo-19138: IGNORE_EXCEPTION_DETAIL в doctest теперь допускает совпадение, когда нет деталей исключения (нет двоеточия после имени исключения, либо двоеточие есть, но после него нет текста).
  • bpo-19927: Добавлен метод __eq__ для загрузчиков на основе путей в importlib.
  • bpo-19827: В UNIX методы setblocking() и settimeout() объекта socket.socket теперь могут избежать второго системного вызова, если доступна функция ioctl() или если неблокирующий флаг сокета не был изменён.
  • bpo-19785: smtplib теперь поддерживает SSLContext.check_hostname и указание имени сервера (SNI) для TLS/SSL-соединений.
  • bpo-19784: poplib теперь поддерживает SSLContext.check_hostname и указание имени сервера для TLS/SSL-соединений.
  • bpo-19783: nntplib теперь поддерживает SSLContext.check_hostname и указание имени сервера для TLS/SSL-соединений.
  • bpo-19782: imaplib теперь поддерживает SSLContext.check_hostname и указание имени сервера для TLS/SSL-соединений.
  • bpo-20123: Исправлена работа pydoc.synopsis() для «бинарных» модулей.
  • bpo-19834: Добавлена поддержка распаковки исключений, упакованных в Python 2.
  • bpo-19781: ftplib теперь поддерживает SSLContext.check_hostname и указание имени сервера для TLS/SSL-соединений.
  • bpo-19509: Добавлен SSLContext.check_hostname для сопоставления сертификата peer с server_hostname при рукопожатии.
  • bpo-15798: Исправлено: subprocess.Popen() больше не выдаёт ошибку, если закрыт файловый дескриптор 0, 1 или 2.
  • bpo-17897: Оптимизирована предварительная выборка при распаковке (unpickle).
  • bpo-3693: Сообщение об ошибке при передаче строки в конструктор array.array() сделано более информативным. Документация по кодам типа модуля array перенесена в docstring конструктора.
  • bpo-19088: Исправлено некорректное кэширование модуля copyreg в object.__reduce__() и object.__reduce_ex__().
  • bpo-19698: Удалены методы exec_module() из importlib.machinery.BuiltinImporter и ExtensionFileLoader.
  • bpo-18864: Добавлен сеттер для ModuleSpec.has_location.
  • Исправлено: _pickle.Unpickler больше не выдаёт ошибку при загрузке пустых строк в качестве постоянных идентификаторов.
  • bpo-11480: Исправлена работа copy.copy с классами, имеющими пользовательские метаклассы. Патч от Daniel Urban.
  • bpo-6477: Добавлена поддержка упаковки (pickling) типов встроенных синглтонов (Ellipsis, NotImplemented, None).
  • bpo-19713: Добавлены оставшиеся устаревания, связанные с PEP 451, и произведён отказ от использования find_module/find_loaer/load_module.
  • bpo-19708: Модуль pkgutil обновлён для использования новых API импортёров.
  • bpo-19703: Модуль pydoc обновлён для использования новых API импортёров.
  • bpo-19851: Исправлена регрессия при перезагрузке подмодулей.
  • ssl.create_default_context() устанавливает OP_NO_COMPRESSION для предотвращения атаки CRIME.
  • bpo-19802: Добавлена константа socket.SO_PRIORITY.
  • bpo-11508: Исправлены uuid.getnode() и uuid.uuid1() в окружении с виртуальным интерфейсом. Оригинальный патч: Kent Frazier.
  • bpo-11489: Декодер JSON теперь принимает одиночные суррогаты.
  • bpo-19545: Исключены цепочки исключений при передаче одиночного % в time.strptime(). Первоначальный патч: Claudiu Popa.

IDLE

  • bpo-20058: sys.stdin.readline() в IDLE теперь всегда возвращает только одну строку.
  • bpo-19481: print() экземпляра подкласса строки в IDLE больше не зависает.
  • bpo-18270: Предотвращена возможная ошибка AttributeError в IDLE на OS X, если отсутствует начальное окно оболочки.

ТестыTests

  • bpo-20055: Исправлен test_shutil в Windows при наличии прав на создание символьных ссылок. Патч: Vajrasky Kok.
  • bpo-20070: Не запускать test_urllib2net, если сетевые ресурсы не включены.
  • bpo-19938: Повторно включён test_bug_1333982 в test_dis, который был отключён с версии 3.0 из-за изменений в обработке списковых включений.
  • bpo-19320: test_tcl больше не завершается ошибкой, когда wantobjects равно false.
  • bpo-19919: Исправлен ненадёжный SSL-тест. connect_ex() иногда возвращает EWOULDBLOCK в Windows или на виртуальных машинах, размещённых в Windows.
  • bpo-19912: Добавлены тесты для ntpath.splitunc().
  • bpo-19828: Исправлен test_site, когда весь набор запускается с -S.
  • bpo-19928: Реализован тест для repr() объектов cell.
  • bpo-19535: Исправлены test_docxmlrpc, test_functools, test_inspect и test_statistics при запуске python с -OO.
  • bpo-19926: Удалён ненужный test_main из test_abstract_numbers. Патч: Vajrasky Kok.
  • bpo-19572: Больше пропущенных тестов явно помечены как пропущенные.
  • bpo-19595: Повторно включён давно отключённый тест в test_winsound. (См. также: bpo-19987)
  • bpo-19588: Исправлены тесты в test_random, которые большую часть времени молча пропускались. Патч: Julian Gindi.

СборкаBuild

  • bpo-19728: Включена установка pip по умолчанию в Windows.
  • bpo-16136: Удалена поддержка VMS
  • bpo-18215: Добавлен скрипт Tools/ssl/test_multiple_versions.py для компиляции и запуска модульных тестов Python с несколькими версиями OpenSSL.
  • bpo-19922: Определён _INCLUDE__STDC_A1_SOURCE в HP-UX для включения mbstate_t для mbrtowc().
  • bpo-19788: kill_python(_d).exe теперь выполняется как PreBuildEvent в подпроекте pythoncore. Это должно предотвратить ошибки сборки из-за того, что python(_d).exe от предыдущей сборки всё ещё работает.

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

  • bpo-20265: Обновлены некоторые части документа «Using Windows».
  • bpo-20266: Обновлены некоторые части Windows FAQ.
  • bpo-20255: Обновлены страницы «О программе» и «Сообщения об ошибках».
  • bpo-20253: Исправлена опечатка в документации ipaddress, где рекламировалось недопустимое имя атрибута. Найдено INADA Naoki.
  • bpo-18840: Введение модуля json в руководстве, и ослабление акцента на модуле pickle.
  • bpo-19845: Обновлён раздел о компиляции Python в Windows.
  • bpo-19795: Улучшена разметка констант True/False.

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

  • bpo-19659: Добавлена документация для Argument Clinic.
  • bpo-19976: Функции Argument Clinic с флагом METH_NOARGS теперь всегда принимают два параметра.

Python 3.4.0 beta 1

Дата выпуска: 2013-11-24

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

  • При импорте теперь чаще используется repr имени модуля, особенно в исключениях.
  • bpo-19619: str.encode, bytes.decode и bytearray.decode теперь используют внутренний API для вызова LookupError для известных нетекстовых кодировок, вместо того чтобы пытаться выполнить операцию кодирования или декодирования и затем вызывать TypeError для неожиданного типа вывода. (Последний механизм сохраняется для сторонних нетекстовых кодировок.)
  • bpo-19183: Реализован PEP 456 «secure and interchangeable hash algorithm». Python теперь использует SipHash24 на всех основных платформах.
  • bpo-12892: Кодировщики utf-16* и utf-32* больше не позволяют кодировать суррогатные кодовые точки (U+D800-U+DFFF). Декодировщики utf-32* больше не декодируют байтовые последовательности, соответствующие суррогатным кодовым точкам. Обработчик ошибок surrogatepass теперь работает с кодеками utf-16* и utf-32*. На основе патчей Виктора Стиннера и Кан-Хао (Кенни) Лу.
  • bpo-17806: Добавлена поддержка именованного аргумента «tabsize» для str/bytes.expandtabs().
  • bpo-17828: Ошибки типа при выводе str.encode(), bytes.decode() и bytearray.decode() теперь направляют пользователей к codecs.encode() или codecs.decode() в зависимости от ситуации.
  • bpo-17828: Интерпретатор теперь пытается сцепить ошибки, возникающие при обработке кодека, с заменяющим исключением того же типа, которое включает имя кодека в сообщение об ошибке. Он гарантирует, что делает это только тогда, когда создание заменяющего исключения не приведёт к потере информации.
  • bpo-19466: Очистка кадров потоков-демонов производится раньше во время завершения работы Python для вызова деструкторов объектов. Таким образом, ресурсные предупреждения «незакрытый файл» теперь корректно выдаются для потоков-демонов.
  • bpo-19514: Устранено дублирование некоторых объявлений _Py_IDENTIFIER. Патч от Андрея Дориана Думы.
  • bpo-17936: Исправлено поведение O(n**2) при добавлении или удалении множества подклассов данного типа.
  • bpo-19428: zipimport теперь обрабатывает ошибки при чтении усечённого или недействительного ZIP-архива.
  • bpo-18408: Добавлена новая функция PyFrame_FastToLocalsWithError() для обработки исключений при слиянии быстрых локальных переменных в f_locals кадра. PyEval_GetLocals() теперь возбуждает исключение и возвращает NULL в случае неудачи.
  • bpo-19369: Оптимизировано использование __length_hint__().
  • bpo-18603: Обеспечено присутствие PyOS_mystricmp и PyOS_mystrnicmp в исполняемом файле Python, чтобы они не удалялись оптимизатором компоновщика.
  • bpo-19306: Добавлены дополнительные подсказки к дампам стека модуля faulthandler о том, что они «перевёрнуты».

БиблиотекаLibrary

  • bpo-3158: doctest теперь может находить доктесты в функциях и методах, написанных на C.
  • bpo-13477: Добавлен интерфейс командной строки для модуля tarfile. Оригинальный патч от Беркера Пексага.
  • bpo-19674: inspect.signature() теперь создаёт корректную сигнатуру для некоторых встроенных функций.
  • bpo-19722: Добавлена opcode.stack_effect(), которая вычисляет эффект на стек для инструкций байт-кода.
  • bpo-19735: Реализована приватная функция ssl._create_stdlib_context() для создания объектов SSLContext в стандартной библиотеке Python. Она предоставляет единую точку конфигурации и использует SSLContext.load_default_certs().
  • bpo-16203: Добавлены функция re.fullmatch() и метод regex.fullmatch(), которые привязывают шаблон к обоим концам строки для сопоставления. Оригинальный патч от Мэттью Барнетта.
  • bpo-13592: Улучшен repr для объектов шаблонов регулярных выражений. На основе патча Уго Лопеса Тавареса.
  • bpo-19641: Добавлена функция audioop.byteswap() для преобразования big-endian сэмплов в little-endian и обратно.
  • bpo-15204: Устарел режим 'U' в файлоподобных объектах.
  • bpo-17810: Реализован PEP 3154, протокол pickle 4.
  • bpo-19668: Добавлена поддержка кодировки cp1125.
  • bpo-19689: Добавлена фабричная функция ssl.create_default_context(). Она создаёт новый объект SSLContext с безопасными настройками по умолчанию.
  • bpo-19727: os.utime(…, None) теперь может быть точнее в Windows.
  • bpo-17201: Расширения ZIP64 теперь включены по умолчанию. Патч от William Mallard.
  • bpo-19292: Добавлен SSLContext.load_default_certs() для загрузки корневых сертификатов CA по умолчанию из хранилищ по умолчанию или системных хранилищ. По умолчанию метод загружает сертификаты CA для проверки сертификатов сервера.
  • bpo-19673: В стандартную библиотеку добавлен модуль pathlib как временный (PEP 428).
  • bpo-16596: pdb в генераторе теперь корректно пропускает yield и yield from, а не выходит из генератора в его вызывающий код. (Это необходимо для пошагового выполнения корутин asyncio.)
  • bpo-17916: Добавлены dis.Bytecode.from_traceback() и dis.Bytecode.current_offset для удобного отображения маркеров «текущая инструкция» в новом API дизассемблера (патч от Claudiu Popa).
  • bpo-19552: venv теперь поддерживает установку pip в виртуальные окружения
  • bpo-17134: Завершён интерфейс к хранилищу сертификатов Windows. Перечисление сертификатов и CRL теперь выполняется двумя функциями. enum_certificates() также возвращает флаги назначения в виде набора OID.
  • bpo-19555: Восстановлена sysconfig.get_config_var('SO') (и эквивалент в distutils) с предупреждением об устаревании, указывающим на $EXT_SUFFIX.
  • bpo-8813: Добавлен SSLContext.verify_flags для изменения флагов проверки контекста, чтобы включить проверку списков отзыва сертификатов (CRL) или строгие правила X509.
  • bpo-18294: Исправлена безопасность модуля zlib для 64-битных систем.
  • bpo-19682: Исправлена проблема совместимости со старой версией OpenSSL, возникшая в bpo-18379.
  • bpo-14455: plistlib теперь поддерживает двоичные plist-файлы и имеет обновлённый API.
  • bpo-19633: Исправлена запись несжатых 16- и 32-битных wave-файлов на платформах с обратным порядком байтов.
  • bpo-18379: SSLSocket.getpeercert() теперь возвращает поля AIA эмитента CA, точки распространения OCSP и CRL.
  • bpo-18138: Реализован аргумент cadata для SSLContext.load_verify_location() для загрузки сертификатов CA и CRL из памяти. Поддерживает строки в кодировке PEM и DER.
  • bpo-18775: Добавлены атрибуты name и block_size в объект HMAC. Теперь они предоставляют те же элементы API, что и неключевые криптографические хеш-функции.
  • bpo-17276: Использование MD5 в качестве digestmod по умолчанию для HMAC устарело. Модуль HMAC поддерживает имена digestmod, например hmac.HMAC('sha1').
  • bpo-19449: В csv.writerow обрабатываются нестроковые ключи при формировании сообщения об ошибке о том, что некоторые ключи отсутствуют в списке 'fieldnames'.
  • bpo-13633: Добавлен новый именованный аргумент convert_charrefs в HTMLParser, который при значении True автоматически преобразует все символьные ссылки.
  • bpo-2927: В модуль html добавлена функция unescape().
  • bpo-8402: В модуль glob добавлена функция escape().
  • bpo-17618: В модуль base64 добавлены кодирование/декодирование Base85 и Ascii85.
  • bpo-19634: time.strftime('%y') теперь вызывает ValueError на AIX при передаче года до 1900.
  • Исправлена test.support.bind_port(), чтобы она не вызывала ошибку, если Python был скомпилирован в системе, где SO_REUSEPORT определён в заголовочных файлах, но запущен на системе с ядром ОС, не поддерживающим эту довольно новую опцию сокетов.
  • Исправлена ошибка компиляции встроенной libffi для модуля ctypes под gcc для arm.
  • bpo-19448: Добавлен закрытый API в модуль SSL для поиска объектов ASN.1 по OID, NID, короткому и длинному имени.
  • bpo-19282: dbm.open теперь поддерживает протокол менеджера контекста. (Первоначальный патч от Claudiu Popa)
  • bpo-8311: Добавлена поддержка записи любых байтоподобных объектов в модулях aifc, sunau и wave.
  • bpo-5202: Добавлена поддержка непозиционируемых файлов в модуле wave.
  • bpo-19544: Восстановлена глобальная опция игнорирования ~/.pydistutils.cfg в Distutils, случайно удалённая при откате изменений distutils2. (См. также: bpo-1180)
  • bpo-19523: Исправлена утечка FileHandler, возникавшая при установке задержки.
  • bpo-19544: Восстановлена поддержка параметров –user и –group для команды sdist, случайно откаченная в рамках отката distutils2. (См. также: bpo-6516)
  • bpo-13674: Предотвращено падение time.strftime в Windows при передаче года до 1900 и формата %y.
  • bpo-19406: Реализация модуля ensurepip (часть PEP 453). Патч от Donald Stufft и Nick Coghlan.
  • bpo-19544: Восстановлено использование urllib через http, что позволяет использовать http_proxy для команды upload в Distutils – функциональность, случайно потерянная при откате distutils2. (См. также: bpo-6286)
  • bpo-19544: Восстановлен метод read_pkg_file в distutils.dist.DistributionMetadata, случайно удалённый при отмене distutils2. (См. также: bpo-7457)
  • bpo-16685: Добавлена поддержка любых байтоподобных объектов в модуле audioop. Удалена поддержка строк.
  • bpo-7171: Добавлена реализация inet_ntop и inet_pton для Windows в модуль socket. Патч от Atsuo Ishimoto.
  • bpo-19261: Добавлена поддержка записи 24-битных сэмплов в модуле sunau.
  • bpo-1097797: Добавлена кодировка CP273, используемая на мейнфреймах IBM в Германии и Австрии. Сопоставление предоставлено Michael Bierenfeld.
  • bpo-1575020: Исправлена поддержка 24-битных WAV-файлов на платформах с обратным порядком байтов (big-endian).
  • bpo-19378: Исправлен ряд случаев в модуле dis, где новый параметр «file» некорректно учитывался.
  • bpo-19378: Удалён метод «dis.Bytecode.show_info».
  • bpo-19378: Метод «dis.Bytecode.display_code» переименован в «dis.Bytecode.dis»; теперь он возвращает строку вместо вывода на экран.
  • bpo-19378: Параметр «line_offset» в новом API «dis.get_instructions» переименован в «first_line» (соответственно изменены значение по умолчанию и использование). Это должно уменьшить путаницу с более распространённым использованием «offset» в документации dis для обозначения смещений байткода.
  • bpo-18678: Исправлены имена членов структуры spwd в модуле spwd: sp_nam -> sp_namp, sp_pwd -> sp_pwdp. Старые имена сохранены как дополнительные члены structseq для обратной совместимости.
  • bpo-6157: Исправлен tkinter.Text.debug(). tkinter.Text.bbox() теперь вызывает TypeError вместо TclError при неверном количестве аргументов. Оригинальный патч от Guilherme Polo.
  • bpo-10197: Переработаны функции subprocess.get[status]output для использования функциональности подпроцесса. Патч от Nick Coghlan.
  • bpo-6160: Метод bbox() в tkinter.Spinbox теперь возвращает кортеж целых чисел вместо строки. Основано на патче Guilherme Polo.
  • bpo-19403: contextlib.redirect_stdout теперь реентерабелен.
  • bpo-19286: Каталоги в package_data больше не добавляются в список файлов, что предотвращает сбой, описанный в тикете.
  • bpo-19480: HTMLParser теперь принимает все допустимые имена начальных тегов, определённые стандартом HTML5.
  • bpo-15114: Модуль html.parser теперь вызывает DeprecationWarning при использовании аргумента strict в HTMLParser или метода HTMLParser.error.
  • bpo-19410: Отменено специальное удаление ‘’ для importlib.machinery.FileFinder.
  • bpo-19424: Исправлен модуль warnings для принятия имён файлов, содержащих суррогатные символы.
  • bpo-19435: Исправлена атака через обход каталогов в CGIHttpRequestHandler.
  • bpo-19227: Удалён обработчик pthread_atfork(). Обработчик был добавлен для решения #18747, но вызвал проблемы.
  • bpo-19420: Исправлена утечка ссылок в коде инициализации модуля _hashopenssl.c.
  • bpo-19329: Оптимизирована компиляция наборов символов в регулярных выражениях.
  • bpo-19227: Попытка исправить взаимоблокировки, вызванные повторной инициализацией генератора псевдослучайных чисел OpenSSL при fork().
  • bpo-16037: HTTPMessage.readheaders() вызывает HTTPException при чтении более 100 заголовков. Адаптировано из патча Jyrki Pulliainen.
  • bpo-16040: CVE-2013-1752: nntplib: ограничение максимальной длины строк до 2048 для предотвращения чрезмерного потребления памяти вызовами readline(). Патч от Jyrki Pulliainen.
  • bpo-16041: CVE-2013-1752: poplib: ограничена максимальная длина строки до 2048, чтобы предотвратить чрезмерное потребление памяти вызовами readline(). Патч от Jyrki Pulliainen.
  • bpo-17997: Изменено поведение ssl.match_hostname() для соответствия RFC 6125 по соображениям безопасности. Теперь он не соответствует множественным подстановочным символам, а также подстановочным символам внутри IDN-фрагментов.
  • bpo-16039: CVE-2013-1752: Изменено использование readline в модуле imaplib для ограничения длины строки. Патч от Emil Lind.
  • bpo-19330: из реализаций новых контекстных менеджеров contextlib.redirect_stdout и contextlib.suppress удалены лишние функции-обёртки, что также обеспечивает адекватный вывод help() для экземпляров.
  • bpo-19393: Исправлена функция symtable.symtable, чтобы она не путалась, когда есть функции или классы с именем «top».
  • bpo-18685: Восстановлена производительность модуля re до уровня, предшествовавшего PEP 393.
  • bpo-19339: Модуль telnetlib теперь использует time.monotonic(), если доступно, для вычисления тайм-аута.
  • bpo-19399: исправлен нерегулярный сбой test_subprocess.
  • bpo-13234: Исправлен os.listdir для работы с длинными путями в Windows. Патч от Santoso Wijaya.
  • bpo-19375: Добавление модулем site каталога «site-python» в sys.path, если он существует, теперь устарело.
  • bpo-19379: Импорт linecache в модуль warnings выполняется лениво, чтобы ускорить запуск с warnings до момента вывода предупреждения.
  • bpo-19288: Исправлен оператор «in» для баз данных dbm.gnu при строковом аргументе. Оригинальный патч от Arfrever Frehtes Taifersar Arahesis.
  • bpo-19287: Исправлен оператор «in» для баз данных dbm.ndbm при строковом аргументе. Оригинальный патч от Arfrever Frehtes Taifersar Arahesis.
  • bpo-19327: Исправлена работа регулярных выражений со слишком большим набором символов.
  • bpo-17400: Новый атрибут ‘is_global’ для ipaddress, который показывает, выделен ли адрес IANA для глобальных или частных сетей.
  • bpo-19350: Увеличено тестовое покрытие macurl2path. Патч от Colin Williams.
  • bpo-19365: Оптимизирован разбор длинной строки замены в функциях re.sub*().
  • bpo-19352: Исправлено обнаружение unittest, когда модуль доступен через несколько путей (например, в Debian/Ubuntu с virtualenv).
  • bpo-15207: Исправлен mimetypes для чтения из правильного раздела реестра Windows. Оригинальный патч от Dave Chambers.
  • bpo-16595: Добавлена функция prlimit() в модуль resource.
  • bpo-19324: Открыты Linux-специфичные константы в модуле resource.
  • В hashlib загружаются строки ошибок SSL.
  • bpo-18527: Обновлена внутренняя копия zlib до версии 1.2.8.
  • bpo-19274: Добавлен параметр filterfunc в PyZipFile.writepy.
  • bpo-8964: исправлен platform._sys_version для поддержки IronPython 2.6+. Патч от Martin Matusiak.
  • bpo-19413: Восстановлена семантика reload() версии до 3.3 для повторного поиска модулей.
  • bpo-18958: Улучшено сообщение об ошибке для json.load(s) при передаче строки, начинающейся с UTF-8 BOM.
  • bpo-19307: Улучшено сообщение об ошибке для json.load(s) при передаче объектов неверного типа.
  • bpo-16038: CVE-2013-1752: ftplib: ограничено количество читаемых данных за счёт ограничения вызова readline(). Оригинальный патч от Michał Jastrzębski и Giampaolo Rodola.
  • bpo-17087: Улучшен repr для объектов совпадений регулярных выражений.

ТестыTests

  • bpo-19664: тест repr в test_userdict больше не зависит от порядка элементов словаря.
  • bpo-19440: Очищен test_capi: удалён лишний импорт __future__, выполнено преобразование с test_main на unittest.main, и тесты модуля _testcapi выполняются как подтесты (subTests) метода unittest TestCase.
  • bpo-19378: the main dis module tests are now run with both stdout redirection and passing an explicit file parameter
  • bpo-19378: из bytecode_helper удалены бесполезные вспомогательные функции assertInstructionMatches и assertBytecodeExactlyMatches.
  • bpo-18702: все пропущенные тесты теперь сообщаются как пропущенные.
  • bpo-19439: тесты встраивания интерпретатора теперь выполняются на Windows (исправление от Zachary Ware).
  • bpo-19085: добавлены базовые тесты для всех опций виджетов tkinter.
  • bpo-19384: исправлен test_py_compile для пользователя root, патч от Claudiu Popa.

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

  • bpo-18326: уточнено, что аргументы list.sort являются только ключевыми. Также предпринята попытка уменьшить путаницу в глоссарии, избегая упоминания разных «типов» аргументов и параметров.

СборкаBuild

  • bpo-19358: «make clinic» теперь запускает препроцессор Argument Clinic для всех исходных файлов CPython.
  • Обновление SQLite до 3.8.1, xz до 5.0.5 и Tcl/Tk до 8.6.1 на Windows.
  • bpo-16632: включение DEP и ASLR на Windows.
  • bpo-17791: удалены определения PREFIX и EXEC_PREFIX из PC/pyconfig.h.
  • Добавлен обходной путь для проблемы nmake clean в VS 2010. VS 2010 неправильно настраивает PATH для nmake.exe.
  • bpo-19550: реализованы изменения в установщике Windows согласно PEP 453 (ensurepip).
  • bpo-19520: исправлено предупреждение компилятора в модуле _sha3 на 32-разрядной Windows.
  • bpo-19356: избегайте использования переменной C с именем «_self», так как это зарезервированное слово в некоторых компиляторах C.
  • bpo-15792: исправлены параметры сборки на Win64. Патч от Jeremy Kloth.
  • bpo-19373: применено изменение от вышестоящего разработчика к Tk 8.5.15, исправляющее проблему обновления экрана на OS X 10.9 для сборки установщика OS X.
  • bpo-19649: на OS X теперь один и тот же набор имен файлов устанавливается в каталоги bin для всех конфигураций: без фреймворка и с фреймворком, а также для сборок под одну архитектуру и универсальных. pythonx.y-32 теперь всегда устанавливается для 64-/32-разрядных универсальных сборок. Устаревшие и недокументированные символические ссылки pythonw* больше нигде не устанавливаются.
  • bpo-19553: PEP 453 – «make install» и «make altinstall» теперь по умолчанию устанавливают или обновляют pip, используя встроенный pip, предоставляемый новым модулем ensurepip. Доступна новая опция configure –with-ensurepip[=upgrade|install|no] для переопределения опции ensurepip по умолчанию «–upgrade». Эту опцию также можно задать с помощью «make [alt]install ENSUREPIP=[upgrade|install|no]».
  • bpo-19551: PEP 453 – установщик OS X теперь устанавливает pip по умолчанию.
  • Обновление сторонних библиотек для установщиков OS X: xz 5.0.3 -> 5.0.5, SQLite 3.7.13 -> 3.8.1.
  • bpo-15663: откат встроенной поддержки Tcl/Tk в установщике OS X для 3.4.0b1. Некоторые сторонние проекты, такие как Matplotlib и PIL/Pillow, зависели от возможности сборки с фреймворками Tcl и Tk в /Library/Frameworks.

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

  • bpo-19730: Argument Clinic теперь поддерживает все существующие «форматные единицы» PyArg в качестве устаревших преобразователей, а также две новые возможности: «преобразователи self» и директиву «version».
  • bpo-19552: pyvenv теперь по умолчанию устанавливает pip в виртуальные окружения (укажите –without-pip для старого поведения).
  • bpo-19390: Argument Clinic больше не принимает некорректные идентификаторы Python и C.

Python 3.4.0 alpha 4

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

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

  • bpo-19301: классам и функциям, явно помеченным как global, присваивается глобальное квалифицированное имя.
  • bpo-19279: декодер UTF-7 больше не порождает некорректные строки.
  • bpo-16612: добавлен «Argument Clinic» – препроцессор времени компиляции для файлов C, генерирующий код разбора аргументов. (См. PEP 436.)
  • bpo-18810: вызовы stat в importlib.machinery.FileFinder изменены так, чтобы код был оптимистичным: если в каталоге есть элемент с именем, совпадающим с именем искомого пакета, считается, что это на самом деле каталог.
  • bpo-18416: importlib.machinery.PathFinder теперь обрабатывает '' как текущий рабочий каталог, а importlib.machinery.FileFinder больше не обрабатывает '' как '.' специальным образом. В результате модули, импортированные из текущего рабочего каталога, теперь имеют абсолютный путь к файлу для __file__ (это не влияет на модули, заданные путем в командной строке, но влияет на -m/runpy). Это также позволяет FileFinder быть более последовательным, устраняя особый случай.
  • bpo-4555: Все экспортируемые символы C теперь имеют префикс «Py» или «_Py».
  • bpo-19219: Ускорение marshal.loads() и небольшое (на 5–10%) уменьшение размера файлов .pyc.
  • bpo-19221: Обновление базы данных Unicode до версии 6.3.0.
  • bpo-16742: Результат C-колбэка PyOS_ReadlineFunctionPointer теперь должен быть строкой, выделенной с помощью PyMem_RawMalloc() или PyMem_RawRealloc() (или NULL в случае ошибки), а не строкой, выделенной через PyMem_Malloc() или PyMem_Realloc().
  • bpo-19199: Удалено поле PyThreadState.tick_counter
  • Исправлено раскрытие макроса _PyErr_OCCURRED(), и обеспечено его использование хотя бы в одном месте, чтобы избежать регрессий.
  • bpo-19087: Улучшение выделения памяти для bytearray, чтобы обеспечить дешёвое извлечение данных из начала (удаление срезом).
  • bpo-19014: memoryview.cast() теперь разрешён для представлений нулевой длины.
  • bpo-18690: memoryview теперь автоматически регистрируется в collections.abc.Sequence
  • bpo-19078: memoryview теперь корректно поддерживает встроенную функцию reversed (патч от Claudiu Popa)

БиблиотекаLibrary

  • bpo-17457: Обнаружение тестов unittest теперь работает с пакетами пространств имён. Патч от Claudiu Popa.
  • bpo-18235: Исправлены переменные sysconfig LDSHARED и BLDSHARED в AIX. Патч от David Edelsohn.
  • bpo-18606: Добавлен новый модуль «statistics» (PEP 450). Предоставлен Steven D’Aprano.
  • bpo-12866: Модуль audioop теперь поддерживает 24-битные семплы.
  • bpo-19254: Предоставлена оптимизированная реализация pbkdf2_hmac на Python.
  • bpo-19201: Добавлен режим «x» (эксклюзивное создание) при открытии файлов в модулях bz2, gzip и lzma. Патчи от Tim Heaney и Vajrasky Kok. (См. также: bpo-19222, bpo-19223)
  • Исправлена утечка счётчика ссылок в _sre.
  • bpo-19262: Первоначальная фиксация пакета «asyncio» (также известного как Tulip, он же PEP 3156). Документации пока нет, и PEP слегка устарел относительно кода. Этот модуль будет иметь статус временный в Python 3.4.
  • bpo-19276: Исправлен модуль wave на 64-битных big-endian платформах.
  • bpo-19266: Переименование нового в 3.4 менеджера контекста contextlib.ignore в contextlib.suppress для большего соответствия существующим описаниям этой операции в других частях языка и документации стандартной библиотеки (патч от Zero Piraeus).
  • bpo-18891: Завершены дополнения API нового пакета email (временного) добавлением новых классов EmailMessage, MIMEPart и ContentManager.
  • bpo-18281: Неиспользуемые константы stat удалены из tarfile.
  • bpo-18999: Multiprocessing теперь поддерживает «контексты» с тем же API, что и модуль, но привязанные к указанным методам запуска.
  • bpo-18468: Функции re.split, re.findall, re.sub и методы group() и groups() объекта сопоставления теперь всегда возвращают строку или объект bytes.
  • bpo-18725: Модуль textwrap теперь поддерживает усечение многострочного текста.
  • bpo-18776: Колбэки atexit теперь выводят полную трассировку, когда вызывают исключение.
  • bpo-17827: Добавлена недостающая документация для codecs.encode и codecs.decode.
  • bpo-19218: Переименование collections.abc в _collections_abc для ускорения запуска интерпретатора.
  • bpo-18582: Добавлена функция «pbkdf2_hmac» в модуль hashlib. Она реализует функции производных ключей на основе пароля PKCS#5 с HMAC в качестве псевдослучайной функции.
  • bpo-19131: Модуль aifc теперь корректно читает и записывает sampwidth сжатых потоков.
  • bpo-19209: Удалён импорт copyreg из модуля os для ускорения запуска интерпретатора. stat_result и statvfs_result теперь жёстко прописаны как находящиеся в модуле os.
  • bpo-19205: Отказ от импорта модуля «re» в модулях site и sysconfig для ускорения запуска интерпретатора.
  • bpo-9548: Добавлен минимальный модуль “_bootlocale”, который импортируется модулем _io вместо полного модуля locale.
  • bpo-18764: Удалён псевдоним ‘print’ для команды PDB ‘p’, чтобы он больше не затенял функцию print.
  • bpo-19158: Редкое состояние гонки в BoundedSemaphore могло позволить слишком частый вызов .release().
  • bpo-15805: Добавлена contextlib.redirect_stdout().
  • bpo-18716: Устарел модуль formatter.
  • bpo-10712: В 2to3 добавлен новый фиксер “asserts”, который заменяет устаревшие названия методов unittest (например, failUnlessEqual → assertEqual).
  • bpo-18037: 2to3 теперь экранирует '\u' и '\U' в нативных строках.
  • bpo-17839: base64.decodebytes и base64.encodebytes теперь принимают любой объект, экспортирующий одномерный массив байтов (это означает, что то же самое теперь верно и для base64_codec).
  • bpo-19132: Модуль pprint теперь поддерживает компактный режим.
  • bpo-19137: Модуль pprint теперь корректно форматирует экземпляры подклассов set и frozenset.
  • bpo-10042: functools.total_ordering теперь корректно обрабатывает NotImplemented, возвращаемый нижележащей функцией сравнения (Патч от Katie Miller).
  • bpo-19092: contextlib.ExitStack теперь корректно повторно возбуждает исключения из колбэков __exit__ внутренних менеджеров контекста (Патч от Hrvoje Nikšić).
  • bpo-12641: Избегать передачи “-mno-cygwin” компилятору mingw32, кроме случаев, когда это необходимо. Патч от Oscar Benjamin.
  • bpo-5845: В site.py загружать readline-историю из ~/.python_history, только если история ещё не была загружена. Это предотвращает двойную запись в файл истории при завершении работы.
  • Корректно инициализировать все поля SSL-объекта после выделения памяти.
  • bpo-19095: SSLSocket.getpeercert() теперь возбуждает ValueError, если SSL-рукопожатие не было выполнено.
  • bpo-4366: Исправлена сборка расширений на всех платформах при использовании –enable-shared.
  • bpo-19030: Исправлены inspect.getmembers и inspect.classify_class_attrs: теперь они пытаются активировать дескрипторы перед тем, как прибегнуть к поиску в __dict__ для дескрипторов с ошибками. inspect.classify_class_attrs больше не возвращает атрибуты, у которых домашний класс равен None.

C API

  • bpo-1772673: Тип аргументов char* теперь изменён на const char*.
  • bpo-16129: Добавлен Py_SetStandardStreamEncoding API предварительной инициализации, чтобы позволить встраиваемым приложениям, таким как Blender, принудительно задать конкретную кодировку и обработчик ошибок для стандартных потоков ввода-вывода (первоначальный патч от Bastien Montagne).

ТестыTests

  • bpo-19275: Исправлен test_site на AMD64 Snow Leopard.
  • bpo-14407: Исправлено обнаружение тестов unittest в test_concurrent_futures.
  • bpo-18919: Унифицированы и расширены тесты для аудиомодулей: aifc, sunau и wave.
  • bpo-18714: Добавлены тесты для pdb.find_function().

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

  • bpo-18758: Исправлены и улучшены перекрёстные ссылки.
  • bpo-18972: Модернизированы примеры для email и в них используется модуль argparse.

СборкаBuild

  • bpo-19130: Исправлен PCbuild/readme.txt: Python 3.3 и 3.4 требуют VS 2010.
  • bpo-15663: Обновлён установщик для OS X 10.6+ для использования Tcl/Tk 8.5.15.
  • bpo-14499: Исправлены несколько проблем с поддержкой универсальной сборки для OS X: 1. Определение архитектуры ppc для сборки модулей расширения сломалось в Xcode 5 2. Определение архитектуры ppc в configure не работало на OS X 10.4 3. Флаги -sysroot и -arch излишне дублировались 4. Не было очевидного способа настроить сборку только для Intel 32-bit.
  • bpo-19019: Изменён скрипт сборки установщика OS X для использования CFLAGS вместо OPT для специальных параметров сборки. При установке OPT некоторые специфические для компилятора параметры, такие как -fwrapv, переопределялись и не использовались, что могло привести к сломанным интерпретаторам при сборке с помощью clang.

Python 3.4.0 alpha 3

Дата выпуска: 2013-09-29

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

  • bpo-18818: Часть «encodingname» в PYTHONIOENCODING теперь необязательна.
  • bpo-19098: Предотвращение переполнения в компиляторе при нелепо высоком пределе рекурсии.

БиблиотекаLibrary

  • bpo-18929: inspect.classify_class_attrs() теперь правильно находит атрибуты класса, возвращаемые dir(), которые находятся в метаклассе.
  • bpo-18950: Исправлены различные ошибки в модуле sunau. Метод Au_read.readframes() теперь обновляет текущую позицию файла и читает правильное количество фреймов из многоканального потока данных. Au_write.writeframesraw() теперь правильно обновляет текущую позицию файла. Au_read.getnframes() теперь возвращает целое число (как в Python 2). Au_read и Au_write теперь корректно работают с файловым объектом, если начальная позиция файла не равна нулю.
  • bpo-18594: Быстрый путь для collections.Counter() никогда не использовался из-за излишне строгой проверки типа.
  • bpo-19053: Метод ZipExtFile.read1() с ненулевым аргументом больше не возвращает пустые байты до конца данных.
  • logging: добавлена поддержка Unix-сокетов для SocketHandler и DatagramHandler.
  • bpo-18996: Метод TestCase.assertEqual() теперь более умно сокращает различающиеся строки в отчёте об ошибке.
  • bpo-19034: repr() для tkinter.Tcl_Obj теперь показывает строковое представление.
  • bpo-18978: urllib.request.Request теперь позволяет указывать метод в классе и больше не устанавливает его в None в __init__.
  • bpo-18626: Модуль inspect теперь предоставляет базовый интерфейс интроспекции командной строки (первоначальная правка от Claudiu Popa).
  • bpo-3015: Исправлен tkinter с wantobject=False. Любой вызов команды Tcl возвращал пустую строку.
  • bpo-19037: Модуль mailbox теперь выполняет все изменения файлов maildir до их перемещения на место, чтобы избежать состояний гонки с другими программами, которые могут обращаться к каталогу maildir.
  • bpo-14984: В системах POSIX при вызове netrc без аргумента имени файла (и, следовательно, чтении файла $HOME/.netrc пользователя) теперь применяются те же правила безопасности, что и в типичных ftp-клиентах: файл .netrc должен принадлежать пользователю, владеющему процессом, и не должен быть доступен для чтения другим пользователям.
  • bpo-18873: Модуль tokenize теперь обнаруживает кодировку исходного кода Python только в строках комментариев.
  • bpo-17764: Добавлена возможность привязки http.server к указанному пользователем сетевому интерфейсу. Правка предоставлена Malte Swart.
  • bpo-18937: Добавлен менеджер контекста assertLogs() в unittest.TestCase для проверки того, что блок кода выводит сообщение с помощью модуля logging.
  • bpo-17324: Исправлена обработка запросов http.server при завершающем символе '/'. Правка предоставлена Vajrasky Kok.
  • bpo-19018: Функция heapq.merge() больше не подавляет IndexError в базовых итерируемых объектах.
  • bpo-18784: Модуль uuid больше не пытается загрузить libc через ctypes.CDLL, если все необходимые функции уже найдены в libuuid. Правка от Evgeny Sologubov.
  • Переменная окружения PYTHONFAULTHANDLER теперь включает модуль faulthandler только если переменная непустая. Такое же поведение, как и у других переменных, например PYTHONDONTWRITEBYTECODE.
  • bpo-1565525: Новая функция traceback.clear_frames очищает локальные переменные всех кадров стека, на которые ссылается объект traceback.

ТестыTests

  • bpo-18952: Исправлена регрессия в загрузке вспомогательных данных, возникшая при преобразовании test.support в пакет. Регрессия замечена Zachary Ware.

IDLE

  • bpo-18873: IDLE теперь обнаруживает кодировку исходного кода Python только в строках комментариев.
  • bpo-18988: Клавиша «Tab» теперь работает, когда слово уже завершено автодополнением.

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

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

СборкаBuild

  • bpo-18596: Поддержка проверки корректности адресов в новых версиях clang и GCC путём соответствующей маркировки известных ложных срабатываний в аллокаторе мелких объектов. Правка предоставлена Dhiru Kholia.

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

  • bpo-18873: 2to3 и скрипт findnocoding.py теперь обнаруживают кодировку исходного кода Python только в строках комментариев.

Python 3.4.0 alpha 2

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

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

  • bpo-18942: Вывод sys._debugmallocstats() был повреждён в Windows.
  • bpo-18571: Реализация PEP 446: файловые дескрипторы и файловые дескрипторы (handles) теперь создаются ненаследуемыми; добавлены функции os.get/set_inheritable(), os.get/set_handle_inheritable() и socket.socket.get/set_inheritable().
  • bpo-11619: Парсер и механизм импорта больше не кодируют имена файлов в Unicode в Windows.
  • bpo-18808: Не-демонические потоки теперь автоматически присоединяются при завершении субинтерпретатора (ранее это вызывало фатальную ошибку).
  • Удалена поддержка компиляции в системах без getcwd().
  • bpo-18774: Удалены последние фрагменты кода потоков GNU PTH и файл thread_pth.h.
  • bpo-18771: Добавлена оптимизация поиска в объектах set для снижения затрат на коллизии хешей. Основная идея – проверять вторую пару ключ/хеш для каждой извлекаемой строки кэша.
  • bpo-16105: Когда обработчик сигнала не может записать в файловый дескриптор, зарегистрированный с помощью signal.set_wakeup_fd(), сообщать об исключении, а не игнорировать ошибку.
  • bpo-18722: Убрано использование ключевого слова «register» в коде на C.
  • bpo-18667: Добавлен отсутствовавший символ «HAVE_FCHOWNAT» в posix._have_functions.
  • bpo-16499: Добавлен параметр командной строки для изолированного режима.
  • bpo-15301: Разбор параметров fd, uid и gid для встроенных функций в Modules/posixmodule.c теперь гораздо надёжнее.
  • bpo-18368: PyOS_StdioReadline() больше не вызывает утечку памяти при сбое realloc().
  • bpo-17934: Добавлен метод clear() для объектов frame, позволяющий очищать дорогостоящие детали (локальные переменные) и разрывать циклические ссылки.
  • bpo-18780: Коды форматирования %d, %i и %u теперь обрабатывают подклассы int как int (отображается значение подкласса int, а не str(int-subclass)).

БиблиотекаLibrary

  • bpo-18808: Thread.join() теперь ожидает уничтожения базового состояния потока перед возвратом. Это предотвращает непредсказуемые аварийные завершения в Py_EndInterpreter(), когда ещё выполняются некоторые не-демонические потоки.
  • bpo-18458: Предотвращение сбоев с новыми версиями libedit. Его эмуляция readline изменилась с нулевой индексации на единичную, как в gnu readline.
  • bpo-18852: Обработка случая, когда readline.__doc__ является None в новом коде активации readline в site.py.
  • bpo-18672: Исправлены спецификаторы формата для Py_ssize_t в отладочном выводе в модуле _sre.
  • bpo-18830: inspect.getclasstree() больше не создаёт дублирующиеся записи, даже если входной список содержит дубликаты.
  • bpo-18878: sunau.open теперь поддерживает протокол менеджера контекста. Основано на патчах Claudiu Popa и R. David Murray.
  • bpo-18909: Исправление _tkinter.tkapp.interpaddr() в Windows 64-bit – не приводить 64-битный указатель к long (32 бита).
  • bpo-18876: Атрибут FileIO.mode теперь точнее отражает фактический режим, в котором был открыт файл. Патч от Erik Bray.
  • bpo-16853: Добавлен новый модуль selectors.
  • bpo-18882: Добавлена функция threading.main_thread().
  • bpo-18901: Метод getparams в модуле sunau теперь возвращает namedtuple вместо обычного кортежа. Патч от Claudiu Popa.
  • bpo-17487: Результат метода getparams модуля wave теперь снова можно сериализовать с помощью модуля pickle. Патч предоставлен Claudiu Popa.
  • bpo-18756: os.urandom() теперь использует лениво открываемый постоянный файловый дескриптор, чтобы избежать использования множества файловых дескрипторов при параллельном запуске из нескольких потоков.
  • bpo-18418: После fork() переинициализировать состояния всех потоков, а не только активных. Патч от A. Jesse Jiryu Davis.
  • bpo-17974: Переключение unittest с использования getopt на argparse.
  • bpo-11798: TestSuite теперь удаляет ссылки на собственные тесты после выполнения.
  • bpo-16611: http.cookie теперь правильно разбирает флаги куки ‘secure’ и ‘httponly’.
  • bpo-11973: Исправлена проблема в kevent. Поля flags и fflags теперь корректно обрабатываются как беззнаковые.
  • bpo-18807: pyvenv теперь принимает аргумент –copies, позволяющий создавать копии вместо символических ссылок, даже там, где символические ссылки доступны и являются поведением по умолчанию.
  • bpo-18538: python -m dis теперь использует argparse для обработки аргументов. Исправление от Michele Orrù.
  • bpo-18394: Закрывает опциональный файл cgi.FieldStorage.
  • bpo-17702: При ошибке os.environb теперь подавляет контекст исключения при возбуждении нового KeyError с исходным ключом.
  • bpo-16809: Исправлены некоторые несовместимости tkinter с Tcl/Tk 8.6.
  • bpo-16809: Методы splitlist() и split() в Tkinter теперь принимают аргумент Tcl_Obj.
  • bpo-18324: set_payload теперь корректно обрабатывает двоичный ввод. Это также заменяет предыдущие исправления для #14360, #1717 и #16564.
  • bpo-18794: Добавлены метод fileno() и атрибут closed для объектов select.devpoll.
  • bpo-17119: Исправлены целочисленные переполнения при обработке больших строк и кортежей в модуле tkinter.
  • bpo-18747: Повторная инициализация генератора псевдослучайных чисел OpenSSL после fork. Используется родительский обработчик pthread_atfork() для инициализации PRNG с помощью pid, времени и некоторых данных стека.
  • bpo-8865: Одновременный вызов select.poll.poll() теперь возбуждает исключение RuntimeError. Исправление от Christian Schubert.
  • bpo-18777: Модуль ssl теперь использует новый API CRYPTO_THREADID в OpenSSL 1.0.0+ вместо устаревшей функции обратного вызова CRYPTO id.
  • bpo-18768: Исправлена строка документации RAND_edg(). Исправление от Vajrasky Kok.
  • bpo-18178: Исправлен ctypes на BSD. dlmalloc.c компилировался дважды, что нарушало слабые символы malloc.
  • bpo-18709: Исправление CVE-2013-4238. Модуль SSL теперь корректно обрабатывает нулевые байты внутри subjectAltName. Ранее модуль использовал функцию OpenSSL GENERAL_NAME_print() для получения строкового представления ASN.1-строк для rfc822Name (email), dNSName (DNS) и uniformResourceIdentifier (URI).
  • bpo-18701: Из кода на C удалена поддержка старых версий CPython (<3.0).
  • bpo-18756: Улучшено сообщение об ошибке в os.urandom(), когда сбой вызван не отсутствием /dev/urandom, а другой причиной (например, исчерпанием лимита файловых дескрипторов).
  • bpo-18673: В модуль os добавлен O_TMPFILE. O_TMPFILE требует ядра Linux 3.11 или новее. Он также определён только в системах с заголовками uapi версии 3.11.
  • bpo-18532: Имена встроенных алгоритмов хеширования приведены к строчному регистру, как обещано документацией hashlib.
  • bpo-8713: В multiprocessing добавлены новые методы запуска spawn (порождение) и forkserver (сервер ответвления), а также новые функции get_all_start_methods, get_start_method и set_start_method.
  • bpo-18405: Улучшена энтропия crypt.mksalt().
  • bpo-12015: Модуль tempfile теперь использует суффикс из 8 случайных символов вместо 6, чтобы снизить риск коллизий имён файлов. Энтропия была снижена, когда из набора символов для генерации случайных символов удалили прописные буквы.
  • bpo-18585: Добавлен textwrap.shorten() для свёртывания и обрезания фрагмента текста до заданной длины.
  • bpo-18598: Изменено сообщение об исключении для importlib.import_module() – теперь оно включает имя модуля, когда отсутствует ключевой аргумент.
  • bpo-19151: Исправлены строка документации и использование _get_supported_file_loaders() для отражения кортежей из двух элементов.
  • bpo-19152: Добавлен метод ExtensionFileLoader.get_filename().
  • bpo-18676: Замена 'positive' на 'non-negative' в строках документации и сообщениях ValueError методов put и get в queue.py. Исправление от Zhongyue Luo.
  • Исправлена проблема с подсчётом ссылок для типов-расширений в tkinter.
  • bpo-8112: Сервер DocXMLRPCServer в xlmrpc.server больше не возбуждает ошибку, если у методов есть аннотации; теперь он корректно отображает аннотации.
  • bpo-18600: В email.message.Message.as_string добавлен аргумент policy, а в Message – методы as_bytes и __bytes__.
  • bpo-18671: Выводить больше информации при возникновении исключений при логировании.
  • bpo-18621: Предотвращение удержания слишком большого количества ссылок слишком долго паччеными встроенными объектами модуля site.
  • bpo-4885: Добавлена поддержка weakref для объектов mmap. Исправление от Valerie Lambert.
  • bpo-8860: Исправлено округление в конструкторе timedelta.
  • bpo-18849: Исправлена ошибка временного файла, специфичная для Windows, когда коллизия с существующим каталогом приводила к сбою mkstemp и связанных API вместо повторной попытки. Сообщение и исправление от Vlad Shcherbina.
  • bpo-18920: Назначение argparse по умолчанию для действия версии (-v, –version) также было изменено на stdout, чтобы соответствовать исполняемому файлу Python.

ТестыTests

  • bpo-18623: Выделен менеджер контекста _SuppressCoreFiles в test.support. Патч от Valerie Lambert.
  • bpo-12037: Исправлен test_email для настольной версии Windows.
  • bpo-15507: test_send_signal из test_subprocess мог завершаться ошибкой, если тестовый запуск выполнялся в среде, где процесс наследовал игнорирование SIGINT. Во время этого теста обработчик SIGINT восстанавливается в нужное состояние, вызывающее KeyboardInterrupt.
  • bpo-16799: В разборе аргументов regrtest перешли от getopt к стилю argparse. Добавлено больше тестов для разбора аргументов regrtest.
  • bpo-18792: Используйте «127.0.0.1» или «::1» вместо «localhost», насколько это возможно, так как «localhost» в последних версиях Windows проходит через DNS-запрос.

IDLE

  • bpo-18489: Добавлены тесты для SearchEngine. Оригинальный патч от Phil Webster.

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

  • bpo-18743: Исправлены ссылки на несуществующий модуль «StringIO».
  • bpo-18783: Удалены существующие упоминания типа Python long в docstrings, сообщениях об ошибках и комментариях.

СборкаBuild

  • bpo-1584: Добавлены опции configure для переопределения путей поиска по умолчанию для Tcl и Tk при сборке _tkinter.
  • bpo-15663: В состав установщика OS X 10.6+ 64-/32-bit теперь включён Tcl/Tk 8.5.14. Больше не нужно устанавливать стороннюю версию Tcl/Tk 8.5, чтобы обойти проблемы в Apple-поставленном Tcl/Tk 8.5, входящем в состав OS X 10.6 и более поздних выпусков.

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

  • bpo-18922: Теперь скрипты Lib/smtpd.py и Tools/i18n/msgfmt.py выводят свои строки версии в stdout, а не в stderr.

Python 3.4.0 alpha 1

Дата релиза: 2013-08-03

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

  • bpo-16741: Исправлена ошибка вывода сообщения в int().
  • bpo-17899: Исправлена редкая утечка файловых дескрипторов в os.listdir().
  • bpo-10241: Очистка копий словарей модулей расширений при завершении интерпретатора. Патч от Neil Schemenauer, минимально изменён.
  • bpo-9035: ismount теперь распознаёт тома, смонтированные ниже корня диска в Windows. Оригинальный патч от Atsuo Ishimoto.
  • bpo-18214: Улучшена финализация модулей Python, чтобы в большинстве случаев избежать установки их глобальных переменных в None.
  • bpo-18112: Реализация PEP 442 (безопасная финализация объектов).
  • bpo-18552: Проверка возвращаемого значения PyArena_AddPyObject() в obj2ast_object().
  • bpo-18560: Исправлено потенциальное разыменование NULL-указателя в sum().
  • bpo-18520: Добавлена новая функция PyStructSequence_InitType2(), аналогичная PyStructSequence_InitType(), но имеющая возвращаемое значение (0 при успехе, -1 при ошибке).
  • bpo-15905: Исправлено теоретическое переполнение буфера при обработке sys.argv[0], prefix и exec_prefix, если операционная система не соблюдает MAXPATHLEN.
  • bpo-18408: Исправлено множество различных ошибок в коде обработки ошибок, особенно при сбое выделения памяти (MemoryError).
  • bpo-18344: Исправлены потенциальные утечки ссылок в _bufferedreader_read_all().
  • bpo-18342: При неудачном импорте с использованием from ... import ... используется repr имени модуля.
  • bpo-17872: Исправлен segfault в marshal.load(), когда входной поток возвращает больше байтов, чем запрошено.
  • bpo-18338: python --version теперь выводит строку версии в stdout, а не в stderr. Патч от Berker Peksag и Michael Dickens.
  • bpo-18426: Исправлено разыменование NULL-указателя при импорте C-расширения, когда PyModule_GetDef() возвращает ошибку.
  • bpo-17206: В Windows увеличена длина стека с 2 до 4,2 МБ для устранения переполнения стека в модуле marshal (исправлена ошибка в test_marshal). Патч написан Джереми Клотом.
  • bpo-3329: Реализован PEP 445: добавлены новые API для настройки распределителей памяти Python.
  • bpo-18328: Изменён порядок операций в функциях PyThreadState_Delete*(). Теперь tstate сначала удаляется из TLS, а затем освобождается.
  • bpo-13483: В obmalloc на Windows теперь используется VirtualAlloc.
  • bpo-18184: PyUnicode_FromFormat() и PyUnicode_FromFormatV() теперь вызывают OverflowError, если аргумент формата %c выходит за допустимые пределы.
  • bpo-18111: Функции min() и max() теперь поддерживают аргумент default, который возвращается вместо возбуждения ValueError для пустой последовательности. (Предложено Джулианом Берманом.)
  • bpo-18137: Обнаружение целочисленного переполнения по точности в float.__format__() и complex.__format__().
  • bpo-18183: Исправлены различные операции с юникодом в строках, содержащих большие кодовые точки.
  • bpo-18180: Исправлена утечка ссылок в _PyImport_GetDynLoadWindows().
  • bpo-18038: SyntaxError, возбуждаемое при компиляции исходников с недопустимой кодировкой, теперь всегда содержит имя кодировки.
  • bpo-17931: В Windows устранена путаница между идентификаторами процессов (pid) и дескрипторами процессов.
  • Подкорректировано сообщение исключения, когда магическое число или значение размера в байткод-файле обрезаны.
  • bpo-17932: Исправлена проблема целочисленного переполнения на Windows 64-bit в итераторах: тип C seqiterobject.it_index изменён с long на Py_ssize_t.
  • bpo-18065: Не устанавливать __path__ в имя пакета для замороженных пакетов.
  • bpo-18088: При перезагрузке модуля безусловно сбрасывать все соответствующие атрибуты модуля (например, __name__, __loader__, __package__, __file__, __cached__).
  • bpo-17937: Улучшена попытка сборки циклического мусора при завершении работы.
  • bpo-12370: Предотвращение вмешательства тел классов в замыкание __class__.
  • bpo-17644: Исправлен сбой в str.format при использовании фигурных скобок внутри квадратных.
  • bpo-17237: Исправлен сбой в декодере ASCII на m68k.
  • bpo-17927: Объекты фреймов удерживали аргументы живыми, если те были скопированы в ячейку (cell), даже если ячейка была очищена.
  • bpo-1545463: При завершении работы отложить финализацию модулей codec, чтобы stderr оставался доступным.
  • bpo-7330: Реализованы ширина и точность (например, “%5.3s”) для строки формата функции PyUnicode_FromFormat(), исходный патч написан Ysj Ray.
  • bpo-1545463: Глобальные переменные, попавшие в циклические ссылки, теперь собираются сборщиком мусора при завершении.
  • bpo-17094: Очистка устаревших состояний потоков после fork(). Обратите внимание: это потенциально разрушительное изменение, так как оно может освободить некоторые системные ресурсы, которые иначе оставались бы постоянно активными (например, соединения с БД, хранящиеся в локальной памяти потоков).
  • bpo-17408: Избегание использования устаревшего экземпляра модуля copyreg при повторном запуске интерпретатора после завершения.
  • bpo-5845: Включение автодополнения по табуляции в интерактивном интерпретаторе по умолчанию благодаря новому sys.__interactivehook__.
  • bpo-17115: Инициализация модулей теперь включает установку атрибутов __package__ и __loader__ в None. (См. также: bpo-17116)
  • bpo-17853: Локальные переменные класса, которые затеняют свободные переменные, теперь всегда имеют приоритет перед замыканиями.
  • bpo-17863: В интерактивной консоли не зацикливаться, если не удаётся получить кодировку из stdin.
  • bpo-17867: Возбуждать ImportError, если __import__ не найден в __builtins__.
  • bpo-18698: Обеспечить, чтобы importlib.reload() возвращал модуль из sys.modules.
  • bpo-17857: Предотвращение ошибок сборки с версиями sqlite3 до 3.5.0, такими как поставляемые с CentOS 5 и Mac OS X 10.4.
  • bpo-17413: колбэкам sys.settrace для элемента 'value' кортежа arg передавалась строка вместо экземпляра исключения, если исключение возникало из кода на C; теперь всегда передаётся экземпляр исключения.
  • bpo-17782: Исправлено неопределённое поведение на платформах, где член “tv_nsec” структуры struct timespec не является типом C long.
  • bpo-17722: При поиске __round__ теперь разрешаются дескрипторы.
  • bpo-16061: Ускорена str.replace() при замене строк из одного символа.
  • bpo-17715: Исправлена ошибка сегментации при возбуждении исключения в методе __trunc__.
  • bpo-17643: Добавлен атрибут __callback__ в weakref.ref.
  • bpo-16447: Исправлена потенциальная ошибка сегментации при установке __name__ на класс.
  • bpo-17669: Исправлен сбой, связанный с финализацией генераторов, использующих yield from.
  • bpo-14439: Python теперь выводит traceback при сбое runpy во время запуска.
  • bpo-17469: Исправлена работа _Py_GetAllocatedBlocks() и sys.getallocatedblocks() при запуске под valgrind.
  • bpo-17619: Исправлена проверка Ctrl-C в input() на Windows.
  • bpo-17357: Добавлены недостающие сообщения о подробности для -v/-vv, которые были потеряны при переходе на importlib.
  • bpo-17610: Не полагаться на нестандартное поведение функции qsort() из C.
  • bpo-17323: Вывод “[X refs, Y blocks]” в отладочных сборках по умолчанию отключён. Его можно снова включить с помощью -X showrefcount.
  • bpo-17328: Исправлена возможная утечка ссылок в dict.setdefault.
  • bpo-17275: Исправлено имя класса в сообщениях об ошибках инициализации C-версий BufferedWriter и BufferedRandom.
  • bpo-7963: Исправлено вводящее в заблуждение сообщение об ошибке, которое выдавалось при вызове объекта без аргументов.
  • bpo-8745: Небольшое ускорение zipimport на Windows. Патч от Catalin Iacob.
  • bpo-5308: Возбуждать ValueError при маршалинге слишком большого объекта (последовательность размером >= 2**31) вместо создания недопустимых данных marshal.
  • bpo-12983: Байтовые литералы с недопустимой управляющей последовательностью \x теперь вызывают SyntaxError и полный traceback с номером строки.
  • bpo-16967: В определении функции теперь сначала вычисляются значения по умолчанию для позиционных параметров, а затем – для только ключевых.
  • bpo-17173: Удалено использование зависящих от локали функций C (isalpha() и т.д.) в интерпретаторе.
  • bpo-17137: При изменении размера строки Unicode теперь очищается внутренний формат широких символов (wstr).
  • bpo-17043: Декодер unicode-internal больше не читает за пределами входного буфера.
  • bpo-17098: Теперь у всех модулей установлен __loader__, даже если они существовали до начальной загрузки importlib.
  • bpo-16979: Исправлены ошибки обработки ошибок в декодере unicode-escape-decode.
  • bpo-16772: Аргумент base конструктора int больше не принимает числа с плавающей запятой или другие нецелые объекты с методом __int__. Теперь принимаются объекты с методом __index__.
  • bpo-10156: На этапе инициализации интерпретатора глобальные объекты Unicode теперь инициализируются динамически по мере необходимости.
  • bpo-16980: Исправлена обработка экранированных не-ascii байтов в декодере unicode-escape-decode.
  • bpo-16975: Исправлена ошибка обработки ошибок в декодере escape-decode для байтов.
  • bpo-14850: Теперь декодер charmap обрабатывает U+FFFE как «неопределённое отображение» в любом отображении, а не только в строке.
  • bpo-16613: Добавлен аргумент m в collections.Chainmap.new_child, чтобы можно было явно указать новую дочернюю карту.
  • bpo-16730: importlib.machinery.FileFinder больше не возбуждает исключение при попытке заполнить свой кэш, если обнаруживается, что каталог недоступен для чтения или превратился в файл. Сообщено и диагностировано Дэвидом Причардом.
  • bpo-16906: Исправлена логическая ошибка, из-за которой большинство статических строк не очищались.
  • bpo-11461: Исправлен инкрементальный декодер UTF-16. Оригинальный патч от Amaury Forgeot d’Arc.
  • bpo-16856: Исправлен segmentation fault при вызове repr() для словаря с ключом, чей repr возбуждает исключение.
  • bpo-16367: Исправлен FileIO.readall() в Windows для файлов размером более 2 ГБ.
  • bpo-16761: Вызов int() с аргументом base теперь возбуждает TypeError.
  • bpo-16759: Поддержка полного диапазона DWORD (unsigned long) в Reg2Py при получении значения REG_DWORD. Это исправляет такие функции, как winreg.QueryValueEx, которые могли возвращать усечённые значения.
  • bpo-14420: Поддержка полного диапазона DWORD (unsigned long) в Py2Reg при передаче значения REG_DWORD. Исправляет OverflowError в winreg.SetValueEx.
  • bpo-11939: Установка атрибута st_dev в stat_result, чтобы позволить Windows использовать реализации os.path.samefile/sameopenfile/samestat, применяемые на других платформах.
  • bpo-16772: Второй аргумент (base) конструктора int() больше не принимает нецелочисленные значения. Соответствует поведению в Python 2.
  • bpo-14470: Удалена поддержка w9xpopen согласно PEP 11.
  • bpo-9856: Замена предупреждения об устаревании на возбуждение TypeError в object.__format__. Патч от Florent Xicluna.
  • bpo-16597: В буферизованном и текстовом вводе-выводе вызывать close() для нижележащего потока, если вызов flush() завершается неудачей.
  • bpo-16722: В конструкторе bytes() сначала пытаться вызвать __bytes__ для аргумента, а затем __index__.
  • bpo-16421: Загрузка нескольких модулей из одного разделяемого объекта теперь обрабатывается корректно (ранее молча возвращался первый загруженный из этого файла модуль). Патч от Václav Šmilauer.
  • bpo-16602: Если цель слабой ссылки была частью длинной цепочки освобождения, объект мог оставаться достижимым через свою слабую ссылку, даже если его счётчик ссылок упал до нуля.
  • bpo-16495: Удалена лишняя проверка кодировки NULL из bytes_decode().
  • bpo-16619: Создан класс NameConstant в AST для представления литералов None, True и False. В результате эти константы никогда не загружаются во время выполнения из встроенных модулей.
  • bpo-16455: На FreeBSD и Solaris, если локаль установлена как C, теперь используется кодек ASCII/surrogateescape (вместо кодировки локали) для декодирования аргументов командной строки. Это изменение исправляет несоответствия с os.fsencode() и os.fsdecode(), поскольку эти операционные системы объявляют кодировку локали ASCII, но на практике фактически используют кодировку ISO-8859-1.
  • bpo-16562: Оптимизирована проверка равенства словарей. Патч от Serhiy Storchaka.
  • bpo-16588: Подавлены предупреждения об unused-but-set в Python/thread_pthread.
  • bpo-16592: stringlib_bytes_join не возбуждает MemoryError при сбое выделения памяти.
  • bpo-16546: Исправление: аргумент ast.YieldFrom теперь обязателен.
  • bpo-16514: Исправлен регресс, вызывающий traceback, когда sys.path[0] равен None (фактически, любой нестроковый или небайтовый тип).
  • bpo-16306: Исправлены множественные сообщения об ошибках, когда интерпретатору передавались неизвестные параметры командной строки. Патч от Hieu Nguyen.
  • bpo-16215: Исправлено потенциальное двойное освобождение памяти в str.replace(). Патч от Serhiy Storchaka.
  • bpo-16290: Возвращаемое значение типа float из специального метода __complex__ больше не принимается в конструкторе complex().
  • bpo-16416: На Mac OS X системные данные теперь всегда кодируются/декодируются в/из UTF-8/surrogateescape, вместо кодировки локали (которая может быть ASCII, если не установлена переменная окружения локали), чтобы избежать несоответствий с функциями os.fsencode() и os.fsdecode(), которые уже используют UTF-8/surrogateescape.
  • bpo-16453: Исправлена проверка равенства мёртвых объектов слабых ссылок.
  • bpo-9535: Исправлено, чтобы ожидающие сигналы, полученные, но ещё не обработанные Python, не сохранялись после os.fork() в дочернем процессе.
  • bpo-14794: Исправлен slice.indices, чтобы возвращать корректные результаты для огромных значений, а не возбуждать OverflowError.
  • bpo-15001: Исправлен segfault при “del sys.modules[‘__main__’]”. Патч от Victor Stinner.
  • bpo-8271: декодер UTF-8 теперь выводит правильное количество символов U+FFFD при использовании обработчика ошибок «replace» для недопустимых последовательностей UTF-8. Патч от Serhiy Storchaka, тесты от Ezio Melotti.
  • bpo-5765: в компиляторе установлено жёсткое ограничение на глубину рекурсии, чтобы избежать переполнения стека и падения с сегфолтом. Первоначальный патч от Andrea Griffini.
  • bpo-16402: при взятии среза диапазона (range) исправлено затенение исключений, возникающих в __index__.
  • bpo-16336: исправлена проверка входных данных в обработчике ошибок surrogatepass. Патч от Serhiy Storchaka.
  • bpo-8401: присвоение целого числа срезу bytearray (например, b[3:4] = 5) теперь вызывает ошибку.
  • bpo-7317: при асинхронном возникновении ошибки теперь отображается полная трассировка. Патч от Alon Horev с доработкой от Alexey Kachayev.
  • bpo-16309: поведение PYTHONPATH="" теперь такое же, как если бы PYTHONPATH не был установлен вовсе.
  • bpo-10189: улучшено сообщение об ошибках SyntaxError, связанных с операторами global и nonlocal.
  • Исправлены сегфолты при установке __qualname__ на встроенных типах и при попытке удалить его на любом типе.
  • bpo-14625: переписан декодер UTF-32. Теперь он работает в 3–4 раза быстрее. Патч написан Serhiy Storchaka.
  • bpo-16345: исправлен бесконечный цикл, когда fromkeys на подклассе словаря получала непустой словарь из конструктора.
  • bpo-16271: исправлены странные ошибки, возникавшие из-за появления __qualname__ в __dict__ класса и в самом типе.
  • bpo-12805: ускорены bytes.join и bytearray.join, когда разделитель пуст. Патч от Serhiy Storchaka.
  • bpo-6074: гарантируется, что кэшированные файлы байт-кода всегда могут быть обновлены тем пользователем, который их создал, даже если исходный файл доступен только для чтения.
  • bpo-15958: bytes.join и bytearray.join теперь принимают произвольные буферные объекты.
  • bpo-14783: улучшена docstring функции int(); строки документации для str(), range() и slice() переведены на многострочные сигнатуры.
  • bpo-16160: для types.SimpleNamespace теперь работает поддержка подклассов.
  • bpo-16148: реализован PEP 424: добавлены operator.length_hint и PyObject_LengthHint.
  • Данные Unicode (UCD) обновлены до версии 6.2.
  • bpo-15379: исправлена передача символов вне BMP в виде целых чисел для декодера charmap (уже работало для строк Unicode). Патч от Serhiy Storchaka.
  • bpo-15144: исправлено возможное целочисленное переполнение при обработке указателей как целочисленных значений; используется Py_uintptr_t вместо size_t. Патч от Serhiy Storchaka.
  • bpo-15965: явное приведение AT_FDCWD к (int). Требуется на Solaris 10 (где AT_FDCWD определяется как 0xffd19553), на других платформах безвредно.
  • bpo-15839: исключения SystemError в super() преобразованы в RuntimeError.
  • bpo-15448: буферизованный ввод-вывод теперь освобождает буфер при закрытии, а не при удалении объекта.
  • bpo-15846: исправлена ошибка SystemError, возникавшая при использовании ast.parse() в обработчике исключений в коде с синтаксическими ошибками.
  • bpo-15897: zipimport.c не проверяет возвращаемое значение fseek(). Патч от Felipe Cruz.
  • bpo-15801: гарантируется, что словари, передаваемые в форматирование через '%', действительно поддерживают подписку.
  • bpo-15111: __import__ должен пробрасывать ImportError, если он возник как побочный эффект при загрузке модуля через fromlist.
  • bpo-15022: для types.SimpleNamespace добавлена поддержка сериализации (pickle) и сравнения.

БиблиотекаLibrary

  • bpo-4331: добавлен functools.partialmethod (первоначальный патч от Alon Horev).
  • bpo-13461: исправлен сбой в методе TextIOWrapper.tell на 64-битных платформах. Патч от Yogesh Chaudhari.
  • bpo-18681: исправлена ошибка NameError в importlib.reload() (замечено Weizhao Li).
  • bpo-14323: Увеличено количество знаков в коэффициентах для преобразования RGB–YIQ, чтобы они соответствовали версиям FCC NTSC.
  • bpo-17998: Исправлена внутренняя ошибка в движке регулярных выражений.
  • bpo-17557: Исправлена работа os.getgroups() с изменённым поведением getgroups(2) на OS X 10.8. Патч от Mateusz Lenik.
  • bpo-18608: Избегается сохранение сильной ссылки на модуль locale внутри модуля _io.
  • bpo-18619: Исправлена утечка колбэков, зарегистрированных из под-интерпретаторов в atexit, и обеспечена поддержка сборки мусора.
  • bpo-15699: Модуль readline теперь использует инициализацию модуля по PEP 3121, чтобы освобождать выделенные ресурсы (колбэки Python) при завершении. Патч от Robin Schreiber.
  • bpo-17616: wave.open теперь поддерживает протокол менеджера контекста.
  • bpo-18599: Исправлен атрибут name объекта _sha1.sha1(). Теперь возвращается «SHA1» вместо «SHA».
  • bpo-13266: Добавлена inspect.unwrap для простого разворачивания цепочек __wrapped__ (начальный патч от Daniel Urban и Aaron Iles).
  • bpo-18561: Пропуск name в ctypes._build_callargs(), если name равен NULL.
  • bpo-18559: Исправлена ошибка разыменования нулевого указателя в модуле _pickle.
  • bpo-18556: Проверка типа возвращаемого значения PyUnicode_AsWideChar() в ctypes.U_set().
  • bpo-17818: aifc.getparams теперь возвращает именованный кортеж.
  • bpo-18549: Удалён мёртвый код в socket_ntohl().
  • bpo-18530: Удалён лишний вызов stat в posixpath.ismount. Патч от Alex Gaynor.
  • bpo-18514: Исправлен недостижимый вызов Py_DECREF() в PyCData_FromBaseObj().
  • bpo-9177: Вызов read() или write() на закрытом SSL-сокете теперь вызывает ValueError, а не AttributeError. Патч от Senko Rasic.
  • bpo-18513: Исправлено поведение cmath.rect в отношении знаковых нулей на OS X 10.8 + gcc.
  • bpo-18479: Изменён venv Activate.ps1: deactivate теперь функция; Deactivate.ps1 удалён.
  • bpo-18480: Добавлен пропущенный вызов PyType_Ready в расширение _elementtree.
  • bpo-17778: Исправлено обнаружение тестов для test_multiprocessing. (Патч от Zachary Ware.)
  • bpo-18393: Частный модуль _gestalt и частные функции platform._mac_ver_gestalt, platform._mac_ver_lookup и platform._bcd2str удалены. Это не влияет на публичный интерфейс модуля platform.
  • bpo-17482: functools.update_wrapper (и functools.wraps) теперь правильно устанавливают атрибут __wrapped__, даже если базовая функция уже имеет атрибут __wrapped__.
  • bpo-18431: Новый парсер заголовков email теперь декодирует слова, закодированные по RFC2047, в структурированных заголовках.
  • bpo-18432: Метод queue модуля sched некорректно возвращал итератор вместо списка.
  • bpo-18044: Новый парсер заголовков email неправильно разбирал закодированные слова, когда закодированный символ непосредственно следовал за «?» после символа CTE, что приводило к ошибке декодирования. Теперь они декодируются правильно.
  • bpo-18101: Tcl.split() теперь обрабатывает строки, вложенные в кортеж, так же, как и байтовые строки.
  • bpo-18116: getpass всегда получал ошибку при проверке /dev/tty, поэтому всегда переключался на stdin, и затем вызывал исключение, если stdin нельзя было использовать (например, /dev/null). Также была утечка открытого файла. Все эти проблемы исправлены.
  • bpo-17198: Исправлена NameError в модуле dbm. Патч от Valentina Mukhamedzhanova.
  • bpo-18013: Исправлен cgi.FieldStorage для разбора образца формы W3C.
  • bpo-18020: Увеличена скорость html.escape на порядок. Патч от Matt Bryant.
  • bpo-18347: HTML-сериализатор ElementTree теперь сохраняет регистр закрывающих тегов.
  • bpo-17261: Обеспечено использование правильного адреса прокси-объектами multiprocessing.
  • bpo-18343: faulthandler.register() теперь сохраняет предыдущий обработчик сигнала при повторном вызове функции, так что faulthandler.unregister() корректно восстанавливает исходный обработчик.
  • bpo-17097: Модуль multiprocessing теперь игнорирует EINTR.
  • bpo-18339: Отрицательные целочисленные ключи в словаре unpickler.memo больше не вызывают segfault в C-расширении _pickle.
  • bpo-18240: Модуль HMAC больше не ограничен типом bytes и принимает любые bytes-подобные объекты, например, memoryview. Исходный патч от Jonas Borgström.
  • bpo-18224: Из создаваемого виртуального окружения удалён скрипт pydoc, так как он вызывает проблемы в Windows и не добавляет ценности по сравнению с python -m pydoc …
  • bpo-18155: Модуль csv теперь корректно обрабатывает CSV-файлы, использующие символ-разделитель, имеющий специальное значение в регулярных выражениях, вместо выбрасывания исключения.
  • bpo-14360: encode_quopri теперь можно успешно использовать в качестве кодировщика при создании объекта MIMEApplication.
  • bpo-11390: Добавлены параметры командной строки -o и -f в CLI doctest для указания опций doctest (и переход на использование argparse).
  • bpo-18135: ssl.SSLSocket.write() теперь вызывает OverflowError, если входная строка длиннее 2 гигабайт, а ssl.SSLContext.load_cert_chain() вызывает ValueError, если пароль длиннее 2 гигабайт. Модуль ssl не поддерживает частичную запись.
  • bpo-11016: Добавлена реализация на C модуля stat как _stat.
  • bpo-18248: Исправлена сборка libffi на AIX.
  • bpo-18259: Объявление sethostname в socketmodule.c для AIX.
  • bpo-18147: Добавлены диагностические функции в ssl.SSLContext(). get_ca_list() перечисляет все загруженные сертификаты CA, а cert_store_stats() возвращает количество загруженных X.509 сертификатов, X.509 сертификатов CA и списков отзыва (CRL).
  • bpo-18167: cgi.FieldStorage больше не выходит из строя при обработке multipart/form-data, когда \r\n появляется в конце 65535 байт без других символов новой строки.
  • bpo-18076: Введена функция importlib.util.decode_source().
  • bpo-18357: добавлены тесты для разности множеств dictview. Патч от Fraser Tweedale.
  • importlib.abc.SourceLoader.get_source() больше не преобразует SyntaxError или UnicodeDecodeError в ImportError.
  • bpo-18058: Загрузчик пакетов пространства имён теперь соответствует абстрактному базовому классу importlib.abc.InspectLoader, что позволяет пакетам пространства имён работать с runpy. (См. также: bpo-18057)
  • bpo-17177: Модуль imp планируется к удалению (pending deprecation).
  • подпроцесс: Предотвращено возможное двойное закрытие файловых дескрипторов родительского канала при возникновении ошибки в exec подпроцесса. Предотвращено регулярное многократное закрытие файлового дескриптора /dev/null, когда один из stdin, stdout или stderr был установлен в DEVNULL.
  • bpo-18194: Введены importlib.util.cache_from_source() и source_from_cache(), а эквивалентные функции в imp помечены как устаревшие.
  • bpo-17907: Функция imp.new_module() задокументирована как устаревшая в пользу types.ModuleType.
  • bpo-18192: Введён importlib.util.MAGIC_NUMBER, а imp.get_magic() задокументирована как устаревшая.
  • bpo-18149: Добавлена filecmp.clear_cache() для ручной очистки кэша filecmp. Патч от Mark Levitt.
  • bpo-18193: Добавлена importlib.reload().
  • bpo-18157: Прекращено использование imp.load_module() в pydoc.
  • bpo-16102: Восстановлена работа uuid._netbios_getnode() в Python 3.
  • bpo-17134: Добавлена ssl.enum_cert_store() в качестве интерфейса к хранилищу сертификатов Windows.
  • bpo-18143: Реализована ssl.get_default_verify_paths() для отладки расположения по умолчанию для cafile и capath.
  • bpo-17314: Перенос multiprocessing.forking на importlib.
  • bpo-11959: SMTPServer и SMTPChannel теперь принимают необязательный параметр map, использование которого позволяет избежать влияния на глобальное состояние.
  • bpo-18109: os.uname() теперь декодирует поля, используя кодировку локали, а socket.gethostname() декодирует имя хоста, используя кодировку локали, а не UTF-8 в строгом режиме.
  • bpo-18089: Реализован importlib.abc.InspectLoader.load_module.
  • bpo-18088: Введён importlib.abc.Loader.init_module_attrs для установки атрибутов модуля. Это приводит к предстоящему устареванию importlib.util.module_for_loader.
  • bpo-17403: urllib.parse.robotparser нормализует URL перед добавлением в правило. Это помогает консервативно обрабатывать некоторые виды некорректных URL. Патч предоставлен Mher Movsisyan.
  • bpo-18070: importlib.util.module_for_loader() теперь устанавливает атрибуты безусловно для правильной поддержки перезагрузки.
  • Добавлен importlib.util.module_to_load, возвращающий контекстный менеджер для предоставления правильного объекта модуля для загрузки.
  • bpo-18025: Исправлен segfault в io.BufferedIOBase.readinto(), когда read() необработанного потока возвращает больше байтов, чем запрошено.
  • bpo-18011: Как и предполагалось изначально, base64.b32decode() теперь вызывает binascii.Error при наличии символов, не входящих в алфавит base32, вместо TypeError.
  • bpo-18072: Реализованы importlib.abc.InspectLoader.get_code() и importlib.abc.ExecutionLoader.get_code().
  • bpo-8240: Установлен флаг SSL_MODE_ACCEPT_MOVING_WRITE_BUFFER на SSL-сокетах.
  • bpo-17269: Обходное решение для краха socket.getaddrinfo на MacOS X с портом None или «0» и флагом AI_NUMERICSERV.
  • bpo-16986: ElementTree теперь корректно работает с строковым вводом, когда внутренняя кодировка XML не UTF-8 или US-ASCII.
  • bpo-17996: Модуль socket теперь предоставляет константу AF_LINK на BSD и OSX.
  • bpo-17900: Разрешена сериализация рекурсивных OrderedDict. Уменьшен размер сериализованных данных и время сериализации.
  • bpo-17914: Добавлен os.cpu_count(). Патч от Yogesh Chaudhari на основе первоначального патча от Trent Nelson.
  • bpo-17812: Исправлена квадратичная сложность base64.b32encode(). Оптимизированы base64.b32encode() и base64.b32decode() (ускорение до 3 раз).
  • bpo-17980: Исправлена возможная атака на ssl.match_hostname() для отказа в обслуживании с помощью сертификатов со множеством подстановочных знаков (CVE-2013-2099).
  • bpo-15758: Исправлен FileIO.readall() так, чтобы он больше не имел сложности O(n**2).
  • bpo-14596: Объекты struct.Struct() теперь используют более компактную реализацию.
  • bpo-17981: SysLogHandler из logging теперь закрывает сокет при перехвате OSError, связанного с сокетом.
  • bpo-17964: Исправлен os.sysconf(): тип возвращаемого значения C-функции sysconf() – long, а не int.
  • Исправлены опечатки в модуле multiprocessing.
  • bpo-17754: ctypes.util.find_library() теперь не зависит от локали.
  • bpo-17968: Исправлена утечка памяти в os.listxattr().
  • bpo-17606: Исправлена поддержка закодированных байтовых строк в методах XMLGenerator characters() и ignorableWhitespace(). Оригинальный патч от Sebastian Ortiz Vasquez.
  • bpo-17732: Игнорировать параметры distutils.cfg, касающиеся путей установки, если активно виртуальное окружение.
  • bpo-17915: Исправлена совместимость xml.sax с файловыми объектами, возвращаемыми codecs.open().
  • bpo-16601: Перезапуск итерации по tarfile действительно перезапускается, а не продолжается с того же места. Патч от Michael Birtwell.
  • bpo-17289: Модуль readline теперь лучше взаимодействует с внешними модулями или приложениями, изменяющими глобальную переменную rl_completer_word_break_characters. Первоначальный патч от Bradley Froehle.
  • bpo-12181: Модуль select: исправлено определение struct kevent на 64-битных платформах OpenBSD. Патч от Federico Schwindt.
  • bpo-11816: Множественные улучшения модуля dis: генератор get_instructions, возможность перенаправления вывода в файл, абстракции Bytecode и Instruction. Патч от Nick Coghlan, Ryan Kelly и Thomas Kluyver.
  • bpo-13831: Встраивание строкового представления удалённого traceback в локальный traceback, вызываемый при возникновении исключения в задаче пула.
  • bpo-15528: Добавлен weakref.finalize для поддержки финализации с помощью колбэков слабых ссылок.
  • bpo-14173: Исправлено аварийное завершение при чтении обработчика сигналов во время завершения работы интерпретатора.
  • bpo-15902: Исправлена ошибка, из-за которой imp.load_module() принимал None в качестве файла при загрузке модуля расширения.
  • bpo-13721: SSLSocket.getpeercert() и SSLSocket.do_handshake() теперь вызывают OSError с кодом ENOTCONN вместо AttributeError, если SSLSocket не подключён.
  • bpo-14679: В html.parser добавлен __all__ (содержит только HTMLParser).
  • bpo-17802: Исправлена ошибка UnboundLocalError в html.parser. Первоначальные тесты от Thomas Barlow.
  • bpo-17358: Модули, загруженные через imp.load_source() и load_compiled() (а также через load_module() для расширений), теперь с большей вероятностью работают при перезагрузке.
  • bpo-17804: Новая функция struct.iter_unpack обеспечивает потоковую распаковку структурированных данных.
  • bpo-17830: При использовании keyword.py для обновления файла ключевых слов теперь сохраняются концы строк исходного файла.
  • bpo-17272: Request.full_url из urllib.request стал дескриптором. Исправлены ошибки при присваивании full_url. Патч от Demian Brecht.
  • bpo-17353: Plistlib создавал пустые теги данных при глубоко вложенных структурах данных.
  • bpo-11714: Использование оператора with для гарантии освобождения условной переменной семафором. Оригинальный патч от Thomas Rachel.
  • bpo-16624: subprocess.check_output теперь принимает аргумент input, позволяя передавать stdin подпроцесса в виде (байтовой) строки. Патч от Zack Weinberg.
  • bpo-17795: Откат обратно несовместимого изменения в SysLogHandler с доменными сокетами Unix.
  • bpo-16694: Добавлена чистая реализация модуля operator на Python. Патч от Zachary Ware.
  • bpo-11182: Удалён неиспользуемый и недокументированный класс pydoc.Scanner. Патч от Martin Morrison.
  • bpo-17741: Добавлен ElementTree.XMLPullParser – событийно-ориентированный парсер для неблокирующих приложений.
  • bpo-17555: Исправлена ForkAwareThreadLock: теперь размер реестра после fork не растёт экспоненциально с поколением процесса.
  • bpo-17707: Исправлена регрессия в методе get() multiprocessing.Queue – теперь он блокируется при коротких таймаутах.
  • bpo-17720: Исправлена реализация pickle.Unpickler на Python для корректной обработки кода операции APPENDS при использовании на объектах, не являющихся списками.
  • bpo-17012: shutil.which() больше не обращается к переменной окружения PATH, если указан пустой аргумент пути. Патч от Serhiy Storchaka.
  • bpo-17710: Исправлена ошибка SystemError в pickle при некорректном вводе.
  • bpo-17341: В сообщения об ошибках модуля re для недопустимых имён групп теперь включается само недопустимое имя.
  • bpo-17702: os.environ теперь вызывает KeyError с исходным именем переменной окружения (str на UNIX) вместо закодированного имени (bytes на UNIX).
  • bpo-16163: Версия pkgutil.iter_importers на основе importlib теперь работает для подмодулей. Первоначальный патч от Berker Peksag.
  • bpo-16804: Исправлена ошибка в модуле site, из-за которой выполнение 'python -S -m site' некорректно вызывало исключение.
  • bpo-15480: Удалён устаревший и неиспользуемый код TYPE_INT64 из marshal. Первоначальный патч от Daniel Riti.
  • bpo-2118: SMTPException теперь является подклассом OSError.
  • bpo-17016: Устранены возможные переполнения указателей и целочисленные переполнения в модуле re. Патч от Nickolai Zeldovich.
  • bpo-16658: Добавлен отсутствующий return в HTTPConnection.send(). Патч от Jeff Knupp.
  • bpo-9556: Пакет logging теперь позволяет указывать время суток для ротации TimedRotatingFileHandler.
  • bpo-14971: Обнаружение тестов unittest больше не путается, если у функции __name__ отличается от имени в словаре класса TestCase.
  • bpo-17487: Метод getparams модуля wave теперь возвращает namedtuple вместо обычного кортежа.
  • bpo-17675: Функция repr() для сокетов теперь показывает локальный и удалённый адреса (если они есть). Патч от Giampaolo Rodola’.
  • bpo-17093: Абстрактные базовые классы в importlib.abc теперь предоставляют значения по умолчанию или возбуждают разумные исключения для своих методов, чтобы их было удобнее использовать в вызовах super().
  • bpo-17566: Метод importlib.abc.Loader.module_repr() стал необязательным вместо абстрактного; теперь он возбуждает NotImplementedError, так что по умолчанию игнорируется.
  • bpo-17678: Удалено использование устаревшего метода в http/cookiejar.py: вызов get_origin_req_host() заменён на origin_req_host.
  • bpo-17666: Исправлено чтение gzip-файлов с дополнительным полем.
  • bpo-16475: В marshal добавлена поддержка создания экземпляров объектов, рекурсии и интернированных строк.
  • bpo-17502: Обработка значений DEFAULT в mock.side_effect, возвращающем итератор.
  • bpo-16795: В объекте ast.arguments унифицированы vararg с varargannotation и kwarg с kwargannotation. Смещение колонки для ast.Attribute теперь указывает на имя атрибута.
  • bpo-17434: Правильно возбуждается SyntaxError, если строка встречается между импортами из __future__.
  • bpo-17117: Инструкция import и декоратор @importlib.util.set_loader теперь устанавливают __loader__, если его значение равно None или атрибут отсутствует.
  • bpo-17032: Из сообщения об ошибке «NameError: global name ‘x’ is not defined» убрано слово «global». Патч от Ram Rachum.
  • bpo-18080: При сборке C-расширения на OS X, если компилятор переопределён через переменную окружения CC, использовать новый компилятор по умолчанию для компоновки, если LDSHARED также не переопределена. Это восстанавливает поведение Distutils, введённое в 3.2.3 и случайно убранное в 3.3.0.
  • bpo-18113: Исправлена утечка счётчика ссылок в методе set_userptr() модуля curses.panel. Сообщено Atsuo Ishimoto.
  • Реализация PEP 443 «Generic-функции с одиночной диспетчеризацией».
  • Реализация PEP 435 «Добавление типа Enum в стандартную библиотеку Python».
  • bpo-15596: Ускорена pickle-сериализация строк Unicode.
  • bpo-17572: Избегание цепочек исключений при передаче некорректных директив в time.strptime(). Начальный патч от Claudiu Popa.
  • bpo-17435: Метод __init__ класса threading.Timer больше не использует изменяемые значения по умолчанию для параметров args и kwargs.
  • bpo-17526: Исправлен IndexError, возбуждаемый при передаче кода без имени файла в inspect.findsource(). Начальный патч от Tyler Doyle.
  • bpo-17540: Добавлен параметр style в конфигурацию форматтера logging через словарь.
  • bpo-16692: Модуль ssl теперь поддерживает TLS 1.1 и TLS 1.2. Начальный патч от Michele Orrù.
  • bpo-17025: multiprocessing: снижение конкуренции в очередях Queue и SimpleQueue.
  • bpo-17536: В список браузеров webbrowser добавлены: www-browser, x-www-browser, iceweasel, iceape.
  • bpo-17150: pprint теперь использует перенос строк для длинных строковых литералов.
  • bpo-17488: Значение по умолчанию параметра bufsize в Popen модуля подпроцесса изменено с небуферизованного (0) на буферизованное (-1), чтобы соответствовать ожидаемому поведению существующего кода и поведению модуля подпроцесса в Python 2, избегая трудноуловимых ошибок.
  • bpo-17521: Исправлено невключение логгера после двух вызовов fileConfig().
  • bpo-17508: Исправлена конфигурация MemoryHandler в dictConfig(), когда целевой обработчик не был настроен первым.
  • bpo-17209: curses.window.get_wch() теперь правильно обрабатывает KeyboardInterrupt (CTRL+C).
  • bpo-5713: smtplib теперь обрабатывает коды ошибки 421 (закрытие соединения) при отправке почты: закрывает сокет и сообщает код 421 через исключение, соответствующее команде, получившей этот ответ.
  • bpo-16997: unittest.TestCase теперь предоставляет контекстный менеджер subTest() для простого процедурного создания небольших тестовых экземпляров.
  • bpo-17485: Также удалять заголовок Content-Length запроса, если удалён атрибут data. (Продолжение задачи bpo-16464).
  • bpo-15927: CVS теперь правильно разбирает экранированные символы новой строки и возврата каретки при синтаксическом анализе с отключённой обработкой кавычек.
  • bpo-17467: добавлена поддержка readline и readlines для mock_open в unittest.mock.
  • bpo-13248: удалены устаревшие и недокументированные функции difflib.isbjunk, isbpopular.
  • bpo-17192: обновлена библиотека libffi модуля ctypes до v3.0.13. Это напрямую решает проблему смещения стека на x86 и проблемы на некоторых более новых платформах.
  • bpo-8862: исправлена очистка curses при прерывании getkey сигналом.
  • bpo-17443: imaplib.IMAP4_stream использовал небуферизованный ввод-вывод по умолчанию в подпроцессе, но код imap предполагает буферизованный ввод-вывод. В Python2 это работало случайно. Теперь IMAP4_stream явно использует буферизованный ввод-вывод.
  • bpo-17476: исправлена регрессия по сравнению с Python2 в недокументированной функции pydoc 'allmethods'; в ней отсутствовали несвязанные методы класса.
  • bpo-17474: удалены устаревшие методы класса Request.
  • bpo-16709: порядок обнаружения unittest больше не зависит от файловой системы. Патч от Jeff Ramnani.
  • Использовать HTTPS-адрес PyPI для загрузки, игнорируя любой обычный HTTP-URL в pypirc.
  • bpo-5024: sndhdr.whichhdr теперь возвращает количество кадров для WAV-файлов, а не -1.
  • bpo-17460: удалён аргумент strict у HTTPConnection, а также убрано предупреждение DeprecationWarning, выдававшееся с версии 3.2.
  • bpo-16880: не предполагать, что _imp.load_dynamic() определена в модуле imp.
  • bpo-16389: исправлена регрессия производительности по сравнению с Python 3.1 при кэшировании скомпилированных регулярных выражений.
  • Добавлены отсутствующие FeedParser и BytesFeedParser в email.parser.__all__.
  • bpo-17431: исправлен отсутствующий импорт BytesFeedParser в email.parser.
  • bpo-12921: send_error из http.server принимает аргумент explain для отправки дополнительной информации в ответе. Патч предоставлен Karl.
  • bpo-17414: добавлены timeit, repeat и default_timer в timeit.__all__.
  • bpo-1285086: избавиться от хака с подсчётом ссылок и ускорить urllib.parse.unquote() и urllib.parse.unquote_to_bytes().
  • bpo-17099: вызывать ValueError в importlib.find_loader(), если __loader__ не установлен, что согласуется с поведением при установке атрибута в None.
  • Предоставить константу O_PATH в модуле os, если она доступна.
  • bpo-17368: исправлена ошибка смещения на единицу в декодере JSON Python, вызывавшая сбой при декодировании пустых литералов объектов, если был указан object_pairs_hook.
  • bpo-17385: исправлено квадратичное поведение в threading.Condition. Теперь очередь FIFO использует deque вместо списка.
  • bpo-15806: добавлен contextlib.ignore(). Он создаёт менеджер контекста для игнорирования указанных исключений, заменяя идиому «except SomeException: pass».
  • bpo-14645: классы генератора email теперь везде создают вывод с использованием указанного разделителя строк. Ранее, если пролог, эпилог или тело были сохранены с другим разделителем строк, использовался именно он. Это исправление устраняет проблему несоответствия RFC в smtplib.send_message.
  • bpo-17278: исправлен сбой в heapq.heappush() и heapq.heappop() при одновременном изменении размера списка.
  • bpo-16962: использование getdents64 вместо устаревшего системного вызова getdents в модуле подпроцесса на Linux.
  • bpo-16935: теперь unittest считает модуль пропущенным, если он вызывает исключение SkipTest, вместо того чтобы считать его ошибкой. Патч от Zachary Ware.
  • bpo-17018: повторять попытку в Process.join() при сбое os.waitpid() с ошибкой EINTR.
  • bpo-17223: модуль array: исправлен сбой при преобразовании массива, содержащего недопустимые символы (вне диапазона [U+0000; U+10ffff]), в Unicode: repr(array), str(array) и array.tounicode(). Патч написан Manuel Jacob.
  • bpo-17197: модули profile/cProfile рефакторизованы таким образом, чтобы код вспомогательных функций run() и runctx() не дублировался в обоих модулях.
  • bpo-14720: sqlite3: правильно преобразовывать микросекунды datetime. Патч от Lowe Thiderman.
  • bpo-15132: Аргумент defaultTest в unittest.TestProgram теперь может принимать список. Патч от Jyrki Pulliainen.
  • bpo-17225: Декодер JSON теперь считает колонки в первой строке с 1, как и в остальных строках.
  • bpo-6623: Добавлено явное DeprecationWarning для ftplib.netrc, который уже давно устарел и не документирован.
  • bpo-13700: Исправлена обработка байтов и строк при аутентификации в imaplib, если указан authobject.
  • bpo-13153: Функции Tkinter теперь вызывают TclError вместо ValueError, если строковый аргумент содержит символы вне BMP.
  • bpo-9669: Защита re от бесконечных циклов при поиске совпадений нулевой длины в нежадных повторениях. Патч от Matthew Barnett.
  • bpo-13169: Максимальное число повторений в регулярном выражении увеличено с 65534 до 2147483647 (на 32-разрядных платформах) или до 4294967294 (на 64-разрядных).
  • bpo-17143: Исправлен отсутствующий импорт в модуле trace. Начальный патч от Berker Peksag.
  • bpo-15220: Алгоритм разбиения строк в email.feedparser теперь проще и быстрее.
  • bpo-16743: Исправлено переполнение при проверке mmap на 32-битной Windows.
  • bpo-16996: Модуль webbrowser теперь использует shutil.which() для поиска веб-браузера в пути поиска исполняемых файлов.
  • bpo-16800: tempfile.gettempdir() больше не оставляет временные файлы при заполненном диске. Оригинальный патч от Amir Szekely.
  • bpo-17192: Импортирован libffi-3.0.12.
  • bpo-16564: Исправлена регрессия относительно Python2 в работе email.encoders.encode_7or8bit при использовании с бинарными данными.
  • bpo-17052: Обнаружение тестов в unittest должно использовать self.testLoader.
  • bpo-4591: Значения uid и gid больше 2**31 теперь поддерживаются.
  • bpo-17141: random.vonmisesvariate() больше не зависает при больших значениях каппа.
  • bpo-17149: Исправлено random.vonmisesvariate, теперь всегда возвращает результаты в [0, 2*math.pi].
  • bpo-1470548: XMLGenerator теперь работает с бинарными выходными потоками.
  • bpo-6975: os.path.realpath() теперь корректно разрешает множественные вложенные симлинки на платформах POSIX.
  • bpo-13773: sqlite3.connect() получил новый параметр uri для передачи имени файла как URI, что позволяет передавать дополнительные параметры.
  • bpo-16564: Исправлена регрессия относительно Python2 в работе email.encoders.encode_noop при использовании с бинарными данными.
  • bpo-10355: Свойства mode, name, encoding и newlines теперь работают с объектами SpooledTemporaryFile, даже если они ещё не были перенесены на диск. Устаревший метод xreadline (который никогда не работал в Python 3) удалён.
  • bpo-16686: Исправлено множество ошибок в модуле audioop. Исправлены падения в avgpp(), maxpp() и ratecv(). Исправлено целочисленное переполнение в add(), bias() и ratecv(). reverse(), lin2lin() и ratecv() больше не теряют точность для 32-битных сэмплов. max() и rms() больше не возвращают отрицательный результат, а различные другие функции теперь корректно работают с 32-битным сэмплом -0x80000000.
  • bpo-17073: Исправлены некоторые целочисленные переполнения в модуле sqlite3.
  • bpo-16723: httplib.HTTPResponse больше не помечается как закрытый при автоматическом закрытии соединения.
  • bpo-15359: Добавлена поддержка протокола CAN_BCM в модуль socket. Патч от Brian Thorne.
  • bpo-16948: Исправлено quoted-printable кодирование тела сообщения для наборов символов, отличных от latin1, в пакете email.
  • bpo-16811: Исправлено свёртывание заголовков без значения во временных политиках email.
  • bpo-17132: Обновлён символ для изменений в грамматике «yield from».
  • bpo-17076: Копирование расширенных атрибутов (xattrs) стало более устойчивым к отсутствию поддержки ФС. Патч от Thomas Wouters.
  • bpo-17089: Парсер Expat теперь корректно работает со строковым вводом, когда внутренняя кодировка XML не является UTF-8 или US-ASCII. Кроме того, он теперь принимает байты и строки размером более 2 ГБ.
  • bpo-6083: Исправлены множественные ошибки сегментации, возникающие при разборе вложенной изменяемой последовательности функцией PyArg_ParseTuple.
  • bpo-5289: Исправлена работа ctypes.util.find_library в Solaris.
  • bpo-17106: Исправлена ошибка сегментации в io.TextIOWrapper, когда нижележащий поток или декодер выдают данные неожиданного типа (например, при инициализации io.TextIOWrapper текстовым потоком или использовании кодера bytes-to-bytes).
  • bpo-17015: Когда у объекта Mock указана спецификация, он теперь проверяет свою сигнатуру при сопоставлении вызовов, что позволяет сопоставлять аргументы по позиции или по имени.
  • bpo-15633: httplib.HTTPResponse теперь помечается как закрытый, когда сервер отправляет меньше данных, чем указано в Content-Length.
  • bpo-12268: Методы записи файловых объектов модуля io больше не завершаются досрочно при прерывании одного из системных вызовов записи (EINTR).
  • bpo-6972: Модуль zipfile больше не перезаписывает файлы за пределами целевого пути при извлечении вредоносных zip-файлов.
  • bpo-4844: ZipFile теперь вызывает исключение BadZipFile при открытии ZIP-файла с неполной записью «End of Central Directory». Автор исправления: Guilherme Polo и Alan McIntyre.
  • bpo-17071: Signature.bind() теперь работает, когда один из именованных аргументов называется self.
  • bpo-12004: Исправлена внутренняя ошибка в PyZipFile при записи некорректного Python-файла. Исправление от Ben Morgan.
  • Py_compile теперь использует importlib настолько, насколько это возможно, чтобы избежать дублирования кода. Теперь код вызывает FileExistsError, если путь к файлу для байт-кода является символической ссылкой или нерегулярным файлом, предупреждая, что import не сохранит тип пути, если запишет туда.
  • bpo-16972: site.addpackage() теперь учитывает уже известные пути, даже если ни один из них не передан явно. Отчёт об ошибке и исправление от Kirill.
  • bpo-1602133: в Mac OS X сборка разделяемой библиотеки (--enable-shared) теперь корректно заполняет переменную os.environ.
  • bpo-15505: unittest.installHandler больше не предполагает, что обработчик SIGINT является вызываемым объектом.
  • bpo-13454: Исправлена аварийная остановка при удалении итератора, созданного itertools.tee(), если все остальные итераторы были сильно продвинуты до этого.
  • bpo-12411: Исправление cgi.parse_multipart для корректного использования границ байтов и данных в байтах. Исправление от Jonas Wagner.
  • bpo-16957: shutil.which() больше не ищет простое имя файла в текущем каталоге на Unix и больше не ищет относительный путь к файлу с частью каталога в каталогах PATH. Исправление от Thomas Kluyver.
  • bpo-1159051: GzipFile теперь вызывает EOFError при чтении повреждённого файла с усечёнными заголовком или подвалом.
  • bpo-16993: shutil.which() теперь сохраняет регистр букв в пути и расширении в Windows.
  • bpo-16992: В Windows в signal.set_wakeup_fd проверяется аргумент файлового дескриптора.
  • bpo-16422: Для совместимости с версией Python на C, версия decimal теперь использует строки вместо целых чисел для констант режима округления.
  • bpo-15861: tkinter теперь корректно работает со списками и кортежами, содержащими строки с пробелами, обратными слешами или несбалансированными фигурными скобками.
  • bpo-9720: zipfile теперь записывает корректные локальные заголовки для файлов размером более 4 ГиБ.
  • bpo-16955: Исправлен метод poll() для сокетных соединений multiprocessing в Windows.
  • SSLContext.load_dh_params() теперь корректно закрывает входной файл.
  • bpo-15031: Рефакторинг кода управления .pyc-файлами для сокращения дублирования. Спасибо Ronan Lamy за сообщение и первую попытку решить проблему.
  • bpo-16398: Оптимизация deque.rotate(): теперь она только перемещает указатели и не трогает нижележащие данные с помощью increfs и decrefs.
  • bpo-16900: Выдаётся ResourceWarning, когда ssl-сокет остаётся незакрытым.
  • bpo-13899: \A, \Z и \B теперь корректно сопоставляют литералы A, Z и B при использовании внутри символьных классов (например, '[\A]'). Исправление от Matthew Barnett.
  • bpo-15545: Исправлена регрессия в методе iterdump модуля sqlite3, которая приводила к сбою, если в соединении использовалась фабрика строк (например, sqlite3.Row), создающая неупорядочиваемые объекты. (Регрессия была введена исправлением для 9750).
  • fcntl: добавлена константа F_DUPFD_CLOEXEC, доступная на Linux 2.6.24+.
  • bpo-15972: Исправлены сообщения об ошибках, когда функции os, ожидающие имя файла или файловый дескриптор, получают неверный тип.
  • bpo-8109: Модуль ssl теперь поддерживает SNI на стороне сервера, благодаря методу SSLContext.set_servername_callback(). Патч от Daniel Black.
  • bpo-16860: В tempfile используется O_CLOEXEC, если доступен, для атомарной установки флага close-on-exec.
  • bpo-16674: random.getrandbits() теперь работает на 20–40% быстрее для маленьких целых чисел.
  • bpo-16009: Сообщения об ошибках JSON теперь содержат больше информации.
  • bpo-16828: Исправлена ошибка, некорректно возникавшая при вызове bz2.compress(b'') и bz2.BZ2Compressor.compress(b''). Первоначальный патч от Martin Packman.
  • bpo-16833: В http.client.HTTPConnection заголовки и тело запроса больше не объединяются, если полезная нагрузка превышает 16 КБ, так как это без пользы потребляет больше памяти. Патч от Benno Leslie.
  • bpo-16541: tk_setPalette() теперь работает с именованными аргументами.
  • bpo-16820: В configparser parser.popitem() больше не вызывает ValueError. Это позволяет parser.clean() работать корректно.
  • bpo-16820: В configparser parser['section'] = {} теперь сохраняет порядок секций внутри парсера. Это также заставляет parser.update() сохранять порядок секций.
  • bpo-16820: В configparser parser['DEFAULT'] = {} теперь корректно очищает предыдущие значения, сохранённые в секции по умолчанию. То же самое касается parser.update({'DEFAULT': {}}).
  • bpo-9586: Переопределён SEM_FAILED на MacOSX для корректной работы компилятора.
  • bpo-16787: Увеличен размер выходных буферов по умолчанию в asyncore и asynchat для снижения загрузки ЦП и повышения пропускной способности.
  • bpo-10527: Модуль multiprocessing теперь использует poll() вместо select(), если это возможно.
  • bpo-16688: Регулярные выражения, содержащие обратные ссылки, теперь корректно работают с не-ASCII строками. Патч от Matthew Barnett.
  • bpo-16486: Файлы aifc теперь работают как менеджеры контекста.
  • bpo-16485: Теперь файловые дескрипторы закрываются, если при закрытии файла aifc не удалось исправить заголовок.
  • bpo-16640: В модуле sched под блокировкой выполняется меньше кода.
  • bpo-16165: sched.scheduler.run() больше не блокирует планировщик для других потоков.
  • bpo-16641: Значения по умолчанию sched.scheduler.enter() больше нельзя изменить.
  • bpo-16618: Поведение glob.glob в отношении ведущих точек теперь единообразно для строк и байтов. Патч от Serhiy Storchaka.
  • bpo-16788: Добавлена функция samestat в Lib/ntpath.py
  • bpo-16713: При разборе URL-адресов 'tel' с помощью urlparse параметры теперь отделяются от пути.
  • bpo-16443: Добавлены строки документации к объектам совпадений регулярных выражений. Патч от Anton Kasyanov.
  • bpo-15701: Исправлен вызов метода info у HTTPError, теперь он возвращает информацию о заголовках.
  • bpo-16752: Добавлен отсутствующий импорт в modulefinder. Патч от Berker Peksag.
  • bpo-16646: ftplib.FTP.makeport() мог терять подробности ошибок сокета. (патч от Serhiy Storchaka)
  • bpo-16626: Исправлена бесконечная рекурсия в glob.glob() на Windows, когда шаблон содержит подстановочный символ в букве диска или UNC-пути. Патч от Serhiy Storchaka.
  • bpo-15783: За исключением числовых методов, C-версия decimal теперь поддерживает все значения None по умолчанию, присутствующие в decimal.py. Ранее эти значения были по большей части недокументированы.
  • bpo-11175: argparse.FileType теперь принимает аргументы encoding и errors. Патч от Lucas Maystre.
  • bpo-16488: Объекты epoll() теперь поддерживают оператор with. Патч от Serhiy Storchaka.
  • bpo-16298: В HTTPResponse.read() сокет закрывается, когда отсутствует Content-Length и входящий поток завершён. Патч от Eran Rundstein.
  • bpo-16049: Добавлен класс abc.ABC, позволяющий создавать абстрактные базовые классы через наследование вместо более громоздкого metaclass=ABCMeta. Патч от Bruno Dupuis.
  • Открыть флаги TCP_FASTOPEN и MSG_FASTOPEN в модуле socket, когда они доступны.
  • bpo-15701: Добавить атрибут .headers к urllib.error.HTTPError. Патч предоставлен Berker Peksag.
  • bpo-15872: Исправлен регресс в 3.3, внесенный новой реализацией shutil.rmtree на основе файловых дескрипторов, из-за которого некоторые ошибки не игнорировались при установленном ignore_errors. Патч от Alessandro Moura и Serhiy Storchaka.
  • bpo-16248: Отключить выполнение кода из домашнего каталога пользователя через tkinter при передаче Python флага -E. Патч от Zachary Ware.
  • bpo-13390: Новая функция sys.getallocatedblocks() возвращает количество текущих выделенных блоков памяти.
  • bpo-16628: Исправлена утечка памяти в ctypes.resize().
  • bpo-13614: Исправлена ошибка register в setup.py при неверном rst в описании. Патч от Julien Courteau и Pierre Paul Lefebvre.
  • bpo-13512: Безопасное создание ~/.pypirc (CVE-2011-4944). Первоначальный патч от Philip Jenvey, протестировано Mageia и Debian.
  • bpo-7719: Заставить distutils игнорировать файлы .nfs* вместо того, чтобы не справляться с ними позже. Первоначальный патч от SilentGhost и Jeff Ramnani.
  • bpo-13120: Разрешён вызов pdb.set_trace() из потока. Патч от Ilya Sandler.
  • bpo-16585: Кодировщики CJK теперь поддерживают обработчики ошибок, возвращающие байты согласно PEP 383.
  • bpo-10182: Модуль re больше не усекает индексы до 32 бит. Патч от Serhiy Storchaka.
  • bpo-16333: Использовать (",", ": ") в качестве разделителей по умолчанию в json при указании отступа, чтобы избежать завершающих пробелов. Патч от Serhiy Storchaka.
  • bpo-16573: В 2to3 обрабатывать enumerate() как потребляющий вызов, чтобы лишние вызовы list() не добавлялись к filter(), map() и zip(), которым непосредственно передан enumerate().
  • bpo-16464: Сбрасывать заголовок Content-Length при повторном использовании запроса urllib с новыми данными.
  • bpo-12848: Чистая реализация pickle на Python теперь обрабатывает длины объектов как беззнаковые 32-битные целые числа, как и реализация на C. Патч от Serhiy Storchaka.
  • bpo-16423: urllib.request теперь поддерживает URL data:. Патч от Mathias Panzenböck.
  • bpo-4473: Добавлен метод POP3.stls() для переключения сессии POP3 с открытым текстом на зашифрованную на поддерживаемых серверах. Патч от Lorenzo Catucci.
  • bpo-4473: Добавлен метод POP3.capa() для запроса возможностей, объявленных POP3-сервером. Патч от Lorenzo Catucci.
  • bpo-4473: Обеспечено корректное закрытие сокета в POP3.close(). Патч от Lorenzo Catucci.
  • bpo-16522: Добавлен флаг FAIL_FAST в doctest.
  • bpo-15627: Добавлен метод importlib.abc.InspectLoader.source_to_code().
  • bpo-16408: Исправлено незакрытие файловых дескрипторов в ошибочных ситуациях в модуле zipfile. Патч от Serhiy Storchaka.
  • bpo-14631: Добавлен новый weakref.WeakMethod для имитации слабых ссылок на связанные методы.
  • bpo-16469: Исправлены исключения при преобразованиях float в Fraction и Decimal в Fraction для специальных значений, чтобы они были согласованы с преобразованиями float в int и Decimal в int. Патч от Alexey Kachayev.
  • bpo-16481: multiprocessing больше не допускает утечки дескрипторов процессов в Windows.
  • bpo-12428: Добавлена чистая реализация functools.partial() на Python. Патч от Brian Thorne.
  • bpo-16140: Модуль подпроцесса больше не закрывает дважды родительские файловые дескрипторы своего дочернего subprocess.PIPE при ошибке дочернего процесса перед exec().
  • Удалён вызов print в stdout из модуля подпроцесса, который мог произойти, если дочерний процесс записывал мусор в свой канал ошибок перед exec.
  • Модуль подпроцесса теперь вызывает собственное исключение SubprocessError вместо RuntimeError в различных ошибочных ситуациях, которые не должны происходить в обычных условиях.
  • bpo-16327: Модуль подпроцесса больше не допускает утечки файловых дескрипторов, используемых для каналов stdin/stdout/stderr, в дочерний процесс при сбое fork().
  • bpo-14396: Обработка редкого случая, когда waitpid возвращает 0, хотя этого не ожидается, в subprocess.Popen.wait().
  • bpo-16411: Исправлена ошибка, при которой zlib.decompressobj().flush() мог пытаться обратиться к ранее освобождённой памяти. Патч от Serhiy Storchaka.
  • bpo-16357: исправлен вызов accept() на SSLSocket, созданном через SSLContext.wrap_socket(). Оригинальный патч от Jeff McNeil.
  • bpo-16409: Колбэк reporthook из устаревшего API urllib.request.urlretrieve теперь корректно передаёт постоянный ненулевой block_size, как это было в Python 3.2 и 2.7. Это соответствует поведению urllib.request.URLopener.retrieve.
  • bpo-16431: Использовать информацию о типе при создании подтипа Decimal из аргумента Decimal.
  • bpo-15641: Очистка устаревших классов из importlib. Патч от Taras Lyapun.
  • bpo-16350: zlib.decompressobj().decompress() теперь накапливает данные из последовательных вызовов после EOF в unused_data, вместо сохранения только аргумента последнего вызова. decompressobj().flush() теперь корректно устанавливает unused_data и unconsumed_tail. Также исправлена ошибка обработки MemoryError при установке атрибута unconsumed_tail. Патч от Serhiy Storchaka.
  • bpo-12759: sre_parse теперь вызывает соответствующую ошибку, если имя группы отсутствует. Первоначальный патч от Serhiy Storchaka.
  • bpo-16152: исправлен tokenize, чтобы игнорировать пробельные символы в конце кода, если не найдена новая строка. Патч от Ned Batchelder.
  • bpo-16284: Предотвращение хранения ненужных ссылок на рабочие функции в concurrent.futures.ThreadPoolExecutor.
  • bpo-16230: Исправлена ошибка в select.select(), когда один из списков меняет размер во время итерации. Патч от Serhiy Storchaka.
  • bpo-16228: Исправлена ошибка в модуле json, когда список меняет размер во время кодирования. Патч от Serhiy Storchaka.
  • bpo-16351: Новая функция gc.get_stats() возвращает статистику сборки мусора по поколениям.
  • bpo-14897: Улучшены сообщения об ошибках для struct.pack и struct.pack_into. Патч от Matti Mäki.
  • bpo-16316: mimetypes теперь распознаёт расширения .xz и .txz (.tar.xz). Патч от Serhiy Storchaka.
  • bpo-12890: cgitb больше не выводит ложные теги <p> в текстовом режиме, когда указан параметр logdir.
  • bpo-16307: Исправлена проблема, при которой multiprocessing.Pool.map_async не вызывал свои колбэки. Патч от Janne Karila.
  • bpo-16305: Исправлена ошибка сегментации, возникающая при прерывании math.factorial.
  • bpo-16116: Исправлены пути include и library для корректной сборки C-расширений в виртуальных окружениях.
  • bpo-16245: Исправлены значения нескольких сущностей в html.entities.html5.
  • bpo-16301: Исправлена проверка localhost в urllib/request.py для URL file://.
  • bpo-16250: Исправлены вызовы URLError, у которых атрибут filename был расположен неправильно для исключения.
  • bpo-10836: Исправлено исключение, возникающее при отсутствии файла в urlretrieve. Первоначальный патч от Ezio Melotti.
  • bpo-14398: Исправлены ошибки усечения размера и переполнения в модуле bz2.
  • bpo-12692: Исправлена утечка ресурсов в urllib.request при общении с HTTP-сервером, который не включает заголовок Connection: close в свои ответы.
  • bpo-12034: Исправлено ложное кэширование результата в check_GetFinalPathNameByHandle. Патч от Atsuo Ishimoto.
  • Улучшение производительности lzma.LZMAFile (см. также bpo-16034).
  • bpo-16220: wsgiref теперь всегда вызывает close() для итерируемого ответа. Патч от Brent Tubbs.
  • bpo-16270: urllib может зависать при использовании контекстного менеджера для получения файлов через FTP. Патч от Giampaolo Rodola’.
  • bpo-16461: Библиотека Wave теперь должна работать с WAV-файлами размером до 4 ГБ и частотой дискретизации 44100 Гц.
  • bpo-16176: Корректное определение Windows 8 через platform.platform()
  • bpo-16088: Метод send_error класса BaseHTTPRequestHandler теперь включает заголовок Content-Length в свой ответ. Патч от Antoine Pitrou.
  • bpo-16114: Модуль подпроцесс больше не выдаёт вводящее в заблуждение сообщение об ошибке о том, что args[0] не существует, когда один из ключевых аргументов cwd или executable указывал на несуществующий путь.
  • bpo-16169: Исправлено смешение errno и winerror в ctypes.WinError().
  • bpo-16110: logging.fileConfig теперь принимает предварительно инициализированный экземпляр ConfigParser .
  • bpo-1492704: shutil.copyfile() теперь вызывает отдельное исключение SameFileError, если исходный и целевой файлы совпадают. Патч от Atsuo Ishimoto.
  • bpo-13896: Экземпляры shelf теперь можно использовать в качестве контекстного менеджера с 'with'. Оригинальный патч от Filip Gruszczyński.
  • bpo-15417: Добавлена поддержка csh и fish в скриптах активации venv.
  • bpo-14377: ElementTree.write и некоторые функции уровня модуля имеют новый параметр - короткие_пустые_элементы. Он управляет тем, как выводятся элементы без содержимого.
  • bpo-16089: Возвращена возможность ElementTree.TreeBuilder работать с element_factory, не являющимся Element (исправление регрессии в SimpleTAL).
  • bpo-9650: Добавлен список часто используемых кодов форматирования в документацию time.strftime и time.strptime. Оригинальный патч от Mike Hoy.
  • bpo-15452: Сокетный слушатель конфигурации модуля logging теперь имеет опцию verify, которая позволяет приложению применить функцию проверки к полученным данным конфигурации до их обработки.
  • bpo-16034: Исправлено падение производительности в новой реализации bz2.BZ2File. Начальный патч от Serhiy Storchaka.
  • pty.spawn() теперь возвращает статус дочернего процесса, возвращаемый os.waitpid().
  • bpo-15756: subprocess.poll() теперь корректно обрабатывает errno.ECHILD, чтобы возвращать код возврата 0, если дочерний процесс уже завершился или его ожидание невозможно.
  • bpo-15323: Улучшено сообщение об ошибке Mock.assert_called_once_with().
  • bpo-16064: unittest -m утверждает, что исполняемый файл – “python”, а не “python3”.
  • bpo-12376: Передача параметров в вызове super TextTestResult.__init__().
  • bpo-15222: Вставка пустой строки после каждого сообщения в почтовых ящиках mbox.
  • bpo-16013: Исправлена проблема разбора csv.Reader с завершающими кавычками. Патч от Serhiy Storchaka.
  • bpo-15421: Исправлен OverflowError в Calendar.itermonthdates() после datetime.MAXYEAR. Патч от Cédric Krier.
  • bpo-16112: platform.architecture некорректно экранирует аргумент для /usr/bin/file. Патч от David Benjamin.
  • bpo-15970: xml.etree.ElementTree теперь корректно сериализует пустые HTML-элементы ‘meta’ и ‘param’.
  • bpo-15842: Методы SocketIO.{readable,writable,seekable} теперь вызывают ValueError, когда файлоподобный объект закрыт. Патч от Alessandro Moura.
  • bpo-15876: Исправлена утечка ссылок в модуле curses: window.encoding.
  • bpo-15881: Исправлен хук atexit в multiprocessing. Оригинальный патч от Chris McDonough.
  • bpo-15841: Методы readable(), writable() и seekable() объектов io.BytesIO и io.StringIO теперь вызывают ValueError, когда объект закрыт. Патч от Alessandro Moura.
  • bpo-15447: Использовать subprocess.DEVNULL в webbrowser вместо явного открытия os.devnull и оставления его открытым.
  • bpo-15509: webbrowser.UnixBrowser больше не передает пустые аргументы в Popen, когда подстановки %action дают пустые строки.
  • bpo-12776: Функция типа argparse (указанная через add_argument) вызывается только один раз. Раньше она вызывалась дважды, когда был указан аргумент по умолчанию и аргумент также передавался в командной строке. Это было особенно проблематично для типа FileType, так как файл по умолчанию всегда открывался, даже если в командной строке был указан файл. (См. также: bpo-11839)
  • bpo-15906: Исправлена регрессия в argparse, вызванная предыдущим изменением, когда action='append', type='str' и default=[].
  • bpo-16113: Добавлен модуль sha3 на основе эталонной реализации Keccak 3.2. Модуль hashlib имеет четыре дополнительных алгоритма хеширования: sha3_224, sha3_256, sha3_384 и sha3_512. В рамках патча некоторый общий код был перемещён из _hashopenssl.c в hashlib.h.
  • ctypes.call_commethod был удалён, так как использовался только в недействующей директории samples.
  • bpo-16692: Добавлена поддержка TLSv1.1 и TLSv1.2 для модуля ssl.
  • bpo-16832: Добавлена функция abc.get_cache_token() для предоставления поддержки проверки актуальности кэша в ABCMeta.

IDLE

  • bpo-18429: Format / Format Paragraph теперь работает, когда выбраны блоки комментариев. Как и для текстовых блоков, лучше всего это работает, когда выделение включает только полные строки.
  • bpo-18226: Добавлены строки документации и модульные тесты для FormatParagraph.py. Оригинальные патчи от Todd Rovito и Phil Webster.
  • bpo-18279: Форматирование – удаление завершающих пробелов больше не помечает файл как изменённый, если он не был изменён. Это исправление последовало за добавлением тестового файла, изначально написанного Phil Webster (основная цель задачи).
  • bpo-7136: В меню File IDLE пункт «New Window» переименован в «New File». Патч от Tal Einat, Roget Serwy и Todd Rovito.
  • Удалены неиспользуемые импорты из imp.
  • bpo-18196: Устранено отображение ложных трассировок SystemExit.
  • bpo-5492: Устранена трассировка при выходе из IDLE, вызванная состоянием гонки.
  • bpo-17511: Диалог поиска IDLE остаётся открытым после нажатия «Find Next». Оригинальный патч от Sarah K.
  • bpo-18055: IDLE переведён с модуля imp на importlib.
  • bpo-15392: Создан фреймворк для модульного тестирования IDLE. Первичный патч от Rajagopalasarma Jayakrishnan. См. Lib/idlelib/idle_test/README.txt для информации о том, как запускать тесты IDLE.
  • bpo-14146: Подсветка строки исходного кода при отладке в Windows.
  • bpo-17838: Разрешено переназначение sys.stdin.
  • bpo-13495: Устранена двойная загрузка делегатора цветов в IDLE.
  • bpo-17798: IDLE теперь может редактировать новые файлы, указанные в командной строке.
  • bpo-14735: Обновлена документация IDLE: убрано упоминание «Control-Z в Windows».
  • bpo-17532: Меню Options для IDLE всегда отображается в OS X. Патч от Guilherme Simões.
  • bpo-17585: Исправлена регрессия IDLE. Теперь закрывается при вызове exit() или quit().
  • bpo-17657: В диалоге «О программе» IDLE теперь отображается полная версия Tk. Патч от Todd Rovito.
  • bpo-17613: Устранена трассировка при удалении раскраски синтаксиса в IDLE.
  • bpo-1207589: Патч обратной совместимости для контекстного меню в IDLE.
  • bpo-16887: IDLE теперь принимает Cancel в диалоге tabify/untabify.
  • bpo-17625: В IDLE диалог замены закрывается после использования.
  • bpo-14254: IDLE теперь корректно обрабатывает readline при перезапусках оболочки.
  • bpo-17614: IDLE больше не вызывает исключение при быстром закрытии файла.
  • bpo-6698: IDLE теперь открывает только окно редактора, если это настроено.
  • bpo-8900: Использование клавиатурных сокращений в IDLE для открытия файла больше не вызывает исключение.
  • bpo-6649: Исправлен отсутствующий код возврата при выходе из IDLE. Патч от Guilherme Polo.
  • bpo-17114: IDLE теперь использует нестрогий парсер конфигурации.
  • bpo-9290: В IDLE потоки sys.std* теперь реализуют интерфейс io.TextIOBase и поддерживают все обязательные методы и свойства.
  • bpo-5066: Обновлена документация IDLE. Патч от Todd Rovito.
  • bpo-16829: Печать из IDLE больше не завершается ошибкой, если в пути к файлу есть пробелы или другие специальные символы.
  • bpo-16491: IDLE теперь выводит трассировки связанных исключений.
  • bpo-16819: автодополнение методов в IDLE теперь корректно работает для литералов bytes.
  • bpo-16504: IDLE теперь перехватывает SyntaxErrors, выбрасываемые токенизатором. Патч от Roger Serwy.
  • bpo-16511: используется ширина и высота IDLE по умолчанию, если параметр конфигурации некорректен. Патч от Serhiy Storchaka.
  • bpo-1207589: добавлены пункты «Вырезать/Копировать/Вставить» в контекстное меню IDLE по правому клику. Патч от Todd Rovito.
  • bpo-16123: IDLE – работа без подпроцесса объявлена устаревшей. Патч от Roger Serwy.

ТестыTests

  • bpo-1666318: добавлен тест, проверяющий, что shutil.copytree() сохраняет права доступа к каталогам. Патч от Catherine Devlin.
  • bpo-18273: тесты из Lib/test/json_tests перенесены в Lib/test/test_json и сделаны обнаруживаемыми через unittest. Патч от Zachary Ware.
  • Исправлен тестовый случай fcntl на KFreeBSD, Debian #708653 (Petr Salinger).
  • bpo-18396: исправлен ложный сбой теста test_signal на Windows при включённом faulthandler (патч от Jeremy Kloth)
  • bpo-17046: исправлен сломанный тест test_executable_without_cwd в test_subprocess.
  • bpo-15415: добавлены новые контекстные менеджеры temp_dir() и change_cwd() в test.support, а также выполнено перераспределение temp_cwd() для их использования. Патч от Chris Jerdonek.
  • bpo-15494: test.support теперь является пакетом, а не модулем (первоначальный патч от Indra Talip)
  • bpo-17944: test_zipfile теперь является обнаруживаемым и использует наследование для генерации тестов для разных типов сжатия. Исправлена ошибка пропуска некоторых тестов из-за использования исчерпанных итераторов.
  • bpo-18266: test_largefile теперь работает с обнаружением тестов unittest и поддерживает выполнение только выбранных тестов. Патч от Zachary Ware.
  • bpo-17767: test_locale теперь работает с обнаружением тестов unittest. Первоначальный патч от Zachary Ware.
  • bpo-18375: при запуске набора тестов используется –randomize, если задан –randseed.
  • bpo-11185: исправлен test_wait4 на AIX. Патч от Sébastien Sablé.
  • bpo-18207: исправлен test_ssl для некоторых версий OpenSSL, игнорирующих секунды в полях ASN1_TIME.
  • bpo-18094: test_uuid больше не сообщает пропущенные тесты как пройденные.
  • bpo-17992: добавлены таймауты в тесты asyncore и asynchat, чтобы они не зависали случайно.
  • bpo-17833: исправлены сбои test_gdb, наблюдаемые на машинах, где доступны отладочные символы для glibc (замечено на PPC64 Linux).
  • bpo-7855: добавлены тесты для ctypes/winreg по проблемам, обнаруженным в IronPython. Первоначальный патч от Dino Viehland.
  • bpo-11078: test___all__ теперь проверяет наличие дубликатов в __all__. Первоначальный патч от R. David Murray.
  • bpo-17712: исправлен сбой test_gdb на Ubuntu 13.04.
  • bpo-17835: исправлен test_io, когда размер буфера канала ОС по умолчанию больше одного миллиона байт.
  • bpo-17065: для тестов winreg используется уникальный для процесса ключ, чтобы избежать сбоев при многократном параллельном запуске теста (например, на хост-машине buildbot).
  • bpo-12820: добавлены тесты для модуля xml.dom.minicompat. Патч от John Chandler и Phil Connell.
  • bpo-17691: test_univnewlines теперь работает с обнаружением тестов unittest. Патч от Zachary Ware.
  • bpo-17790: test_set теперь работает с обнаружением тестов unittest. Патч от Zachary Ware.
  • bpo-17789: test_random теперь работает с обнаружением тестов unittest. Патч от Zachary Ware.
  • bpo-17779: test_osx_env теперь работает с обнаружением тестов unittest. Патч от Zachary Ware.
  • bpo-17766: test_iterlen теперь работает с обнаружением тестов unittest. Патч от Zachary Ware.
  • bpo-17690: test_time теперь работает с обнаружением тестов unittest. Исправление от Zachary Ware.
  • bpo-17692: test_sqlite теперь работает с обнаружением тестов unittest. Исправление от Zachary Ware.
  • bpo-11995: test_pydoc больше не импортирует все модули из sys.path.
  • bpo-17448: test_sax теперь пропускается, если нет доступных XML-парсеров, вместо выбрасывания ImportError.
  • bpo-11420: обеспечить прохождение набора тестов с установленным -B/DONTWRITEBYTECODE. Первоначальное исправление от Thomas Wouters.
  • bpo-10652: запускать тесты tcl/tk после теста __all__, исправление от Zachary Ware.
  • bpo-11963: удалить проверку человеком из test_parser и test_subprocess.
  • bpo-11732: добавить новый менеджер контекста suppress_crash_popup() в test.support, который отключает всплывающие окна при сбоях в Windows, и использовать его в test_faulthandler и test_capi.
  • bpo-13898: test_ssl больше не выводит ложный стек вызовов на Ubuntu.
  • bpo-17283: Общий код между __main__.py и regrtest.py в Lib/test.
  • bpo-17249: преобразовать тест в test_capi для использования unittest и завершать потоки.
  • bpo-17107: Тестировать поддержку SNI на стороне клиента в urllib.request благодаря новой поддержке SNI на стороне сервера в модуле ssl. Первоначальное исправление от Daniel Black.
  • bpo-17041: Исправление тестирования, когда Python сконфигурирован с –without-doc-strings.
  • bpo-16923: Исправить ResourceWarnings в test_ssl.
  • bpo-15539: Добавлены регрессионные тесты для Tools/scripts/pindent.py.
  • bpo-17479: test_io теперь работает с обнаружением тестов unittest. Исправление от Zachary Ware.
  • bpo-17066: test_robotparser теперь работает с обнаружением тестов unittest. Исправление от Zachary Ware.
  • bpo-17334: test_index теперь работает с обнаружением тестов unittest. Исправление от Zachary Ware.
  • bpo-17333: test_imaplib теперь работает с обнаружением тестов unittest. Исправление от Zachary Ware.
  • bpo-17082: test_dbm* теперь работают с обнаружением тестов unittest. Исправление от Zachary Ware.
  • bpo-17079: test_ctypes теперь работает с обнаружением тестов unittest. Исправление от Zachary Ware.
  • bpo-17304: test_hash теперь работает с обнаружением тестов unittest. Исправление от Zachary Ware.
  • bpo-17303: test_future* теперь работают с обнаружением тестов unittest. Исправление от Zachary Ware.
  • bpo-17163: test_file теперь работает с обнаружением тестов unittest. Исправление от Zachary Ware.
  • bpo-16925: test_configparser теперь работает с обнаружением тестов unittest. Исправление от Zachary Ware.
  • bpo-16918: test_codecs теперь работает с обнаружением тестов unittest. Исправление от Zachary Ware.
  • bpo-16919: test_crypt теперь работает с обнаружением тестов unittest. Исправление от Zachary Ware.
  • bpo-16910: test_bytes, test_unicode и test_userstring теперь работают с обнаружением тестов unittest. Исправление от Zachary Ware.
  • bpo-16905: test_warnings теперь работает с обнаружением тестов unittest. Первоначальное исправление от Berker Peksag.
  • bpo-16898: test_bufio теперь работает с обнаружением тестов unittest. Исправление от Zachary Ware.
  • bpo-16888: test_array теперь работает с обнаружением тестов unittest. Исправление от Zachary Ware.
  • bpo-16896: test_asyncore теперь работает с обнаружением тестов unittest. Исправление от Zachary Ware.
  • bpo-16897: test_bisect теперь работает с обнаружением тестов unittest. Первоначальный патч от Zachary Ware.
  • bpo-16852: test_genericpath, test_posixpath, test_ntpath и test_macpath теперь работают с обнаружением тестов unittest. Патч от Zachary Ware.
  • bpo-16748: test_heapq теперь работает с обнаружением тестов unittest.
  • bpo-10646: Тесты для os.samefile/samestat переорганизованы, чтобы проверять не только символьные ссылки, но и жёсткие ссылки.
  • bpo-15302: Переключение regrtest с getopt на argparse.
  • bpo-15324: Исправлен разбор опций –fromfile, –match и –randomize в regrtest.
  • bpo-16702: Тесты test_urllib2_localnet теперь корректно игнорируют прокси для тестов localhost.
  • bpo-16664: Добавлены регрессионные тесты для поведения glob в отношении записей, начинающихся с «.». Патч от Sebastian Kreft.
  • bpo-13390: Опция -R в regrtest теперь также проверяет утечки памяти, используя sys.getallocatedblocks().
  • bpo-16559: Добавлено больше тестов для модуля json, в том числе из официального набора тестов на json.org. Патч от Serhiy Storchaka.
  • bpo-16661: Исправлен тест os.getgrouplist(): больше не предполагается, что он даёт тот же результат, что и id -G.
  • bpo-16115: Добавлены некоторые тесты для аргумента executable в subprocess.Popen(). Первоначальный патч от Kushal Das.
  • bpo-16126: Несоответствие формата в PyErr_Format в _testcapimodule.c. Патч от Serhiy Storchaka.
  • bpo-15304: Исправлено предупреждение при сбое os.chdir() внутри test.support.temp_cwd(). Патч от Chris Jerdonek.
  • bpo-15802: Исправлена логика теста в TestMaildir.test_create_tmp(). Патч от Serhiy Storchaka.
  • bpo-15557: Добавлен набор тестов для модуля webbrowser, спасибо Anton Barkovsky.
  • bpo-16698: Пропуск теста posix test_getgroups при сборке с целью развёртывания OS X до версии 10.6.

СборкаBuild

  • bpo-16067: Добавлено описание в файл MSI для замены временного имени установщика.
  • bpo-18257: Исправлено использование readlink в python-config. Повторная установка версии Python на Darwin.
  • bpo-18481: Добавлен отчёт о покрытии кода на C с помощью gcov и lcov. Новая цель make «coverage-report» создаёт инструментированную сборку Python, запускает модульные тесты и формирует HTML. Отчёт можно обновить с помощью «make coverage-lcov».
  • bpo-17845: Уточнено сообщение, выводимое, когда некоторые модули не собраны.
  • bpo-18256: Исправление компиляции для последних выпусков AIX. Патч от David Edelsohn.
  • bpo-17547: В configure явно передаётся -Wformat для пользы GCC 4.8.
  • bpo-15172: Указано, что NASM 2.10+ требуется для сборки OpenSSL 1.0.1 на Windows.
  • bpo-17591: Использование имён файлов в нижнем регистре при включении заголовочных файлов Windows. Патч от Roumen Petrov.
  • bpo-17550: Исправлен флаг configure –enable-profiling.
  • bpo-17425: Сборка с openssl 1.0.1d на Windows.
  • bpo-16754: Исправлено неверное расширение разделяемой библиотеки в Linux. Введены два макроса makefile: SHLIB_SUFFIX и EXT_SUFFIX. Теперь SO снова принимает значение SHLIB_SUFFIX (как в 2.x и 3.1). Макрос SO удалён в 3.4.
  • bpo-5033: Исправлена сборка модуля расширения sqlite3, когда версия библиотеки SQLite содержит «beta». Патч от Andreas Pelme.
  • bpo-17228: Исправлена сборка без pymalloc.
  • bpo-3718: Использование AC_ARG_VAR для установки MACHDEP в configure.ac.
  • bpo-16235: Реализован python-config в виде shell-скрипта.
  • bpo-16769: Удалены устаревшие проекты Visual Studio.
  • bpo-17031: Исправлен запуск regen при кросс-сборке.
  • bpo-3754: Исправлена опечатка в pthread AC_CACHE_VAL.
  • bpo-15484: Исправлена _PYTHON_PROJECT_BASE для сборок, где srcdir != builddir; используется _PYTHON_PROJECT_BASE в distutils/sysconfig.py.
  • Прекращена поддержка Windows 2000 (набор изменений e52df05b496a).
  • bpo-17029: Разрешить h2py поиск в каталоге include для multiarch.
  • bpo-16953: Исправлена компиляция модуля socket на платформах с HAVE_BROKEN_POLL. Патч от Jeffrey Armstrong.
  • bpo-16320: Удалены избыточные зависимости Makefile для строк и байтов.
  • Кросс-компиляция требует настроек хост-системы и сборки. configure больше не создаёт сломанную переменную PYTHON_FOR_BUILD, если отсутствует --build.
  • Исправлена проблема кросс-компиляции в setup.py: теперь lib_dirs и inc_dirs определены и в режиме кросс-компиляции.
  • bpo-16836: Включена поддержка IPv6, даже если IPv6 отключён на хост-машине сборки.
  • bpo-16593: Исправлено поведение BSD ‘make -s’ (спасибо Daniel Shahaf)
  • bpo-16262: Исправлена сборка вне дерева исходников, если Mercurial не установлен.
  • bpo-15298: Обеспечено создание _sysconfigdata в каталоге сборки, а не исходном каталоге.
  • bpo-15833: Исправлена регрессия в 3.3, из-за которой возникали исключения, если importlib не удавалось записать скомпилированные в байт-код файлы. Это затрагивало попытки собрать Python вне дерева исходников из каталога только для чтения.
  • bpo-15923: Исправлена ошибка в asdl_c.py, которая приводила к TypeError после 2801bf875a24 (см. #15801).
  • bpo-16135: Удалена поддержка OS/2.
  • bpo-15819: Обеспечена возможность сборки Python вне дерева исходников из каталога только для чтения. (Частично связано с bpo-9860.)
  • bpo-15587: Включено высококачественное отображение текста Tk на Mac с дисплеями Retina. Применяется к приложениям Tkinter, таким как IDLE, в сборках OS X framework, связанных с Cocoa Tk 8.5.
  • bpo-17161: make install теперь также устанавливает man-страницу python3.

C API

  • bpo-18351: Исправлены различные проблемы в функции importlib, предназначенной для помощи PyImport_ExecCodeModuleWithPathnames() (и, соответственно, PyImport_ExecCodeModule() и PyImport_ExecCodeModuleEx()).
  • bpo-9369: Типы аргументов char* функций PyObject_CallFunction() и PyObject_CallMethod() теперь изменены на const char*. Основано на патчах Jörg Müller и Lars Buitinck.
  • bpo-17206: Py_CLEAR(), Py_DECREF(), Py_XINCREF() и Py_XDECREF() теперь раскрывают свои аргументы один раз вместо нескольких. Патч написан Illia Polosukhin.
  • bpo-17522: Добавлен API PyGILState_Check().
  • bpo-17327: Добавлен PyDict_SetDefault.
  • bpo-16881: Исправлен макрос Py_ARRAY_LENGTH для GCC < 3.1.
  • bpo-16505: Удалён неиспользуемый Py_TPFLAGS_INT_SUBCLASS.
  • bpo-16086: PyTypeObject.tp_flags и PyType_Spec.flags теперь беззнаковые (unsigned long и unsigned int), чтобы избежать неопределённого поведения с Py_TPFLAGS_TYPE_SUBCLASS ((1 << 31). Тип результата PyType_GetFlags() теперь тоже беззнаковый (unsigned long вместо long).
  • bpo-16166: Добавлены макросы PY_LITTLE_ENDIAN и PY_BIG_ENDIAN, а также унифицированное обнаружение и обработка порядка байтов.

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

  • bpo-23006: Улучшена документация и индексирование dict.__missing__. Добавлена запись в раздел специальных методов модели данных языка. Пересмотрено и проиндексировано обсуждение в разделе stdtypes mapping/dict.
  • bpo-17701: Улучшена документация strftime.
  • bpo-18440: Уточнено, что hash() может усекать значение, возвращаемое пользовательским методом __hash__() объекта.
  • bpo-17844: добавлены ссылки на кодировщики и декодировщики для кодеков «байты-в-байты».
  • bpo-14097: улучшена страница «Введение» в руководстве.
  • bpo-17977: исправлена документация значения по умолчанию для аргумента cadefault в urllib.request.urlopen() – теперь она соответствует коду.
  • bpo-6696: добавлена документация для объектов Profile, улучшена документация profile/cProfile. Исправление от Tom Pinckney.
  • bpo-15940: уточнено влияние локали на функции времени.
  • bpo-17538: документированы уязвимости XML
  • bpo-16642: начальное значение по умолчанию timefunc в sched.scheduler – time.monotonic. Исправление от Ramchandra Apte
  • bpo-17047: удалены дублирующиеся слова в документации и докстрингах, о которых сообщили Serhiy Storchaka и Matthew Barnett.
  • bpo-15465: макросы версионирования теперь документированы в документации C API, а не в документации стандартной библиотеки. Исправление от Kushal Das.
  • bpo-16406: объединены страницы для загрузки и регистрации пакетов на PyPI.
  • bpo-16403: документировано, как distutils использует поле maintainer в PKG-INFO. Исправление от Jyrki Pulliainen.
  • bpo-16695: документировано, как glob обрабатывает имена файлов, начинающиеся с точки. Первоначальное исправление от Jyrki Pulliainen.
  • bpo-8890: прекращено продвижение небезопасной практики: использования каталога /tmp заменены на более безопасные альтернативы в документации. Исправление от Geoff Wilson.
  • bpo-17203: в документацию обнаружения unittest добавлены длинные имена опций.
  • bpo-13094: в FAQ по программированию добавлен вопрос «Почему лямбды, определённые в цикле с разными значениями, все возвращают один и тот же результат?».
  • bpo-14901: обновлены части FAQ по Windows. Исправление от Ashish Nitin Patil.
  • bpo-16267: улучшена документация подхода (начиная с версии 3.3) к комбинированию @abstractmethod с @staticmethod, @classmethod и @property
  • bpo-15209: уточнено описание цепочек исключений в документации модуля exceptions
  • bpo-15990: улучшена документация аргументов/параметров.
  • bpo-16209: документация встроенной функции str перенесена в новый раздел класса str в секции «Текстовый тип последовательности».
  • bpo-13538: улучшена документация str() и object.__str__().
  • bpo-16489: уточнено, что importlib.find_loader() требует явного импорта родительских пакетов.
  • bpo-16400: обновлено описание того, какие версии указанного пакета отображает PyPI.
  • bpo-15677: документировано, что zlib и gzip принимают уровень сжатия 0 как «без сжатия». Исправление от Brian Brazil.
  • bpo-16197: докстринги и документация winreg обновлены в соответствии с кодом. Исправление от Zachary Ware.
  • bpo-8040: в документацию добавлен переключатель версий. Исправление от Yury Selivanov.
  • bpo-16241: документирована опция командной строки -X faulthandler. Исправление от Marek Šuppa.
  • Дополнительные комментарии и некоторые изменения стиля в примере получения URL с помощью concurrent.futures
  • bpo-16115: улучшена документация subprocess.Popen() в отношении аргументов args, shell и executable.
  • bpo-13498: уточнена документация аргумента exist_ok в os.makedirs(). Выполнено с большой помощью носителя языка R. David Murray.
  • bpo-15533: уточнена документация и добавлены тесты для аргумента cwd в subprocess.Popen().
  • bpo-15979: улучшена документация timeit.
  • bpo-16036: Улучшена документация сигнатуры и аргументов встроенной int().
  • bpo-15935: Уточнение документации argparse относительно типа и аргументов по умолчанию add_argument(). Патч предоставлен Крисом Джердонеком.
  • bpo-11964: Документировано изменение в версии 3.2 поведения параметра indent операций кодирования json.
  • bpo-15116: Удалены ссылки на appscript, так как он больше не поддерживается.

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

  • bpo-18817: Исправлено предупреждение о ресурсах в демонстрации Lib/aifc.py. Патч от Vajrasky Kok.
  • bpo-18439: Обеспечена работа patchcheck в Windows для ACKS, NEWS.
  • bpo-18448: Исправлена опечатка в Tools/demo/eiffel.py.
  • bpo-18457: Исправлено сохранение формул и комплексных чисел в Tools/demo/ss1.py.
  • bpo-18449: Возобновлена работа Tools/demo/ss1.py в Python 3. Патч от Févry Thibault.
  • bpo-12990: «Python Launcher» в OSX не мог запускать скрипты python, пути которых содержат широкие символы.
  • bpo-15239: Возобновлена работа mkstringprep.py в Python 3.
  • bpo-17028: Разрешено указывать аргументы Python для Windows launcher.
  • bpo-17156: pygettext.py теперь определяет кодировку исходных файлов и корректно записывает и экранирует не-ASCII символы.
  • bpo-15539: Исправлен ряд ошибок в Tools/scripts/pindent.py. Теперь pindent.py работает с конструкцией “with”. pindent.py больше не создаёт неправильные отступы. pindent.py теперь работает с продолжениями строк, разбитых после ключевых слов “class” или “def”, и с продолжениями в начале строки.
  • bpo-11797: Добавлен фиксер 2to3, преобразующий reload() в imp.reload().
  • bpo-10966: Удалено понятие неожиданно пропущенных тестов.
  • bpo-9893: Удалена директория Misc/Vim.
  • Удалена директория Misc/TextMate.
  • bpo-16245: Добавлен скрипт Tools/scripts/parse_html5_entities.py для разбора списка HTML5-сущностей и обновления словаря html.entities.html5.
  • bpo-15378: Исправлен Tools/unicode/comparecodecs.py. Патч от Serhiy Storchaka.
  • bpo-16549: Возобновлена работа json.tool в Python 3 и добавлены тесты. Первоначальный патч от Berker Peksag и Serhiy Storchaka.
  • bpo-13301: Заменено использование eval() на ast.literal_eval() в Tools/i18n/msgfmt.py. Патч от Serhiy Storchaka.

Windows

  • bpo-18569: Установщик теперь добавляет .py в переменную PATHEXT при регистрации расширений. Патч от Paul Moore.

(Информацию о более старых версиях смотрите в файле HISTORY.)