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

---

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

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

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

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

- bpo-36216: Изменяет urlsplit(), чтобы вызывать ValueError, если URL содержит символы, которые при IDNA-кодировании (нормализация NFKC) разлагаются на символы, влияющие на разбор URL.
- bpo-35121: Не отправлять куки домена A без атрибута Domain на domain B, если домен A является суффиксным совпадением домена B при использовании cookiejar с политикой [`http.cookiejar.DefaultCookiePolicy`](https://python-all.ru/3.4/library/http.cookiejar.html#http.cookiejar.DefaultCookiePolicy). Исправление от Karthikeyan Singaravelan.

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

- bpo-35121: Не устанавливать куку для запроса, если путь запроса является префиксным совпадением атрибута path куки, но не заканчивается на “/”. Исправление от Karthikeyan Singaravelan.

## Python 3.4.10 кандидат в релизы 1

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

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

- bpo-35746: \[CVE-2019-5010\] Исправление разыменования NULL-указателя в модуле ssl. Синтаксический анализатор сертификатов некорректно обрабатывал точки распространения CRL с пустым DP или URI. Злонамеренный или ошибочный сертификат может привести к segfault. Уязвимость (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.

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

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

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

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

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

## Python 3.4.9 кандидат в релизы 1

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

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

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

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

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

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

## Python 3.4.8 кандидат в релизы 1

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

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

- bpo-30657: Исправлено возможное целочисленное переполнение в PyBytes\_DecodeEscape, CVE-2017-1000158. Оригинальное исправление от Jay Bosamiya; перенесено на Python 3 Miro Hrončok.
- bpo-30947: Обновление встроенной копии libexpat с версии 2.2.1 до 2.2.3 для получения исправлений безопасности.
- bpo-29169: Обновление zlib с 1.2.8 до 1.2.11 для получения исправлений безопасности.

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

- bpo-32072: Исправлены проблемы с двоичными списками свойств

  - Исправлено сохранение bytearrays.
  - Идентичные объекты будут сохраняться только один раз.
  - Равные ссылки будут загружаться как идентичные объекты.
  - Добавлена поддержка сохранения и загрузки рекурсивных структур данных.
- bpo-31170: expat: Обновление libexpat с 2.2.3 до 2.2.4. Исправление копирования частичных символов для входных данных UTF-8 (ошибка libexpat 115): [https://github.com/libexpat/libexpat/issues/115](https://python-all.ru/3.4/whatsnew/changelog.html)

### Сборка

- bpo-29572: Обновление сборки Windows и установщиков OS X для использования OpenSSL 1.0.2k.

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

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

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

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

## Python 3.4.7 кандидат в релизы 1

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

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

- bpo-29591: Обновление копии expat с 2.1.1 до 2.2.0 для получения исправлений CVE-2016-0718 и CVE-2016-4472. Подробнее см. [https://sourceforge.net/p/expat/bugs/537/](https://python-all.ru/3.4/whatsnew/changelog.html).
- bpo-30694: Обновление копии expat с 2.2.0 до 2.2.1 для получения исправлений множественных уязвимостей безопасности, включая: CVE-2017-9233 (внешняя сущность, бесконечный цикл DoS), CVE-2016-9063 (целочисленное переполнение, повторное исправление), CVE-2016-0718 (исправление регрессионных ошибок из исправления 2.2.0 для CVE-2016-0718) и CVE-2012-0876 (противодействие хеш-флудингу с помощью SipHash). Примечание: CVE-2016-5300 (использование специфичных для ОС источников энтропии, например getrandom) не влияет на Python, поскольку Python уже получает энтропию из ОС для установки секрета expat с помощью `XML_SetHashSalt()`.
- bpo-26657: Исправление уязвимости обхода каталогов в http.server на Windows. Это исправляет регрессию, которая была введена в 3.3.4rc1 и 3.4.0rc1. Основано на исправлении Philipp Hagemeister.
- bpo-30500: Исправлено urllib.parse.splithost() для корректного разбора фрагментов. Например, `splithost('//127.0.0.1#@evil.com/')` теперь правильно возвращает `127.0.0.1` хост, вместо того чтобы считать `@evil.com` хостом в аутентификации (`login@host`).
- bpo-30730: Предотвращено внедрение переменных окружения в подпроцессе на Windows. Предотвращена передача других недопустимых переменных окружения и аргументов команды.

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

- bpo-26617: Исправлено падение при выполнении GC во время колбэков слабых ссылок.
- bpo-27945: Исправлены различные ошибки сегментации со словарём, когда входные коллекции изменяются во время поиска, вставки или сравнения. На основе патчей от Duane Griffin и Tim Mitchell.

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

- bpo-27850: Удалён 3DES из списка шифров по умолчанию модуля ssl для противодействия атаке sweet32 (CVE-2016-2183).

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

- bpo-25008: Указано, что smtpd.py по сути устарел, и добавлена ссылка на aiosmtpd – стороннюю замену на основе asyncio.

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

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

Между 3.4.6rc1 и финальным 3.4.6 изменений не было.

## Python 3.4.6 кандидат в релизы 1

*Дата выпуска: 2017-01-02*

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

- bpo-28648: Исправлено падение в Py\_DecodeLocale() в отладочной сборке на Mac OS X при декодировании астральных символов. Патч от Xiang Zhang.
- bpo-28426: Исправлено потенциальное падение в PyUnicode\_AsDecodedObject() в отладочной сборке.

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

- bpo-28563: Исправлена возможная атака типа «отказ в обслуживании» и выполнение произвольного кода при обработке выбора форм множественного числа в модуле gettext. Теперь анализатор выражений поддерживает точный синтаксис, поддерживаемый GNU gettext.
- В модуле 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-27759: Исправлена ошибка, из-за которой selectors некорректно удерживали недопустимые файловые дескрипторы. Патч от Mark Williams.

### Сборка

- bpo-28248: Обновлена сборка Windows для использования OpenSSL 1.0.2j.

### Тесты

- bpo-27369: В test\_pyexpat прекращена проверка детали сообщения об ошибке, изменившейся в Expat 2.2.0.

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

*Дата выпуска: 2016-06-26*

### Тесты

- bpo-26867: В Ubuntu параметр OP\_NO\_SSLv3 в OpenSSL принудительно включён по умолчанию; исправлен тест.

## Python 3.4.5 кандидат в релизы 1

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

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

- bpo-26478: Исправлены семантические ошибки при использовании бинарных операторов с представлениями словаря и кортежами.
- bpo-26171: Исправлено возможное целочисленное переполнение и повреждение кучи в zipimporter.get\_data().

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

- bpo-26556: Обновлён expat до версии 2.1.1, исправляющей CVE-2015-1283.
- Исправлена уязвимость удаления TLS в smptlib, CVE-2016-0772. Сообщено командой Oststrom.
- bpo-25939: В Windows открывать хранилище сертификатов только для чтения в ssl.enum\_certificates.
- bpo-26012: Не переходить по символическим ссылкам для шаблона \*\* в pathlib.Path.\[r\]glob().
- bpo-24120: Игнорировать PermissionError при обходе дерева с помощью pathlib.Path.\[r\]glob(). Патч от Ulrich Petri.
- Пропускать getaddrinfo, если хост уже разрешён. Исправление от A. Jesse Jiryu Davis.
- Добавлен контекстный менеджер asyncio.timeout().
- bpo-26050: Добавлен метод asyncio.StreamReader.readuntil(). Патч от Марка Коренберга.

### Тесты

- bpo-25940: Изменён test\_ssl для использования self-signed.pythontest.net. Это позволяет не полагаться на svn.python.org, который недавно сменил корневой сертификат.

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

*Дата выпуска: 2015/12/20*

### Windows

- bpo-25844: Исправлена опечатка =/==, которая могла приводить к аварийному завершению в лаунчере.

## Python 3.4.4 кандидат в релизы 1

*Дата выпуска: 2015/12/06*

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

- bpo-25709: Исправлена проблема с конкатенацией строк на месте и кешем utf-8.
- bpo-24097: Исправлено аварийное завершение в object.\_\_reduce\_\_(), если имя слота освобождается внутри \_\_getattr\_\_.
- bpo-24731: Исправлено аварийное завершение при преобразовании объектов со специальными методами \_\_bytes\_\_, \_\_trunc\_\_ и \_\_float\_\_, возвращающими экземпляры подклассов bytes, int и float, в соответствующие подклассы bytes, int и float.
- bpo-25388: Исправлено аварийное завершение токенизатора при обработке не декодируемого исходного кода с нулевым байтом.
- bpo-22995: Реализация по умолчанию \_\_reduce\_\_ и \_\_reduce\_ex\_\_ теперь отклоняет встроенные типы, у которых не определён \_\_new\_\_.
- bpo-24802: Предотвращено чтение за пределами буфера, когда int(), float(), compile(), exec() и eval() получают байтоподобные объекты. Эти объекты не обязательно завершаются нулевым байтом, но функции предполагали, что это так.
- bpo-24402: Исправлен input() для вывода приглашения в перенаправленный stdout, когда sys.stdout.fileno() завершается ошибкой.
- bpo-24806: Предотвращено наследование встроенных типов, для которых наследование запрещено, через множественное наследование.
- bpo-24848: Исправлен ряд ошибок в декодировании UTF-7 некорректных данных.
- bpo-25280: Сообщения трассировки импорта, выводимые в подробном режиме (-v), больше не форматируются дважды.
- bpo-25003: os.urandom() не использует getentropy() на Solaris, потому что getentropy() блокируется, тогда как os.urandom() не должен блокироваться. getentropy() поддерживается начиная с Solaris 11.3.
- bpo-25182: stdprinter (используемый как sys.stderr до импорта модуля io при запуске) теперь использует обработчик ошибок backslashreplace.
- bpo-24891: Исправлено состояние гонки при запуске Python, если файловый дескриптор stdin (0), stdout (1) или stderr (2) закрыт в то время как Python создаёт объекты sys.stdin, sys.stdout и sys.stderr. Теперь эти атрибуты устанавливаются в None, если создание объекта не удалось, вместо возбуждения исключения OSError. Первоначальный патч написан Marco Paolini.
- bpo-21167: Операции с NAN теперь обрабатываются корректно, когда python скомпилирован с ICC, даже если не указан -fp-model strict.
- bpo-4395: Улучшено тестирование и документация бинарных операторов. Патч от Martin Panter.
- bpo-24467: Исправлено возможное чтение за пределами буфера в bytearray. Объект bytearray теперь всегда выделяет место для завершающего нулевого байта, и его буфер теперь всегда завершается нулём.
- bpo-24115: Обновлены вызовы PyObject\_IsTrue(), PyObject\_Not(), PyObject\_IsInstance(), PyObject\_RichCompareBool() и \_PyDict\_Contains() для правильной проверки и обработки ошибок.
- bpo-24257: Исправлена системная ошибка при сравнении поддельных types.SimpleNamespace.
- bpo-22939: Исправлено целочисленное переполнение в объекте итератора. Патч от Clement Rouault.
- bpo-23985: Исправлено возможное переполнение буфера при удалении среза из начала bytearray и последующем добавлении других байтовых данных.
- bpo-24102: Исправлена проверка типа исключения в стандартных обработчиках ошибок.
- bpo-23757: PySequence\_Tuple() некорректно вызывал конкретный API списка, когда данные были подклассом списка.
- bpo-24407: Исправлено аварийное завершение при изменении словаря во время обновления.
- bpo-24096: Сделать warnings.warn\_explicit более устойчивым к изменению списка warnings.filters.
- bpo-23996: Предотвращение аварийного завершения, когда делегированный генератор возбуждает ненормализованное исключение StopIteration. Патч от Stefan Behnel.
- bpo-24022: Исправлена ошибка краха токенизатора при обработке нераскодируемого исходного кода.
- bpo-23309: Устранена взаимоблокировка при завершении работы, если фоновый поток был прерван во время удержания блокировки буферизованного объекта ввода-вывода, а главный поток пытается использовать тот же объект ввода-вывода (обычно stdout или stderr). Вместо этого выводится фатальная ошибка.
- bpo-22977: Исправлено форматирование сообщений об ошибках Windows в Wine. Патч от Martin Panter.
- bpo-23803: Исправлены str.partition() и str.rpartition() в случае, когда разделитель шире, чем разделяемая строка.
- bpo-23192: Исправлены лямбда-генераторы. Патч от Bruno Cauet.
- bpo-23629: Исправлена реализация \_\_sizeof\_\_ по умолчанию для объектов переменного размера.
- bpo-24044: Исправлено возможное разыменование нулевого указателя в list.sort при нехватке памяти.
- bpo-21354: Функция PyCFunction\_New снова доступна в DLL Python.

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

- bpo-24903: Исправлена регрессия в количестве аргументов, принимаемых compileall, когда указан параметр '-d'. Проверка количества аргументов полностью удалена, так как она всё равно никогда не работала корректно.
- bpo-25764: В модуле subprocess сохранено любое исключение, вызванное сбоем fork(), при использовании preexec\_fn.
- bpo-6478: Кеш регулярных выражений \_strptime теперь сбрасывается после изменения часового пояса с помощью time.tzset().
- 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.
- bpo-25583: Избегайте неверных ошибок, вызываемых os.makedirs(exist\_ok=True), когда ОС отдаёт приоритет ошибкам типа EACCES над EEXIST.
- bpo-25593: Изменена семантика EventLoop.stop() в asyncio.
- bpo-6973: Когда известно, что процесс subprocess.Popen завершился, не позволяйте методам send\_signal(), terminate() или kill() выполнять какие-либо действия, так как они могут отправить сигнал другому процессу.
- bpo-25578: Исправлена (ещё одна) утечка памяти в SSLSocket.getpeercer().
- bpo-25590: В модуле автодополнения Readline getattr() вызывается только один раз для каждого атрибута.
- bpo-25498: Исправлен крах при сборке мусора для объектов ctypes, созданных обёрткой memoryview. Это была регрессия, внесённая в версии 3.4.3. Основано на патче от Eryksun.
- bpo-18010: Исправлена функция поиска модулей веб-сервера pydoc для обработки исключений при импорте пакетов.
- bpo-25510: fileinput.FileInput.readline() теперь возвращает b'' вместо '' в конце, если FileInput был открыт в бинарном режиме. Патч от Ryosuke Ito.
- bpo-25530: По умолчанию отключайте уязвимый протокол SSLv3 при создании ssl.SSLContext.
- bpo-25569: Исправлена утечка памяти в SSLSocket.getpeercert().
- bpo-21827: Исправлен textwrap.dedent() для случая, когда наибольший общий пробел является подстрокой наименьшего начального пробела. Основано на патче от Robert Li.
- bpo-25471: Сокеты, возвращаемые accept(), не должны выглядеть как неблокирующие.
- bpo-25441: asyncio: метод drain() теперь возбуждает исключение при закрытом сокете.
- bpo-25411: улучшена поддержка Unicode в SMTPHandler за счёт лучшего использования пакета email. Благодарность пользователю simon04 за патч.
- bpo-25380: исправлен протокол для опкода STACK\_GLOBAL в pickletools.opcodes.
- bpo-23972: обновлён метод создания датаграммных сокетов в asyncio – теперь он позволяет устанавливать опции сокетов reuseport и reuseaddr до привязки сокета. По аналогии с существующим методом create\_server asyncio, опция reuseaddr для датаграммных сокетов по умолчанию равна True, если ОС является 'posix' (за исключением платформы Cygwin). Патч от Chris Laws.
- bpo-25304: добавлена функция asyncio.run\_coroutine\_threadsafe(). Она позволяет отправить корутину в цикл событий из другого потока, возвращая объект concurrent.futures.Future. Автор: Vincent Michel.
- bpo-25319: при повторной инициализации threading.Event базовое условие должно использовать обычную блокировку, а не рекурсивную.
- bpo-25232: исправлен CGIRequestHandler: теперь строка запроса отделяется от URL по первому знаку вопроса (?), а не по последнему. Патч от Xiang Zhang.
- bpo-24657: предотвращено схлопывание слешей в строке запроса URL в CGIRequestHandler, как если бы это был путь. Патч от Xiang Zhang.
- bpo-22958: конструктор и метод update класса weakref.WeakValueDictionary теперь принимают ключевые аргументы self и dict.
- bpo-22609: конструктор collections.UserDict теперь принимает ключевой аргумент self.
- 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-23600: реализация метода tzinfo.fromutc() по умолчанию возвращала неверные результаты в некоторых случаях.
- bpo-25203: неудачный вызов readline.set\_completer\_delims() больше не оставляет модуль в несогласованном состоянии.
- Предотвращено переполнение в \_Unpickler\_Read.
- bpo-25047: объявление кодировки XML, записываемое Element Tree, теперь учитывает регистр букв, указанный пользователем. Это восстанавливает возможность писать названия кодировок в верхнем регистре, например, «UTF-8», что работало в Python 2.
- bpo-19143: модуль platform теперь читает версию Windows из kernel32.dll, чтобы избежать прослоек совместимости.
- bpo-23517: исправлено округление в методах fromtimestamp() и utcfromtimestamp() класса datetime.datetime: микросекунды теперь округляются до ближайшего целого, а полузначные значения – до ближайшего чётного (ROUND\_HALF\_EVEN), вместо округления в сторону нуля (ROUND\_DOWN). Важно, чтобы эти методы использовали тот же режим округления, что и datetime.timedelta, для сохранения свойства: (datetime(1970,1,1) + timedelta(seconds=t)) == datetime.utcfromtimestamp(t). Этот же режим используется, например, в round(float).
- bpo-24684: socket.socket.getaddrinfo() теперь вызывает PyUnicode\_AsEncodedString() вместо метода encode() хоста, чтобы корректно обрабатывать пользовательские строки с методом encode(), который не возвращает байтовую строку. Кодировщик кодеков IDNA теперь вызывается напрямую, а не через метод encode() строки.
- bpo-24982: shutil.make\_archive() с форматом 'zip' теперь добавляет записи для каталогов (включая пустые) в ZIP-файл.
- bpo-24857: сравнение call\_args с длинной последовательностью теперь корректно возвращает логический результат вместо возбуждения исключения. Патч от A Kaptur.
- bpo-25019: исправлен сбой, вызванный установкой нестрокового ключа парсера expat. На основе патча от John Leitch.
- bpo-24917: переполнение буфера при чтении в time\_strftime().
- bpo-23144: обеспечена гарантия, что HTMLParser.feed() возвращает все данные, даже если convert\_charrefs равно True.
- bpo-16180: завершать pdb, если файл содержит синтаксическую ошибку, а не зацикливать пользователя в бесконечном цикле. Патч от Xavier de Gaye.
- bpo-21112: исправлен регресс в unittest.expectedFailure для подклассов. Патч от Berker Peksag.
- bpo-24931: экземпляры подклассов namedtuples имеют собственный \_\_dict\_\_, что нарушает унаследованное свойство \_\_dict\_\_ и ломает метод \_asdict(). Свойство \_\_dict\_\_ удалено для предотвращения конфликта, а \_asdict() исправлен.
- bpo-24764: cgi.FieldStorage.read\_multi() теперь игнорирует заголовок Content-Length в заголовках частей. Патч написан Peter Landry и проверен Pierre Quentel.
- bpo-24774: исправлена строка документации в http.server.test. Патч от Chiu-Hsiang Hsu.
- bpo-21159: улучшено сообщение в configparser.InterpolationMissingOptionError. Патч от Łukasz Langa.
- bpo-23888: обработка дробного времени в сроке действия cookie. Патч от ssh.
- bpo-23004: mock\_open() теперь правильно читает бинарные данные, если тип read\_data – bytes. Первоначальный патч от Aaron Hill.
- 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-23441: rcompleter теперь выводит символ табуляции вместо отображения возможных вариантов для пустого слова. Начальный патч от Martin Sekera.
- bpo-24735: исправлен некорректный доступ к памяти в itertools.combinations\_with\_replacement().
- bpo-17527: добавлен PATCH в wsgiref.validator. Патч от Luca Sbardella.
- bpo-24683: исправлены падения в функциях \_json при вызове с аргументами неподходящего типа.
- bpo-21697: shutil.copytree() теперь корректно обрабатывает символические ссылки, указывающие на каталоги. Патч от Eduardo Seabra и Thomas Kluyver.
- bpo-24620: Random.setstate() теперь проверяет значение последнего элемента состояния.
- bpo-22153: улучшена документация unittest. Патч от Martin Panter и evilzero.
- bpo-24206: исправлены методы \_\_eq\_\_ и \_\_ne\_\_ в классах модуля inspect.
- bpo-21750: read\_data из mock\_open теперь можно читать из каждого экземпляра, как это было в Python 3.3.
- bpo-23247: исправлено падение в StreamWriter.reset() кодеков CJK.
- bpo-18622: unittest.mock.mock\_open().reset\_mock приводило к бесконечной рекурсии. Патч от Nicola Palumbo и Laurent De Buyst.
- bpo-24608: chunk.Chunk.read() теперь всегда возвращает bytes, а не str.
- bpo-18684: исправлено чтение за пределами буфера в модуле re.
- bpo-24259: tarfile теперь вызывает ReadError, если архив обрезан внутри сегмента данных.
- bpo-24552: исправлена ошибка использования после освобождения (use-after-free) в одном из ошибочных случаев модуля \_pickle.
- bpo-24514: tarfile теперь допускает числовые поля, состоящие только из пробелов.
- bpo-19176: исправлены ошибки, связанные с doctype(), в реализации ElementTree на C. Предупреждение об устаревании больше не выдается подклассом XMLParser с методом doctype() по умолчанию. Прямой вызов doctype() теперь выдает предупреждение. Метод doctype() парсера больше не вызывается, если вызывается doctype() целевого объекта. Основано на патче от Martin Panter.
- bpo-20387: восстановлена семантическая корректность прямого и обратного преобразования (round-trip) в tokenize/untokenize для блоков с отступами табуляцией.
- bpo-24456: исправлено возможное чтение за пределами буфера в функциях adpcm2lin() и lin2adpcm() модуля audioop.
- bpo-24336: декоратор contextmanager теперь работает с функциями, имеющими именованные аргументы «func» и «self». Патч от Martin Panter.
- bpo-24489: гарантируется, что ранее установленный errno Си не влияет на cmath.polar().
- bpo-5633: исправлен timeit, когда инструкция является строкой, а setup – нет.
- bpo-24326: исправлен audioop.ratecv() с нестандартным аргументом weightB. Оригинальный патч от David Moore.
- bpo-23840: tokenize.open() теперь закрывает временный двоичный файл при ошибке, чтобы устранить предупреждение о ресурсах.
- bpo-24257: исправлено сегментное нарушение (segmentation fault) в конструкторе sqlite3.Row с поддельным типом курсора.
- bpo-22107: tempfile.gettempdir() и tempfile.mkdtemp() теперь повторяют попытку, если каталог с выбранным именем уже существует – как в Windows, так и в Unix. tempfile.mkstemp() теперь завершается с ошибкой на раннем этапе, если родительский каталог некорректен (не существует или является файлом) в Windows.
- bpo-6598: Повышена точность времени и расширен диапазон случайных чисел в email.utils.make\_msgid() для усиления уникальности идентификатора сообщения.
- bpo-24091: Исправлены различные аварийные завершения в особых случаях в C-реализации ElementTree.
- bpo-21931: msilib.FCICreate() теперь вызывает TypeError при неверном аргументе вместо ValueError с фиктивным номером ошибки FCI. Патч от Jeffrey Armstrong.
- bpo-23796: Методы peek и read1 BufferedReader теперь вызывают ValueError, если их вызывают на закрытом объекте. Патч от John Hergenroeder.
- bpo-24521: Исправлена возможная целочисленная переполнения в модуле pickle.
- bpo-22931: Разрешены символы ‘\[‘ и ‘\]’ в значениях cookie.
- bpo-20274: Удалены игнорируемые и ошибочные параметры “kwargs” из трёх методов METH\_VARARGS в \_sqlite.Connection.
- bpo-24094: Исправлена возможная аварийная остановка в json.encode с плохо ведущими себя подклассами dict.
- Asyncio issue 222 / PR 231 (Victor Stinner) – исправлены функции @coroutine без \_\_name\_\_.
- bpo-9246: На POSIX os.getcwd() теперь поддерживает пути длиннее 1025 байт. Патч написан William Orr.
- Атрибут keywords у functools.partial теперь всегда является словарём.
- bpo-24099: Исправлена ошибка использования после освобождения в функциях siftup и siftdown в heapq. (См. также: bpo-24100, bpo-24101)
- Перенос исправлений collections.deque из Python 3.5. Предотвращает повторную порчу при удалении, откладывая decref до восстановления контейнера в согласованное состояние.
- bpo-23008: Исправлено разрешение атрибутов с логическим значением False в pydoc.
- Исправление asyncio issue 235: put в LifoQueue и PriorityQueue не увеличивал счётчик незавершённых задач (эта ошибка была внесена в 3.4.3, когда JoinableQueue был объединён с Queue).
- bpo-23908: Функции os теперь отклоняют пути со встроенным нулевым символом на Windows вместо того, чтобы молча обрезать их.
- bpo-23728: binascii.crc\_hqx() мог вернуть целое число вне диапазона 0-0xffff для пустых данных.
- bpo-23811: Добавлена отсутствующая новая строка в сообщение об ошибке PyCompileError. Патч от Alex Shkop.
- bpo-17898: Исправлено исключение в gettext.py при разборе некоторых форм множественного числа.
- bpo-22982: Улучшена обработка BOM при переходе к нескольким позициям записываемого текстового файла.
- bpo-23865: Методы close() в нескольких модулях теперь идемпотентны и более устойчивы при завершении. Если необходимо освободить несколько ресурсов, все они освобождаются, даже если возникают ошибки.
- bpo-23881: Конструктор urllib.request.ftpwrapper теперь закрывает сокет, если соединение FTP не удалось, для устранения ResourceWarning.
- bpo-23400: Возбуждается то же исключение в Python 2 и 3, если sem\_open недоступен. Патч от Davin Potts.
- bpo-15133: \_tkinter.tkapp.getboolean() теперь поддерживает Tcl\_Obj и всегда возвращает bool. tkinter.BooleanVar теперь проверяет входные значения (принимает bool, int, str и Tcl\_Obj). tkinter.BooleanVar.get() теперь всегда возвращает bool.
- bpo-23338: Исправлено форматирование сообщений об ошибках ctypes на Cygwin. Патч от Makoto Kato.
- bpo-16840: Tkinter теперь поддерживает 64-битные целые числа, добавленные в Tcl 8.4, и целые числа произвольной точности, добавленные в Tcl 8.5.
- bpo-23834: Исправлено socket.sendto(): используется тип C Py\_ssize\_t для хранения результата sendto() вместо типа C int.
- bpo-21526: Tkinter теперь поддерживает новый логический тип в Tcl 8.5.
- bpo-23838: linecache теперь очищает кэш и возвращает пустой результат при MemoryError.
- bpo-18473: Исправлены совместимые с 2to3 и 3to2 отображения pickle. Исправлены неоднозначные обратные отображения. Добавлено много новых отображений. Отображение импорта больше не применяется к модулям, уже отображённым с полным именем.
- bpo-23745: Новый парсер заголовков email теперь обрабатывает дублирующиеся имена параметров MIME без ошибки, аналогично поведению get\_param.
- bpo-23792: Игнорировать KeyboardInterrupt, когда активен пейджер pydoc. Это имитирует поведение стандартных пейджеров unix и предотвращает завершение pipepager, пока сам пейджер ещё работает.
- bpo-23742: ntpath.expandvars() больше не теряет несбалансированные одинарные кавычки.
- bpo-21802: Читатель в BufferedRWPair теперь закрывается, даже если закрытие writer'а в BufferedRWPair.close() завершилось ошибкой.
- bpo-23671: string.Template теперь позволяет указывать параметр “self” как именованный аргумент. string.Formatter теперь позволяет указывать параметры “self” и “format\_string” как именованные аргументы.
- bpo-21560: Попытка записи данных неверного типа больше не приводит к повреждению GzipFile. Оригинальное исправление от Wolfgang Maier.
- bpo-23647: Увеличен MAXLINE в imaplib для поддержки современных размеров почтовых ящиков.
- bpo-23539: Если body равен None, http.client.HTTPConnection.request теперь устанавливает Content-Length в 0 для заголовков PUT, POST и PATCH, чтобы избежать ошибок 411 от некоторых веб-серверов.
- bpo-22351: Конструктор nntplib.NNTP больше не оставляет соединение и сокет открытыми до очистки сборщиком мусора. Исправление от Martin Panter.
- bpo-23136: \_strptime теперь единообразно обрабатывает все дни недели 0, включая 30 декабря предыдущего года. На основе исправления от Jim Carroll.
- bpo-23700: Итератор NamedTemporaryFile теперь сохраняет ссылку на экземпляр NamedTemporaryFile. Исправление от Bohuslav Kabrda.
- bpo-22903: Фиктивный тестовый пример, создаваемый unittest.loader при неудачном импорте тестового модуля, теперь сериализуем с помощью pickle.
- bpo-23568: Добавлена поддержка rdivmod для объектов MagicMock(). Исправление от Håkan Lövdahl.
- bpo-23138: Исправлен разбор cookies с отсутствующими ключами или значениями в cookiejar. Исправление от Demian Brecht.
- bpo-23051: Методы imap() и imap\_unordered() в multiprocessing.Pool теперь обрабатывают исключения, возбуждаемые итератором. Исправление от Alon Diamant и Davin Potts.
- bpo-22928: Отключена инъекция HTTP-заголовков в http.client. Оригинальное исправление от Demian Brecht.
- bpo-23615: Модули bz2, tarfile и tokenize теперь можно перезагружать с помощью imp.reload(). Исправление от Thomas Kluyver.
- bpo-23476: В модуле ssl включён флаг OpenSSL X509\_V\_FLAG\_TRUSTED\_FIRST для хранилищ сертификатов, когда он доступен.
- bpo-23576: Предотвращение зависания при чтении SSL, когда на уровне SSL достигнут EOF, но нижележащее соединение не закрыто.
- bpo-23504: Добавлен \_\_all\_\_ в модуль types.
- bpo-20204: Добавлен атрибут \_\_module\_\_ для классов \_tkinter.
- bpo-23521: Исправлена реализация деления timedelta на чистом Python.

  Устранён OverflowError в timedelta \* float для некоторых чисел с плавающей запятой; исправлено округление при точном делении timedelta.
- bpo-21619: Объекты Popen больше не оставляют процесс-зомби после выхода из with, если канал был разорван. Исправление от Martin Panter.
- bpo-6639: Функции модуля turtle на уровне модуля больше не возбуждают TclError после закрытия окна.
- bpo-814253: Теперь выдаются предупреждения, когда в просмотре назад (lookbehind) в регулярных выражениях используются обратные ссылки на группы и условные обратные ссылки на группы. (См. также: bpo-9179)
- bpo-23215: Многобайтовые кодеки с пользовательскими обработчиками ошибок, игнорирующими ошибки, потребляли слишком много памяти и возбуждали SystemError или MemoryError. Оригинальное исправление от Aleksi Torhamo.
- 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. Оригинальное исправление от Claudiu Popa.
- bpo-23146: Исправлена некорректная обработка абсолютных путей Windows с прямыми слешами в pathlib.
- bpo-23421: Исправлено сжатие в CLI tarfile. Исправление от wdv4758h.
- bpo-23367: Исправлена возможная ошибка переполнения в модуле unicodedata.
- bpo-23361: Исправлена возможная ошибка переполнения в коде создания подпроцесса в Windows.
- bpo-23801: Исправлена проблема, при которой cgi.FieldStorage не всегда игнорировал всю преамбулу multipart-тела.
- bpo-23310: Исправлен инициализатор MagicMock для работы с \_\_methods\_\_, как и configure\_mock(). Исправление от Kasia Jachim.
- asyncio: новые API цикла событий: set\_task\_factory() и get\_task\_factory().
- asyncio: функция async() устарела в пользу ensure\_future().
- bpo-23898: Исправлена функция inspect.classify\_class\_attrs() для поддержки атрибутов с перегруженными \_\_eq\_\_ и \_\_bool\_\_. Исправление от Mike Bayer.
- bpo-24298: Исправлена функция inspect.signature() для корректного разворачивания обёрток вокруг связанных методов.
- bpo-23572: Исправлена functools.singledispatch для классов с ложными метаклассами. Исправление от Ethan Furman.

### 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. Теперь везде в idlelib последовательно используется обновлённый idleConf.CurrentTheme.
- 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 они теперь отображаются как «sheet». Исправление от Mark Roseman.
- bpo-25198: Улучшен начальный HTML-просмотрщик, используемый для справки Idle. \* Правильное форматирование отступов для моноширинного текста (исправление от Mark Roseman). \* Добавлен фон для фрагментов кода, очень похожий на светло-голубовато-серый фон Sphinx. \* Повторное использование начальных ширины и высоты, заданных пользователем для оболочки и редактора. \* При использовании меню оглавления (TOC) заголовок раздела размещается в верхней части экрана.
- bpo-25225: Сокращён и переписан раздел документации Idle о цветах текста.
- bpo-21995: Поясняются некоторые различия между IDLE и консольным Python.
- bpo-22820: Поясняется необходимость использования *print* при запуске файла из редактора Idle.
- bpo-25224: Документация: дополнен список возможностей Idle и раздел о работе без подпроцесса.
- bpo-25219: Обновлена документация по параметрам командной строки Idle. Некоторые параметры отсутствовали, а примечания были неверны.
- bpo-24861: Большая часть idlelib является приватной и может быть изменена. Для запуска Idle используйте idleib.idle.\*. Смотрите idlelib.\_\_init\_\_.\_\_doc\_\_.
- bpo-25199: Idle: добавлены комментарии о синхронизации для будущих разработчиков.
- bpo-16893: Замена help.txt на help.html для отображения документации Idle. Новый файл idlelib/help.html является обрезанной версией Doc/build/html/library/idle.html. Он выглядит лучше, чем help.txt, и будет лучше документировать выпущенный Idle. HTML-просмотрщик tkinter, который работает с этим файлом, написан Mark Roseman. Теперь неиспользуемый класс EditorWindow.HelpDialog и файл helt.txt объявлены устаревшими.
- bpo-24199: Устарел неиспользуемый idlelib.idlever с возможным удалением в 3.6.
- bpo-24790: Удалён лишний код (который также создавал конфликты между версиями 2 и 3).
- 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.
- bpo-23184: Удалены неиспользуемые имена и импорты в idlelib. Начальный патч от Al Sweigart.

### Тесты

- bpo-25616: Тесты для OrderedDict вынесены из test\_collections в отдельный файл test\_ordered\_dict.
- bpo-25099: Исправлено, чтобы test\_compileall не завершался ошибкой, когда запись в sys.path недоступна для записи (часто встречается при административной установке на Windows).
- bpo-24751: При запуске regrtest с опцией командной строки `-w` выполнение test более не помечается как ошибочное, если при повторном запуске все тесты проходят успешно.
- bpo-21520: test\_zipfile больше не завершается ошибкой, если слово 'bad' встречается где-либо в имени текущего каталога.
- bpo-23799: Добавлена test.support.start\_threads() для запуска и очистки нескольких потоков.
- bpo-22390: test.regrtest теперь выводит предупреждение, если после выполнения теста остались временные файлы или каталоги.
- bpo-23583: Добавлены тесты для стандартных потоков ввода-вывода в IDLE.

### Сборка

- bpo-23445: Сборки pydebug теперь используют «gcc -Og» где возможно, чтобы сделать результирующий исполняемый файл быстрее.
- bpo-24603: Обновлены сборки Windows для использования OpenSSL 1.0.2d и установщика OS X 10.5 для использования OpenSSL 1.0.2e.

### C API

- bpo-23998: PyImport\_ReInitLock() теперь проверяет ошибку выделения блокировки

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

- bpo-12067: Переписана секция «Comparisons» в главе «Expressions» справочника по языку. Некоторые подробности сравнения смешанных типов были неверными или неоднозначными. NotImplemented актуален только на более низком уровне, чем глава «Expressions». Добавлены детали сравнения объектов range(), а также поведения по умолчанию и рекомендации по согласованности для пользовательских классов. Патч от Andy Maier.
- bpo-24952: Уточнён аргумент размера по умолчанию функции stack\_size() в модулях «threading» и «\_thread». Патч от Mattip.
- bpo-24808: Обновлены типы некоторых полей PyTypeObject. Патч от Joseph Weston.
- bpo-22812: Исправлены примеры обнаружения unittest. Патч от Pam McA’Nulty.
- bpo-24129: Уточнена справочная документация по разрешению имён. В том числе устранено предположение, что читатели знакомы со схемой разрешения имён, которая использовалась в Python до введения лексической области видимости для пространств имён функций. Патч от Ivan Levkivskyi.
- bpo-20769: Улучшена документация reload(). Патч от Dorian Pula.
- bpo-23589: Удалено повторяющееся предложение из FAQ. Патч от Yongzhi Pan.
- bpo-24729: Исправлено руководство по вводу-выводу в соответствии с реализацией в части параметра encoding функции open.
- bpo-24351: Уточнено, что подразумевается под «идентификатором» в контексте экземпляров string.Template.
- bpo-22155: Добавлен подраздел «Обработчики файлов» с createfilehandler в документацию tkinter. Удалён устаревший пример из FAQ. Патч от Martin Panter.
- bpo-24029: Документировано поведение связывания имён при импорте подмодулей.
- bpo-24077: Исправлена опечатка в man-странице для опции командной строки -I: -s, а не -S.

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

- bpo-25440: Исправлен вывод python-config –extension-suffix.
- bpo-23330: h2py теперь поддерживает произвольные имена файлов в #include.
- bpo-24031: make patchcheck теперь также поддерживает git-репозитории.

### Windows

- bpo-24306: Установлен идентификатор компонента для лаунчера, соответствующий версии 3.5 и выше, чтобы избежать понижения версии.
- bpo-25022: Удалена сильно устаревшая директория PC/example\_nt/.

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

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

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

- bpo-22735: Исправлено множество граничных случаев (включая аварийные завершения), связанных с пользовательскими реализациями mro().
- bpo-22896: Устранено использование PyObject\_AsCharBuffer(), PyObject\_AsReadBuffer() и PyObject\_AsWriteBuffer().
- bpo-21295: Отменены некоторые изменения ([issue #16795](https://python-all.ru/3.4/whatsnew/changelog.html)) номеров строк и смещений столбцов AST, которые привели к регрессу.
- bpo-21408: Теперь реализация по умолчанию \_\_ne\_\_() возвращает NotImplemented, если \_\_eq\_\_() вернул NotImplemented. Оригинальный патч от Martin Panter.
- bpo-23321: Исправлена аварийная остановка в str.decode(), когда обработчик ошибок возвращал строку замены длиннее, чем искажённые входные данные.
- bpo-23048: Исправлен выход из бесконечного цикла while в pdb.
- bpo-20335: Конструктор bytes теперь вызывает TypeError, если encoding или errors указаны с аргументом не строкового типа. На основе патча от Renaud Blanch.
- bpo-22335: Исправлена аварийная остановка при попытке расширить bytearray до 0x7fffffff байт на 32-битной платформе.
- bpo-22653: Исправлена ошибка утверждения в режиме отладки при повторной вставке в словарь в режиме отладки.
- bpo-22643: Исправлено целочисленное переполнение в операциях регистра Unicode (upper, lower, title, swapcase, casefold).
- bpo-22604: Исправлена ошибка утверждения в режиме отладки при делении комплексного числа на (nan+0j).
- bpo-22470: Исправлены проблемы целочисленного переполнения в обработчиках ошибок “backslashreplace”, “xmlcharrefreplace” и “surrogatepass”.
- bpo-22520: Исправлена проверка переполнения при создании repr объекта unicode.
- bpo-22519: Исправлена проверка переполнения в PyBytes\_Repr.
- bpo-22518: Исправлены проблемы целочисленного переполнения в кодировке latin-1.
- bpo-23165: Выполняется проверка переполнения перед выделением памяти в функции \_Py\_char2wchar.

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

- bpo-23399: pyvenv создаёт относительные символические ссылки, где это возможно.
- bpo-23099: Теперь закрытие io.BytesIO с экспортированным буфером отклоняется, чтобы предотвратить повреждение экспортированного буфера.
- 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-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-23248: Обновлены коды ошибок ssl из последней версии OpenSSL git master.
- bpo-23098: Теперь модуль os поддерживает 64-битный dev\_t.
- bpo-23250: В модуле http.cookies слова “HttpOnly” и “Secure” теперь пишутся с заглавной буквы, как указано в стандарте.
- bpo-23063: В команде check модуля distutils исправлен разбор reST, содержащего директивы «code» и «code-block».
- bpo-23209: selectors.BaseSelector.close() теперь очищает свою внутреннюю ссылку на отображение селектора, чтобы разорвать цикл ссылок. Первоначальный патч написал Martin Richard. (См. также: bpo-23225)
- bpo-21356: Функция ssl.RAND\_egd() сделана опциональной для поддержки LibreSSL. Доступность функции проверяется во время компиляции. Патч написал Bernard Spil.
- bpo-20896: Функция [`ssl.get_server_certificate()`](https://python-all.ru/3.4/library/ssl.html#ssl.get_server_certificate) теперь по умолчанию использует протокол [`PROTOCOL_SSLv23`](https://python-all.ru/3.4/library/ssl.html#ssl.PROTOCOL_SSLv23), а не [`PROTOCOL_SSLv3`](https://python-all.ru/3.4/library/ssl.html#ssl.PROTOCOL_SSLv3), для максимальной совместимости и поддержки платформ, где поддержка [`PROTOCOL_SSLv3`](https://python-all.ru/3.4/library/ssl.html#ssl.PROTOCOL_SSLv3) отключена. (См. также: bpo-22935)
- bpo-23111: В ftplib протокол ssl.PROTOCOL\_SSLv23 сделан версией по умолчанию.
- bpo-23132: Устранение регрессии в скорости и ясности в functools.total\_ordering.
- bpo-22585: На OpenBSD 5.6 и новее os.urandom() теперь вызывает getentropy() вместо чтения /dev/urandom для получения псевдослучайных байтов.
- bpo-23112: Исправлен SimpleHTTPServer: теперь при перенаправлении для добавления завершающего слеша правильно передаются строка запроса и фрагмент.
- bpo-23093: В модуле io разрешено больше операций с отсоединёнными потоками.
- bpo-19104: pprint теперь создаёт вычислимый вывод для обёрнутых строк.
- bpo-23071: Добавлены недостающие имена в codecs.\_\_all\_\_. Патч от Martin Panter.
- 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-22959: В конструкторе http.client.HTTPSConnection атрибут check\_hostname контекста используется предпочтительнее параметра *check\_hostname*.
- bpo-16043: Добавлен лимит по умолчанию на объём данных, возвращаемых xmlrpclib.gzip\_decode. Это устраняет CVE-2013-1753.
- bpo-22966: Исправлено затирание имени файла .pyc в \_\_pycache\_\_ при компиляции исходного файла, содержащего несколько точек в имени.
- bpo-21971: Обновлена документация turtledemo и модуль добавлен в индекс.
- bpo-21032: Исправлена утечка сокета при сбое HTTPConnection.getresponse(). Оригинальный патч от Martin Panter.
- bpo-22960: Добавлен аргумент context в конструктор xmlrpclib.ServerProxy.
- bpo-22915: Парсер SAX теперь поддерживает файлы, открытые через файловый дескриптор или по пути в виде байтов.
- bpo-22609: Конструкторы и методы update классов отображений в модуле collections теперь принимают аргумент self.
- bpo-22788: Добавлен параметр *context* в logging.handlers.HTTPHandler.
- bpo-22921: Разрешено передавать параметр *hostname* в SSLContext, даже если OpenSSL не поддерживает SNI.
- bpo-22894: TestCase.subTest() приводил к остановке набора тестов в режиме failfast даже при отсутствии ошибок.
- bpo-22638: SSLv3 теперь отключён во всей стандартной библиотеке. Его всё ещё можно включить, создав экземпляр SSLContext вручную.
- bpo-22370: Определение Windows в pathlib теперь более надёжно.
- bpo-22841: Отклонение корутин в asyncio.add\_signal\_handler(). Патч от Ludovic.Gasc.
- bpo-22849: Исправлена возможная двойная очистка в конструкторе io.TextIOWrapper.
- bpo-12728: Разные символы Unicode, имеющие одинаковый заглавный, но разный строчный регистр, теперь сопоставляются в регулярных выражениях без учёта регистра.
- bpo-22821: Исправлен fcntl() с целочисленным аргументом на 64-разрядных платформах с big-endian.
- bpo-22406: Исправлен кодек uu\_codec, некорректно портированный на 3.x. Основано на патче Мартина Пантера.
- bpo-17293: uuid.getnode() теперь определяет MAC-адрес на AIX с помощью netstat. Основано на патче Айварса Калванса.
- bpo-22769: Исправлен ttk.Treeview.tag\_has() при вызове без аргументов.
- bpo-22417: Проверка сертификатов по умолчанию в httplib (PEP 476).
- bpo-22775: Исправлена десериализация http.cookies.SimpleCookie с протоколом 2 и выше. Патч Тима Грэма.
- bpo-22366: urllib.request.urlopen теперь принимает объект контекста (SSLContext) в качестве аргумента, который будет использоваться для HTTPS-соединения. Патч Алекса Гейнора.
- bpo-22776: Исключённый код помещён в область видимости блока try в SysLogHandler.emit().
- bpo-22665: Добавлены недостающие get\_terminal\_size и SameFileError в shutil.\_\_all\_\_.
- bpo-17381: Исправлена обработка диапазонов без учёта регистра в регулярных выражениях.
- bpo-22410: Функции уровня модуля в re теперь кешируют скомпилированные зависящие от локали регулярные выражения с учётом локали.
- bpo-22759: Методы запросов на pathlib.Path() (exists(), is\_dir() и т.д.) теперь возвращают False, когда базовый вызов stat вызывает NotADirectoryError.
- bpo-8876: distutils теперь переключается на копирование файлов, если жёсткая ссылка не работает. Это позволяет использовать специальные файловые системы, такие как общие папки VirtualBox.
- bpo-18853: Исправлено ResourceWarning в shlex.\_\_nain\_\_.
- bpo-9351: Значения по умолчанию, установленные с помощью set\_defaults на подпарсере argparse, больше не игнорируются, если они также установлены на родительском парсере.
- bpo-21991: Сделать атрибуты 'params' заголовков email.headerregistry доступными только для чтения (MappingProxyType). Ранее словарь был изменяемым, но при каждом обращении к атрибуту создавался новый.
- bpo-22641: В asyncio контекст SSL по умолчанию для клиентских соединений теперь создаётся с помощью ssl.create\_default\_context() для повышения безопасности.
- bpo-22435: Исправлена утечка файлового дескриптора при неудачной привязке SocketServer.
- bpo-13096: Исправлено segfault в обработке больших значений POINTER в CTypes.
- bpo-11694: Возбуждается ConversionError в xdrlib, как описано в документации. Патч Филипа Грущинского и Клаудиу Попа.
- bpo-22462: Исправлено создание фиктивного фрейма в pyexpat для отображения в трассировках исключений.
- bpo-21173: Исправлен len() на WeakKeyDictionary, когда .clear() вызывался при активном итераторе.
- bpo-11866: Устранено состояние гонки при вычислении имён для новых потоков.
- bpo-21905: Избегаем RuntimeError в pickle.whichmodule() при изменении sys.modules во время итерации. Патч Оливье Гризеля.
- bpo-22219: CLI модуля zipfile теперь добавляет записи для каталогов (включая пустые) в ZIP-файл.
- bpo-22449: В ssl.SSLContext.load\_default\_certs учитываются переменные окружения SSL\_CERT\_DIR и SSL\_CERT\_FILE в Windows.
- bpo-20076: Добавлены непроизводные псевдонимы UTF-8 в таблицу языковых псевдонимов.
- bpo-20079: Добавлены локали, поддерживаемые в glibc 2.18, в таблицу языковых псевдонимов.
- bpo-22396: На 32-разрядной платформе AIX не экспонируются os.posix\_fadvise() и os.posix\_fallocate(), так как их прототипы в системных заголовках некорректны.
- bpo-22517: При освобождении объекта io.BufferedRWPair очищать его слабые ссылки.
- bpo-22448: Улучшена очистка отменённых таймеров для предотвращения неограниченного использования памяти. Патч Джошуа Мур-Оливы.
- bpo-23009: Обеспечить корректную работу selectors.EpollSelecrtor.select(), если не зарегистрировано ни одного FD.

### IDLE

- bpo-20577: Настройка максимальной длины строки для расширения FormatParagraph перенесена с вкладки General диалога настроек Idle на вкладку FormatParagraph диалога Config Extensions. Патч от Tal Einat.
- bpo-16893: Обновлена глава документации Idle в соответствии с текущей версией Idle и добавлена новая информация.
- bpo-3068: Добавлен диалог настройки расширений Idle в меню Options. Изменения записываются в HOME/.idlerc/config-extensions.cfg. Оригинальный патч от Tal Einat.
- bpo-16233: Для работы модуля обозревателя классов (File : Class Browser, Alt+C) требуется окно редактора с именем файла. Если запрос Class Browser поступает иным образом – из оболочки, окна вывода или окна редактора с заголовком «Untitled», – Idle больше не выводит окно с ошибкой. Вместо этого появляется окно Open Module (Alt+M). Если ввести допустимое имя и открыть модуль, также открывается соответствующий обозреватель.
- bpo-4832: При сохранении в файл типа Python файлы автоматически получают расширение .py (даже если ваша система его не отображает). На некоторых системах при выборе типа Text files автоматически добавляется .txt.
- bpo-21986: Объекты кода обычно не сериализуются модулем pickle. Для согласованности они больше не сериализуются при работе в Idle.
- bpo-23180: Переименован пункт меню IDLE «Windows» в «Window». Патч от Al Sweigart.

### Тесты

- bpo-23392: Добавлены тесты для C API модуля marshal, работающего с FILE\*.
- 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-22770: Предотвращены некоторые ошибки сегментации Tk на OS X при запуске GUI-тестов.
- bpo-23211: Обходной путь для ошибки test\_logging на некоторых системах OS X 10.6.
- bpo-23345: Предотвращение ошибок test\_ssl при больших значениях уровня патча OpenSSL (например, 0.9.8zc).
- bpo-22289: Предотвращение ошибок test\_urllib2net из-за таймаута ftp-соединения.

### Сборка

- bpo-15506: Использование стандартного макроса autoconf PKG\_PROG\_PKG\_CONFIG в скрипте configure.
- bpo-22935: Разрешена компиляция модуля ssl, если openssl не поддерживает SSL 3.
- bpo-16537: Проверка, пуст ли self.extensions в setup.py. Патч от Jonathan Hosmer.
- bpo-18096: Исправлен порядок библиотек, возвращаемый python-config.
- bpo-17219: Добавлен каталог сборки библиотек для кросс-компиляции расширений Python.
- bpo-17128: Для установщика 3.4.3 на OS X 10.5+ используется приватная версия OpenSSL.

### C API

- bpo-22079: PyType\_Ready() теперь проверяет, что статически выделенный тип не имеет динамически выделенных базовых классов.

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

- bpo-19548: Обновлена документация модуля codecs, чтобы лучше отразить различие между текстовыми кодировками и другими кодеками, а также добавлены другие уточнения. Патч от Martin Panter.
- bpo-22914: Обновлено руководство по переносу кода с Python 2 на 3 (HOWTO), описывающее более автоматизированный подход.
- bpo-21514: Документация модуля json теперь ссылается на новый RFC 7159 вместо устаревшего RFC 4627.

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

- bpo-22314: pydoc теперь работает при установленной переменной окружения LINES.

### Windows

- bpo-17896: Сценарии сборки Windows теперь ожидают исходные коды внешних библиотек в `PCbuild\..\externals` вместо `PCbuild\..\..`.
- bpo-17717: Сценарии сборки Windows теперь используют копию NASM, полученную с svn.python.org, для сборки OpenSSL.
- bpo-22644: Встроенная версия OpenSSL обновлена до 1.0.1j.

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

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

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

- bpo-10510: Методы register и upload в distutils теперь используют стандарты HTML соответствующие концы строк CRLF.
- bpo-9850: Исправлена macpath.join() для пустого первого компонента. Патч от Oleg Oshmyan.
- bpo-22427: TemporaryDirectory больше не пытается выполнить очистку дважды при использовании в операторе with в генераторе.
- bpo-20912: Теперь каталоги, добавленные в ZIP-файл, имеют правильные атрибуты каталогов Unix и MS-DOS атрибуты.
- bpo-21866: ZipFile.close() больше не записывает записи центрального каталога ZIP64, если allowZip64 равно false.
- bpo-22415: Исправлен вывод отладки для опкода GROUPREF\_EXISTS в модуле re. Удалены завершающие пробелы в выводе отладки.
- bpo-22423: Необработанное исключение в потоке больше не вызывает необработанное AttributeError, когда sys.stderr равно None.
- bpo-21332: Обеспечивает, что `bufsize=1` в subprocess.Popen() выбирает построчную буферизацию, а не блочную. Патч от Akira Li.

## Python 3.4.2 кандидат в релизы 1

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

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

- bpo-22258: Исправлена внутренняя функция set\_inheritable() на Illumos. Эта платформа предоставляет функцию `ioctl(FIOCLEX)`, но её вызов завершается с ошибкой errno = ENOTTY: «Inappropriate ioctl for device». set\_inheritable() теперь использует более медленный `fcntl()` (`F_GETFD` и затем `F_SETFD`).
- bpo-21669: С помощью эвристики в SyntaxError.\_\_init\_\_ парсер теперь пытается генерировать более осмысленные (или, по крайней мере, более дружественные для поисковых систем) сообщения об ошибках, когда «exec» и «print» используются как операторы.
- bpo-21642: В условном выражении if-else разрешить целое число, записанное без пробела между ним и ключевым словом `else` (например, `True if 42else False`), как допустимый синтаксис.
- bpo-21523: Исправлено излишне пессимистичное вычисление эффекта стека некоторых опкодов в компиляторе. Это также исправляет проблему квадратичного времени компиляции, заметную при компиляции кода с большим количеством операторов «and» и «or».

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

- bpo-21091: Исправлена ошибка API: email.message.EmailMessage.is\_attachment теперь является методом. Поскольку EmailMessage является предварительным, мы можем изменить API в корректирующем релизе, но используем трюк для сохранения обратной совместимости с 3.4.0/1.
- bpo-21079: Исправлен email.message.EmailMessage.is\_attachment, чтобы возвращать корректный результат, когда заголовок имеет параметры, а также значение.
- bpo-22247: Добавлен NNTPError в nntplib.\_\_all\_\_.
- bpo-4180: Реестры предупреждений теперь сбрасываются при изменении фильтров.
- bpo-22419: Ограничьте длину входящего HTTP-запроса в сервере wsgiref до 65536 байт и отправляйте код ошибки 414 для большей длины. Патч предоставлен Devin Cook.
- Нестрогий разбор cookie в http.cookies может представлять угрозу безопасности в сочетании с нестандартной обработкой cookie в некоторых веб-браузерах. Сообщил Sergey Bobrov
- bpo-22384: Исключение в колбэке Tkinter больше не вызывает сбой программы при запуске с pythonw.exe.
- bpo-22168: Предотвращение AttributeError в turtle при нестандартном Canvas на OS X.
- bpo-21147: sqlite3 теперь вызывает исключение, если запрос содержит нулевой символ, вместо его усечения. Основано на патче Victor Stinner.
- bpo-21951: Исправлен сбой в Tkinter на AIX при вызове команды Tcl с пустой строкой или аргументом-кортежем.
- bpo-21951: Tkinter теперь, скорее всего, вызывает MemoryError вместо сбоя, если выделение памяти не удается.
- bpo-22338: Исправлен сбой в модуле json при сбое выделения памяти.
- bpo-22226: Первая буква больше не удаляется из ключа «status» в результате Treeview.heading().
- bpo-19524: Исправлена утечка ресурсов в HTTP-соединении при получении недопустимого ответа. Патч от Martin Panter.
- 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-22216: smtplib теперь более полно сбрасывает своё состояние после quit. Наиболее очевидным следствием предыдущего поведения был сбой STARTTLS при последовательности connect/starttls/quit/connect/starttls.
- bpo-22185: Исправление редкого RuntimeError в threading.Condition.wait(), вызванного изменением очереди ожидающих без удержания блокировки. Патч от Doug Zongker.
- bpo-22182: Использование e.args для правильной распаковки исключений в distutils.file\_util.move\_file. Патч от Claudiu Popa.
- Модуль webbrowser теперь использует start\_new\_session=True подпроцесса вместо потенциально опасного вызова preexec\_fn=os.setsid.
- bpo-22236: Исправлены операции копирования изображений Tkinter в режиме NoDefaultRoot.
- bpo-22191: Исправление warnings.\_\_all\_\_.
- bpo-15696: Добавлена реализация \_\_sizeof\_\_ для объектов mmap на Windows.
- bpo-22068: Устранены циклические ссылки с Variables и Fonts в Tkinter.
- bpo-22165: SimpleHTTPRequestHandler теперь поддерживает нераскодируемые имена файлов.
- 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-21121: Сторонние расширения на C больше не принудительно собираются с флагом -Werror=declaration-after-statement.
- bpo-21975: Исправлен сбой при использовании неинициализированного sqlite3.Row (в частности, при распаковке сериализованного sqlite3.Row). Теперь sqlite3.Row инициализируется в методе \_\_new\_\_().
- bpo-21580: Tkinter теперь корректно обрабатывает аргументы bytes, переданные в Tk. В частности, это позволяет инициализировать изображения из бинарных данных.
- bpo-17172: Обеспечение активного запуска turtledemo на OS X даже при запуске с подпроцессом. Патч от Lita Cho.
- bpo-21704: Исправление ошибки сборки \_multiprocessing при отсутствии семафоров. Патч от Arfrever Frehtes Taifersar Arahesis.
- Исправление repr(\_socket.socket) на Windows 64-bit: не вызывать OverflowError на закрытом сокете. repr(socket.socket) уже работает корректно.
- bpo-16133: Метод asynchat.async\_chat.handle\_read() теперь игнорирует исключения BlockingIOError.
- bpo-22044: Исправлено преждевременное DECREF в call\_tzinfo\_method. Патч от Tom Flanagan.
- bpo-19884: readline: Отключение мета-модификатора, если stdout не является терминалом, чтобы не записывать ANSI-последовательность «033\[1034h» в stdout. Эта последовательность используется на некоторых терминалах (например, TERM=xterm-256color) для включения поддержки 8-битных символов.
- bpo-21888: plistlib.load() и plistlib.loads() теперь работают, если указан параметр fmt.
- bpo-21044: tarfile.open() теперь корректно обрабатывает fileobj с целочисленным атрибутом 'name'. На основе патча от Antoine Pietri.
- bpo-21867: Предотвращение сбоя turtle из-за недопустимого размера буфера отмены.
- bpo-19076: Не передавать избыточный аргумент 'file' в self.error().
- bpo-21942: Исправлен просмотр исходных файлов в режиме сервера pydoc на Windows.
- bpo-11259: asynchat.async\_chat().set\_terminator() теперь возбуждает ValueError, если количество полученных байт отрицательное.
- bpo-12523: asynchat.async\_chat.push() теперь возбуждает TypeError, если не получает строку bytes
- bpo-21707: Добавлен отсутствующий аргумент kwonlyargcount в ModuleFinder.replace\_paths\_in\_code().
- bpo-20639: Вызов Path.with\_suffix('') позволяет снова удалить суффикс. Патч от July Tikhonov.
- bpo-21714: Запрещено создание некорректных путей с помощью Path.with\_name(). Оригинальный патч: Antony Lee.
- bpo-21897: Исправлен сбой атрибута f\_locals с переменными замыкания при вызове frame.clear().
- bpo-21151: Исправлен сегфолт в модуле winreg, когда `None` передаётся как значение `REG_BINARY` в SetValueEx. Патч: John Ehresman.
- bpo-21090: io.FileIO.readall() больше не игнорирует ошибки ввода-вывода. Ранее он игнорировал ошибки ввода-вывода, если хотя бы первый вызов read() на C завершался успешно.
- bpo-21781: ssl.RAND\_add() теперь поддерживает строки длиннее 2 ГБ.
- bpo-11453: asyncore: генерирует ResourceWarning при уничтожении незакрытого объекта file\_wrapper. Деструктор теперь при необходимости закрывает файл. Метод close() теперь можно вызывать дважды: второй вызов ничего не делает.
- bpo-21858: Улучшена обработка исключений Python в модуле sqlite3.
- bpo-21476: Обеспечено, что TextIOWrapper в email.parser.BytesParser отбрасывается после разбора, чтобы входной файл неожиданно не закрывался.
- bpo-21729: Использован оператор with в модуле dbm.dumb для гарантированного закрытия файлов. Патч: Claudiu Popa.
- bpo-21491: socketserver: Исправлено состояние гонки при завершении дочерних процессов.
- bpo-21832: Входные данные для именованных кортежей должны быть строго строками.
- bpo-19145: Аргумент times в itertools.repeat теперь обрабатывает отрицательные значения одинаково как для именованных, так и для позиционных аргументов.
- bpo-21812: turtle.shapetransform не изменял черепашку при первом вызове. (Проблема обнаружена и исправлена Lita Cho.)
- bpo-21635: Кэш метода difflib SequenceMatcher.get\_matching\_blocks() не соответствовал фактическому результату. Первый был списком кортежей, а второй – списком именованных кортежей.
- bpo-21722: Команда upload из distutils теперь завершается с ненулевым кодом возврата при ошибке загрузки. Патч: Martin Dengler.
- bpo-21723: asyncio.Queue: поддержка любого числового типа (например, float) для максимального размера. Патч: Vajrasky Kok.
- bpo-21326: Добавлен новый метод is\_closed() в asyncio.BaseEventLoop. Методы run\_forever() и run\_until\_complete() класса asyncio.BaseEventLoop теперь вызывают исключение, если цикл событий был закрыт.
- bpo-21774: Исправлена NameError из-за некорректной ссылки на переменную в коде XML Minidom для создания инструкций обработки. (Найдено и исправлено Claudiu Popa.)
- bpo-21766: Предотвращена уязвимость в CGIHTTPServer: теперь пути декодируются из URL перед проверкой на наличие CGI-скрипта по этому пути.
- bpo-21310: Исправлена возможная утечка ресурсов при неудачном open().
- bpo-21677: Исправлена цепочка ненормализованных исключений в методах close() модуля io.
- bpo-11709: Исправлена функция pydoc.help: она больше не завершается ошибкой, когда sys.stdin не является корректным файлом.
- bpo-13223: Исправлен pydoc.writedoc: HTML-документация для методов, использующих self в примерах кода, теперь генерируется корректно.
- bpo-21463: В urllib.request исправлена очистка FTP-кэша.
- bpo-21618: Модуль подпроцесс мог не закрыть открытые файловые дескрипторы, унаследованные вызывающим процессом и уже превышающие лимиты ресурсов POSIX. В системах с работающим интерфейсом /proc/self/fd или /dev/fd теперь этот максимум игнорируется и закрываются все дескрипторы.
- bpo-21552: Исправлено возможное целочисленное переполнение для слишком длинных строк в модуле tkinter на 64-битных платформах.
- bpo-14315: Модуль zipfile теперь игнорирует слишком короткие для разбора дополнительные поля в центральном каталоге, вместо того чтобы допускать всплывание ошибки struct.unpack, поскольку такие «плохие данные» встречаются во многих реальных zip-файлах и игнорируются другими zip-инструментами.
- bpo-21402: tkinter.ttk теперь работает, если корневое окно по умолчанию не задано.
- bpo-10203: sqlite3.Row теперь действительно поддерживает протокол последовательности. В частности, поддерживаются reverse() и отрицательные индексы. Оригинальный патч: Claudiu Popa.
- bpo-18807: Если для виртуального окружения указано копирование (без симлинков), то псевдонимы интерпретатора python (python, python3) теперь создаются копированием, а не символической ссылкой.
- bpo-14710: pkgutil.get\_loader() больше не вызывает исключение, если в sys.modules найден None.
- bpo-14710: pkgutil.find\_loader() больше не вызывает исключение, если модуль не существует.
- bpo-21481: Проверки равенства и неравенства в argparse теперь возвращают NotImplemented при сравнении с неизвестным типом.
- bpo-8743: Исправлена совместимость между объектами set и абстрактным базовым классом collections.Set().
- bpo-13355: random.triangular() больше не вызывает ZeroDivisionError, когда low равно high.
- bpo-21538: Модуль plistlib теперь поддерживает загрузку бинарных plist-файлов, когда размер ссылки или смещения не является степенью двойки.
- bpo-21801: Проверка, что \_\_signature\_\_ имеет значение None или является экземпляром Signature.
- bpo-21923: Предотвращение AttributeError в distutils.sysconfig.customize\_compiler из-за возможной неинициализированности \_config\_vars.
- bpo-21323: Исправлена работа http.server со скриптами в подкаталогах CGI, нарушенная исправлением для безопасности [проблемы #19435](https://python-all.ru/3.4/whatsnew/changelog.html). Патч Зака Бёрна (Zach Byrne).
- bpo-22176: Обновление libffi для модуля ctypes до версии 3.1. Этот выпуск добавляет поддержку архитектур Linux AArch64 и POWERPC ELF ABIv2 с порядком байтов от младшего к старшему (little endian).

### Сборка

- bpo-15661: Установщики для OS X с python.org теперь распространяются в виде подписанных пакетов, совместимых с функцией безопасности Gatekeeper.
- bpo-21958: Определение HAVE\_ROUND при сборке с Visual Studio 2013 и выше. Патч Закари Тёрнера (Zachary Turner).
- bpo-15759: Цели «make suspicious», «make linkcheck» и «make doctest» в каталоге Doc/ теперь выводят специальное сообщение только при наличии ошибок.
- bpo-17095: Исправлена поддержка *shared* в Modules/Setup.
- bpo-21811: Предвосхищающие исправления для поддержки версий OS X \> 10.9.
- bpo-21166: Предотвращение возможных ошибок сегментации и других случайных сбоев при выполнении «python –generate-posix-vars» в цели сборки pybuilddir.txt.

### IDLE

- bpo-17390: Изменение заголовка окна редактора: удалено «Python», версия перенесена в конец.
- bpo-14105: Точки останова отладчика Idle больше не исчезают при вставке или удалении строк.
- bpo-17172: Turtledemo теперь можно запускать из Idle. В настоящее время пункт находится в меню Help, но может быть перемещён в Run. Патч Рамчандры Апта (Ramchandra Apt) и Литы Чо (Lita Cho).
- bpo-21765: Добавлена поддержка не-ASCII идентификаторов в HyperParser.
- bpo-21940: Добавлены модульные тесты для WidgetRedirector. Первоначальный патч Саймадхава Хебликара (Saimadhav Heblikar).
- bpo-18592: Добавлены модульные тесты для SearchDialogBase. Патч Фила Вебстера (Phil Webster).
- bpo-21694: Добавлены модульные тесты для ParenMatch. Патч Саймадхава Хебликара (Saimadhav Heblikar).
- bpo-21686: Добавлены модульные тесты для HyperParser. Первоначальный патч Саймадхава Хебликара (Saimadhav Heblikar).
- bpo-12387: Добавлены недостающие версии в верхнем (нижнем) регистре для стандартных сочетаний клавиш Windows в Idle, чтобы клавиша Caps Lock (блокировка верхнего регистра) не отключала их. Патч Роджера Серви (Roger Serwy).
- bpo-21695: Закрытие окна результатов поиска в файлах во время выполнения поиска больше не приводит к закрытию Idle.
- bpo-18910: Добавлены модульные тесты для textView. Патч Фила Вебстера (Phil Webster).
- bpo-18292: Добавлены модульные тесты для AutoExpand. Патч Саймадхава Хебликара (Saihadhav Heblikar).
- bpo-18409: Добавлены модульные тесты для AutoComplete. Патч Фила Вебстера (Phil Webster).

### Тесты

- bpo-22166: С помощью новой внутренней вспомогательной функции \_codecs.\_forget\_codec модуль test\_codecs теперь очищает кеши кодировок, чтобы избежать видимости утечки ссылок.
- bpo-22236: Тесты Tkinter больше не используют повторно окно корневого окна по умолчанию. Для каждого класса тестов создаётся новое корневое окно.
- bpo-20746: Исправлен test\_pdb для работы в режиме проверки утечек ссылок (-R). Патч Ксавье де Гэ (Xavier de Gaye).
- bpo-22060: Модуль test\_ctypes был несколько очищен и упрощён; теперь он использует автоматическое обнаружение тестов unittest для поиска своих тестов.
- bpo-22104: regrtest.py больше не хранит ссылку на набор тестов, загруженных из тестовых модулей, в которых не определена test\_main().
- bpo-22002: Добавлена функция `load_package_tests` в test.support, которая используется для реализации и дополнения обнаружения тестов в test\_asyncio, test\_email, test\_importlib, test\_json и test\_tools.
- bpo-21976: Исправление test\_ssl для приема строк версий LibreSSL. Благодарность Уильяму Орру.
- bpo-21918: test\_tools преобразован из модуля в пакет, содержащий отдельные тестовые файлы для каждого тестируемого скрипта.
- bpo-20155: Изменены имена HTTP-методов в падающих тестах test\_httpservers, чтобы программное обеспечение фильтрации пакетов (в частности, Windows Base Filtering Engine) не мешало семантике транзакций, ожидаемой тестами.
- bpo-19493: Выполнен рефакторинг тестового пакета ctypes для явного пропуска тестов вместо молчаливого.
- bpo-18492: Теперь все ресурсы разрешены, когда тесты не запускаются с помощью regrtest.py.
- bpo-21634: Исправление микро-бенчмарка pystone: используйте целочисленное деление вместо обычного, чтобы тестировать целые числа, а не числа с плавающей запятой. Установлена версия pystone 1.2. Патч написал Леннарт Регебро.
- bpo-21605: Добавлены тесты для изображений Tkinter.
- bpo-21493: Добавлен тест для ntpath.expanduser(). Автор исходного патча – Клаудиу Попа.
- bpo-19925: Добавлены тесты для модуля spwd. Автор исходного патча – Вайраски Кок.
- bpo-21522: Добавлены тесты Tkinter для Listbox.itemconfigure(), PanedWindow.paneconfigure() и Menu.entryconfigure().

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

- bpo-21777: Методы двоичных последовательностей для bytes и bytearray теперь документированы явно, вместо того чтобы предполагать, что пользователи смогут вывести ожидаемое поведение из поведения соответствующих методов str.

### Windows

- bpo-21671: Встроенная версия OpenSSL обновлена до 1.0.1i. (См. также: bpo-22160, CVE-2014-0224)
- bpo-10747: Используйте маркированные версиями метки в меню «Пуск» Windows. Патч от Олив Килберн.

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

- bpo-22201: Интерфейс командной строки модуля zipfile теперь корректно извлекает ZIP-файлы с записями каталогов. Патч от Райана Уилсона.
- bpo-21906: Сделать Tools/scripts/md5sum.py работоспособным в Python 3. Патч от Закари Уэра.
- bpo-21629: Исправление функции «–converters» в Argument Clinic.

## Python 3.4.1 финальная версия

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

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

- bpo-21418: Исправление сбоя во встроенной функции super() при вызове без аргументов и без текущего фрейма (например, во встроенном Python).
- bpo-21425: Исправление сброса стандартных потоков в интерактивном интерпретаторе.
- bpo-21435: В редких случаях при запуске финализаторов на объектах в циклическом мусоре могло происходить некорректное разыменование указателя из-за тонкой ошибки во внутренней логике итерации.

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

- bpo-10744: Исправление строк формата PEP 3118 для объектов ctypes с нетривиальной формой.
- bpo-20998: Исправлено re.fullmatch() для повторяющегося шаблона из одного символа с игнорированием регистра. Автор исходного патча – Мэтью Барнетт.
- bpo-21075: fileinput.FileInput теперь читает байты из стандартного потока, если указан двоичный режим. Патч от Сэма Кимбрела.
- bpo-21396: Исправление TextIOWrapper(..., write\_through=True), чтобы не принуждать к вызову flush() для нижележащего двоичного потока. Патч от akira.
- bpo-21470: Улучшена инициализация генератора случайных чисел за счёт использования достаточного количества байтов для покрытия полного пространства состояний вихря Мерсенна.
- bpo-21398: Исправление ошибки Unicode в программе просмотра pydoc, когда документация содержит символы, не кодируемые в кодировку stdout.

### Тесты

- bpo-17756: Исправление теста test\_code при запуске из установленного расположения.
- bpo-17752: Исправление тестов distutils при запуске из установленного расположения.

### IDLE

- bpo-18104: Добавлен idlelib/idle\_test/htest.py с несколькими примерами тестов для начала консолидации и улучшения тестов Idle, проверяемых человеком. Внесены необходимые изменения в другие файлы для работы с htest. При запуске модуля как \_\_main\_\_ выполняются все тесты.

## Python 3.4.1 кандидат на выпуск 1

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

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

- bpo-21274: Определён PATH\_MAX для GNU/Hurd в Python/pythonrun.c.
- bpo-21209: Исправлена передача кортежей пользовательским объектам-генераторам с помощью синтаксиса yield from syntax.
- bpo-21134: Исправлен segfault при вызове str для неинициализированного объекта UnicodeEncodeError, UnicodeDecodeError или UnicodeTranslateError.
- bpo-19537: Исправлено выравнивание PyUnicode\_DATA() на m68k. Патч от Андреаса Шваба.
- bpo-20929: Добавлено приведение типа, чтобы избежать сдвига отрицательного числа.
- bpo-20731: Корректная позиция в файлах исходного кода, даже если они открыты в текстовом режиме. Патч от Serhiy Storchaka.
- bpo-20637: Совместное использование ключей теперь также работает для словарей экземпляров подклассов. Патч от Peter Ingebretson.
- bpo-12546: Разрешено использование `\x00` в качестве символа заполнения при использовании методов \_\_format\_\_ для str, int, float и complex.
- bpo-13598: Изменён string.Formatter для поддержки автоматической нумерации полей замены. Теперь он соответствует поведению str.format() в этом отношении. Патчи от Phil Elson и Ramchandra Apte.

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

- bpo-21088: Исправление регрессии curses.window.addch() в 3.4.0. При переносе на Argument Clinic первые два аргумента были перепутаны.
- bpo-21469: Снижен риск ложных срабатываний в robotparser путём проверки того, что robots.txt был прочитан или не существует перед возвратом True в can\_fetch().
- bpo-21321: itertools.islice() теперь освобождает ссылку на исходный итератор, когда срез исчерпан. Патч от Anton Afanasyev.
- bpo-9815: assertRaises теперь пытается очистить ссылки на локальные переменные в traceback исключения.
- 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-21239: patch.stopall() не работал детерминированно, когда одно и то же имя было пропатчено более одного раза.
- 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 для mock-функции, созданной с помощью 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-21172: Проверка isinstance ослаблена с dict до collections.Mapping.
- bpo-21155: asyncio.EventLoop.create\_unix\_server() теперь вызывает ValueError, если path и sock указаны одновременно.
- bpo-21149: Улучшена потокобезопасность при очистке системы логирования во время завершения работы интерпретатора. Благодарность Devin Jeanpierre за патч.
- bpo-20145: `assertRaisesRegex` и `assertWarnsRegex` теперь вызывают TypeError, если второй аргумент не является строкой или скомпилированным регулярным выражением.
- bpo-21058: Исправлена утечка файлового дескриптора в [`tempfile.NamedTemporaryFile()`](https://python-all.ru/3.4/library/tempfile.html#tempfile.NamedTemporaryFile), закрывается файловый дескриптор, если [`io.open()`](https://python-all.ru/3.4/library/io.html#io.open) завершается ошибкой.
- bpo-21200: Возвращает None из pkgutil.get\_loader(), если \_\_spec\_\_ отсутствует.
- bpo-21013: Улучшена ssl.create\_default\_context() при использовании на стороне сервера для обеспечения лучшей безопасности по умолчанию.
- 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-20995: Улучшены шифры по умолчанию, используемые модулем ssl, для обеспечения лучшей безопасности и приоритетной совершенной прямой секретности.
- bpo-20884: Не предполагать, что \_\_file\_\_ определён в importlib.\_\_init\_\_.
- bpo-21499: Игнорировать \_\_builtins\_\_ в нескольких тестах test\_importlib.test\_api.
- 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. Патч от Claudiu Popa.
- bpo-11558: `email.message.Message.attach` теперь возвращает более полезное сообщение об ошибке, если `attach` вызывается для сообщения, у которого `is_multipart` равно False.
- bpo-20283: Методы регулярных выражений теперь принимают именованный параметр string, как описано в документации. Параметры pattern и source оставлены как устаревшие псевдонимы.
- bpo-20778: Исправлен modulefinder для работы с модулями, содержащими только байт-код.
- bpo-20791: copy.copy() теперь не создаёт копию, когда входной объект – bytes. Первоначальный патч от Peter Otten.
- bpo-19748: На AIX time.mktime() теперь вызывает OverflowError для года вне диапазона \[1902; 2037\].
- bpo-20816: Исправлен inspect.getcallargs(), чтобы вызывать правильный TypeError для отсутствующих только-именованных аргументов. Патч от Jeremiah Lowin.
- bpo-20817: Исправлен inspect.getcallargs(), чтобы правильно завершаться ошибкой, если отсутствует более 3 аргументов. Патч от Jeremiah Lowin.
- bpo-6676: Обеспечение вызова содержательного исключения при попытке разбора более одного XML-документа на один экземпляр pyexpat xmlparser. (Оригинальные патчи от Hirokazu Yamamoto и Amaury Forgeot d'Arc, с предложенной формулировкой от David Gutteridge)
- bpo-21117: Исправлен inspect.signature для лучшей поддержки functools.partial. Из-за особенностей реализации functools.partial позиционно-именованные аргументы, переданные как именованные, становятся только именованными.
- bpo-21209: Исправлен asyncio.tasks.CoroWrapper для обхода ошибки в реализации yield-from в CPython до версии 3.4.1.
- asyncio: Добавлены свойства gi\_{frame,running,code} к CoroWrapper ([задача #163](https://python-all.ru/3.4/whatsnew/changelog.html) вышестоящего проекта).
- bpo-21311: Предотвращение исключения в \_osx\_support при нестандартных конфигурациях компилятора. Патч от John Szakmeister.
- bpo-11571: Обеспечение того, чтобы окно turtle становилось самым верхним при запуске на OS X.
- bpo-21276: posixmodule: не определять USE\_XATTRS на KFreeBSD и Hurd.
- bpo-21226: правильно настраивать модули в PyImport\_ExecCodeModuleObject (и подобных).

### IDLE

- bpo-21139: изменить ширину абзаца по умолчанию на 72, как рекомендует PEP 8.
- bpo-21284: тест переформатирования абзаца проходит после изменения пользователем ширины переформатирования.
- bpo-17654: обеспечить правильную настройку меню IDLE на OS X для сборок без фреймворка и для всех вариантов Tk.

### Сборка

- Сборка для Windows теперь включает OpenSSL 1.0.1g
- bpo-21285: переработать и исправить проверку конфигурации curses, чтобы всегда искать в каталоге ncursesw.
- bpo-15234: для BerkelyDB и Sqlite добавлять найденные каталоги библиотек и include только если они ещё не используются в поиске. Это позволяет избежать явной зависимости от библиотеки времени выполнения.
- bpo-20644: поддержка сборки установщика OS X для изменений сборки документации в 3.4.1: предполагать, что внешний sphinx-build доступен в /usr/bin.

### C API

- bpo-20942: PyImport\_ImportFrozenModuleObject() больше не устанавливает \_\_file\_\_ в соответствии с тем, что делает importlib; это затрагивает \_frozen\_importlib, а также любой модуль, загруженный с помощью imp.init\_frozen().

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

- bpo-17386: расширена функциональность скрипта `Doc/make.bat`, чтобы сделать его гораздо более сопоставимым с `Doc/Makefile`.
- bpo-21043: удалить рекомендацию конкретных организаций CA и указать возможность загрузки сертификатов ОС.
- bpo-20765: добавить недостающую документацию для PurePath.with\_name() и PurePath.with\_suffix().
- bpo-19407: новые руководства по установке и распространению пакетов на основе инструментов Python Packaging Authority. Существующие руководства сохранены в виде ссылок на устаревшую документацию distutils, поскольку они всё ещё содержат некоторые обязательные справочные материалы для разработчиков инструментов, которые больше нигде не задокументированы.
- bpo-19697: документировать случаи, когда \_\_main\_\_.\_\_spec\_\_ равно None.

### Тесты

- 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-20939: избегать различных сбоев сетевых тестов из-за нового перенаправления с [http://www.python.org/](https://python-all.ru/3.4/whatsnew/changelog.html) на [https://www.python.org](https://python-all.ru/3.4/whatsnew/changelog.html): вместо этого использовать [http://www.example.com](https://python-all.ru/3.4/whatsnew/changelog.html).
- bpo-20668: тесты asyncio больше не полагаются на файл tests.txt. (Патч от Vajrasky Kok)
- bpo-21093: предотвращать сбои ctypes test\_macholib на OS X, если копия libz существует в $HOME/lib или /usr/local/lib.

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

- Добавить поддержку `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.

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

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

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

- bpo-20939: исправить сбой test\_geturl в test\_urllibnet из-за нового перенаправления с [http://www.python.org/](https://python-all.ru/3.4/whatsnew/changelog.html) на [https://www.python.org](https://python-all.ru/3.4/whatsnew/changelog.html).

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

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

## Python 3.4.0 кандидат в релизы 3

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

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

- bpo-20786: исправить сигнатуры для встроенных функций dict.\_\_delitem\_\_ и property.\_\_delete\_\_.

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

- bpo-20839: Не вызывать DeprecationWarning в всё ещё поддерживаемом API pkgutil.get\_loader(), когда \_\_loader\_\_ не установлен в модуле (а также при прямом вызове pkgutil.find\_loader()).

### Сборка

- 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*

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

- bpo-20625: Имена параметров в \_\_annotations\_\_ некорректно искажались. Обнаружено Джонасом Вьелицким, исправление подготовлено Юрием Селивановым.
- bpo-20261: В pickle поиск \_\_getnewargs\_\_ и \_\_getnewargs\_ex\_\_ осуществляется по типу объекта.
- bpo-20619: Узлам AST для аргументов, передаваемых только по ключу, присвоены номера столбца и строки.
- bpo-20526: Откат изменений из [issue #19466](https://python-all.ru/3.4/whatsnew/changelog.html), которые приводили к регрессу: больше не очищается состояние потоков Python на ранних этапах завершения работы Python.

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

- 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) и Юрием Селивановым.
- bpo-20681: Добавлен новый API обработки ошибок в asyncio. Новые API: loop.set\_exception\_handler(), loop.default\_exception\_handler() и loop.call\_exception\_handler().
- bpo-20673: Реализована поддержка UNIX-сокетов в 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.

### Сборка

- bpo-20641: Запуск настраиваемых действий MSI (установка pip, компиляция pyc) с флагом NoImpersonate для поддержки выполнения с повышенными привилегиями (UAC).
- bpo-20221: Удалено конфликтующее (или циклическое) определение hypot при компиляции с VS 2010 или новее. Первоначальный патч от Табреза Мохаммеда (Tabrez Mohammed).
- bpo-20609: Восстановлена возможность сборки 64-разрядных двоичных файлов Windows на 32-разрядной Windows, которая была нарушена изменением в [issue #19788](https://python-all.ru/3.4/whatsnew/changelog.html).

## Python 3.4.0 release candidate 1

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

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

- bpo-19255: Модуль builtins восстанавливается до исходного состояния перед очисткой других модулей. Модули sys и builtins очищаются последними.
- bpo-20588: Приведение Python-ast.c к соответствию стандарту C89.
- bpo-20437: Исправлено 22 потенциальных ошибки при удалении ссылок на объекты.
- bpo-20500: Отображение исключения при завершении работы интерпретатора больше не рискует вызвать сбой утверждения (assertion failure) в PyObject\_Str.
- bpo-20538: Инкрементальный декодер UTF-7 выдавал несогласованную строку при усечении входных данных в секции BASE64.
- bpo-20404: io.TextIOWrapper (и, следовательно, встроенная функция open()) теперь использует внутреннюю систему маркировки кодеков, добавленную для [issue #19619](https://python-all.ru/3.4/whatsnew/changelog.html), чтобы выбрасывать LookupError для известных нетекстовых кодировок во время создания потока. Существующие проверки типа выходных данных остаются для обработки немаркированных сторонних кодеков.
- bpo-17162: Добавлен PyType\_GetSlot.
- bpo-20162: Исправлена проблема выравнивания в хеш-функции siphash24(), которая приводила к сбою на PowerPC 64-bit (ppc64).

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

- bpo-20530: сигнатуры встроенных функций-слотов обновлены с учётом того, что они принимают только позиционные аргументы.
- bpo-20517: функции модуля os, принимающие два имени файла, теперь регистрируют оба имени в исключении при ошибке.
- bpo-20563: API модуля ipaddress теперь считается стабильным.
- bpo-14983: email.generator теперь всегда добавляет конец строки после каждого маркера границы MIME, а не только при наличии эпилога. Это исправляет ошибку соответствия RFC и решает проблему с подписанными MIME-частями.
- bpo-20540: исправлена регрессия производительности (по сравнению с Python 3.2) при наслоении multiprocessing.Connection поверх TCP-сокета. Для небольших полезных нагрузок алгоритм Нейгла приводил к задержкам простоя перед полной передачей сообщения.
- bpo-16983: новый код разбора заголовков email теперь декодирует закодированные слова, которые (некорректно) окружены кавычками, и регистрирует дефект.
- bpo-19772: email.generator больше не изменяет объект сообщения при преобразовании из 8-битных CTE в 7-битные.
- 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 была нарушена определённым образом. Это была регрессия относительно Python 2.
- bpo-20013: некоторые IMAP-серверы отключаются при удалении текущего почтового ящика, и imaplib не обрабатывал эту ситуацию корректно. Теперь он правильно обрабатывает сообщение 'bye'.
- bpo-20531: откатить исправление для #19063 из версии 3.4 и применить версию 3.3. То есть *не* вызывать ошибку, если в email.message.Message.set\_payload передаётся unicode.
- bpo-20476: если с любым из анализаторов email используется политика, отличная от compat32, то теперь в качестве фабричного класса используется EmailMessage. Фабричный класс на самом деле должен браться из политики; это будет исправлено в 3.5.
- bpo-19920: TarFile.list() больше не завершается ошибкой при выводе списка, содержащего символы, которые невозможно закодировать. Основано на патче Вайраски Кока.
- bpo-20515: исправлено разыменование нулевого указателя, внесённое [issue #20368](https://python-all.ru/3.4/whatsnew/changelog.html).
- 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. Первоначальный патч от Стефана Бенеля.
- 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: использование значков приложений Python в заголовках окон Idle. Патч в основном от Serhiy Storchaka.
- Обновлён значок python.gif для обозревателя классов и обозревателя путей IDLE: со старой зелёной змеи на новую сине-жёлтую.
- bpo-17721: удаление неработающей кнопки справки в диалоге конфигурации до тех пор, пока она не будет действительно давать подсказку при нажатии. Патч от Guilherme Simões.

### Тесты

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

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

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

### Сборка

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

### C API

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

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

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

## Python 3.4.0 beta 3

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

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

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

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

- 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 при обработке не-ASCII URL.
- 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 теперь игнорирует объявление кодировки исходного файла на второй строке, если первая строка содержит что-либо, кроме комментария.

### Тесты

- 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.

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

- 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 (подробности см. в тикете).
- bpo-20196: Исправлена ошибка, из-за которой Argument Clinic не генерировал корректный код разбора для функций с позиционными параметрами, где все аргументы необязательны.
- bpo-18960: 2to3 и скрипт findnocoding.py теперь игнорируют объявление кодировки исходного файла во второй строке, если первая строка содержит что-либо, кроме комментария.
- bpo-19723: Маркерные комментарии, используемые Argument Clinic, изменены для улучшения читаемости.
- bpo-20157: Когда Argument Clinic переименовывает параметр из-за совпадения его имени с ключевым словом C, это переименование больше не раскрывается для PyArg\_Parse.
- bpo-20141: Улучшена поддержка Argument Clinic для форматного элемента PyArg\_Parse «O!».
- bpo-20144: Argument Clinic теперь поддерживает простые символьные константы в качестве значений параметров по умолчанию.
- bpo-20143: Номера строк, указываемые в ошибках Argument Clinic, теперь точнее.
- bpo-20142: Переменные Py\_buffer, генерируемые Argument Clinic, теперь инициализируются значением по умолчанию.

### Сборка

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

## Python 3.4.0 beta 2

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

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

- 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 эта функция ничего не делала, если ключ уже существовал (если текущее значение – ненулевой указатель).
- 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.

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

- bpo-20154: Взаимоблокировка в asyncio.StreamReader.readexactly().
- bpo-16113: Модуль sha3 снова удалён.
- bpo-20111: pathlib.Path.with\_suffix() теперь проверяет переданное расширение на корректность.
- Исправлено нарушение работы TestSuite.countTestCases(), возникшее из-за [тикета #11798](https://python-all.ru/3.4/whatsnew/changelog.html).
- 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: Используется memoryview для избежания копирования данных при передаче данных в stdin в subprocess.Popen.communicate. Потребление процессора снижается на 5–10%.
- bpo-19876: selectors.unregister() больше не вызывает ValueError или OSError, если файловый дескриптор закрыт (при условии, что он был зарегистрирован).
- bpo-19908: pathlib теперь корректно объединяет относительные пути Windows, когда присутствует буква диска. Оригинальный патч от Antoine Pitrou.
- bpo-19296: Подавлено предупреждение компилятора в dbm\_open
- bpo-6784: Строки из Python 2 теперь можно распаковать как объекты bytes, установив аргумент encoding объекта Unpickler в 'bytes'. Начальный патч от Merlijn van Deen.
- bpo-19839: Исправлена регрессия в модуле bz2 при обработке данных, не являющихся bzip2, в конце файла, и аналогичная ошибка в модуле lzma.
- bpo-19881: Исправлена ошибка pickling, из-за которой 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 и указание имени сервера для 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: Добавлена поддержка сериализации (pickle) типов встроенных синглтонов (Ellipsis, NotImplemented, None).
- bpo-19713: Добавлены оставшиеся устаревания, связанные с PEP 451, и выполнен переход от использования find\_module/find\_loader/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, когда нет начального окна оболочки.

### Тесты

- bpo-20055: Исправлен test\_shutil в Windows при наличии прав на символьные ссылки. Патч от Vajrasky Kok.
- bpo-20070: test\_urllib2net не запускается, если сетевые ресурсы отключены.
- bpo-19938: В test\_dis повторно включён test\_bug\_1333982, который был отключён с версии 3.0 из-за изменений в обработке listcomp.
- 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() объектов ячеек.
- 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.

### Сборка

- 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 от предыдущей сборки всё ещё работает.

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

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

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

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

## Python 3.4.0 beta 1

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

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

- При импорте теперь чаще используется repr имени модуля, особенно в исключениях.
- bpo-19619: str.encode, bytes.decode и bytearray.decode теперь используют внутренний API для вызова LookupError для известных нетекстовых кодировок, вместо попытки выполнить операцию кодирования или декодирования и затем вызова TypeError для неожиданного типа вывода. (Последний механизм остаётся для сторонних нетекстовых кодировок)
- bpo-19183: Реализован PEP 456 «безопасный и взаимозаменяемый хеш-алгоритм». Python теперь использует SipHash24 на всех основных платформах.
- bpo-12892: Кодировщики utf-16\* и utf-32\* больше не позволяют кодировать суррогатные кодовые точки (U+D800-U+DFFF). Декодировщики utf-32\* больше не декодируют последовательности байтов, соответствующие суррогатным кодовым точкам. Обработчик ошибок surrogatepass теперь работает с кодеками utf-16\* и utf-32\*. Основано на патчах от Victor Stinner и Kang-Hao (Kenny) Lu.
- bpo-17806: Добавлена поддержка именованного аргумента «tabsize» для str/bytes.expandtabs().
- bpo-17828: Ошибки типа вывода в str.encode(), bytes.decode() и bytearray.decode() теперь направляют пользователей к codecs.encode() или codecs.decode() по мере необходимости.
- bpo-17828: Интерпретатор теперь пытается объединять ошибки, возникающие при обработке кодека, с заменяющим исключением того же типа, которое включает имя кодека в сообщение об ошибке. Он гарантирует, что делает это только тогда, когда создание заменяющего исключения не приведёт к потере информации.
- bpo-19466: Очищать фреймы потоков-демонов раньше во время завершения Python для вызова деструкторов объектов. Таким образом, предупреждения о ресурсах «unclosed file» теперь правильно выдаются для потоков-демонов.
- bpo-19514: Устранено дублирование некоторых объявлений \_Py\_IDENTIFIER. Патч от Andrei Dorian Duma.
- 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 о том, что они «перевёрнуты».

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

- bpo-3158: doctest теперь может находить doctest-ы в функциях и методах, написанных на C.
- bpo-13477: Добавлен интерфейс командной строки в модуль tarfile. Оригинальный патч от Berker Peksag.
- 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(), которые привязывают шаблон к обоим концам строки для сопоставления. Оригинальный патч от Matthew Barnett.
- bpo-13592: Улучшено представление repr для объектов шаблонов регулярных выражений. На основе патча от Hugo Lopes Tavares.
- 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() для загрузки корневых сертификатов ЦС по умолчанию из хранилищ по умолчанию или системных хранилищ. По умолчанию метод загружает сертификаты ЦС для аутентификации сертификатов сервера.
- 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) с предупреждением DeprecationWarning, указывающим на $EXT\_SUFFIX.
- bpo-8813: Добавлен атрибут SSLContext.verify\_flags для изменения флагов проверки контекста, чтобы включить проверку списков отзыва сертификатов (CRL) или строгие правила X509.
- bpo-18294: Исправлен модуль zlib для обеспечения совместимости с 64-битными системами.
- bpo-19682: Исправлена проблема совместимости со старой версией OpenSSL, которая была внесена [Issue #18379](https://python-all.ru/3.4/whatsnew/changelog.html).
- bpo-14455: plistlib теперь поддерживает двоичные plist-файлы и имеет обновлённый API.
- bpo-19633: Исправлена запись несжатых 16- и 32-битных wave-файлов на платформах с прямым порядком байтов (big-endian).
- bpo-18379: SSLSocket.getpeercert() возвращает поля AIA издателя ЦС, точки распространения OCSP и CRL.
- bpo-18138: Реализован аргумент cadata в SSLContext.load\_verify\_location() для загрузки сертификатов ЦС и списков отзыва из памяти. Поддерживаются строки в кодировках PEM и DER.
- bpo-18775: Добавлены атрибуты name и block\_size в объект HMAC. Теперь они предоставляют те же элементы API, что и бесключевые криптографические хэш-функции.
- bpo-17276: Использование MD5 в качестве digestmod по умолчанию для HMAC объявлено устаревшим. Модуль HMAC поддерживает имена digestmod, например hmac.HMAC(‘sha1’).
- bpo-19449: В методе writerow модуля csv теперь обрабатываются нестроковые ключи при формировании сообщения об ошибке о том, что некоторые ключи отсутствуют в списке ‘fieldnames’.
- bpo-13633: В HTMLParser добавлен новый ключевой аргумент convert\_charrefs, который при значении 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: В модуль SSL добавлен приватный API для поиска объектов ASN.1 по OID, NID, короткому и длинному имени.
- bpo-19282: dbm.open теперь поддерживает протокол менеджера контекста. (Первоначальный патч от Claudiu Popa.)
- bpo-8311: Добавлена поддержка записи любых байтоподобных объектов в модулях aifc, sunau и wave.
- bpo-5202: В модуль wave добавлена поддержка файлов без возможности позиционирования (unseekable).
- bpo-19544: Восстановлена глобальная опция игнорирования ~/.pydistutils.cfg в Distutils, случайно удалённая при откате изменений distutils2. (См. также: bpo-1180.)
- bpo-19523: Устранена утечка FileHandler, возникавшая при установке delay.
- 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 для команды загрузки Distutils, – функция, случайно потерянная при откате distutils2. (См. также: bpo-6286.)
- bpo-19544: Восстановлен метод read\_pkg\_file в distutils.dist.DistributionMetadata, случайно удалённый при отмене изменений distutils2. (См. также: bpo-7457.)
- bpo-16685: В модуль audioop добавлена поддержка любых байтоподобных объектов. Удалена поддержка строк.
- bpo-7171: В модуль socket добавлена Windows-реализация `inet_ntop` и `inet_pton`. Патч от Atsuo Ishimoto.
- bpo-19261: В модуль sunau добавлена поддержка записи 24-битных семплов.
- 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: Переработана функция подпроцесс.get\[status\]output для использования функциональности подпроцесса и, соответственно, для работы в Windows. Патч от 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-python» в sys.path модулем site, если он существует, теперь является устаревшим.
- bpo-19379: В модуле warnings импорт linecache выполняется лениво, чтобы ускорить запуск с предупреждениями до момента вывода предупреждения.
- 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: исправлена обработка IronPython 2.6+ в platform.\_sys\_version. Исправление от Martin Matusiak.
- bpo-19413: Восстановлена семантика reload() из версий до Python 3.3 для повторного поиска модулей.
- bpo-18958: Улучшено сообщение об ошибке для json.load(s) при передаче строки, начинающейся с BOM в UTF-8.
- bpo-19307: Улучшено сообщение об ошибке для json.load(s) при передаче объектов неверного типа.
- bpo-16038: CVE-2013-1752: ftplib: ограничено количество читаемых данных за счёт ограничения вызова readline(). Оригинальное исправление от Michał Jastrzębski и Giampaolo Rodola.
- bpo-17087: Улучшен repr для объектов совпадения регулярных выражений.

### Тесты

- bpo-19664: Тест repr для test\_userdict больше не зависит от порядка элементов словаря.
- bpo-19440: Очистка test\_capi: удалён ненужный импорт \_\_future\_\_, переход с test\_main на unittest.main, запуск тестов модуля \_testcapi как подтестов метода unittest TestCase.
- bpo-19378: основные тесты модуля dis теперь запускаются как с перенаправлением stdout, *так и с* явным параметром file
- bpo-19378: из bytecode\_helper удалены не очень полезные вспомогательные функции assertInstructionMatches и assertBytecodeExactlyMatches
- bpo-18702: Все пропущенные тесты теперь сообщаются как пропущенные.
- bpo-19439: тесты встраивания интерпретатора теперь выполняются в Windows (исправление от Zachary Ware)
- bpo-19085: Добавлены базовые тесты для всех опций виджетов tkinter.
- bpo-19384: Исправление test\_py\_compile для суперпользователя, исправление от Claudiu Popa.

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

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

### Сборка

- 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 теперь для всех конфигураций (non-framework и framework, одноархитектурные и универсальные сборки) устанавливается одинаковый набор имён файлов в каталогах 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.

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

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

## Python 3.4.0 alpha 4

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

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

- bpo-19301: Классы и функции, явно отмеченные как глобальные, теперь получают глобальное имя qualname.
- 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 больше не обрабатывает '' как особый случай, заменяя на '.'. В результате модули, импортированные из cwd, теперь имеют абсолютный путь в \_\_file\_\_ (это не влияет на модули, указанные через путь в CLI, но влияет на -m/runpy). Также это делает FileFinder более последовательным, устраняя пограничный случай.
- bpo-4555: Все экспортируемые C-символы теперь имеют префикс «Py» или «\_Py».
- bpo-19219: Ускорена marshal.loads(), а файлы .pyc стали немного меньше (на 5–10%).
- 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).

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

- 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`](https://python-all.ru/3.4/library/tarfile.html#module-tarfile).
- bpo-18999: Multiprocessing теперь поддерживает «контексты» с тем же API, что и модуль, но привязанные к указанным методам запуска.
- bpo-18468: Функции re.split, re.findall и re.sub, а также методы group() и groups() объекта match теперь всегда возвращают строку или байтовый объект.
- bpo-18725: Модуль textwrap теперь поддерживает усечение многострочного текста.
- bpo-18776: Колбэки atexit теперь выводят полную трассировку при возникновении исключения.
- bpo-17827: Добавлена недостающая документация для `codecs.encode` и `codecs.decode`.
- bpo-19218: collections.abc переименован в \_collections\_abc для ускорения запуска интерпретатора.
- bpo-18582: В модуль hashlib добавлена функция 'pbkdf2\_hmac'. Она реализует функции вывода ключа на основе пароля PKCS#5 с HMAC в качестве псевдослучайной функции.
- bpo-19131: Модуль aifc теперь корректно читает и записывает sampwidth сжатых потоков данных.
- bpo-19209: Удалён импорт copyreg из модуля os для ускорения запуска интерпретатора. stat\_result и statvfs\_result теперь жёстко прописаны в модуле os.
- bpo-19205: Модули site и sysconfig больше не импортируют модуль re для ускорения запуска интерпретатора.
- bpo-9548: Добавлен минимальный модуль \_bootlocale, который импортируется модулем \_io вместо полного модуля locale.
- bpo-18764: Удалён псевдоним print для команды p в PDB, чтобы она больше не затеняла функцию 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`](https://python-all.ru/3.4/library/inspect.html#inspect.getmembers) и `inspect.classify_class_attrs`: теперь они пытаются активировать дескрипторы перед тем, как перейти к поиску по \_\_dict\_\_ для ошибочных дескрипторов. `inspect.classify_class_attrs` больше не возвращает атрибуты, у которых home class равен None.

### C API

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

### Тесты

- bpo-19275: Исправлен test\_site на AMD64 Snow Leopard.
- bpo-14407: Исправлено обнаружение тестов unittest в test\_concurrent\_futures.
- bpo-18919: Объединены и расширены тесты для аудиомодулей: aifc, sunau и wave.
- bpo-18714: Добавлены тесты для `pdb.find_function()`.

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

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

### Сборка

- 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*

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

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

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

- bpo-18929: `inspect.classify_class_attrs()` теперь корректно находит атрибуты класса, возвращаемые [`dir()`](https://python-all.ru/3.4/library/functions.html#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`](https://python-all.ru/3.4/using/cmdline.html#envvar-PYTHONFAULTHANDLER) теперь включает модуль faulthandler только если переменная непустая. То же поведение, что и другие переменные, например [`PYTHONDONTWRITEBYTECODE`](https://python-all.ru/3.4/using/cmdline.html#envvar-PYTHONDONTWRITEBYTECODE).
- bpo-1565525: Новая функция `traceback.clear_frames` очистит локальные переменные всех кадров стека, на которые ссылается объект traceback.

### Тесты

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

### IDLE

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

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

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

### Сборка

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

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

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

## Python 3.4.0 alpha 2

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

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

- bpo-18942: Вывод sys.\_debugmallocstats() был повреждён в Windows.
- bpo-18571: Реализация PEP 446: файловые дескрипторы и файловые дескрипторы теперь создаются ненаследуемыми; добавлены функции 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)).

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

- bpo-18808: Thread.join() теперь ожидает уничтожения связанного состояния потока перед возвратом. Это предотвращает непредсказуемые аварийные завершения в Py\_EndInterpreter(), когда некоторые потоки, не являющиеся демонами, всё ещё работают.
- bpo-18458: Предотвращение сбоев с новыми версиями libedit. Его эмуляция readline изменилась с индексации от 0 на индексацию от 1, как в 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 теперь корректно разбирает флаги 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. Ранее модуль использовал функцию GENERAL\_NAME\_print() из OpenSSL для получения строкового представления строк ASN.1 для `rfc822Name` (email), `dNSName` (DNS) и `uniformResourceIdentifier` (URI).
- bpo-18701: Удалена поддержка старых версий CPython (\<3.0) из C-кода.
- bpo-18756: Улучшено сообщение об ошибке в os.urandom(), когда сбой вызван не отсутствием /dev/urandom, а чем-то другим (например, исчерпанием лимита файловых дескрипторов).
- bpo-18673: Добавлен O\_TMPFILE в модуль os. O\_TMPFILE требует ядро Linux 3.11 или новее. Он также определён только в системах с заголовками uapi версии 3.11.
- bpo-18532: Изменены имена встроенных алгоритмов хеширования на строчные буквы, как обещано в документации hashlib.
- bpo-8713: Добавлены новые методы запуска spawn и forkserver, а также новые функции get\_all\_start\_methods, get\_start\_method и set\_start\_method в модуль multiprocessing.
- bpo-18405: Улучшена энтропия crypt.mksalt().
- bpo-12015: Модуль tempfile теперь использует суффикс из 8 случайных символов вместо 6, чтобы уменьшить риск коллизии имён файлов. Энтропия была снижена, когда из набора символов, используемого для генерации случайных символов, были удалены заглавные буквы.
- bpo-18585: Добавлена функция [`textwrap.shorten()`](https://python-all.ru/3.4/library/textwrap.html#textwrap.shorten), которая сжимает и обрезает фрагмент текста до заданной длины.
- bpo-18598: Изменено сообщение исключения для importlib.import\_module(), чтобы включать имя модуля, когда отсутствует ключевой аргумент.
- bpo-19151: Исправлены строка документации и использование \_get\_supported\_file\_loaders() для отражения 2-кортежей.
- bpo-19152: Добавлен метод ExtensionFileLoader.get\_filename().
- bpo-18676: Заменено 'positive' на 'non-negative' в строках документации put и get модуля queue.py и в сообщениях ValueError. Исправление от Zhongyue Luo.
- Исправлена проблема с подсчётом ссылок для типов-расширений в tkinter.
- bpo-8112: Сервер DocXMLRPCServer из xlmrpc.server больше не возбуждает ошибку, если методы имеют аннотации; теперь он корректно отображает аннотации.
- bpo-18600: Добавлен аргумент policy в email.message.Message.as\_string, а также методы as\_bytes и \_\_bytes\_\_ в Message.
- bpo-18671: Выводится больше информации при возникновении исключений в логировании.
- bpo-18621: Предотвращено удержание слишком большого количества ссылок в живых слишком долго в патче встроенных функций модуля site.
- bpo-4885: Добавлена поддержка weakref для объектов mmap. Исправление от Valerie Lambert.
- bpo-8860: Исправлено округление в конструкторе timedelta.
- bpo-18849: Исправлена ошибка tempfile, специфичная для Windows, когда коллизия с существующим каталогом приводила к сбою mkstemp и связанных API вместо повторной попытки. Сообщение и исправление от Vlad Shcherbina.
- bpo-18920: Назначение по умолчанию для действия version в argparse (-v, –version) также изменено на stdout, чтобы соответствовать исполняемому файлу Python.

### Тесты

- 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», поскольку на последних версиях Windows «localhost» проходит через DNS-запрос.

### IDLE

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

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

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

### Сборка

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

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

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

## Python 3.4.0 alpha 1

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

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

- 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: Использовать repr имени модуля при неудачном импорте с помощью `from ... import ...`.
- 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). Патч написан Jeremy Kloth.
- bpo-3329: Реализация PEP 445: добавлены новые API для настройки распределителей памяти Python.
- bpo-18328: Изменён порядок операций в функциях PyThreadState\_Delete\*(). Теперь tstate сначала удаляется из TLS, а затем освобождается.
- bpo-13483: Использование VirtualAlloc в obmalloc на Windows.
- bpo-18184: PyUnicode\_FromFormat() и PyUnicode\_FromFormatV() теперь вызывают OverflowError, когда аргумент формата %c выходит за допустимые пределы.
- bpo-18111: Функции min() и max() теперь поддерживают аргумент default, который возвращается вместо возникновения ValueError при пустой последовательности. (Автор: Julian Berman.)
- bpo-18137: Обнаружение целочисленного переполнения при указании точности в float.\_\_format\_\_() и complex.\_\_format\_\_().
- bpo-18183: Исправлены различные операции с Unicode в строках, содержащих символы с большими кодовыми точками.
- bpo-18180: Исправлена утечка ссылок в \_PyImport\_GetDynLoadWindows().
- bpo-18038: SyntaxError, возникающий при компиляции исходников с недопустимой кодировкой, теперь всегда содержит имя кодировки.
- bpo-17931: Устранена путаница в Windows между идентификаторами процессов (pid) и дескрипторами процессов.
- Подкорректировано сообщение исключения, когда магическое число или значение размера в байткод-файле обрезаны.
- bpo-17932: Исправлена проблема целочисленного переполнения в 64-разрядной версии Windows для итераторов: тип 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: Объекты фреймов удерживали аргументы в живых, если они были скопированы в ячейку, даже после очистки этой ячейки.
- bpo-1545463: При завершении работы отложить финализацию модулей кодеков, чтобы 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» структуры `structtimespec` не является типом 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 теперь выводит трассировку при сбое 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 и полную трассировку с номером строки.
- 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: Исправлена ошибка сегментации, возникавшая при вызове repr() для словаря с ключом, repr которого возбуждает исключение.
- bpo-16367: Исправлена работа FileIO.readall() в Windows для файлов размером более 2 ГБ.
- bpo-16761: вызов int() с аргументом base теперь вызывает TypeError.
- bpo-16759: при получении значения REG\_DWORD функция Reg2Py теперь поддерживает весь диапазон DWORD (unsigned long). Это исправляет такие функции, как winreg.QueryValueEx, которые могли возвращать усечённые значения.
- bpo-14420: при передаче значения REG\_DWORD функция Py2Reg теперь поддерживает весь диапазон DWORD (unsigned long). Исправляет 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: создан класс AST NameConstant для представления литералов None, True и False. В результате эти константы больше никогда не загружаются во время выполнения из builtins.
- 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: при взятии среза диапазона исправлено затенение исключений из \_\_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: Улучшена обработка ошибок SyntaxErrors, связанных с операторами global и nonlocal.
- Исправлены сегфолты при установке \_\_qualname\_\_ на встроенных типах и при попытке удалить его на любом типе.
- bpo-14625: Переписан декодер UTF-32. Теперь он в 3-4 раза быстрее. Патч написан Serhiy Storchaka.
- bpo-16345: Исправлена бесконечная петля, когда `fromkeys` у подкласса dict получал непустой словарь из конструктора.
- bpo-16271: Исправлены странные ошибки, возникавшие из-за появления \_\_qualname\_\_ в \_\_dict\_\_ класса и на type.
- bpo-12805: Ускорение bytes.join и bytearray.join, когда разделитель пуст. Патч от Serhiy Storchaka.
- bpo-6074: Гарантируется, что кэшированные файлы байт-кода всегда могут быть обновлены пользователем, который их создал, даже если исходный файл доступен только для чтения.
- bpo-15958: bytes.join и bytearray.join теперь принимают произвольные объекты буфера.
- bpo-14783: Улучшена строка документации 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: Преобразование SystemErrors в [`super()`](https://python-all.ru/3.4/library/functions.html#super) в RuntimeErrors.
- bpo-15448: Буферизованный ввод-вывод теперь освобождает буфер при закрытии, а не при освобождении объекта.
- bpo-15846: Исправлен SystemError, возникавший при использовании [`ast.parse()`](https://python-all.ru/3.4/library/ast.html#ast.parse) в обработчике исключений для кода с синтаксическими ошибками.
- bpo-15897: В zipimport.c не проверяется возвращаемое значение fseek(). Патч от Felipe Cruz.
- bpo-15801: Обеспечить, чтобы отображения, передаваемые в форматирование '%', были индексируемыми.
- bpo-15111: \_\_import\_\_ должен распространять ImportError, если он возник как побочный эффект модуля, запускаемого с помощью fromlist.
- bpo-15022: Добавлена поддержка сериализации (pickle) и сравнения для types.SimpleNamespace.

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

- 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: В ctypes в \_build\_callargs() пропускается name, если name равен NULL.
- bpo-18559: Исправлена ошибка разыменования нулевого указателя в модуле \_pickle.
- bpo-18556: В ctype’s U\_set() добавлена проверка типа возвращаемого значения PyUnicode\_AsWideChar().
- bpo-17818: aifc.getparams теперь возвращает namedtuple.
- bpo-18549: Удалён мёртвый код в socket\_ntohl().
- bpo-18530: Из posixpath.ismount удалён дополнительный вызов stat. Патч от 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: В расширение \_elementtree добавлен недостающий вызов PyType\_Ready.
- 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 больше не вызывают ошибку сегментации в C-расширении \_pickle.
- bpo-18240: Модуль HMAC больше не ограничен только байтами и принимает любые байтоподобные объекты, например memoryview. Оригинальный патч от Jonas Borgström.
- bpo-18224: Удалён скрипт pydoc из создаваемого виртуального окружения, так как он вызывает проблемы в Windows и не добавляет ценности по сравнению с python -m pydoc ...
- bpo-18155: Модуль csv теперь корректно обрабатывает CSV-файлы, использующие символ-разделитель, имеющий специальное значение в регулярных выражениях, вместо возбуждения исключения.
- bpo-14360: encode\_quopri теперь можно успешно использовать в качестве кодировщика при создании объекта MIMEApplication.
- bpo-11390: Добавлены параметры командной строки -o и -f в интерфейс командной строки doctest для указания опций doctest (а также переход на argparse).
- bpo-18135: ssl.SSLSocket.write() теперь вызывает OverflowError, если входная строка длиннее 2 гигабайт, а ssl.SSLContext.load\_cert\_chain() вызывает ValueError, если пароль длиннее 2 гигабайт. Модуль ssl не поддерживает частичную запись.
- bpo-11016: Добавлена реализация модуля stat на C как \_stat.
- bpo-18248: Исправлена сборка libffi на AIX.
- bpo-18259: Объявлена sethostname в socketmodule.c для AIX.
- bpo-18147: Добавлены диагностические функции в ssl.SSLContext(). get\_ca\_list() выводит список всех загруженных сертификатов ЦС, а cert\_store\_stats() возвращает количество загруженных сертификатов X.509, сертификатов ЦС X.509 и 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: Загрузчик пакетов пространства имён приведён к соответствию ABC importlib.abc.InspectLoader, что позволяет пакетам пространства имён работать с runpy. (См. также: bpo-18057)
- bpo-17177: Модуль imp помечен как устаревающий.
- подпроцесс: Предотвращено возможное двойное закрытие файловых дескрипторов родительского канала при возникновении ошибки в 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 перед добавлением в ruleline. Это помогает консервативно обрабатывать некоторые типы недействительных 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: исправлено определение структуры kevent на 64-битных платформах OpenBSD. Патч от Federico Schwindt.
- bpo-11816: множество улучшений модуля dis: генератор get\_instructions, возможность перенаправления вывода в файл, абстракции Bytecode и Instruction. Патч от Nick Coghlan, Ryan Kelly и Thomas Kluyver.
- bpo-13831: Встраивание строкового представления удалённой трассировки в локальную трассировку, возникающую при вызове исключения задачей пула.
- bpo-15528: Добавлен weakref.finalize для поддержки финализации с помощью колбэков weakref.
- bpo-14173: Предотвращение аварийного завершения при чтении обработчика сигнала во время завершения работы интерпретатора.
- bpo-15902: Исправление imp.load\_module(), принимающего None в качестве файла при загрузке модуля расширения.
- bpo-13721: SSLSocket.getpeercert() и SSLSocket.do\_handshake() теперь вызывают OSError с ENOTCONN вместо AttributeError, если SSLSocket не подключён.
- bpo-14679: Добавлен \_\_all\_\_ (содержит только HTMLParser) в html.parser.
- bpo-17802: Исправлена ошибка UnboundLocalError в html.parser. Начальные тесты от Thomas Barlow.
- bpo-17358: Модули, загруженные через imp.load\_source() и load\_compiled() (а также через load\_module() для расширений), теперь имеют больше шансов корректно работать при перезагрузке.
- bpo-17804: Новая функция `struct.iter_unpack` позволяет потоковую распаковку struct.
- 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`](https://python-all.ru/3.4/library/subprocess.html#subprocess.check_output) now accepts an [`input`](https://python-all.ru/3.4/library/functions.html#input) argument, allowing the subprocess’s stdin to be provided as a (byte) string. Patch by 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, чтобы размер реестра после разветвления не рос экспоненциально в зависимости от поколения процесса.
- bpo-17707: исправлена регрессия в методе get() очереди multiprocessing.Queue, из-за которой он не блокировался при коротких таймаутах.
- bpo-17720: исправлена реализация pickle.Unpickler на Python для корректной обработки опкода APPENDS при использовании на не-списковых объектах.
- bpo-17012: shutil.which() больше не использует переменную окружения PATH, если указан пустой аргумент path. Патч от Serhiy Storchaka.
- bpo-17710: исправлен pickle, вызывавший SystemError при некорректном вводе.
- 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\\n-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: ABC в 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: Ускорена сериализация (pickling) строк Unicode.
- bpo-17572: Предотвращено создание цепочек исключений при передаче некорректных директив в time.strptime(). Начальный патч от Claudiu Popa.
- bpo-17435: Метод \_\_init\_\_ класса threading.Timer больше не использует изменяемые значения по умолчанию для параметров args и kwargs.
- bpo-17526: Исправлен IndexError, возникающий при передаче кода без имени файла в inspect.findsource(). Начальный патч от Tyler Doyle.
- bpo-17540: Добавлен параметр style в конфигурацию форматтера журнала через словарь.
- 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 в subprocess.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. (Продолжение [Issue #16464](https://python-all.ru/3.4/whatsnew/changelog.html)).
- bpo-15927: CVS теперь корректно обрабатывает экранированные символы новой строки и возврата каретки при разборе с отключёнными кавычками.
- bpo-17467: Добавлена поддержка readline и readlines в mock\_open в unittest.mock.
- bpo-13248: Удалены устаревшие и недокументированные difflib.isbjunk, isbpopular.
- bpo-17192: Обновлена libffi модуля ctypes до версии 3.0.13. Это, в частности, исправляет проблему выравнивания стека на x86 и проблемы на некоторых более новых платформах.
- bpo-8862: Исправлена очистка curses, когда getkey прерывается сигналом.
- bpo-17443: imaplib.IMAP4\_stream использовал небуферизированный ввод-вывод по умолчанию в модуле подпроцессов, но код IMAP предполагает буферизированный ввод-вывод. В Python 2 это работало случайно. Теперь IMAP4\_stream явно использует буферизированный ввод-вывод.
- bpo-17476: Исправлена регрессия относительно Python 2 в недокументированном pydoc 'allmethods'; отсутствовали несвязанные методы класса.
- bpo-17474: Удалены устаревшие методы класса Request.
- bpo-16709: Порядок обнаружения тестов (unittest discover) больше не зависит от файловой системы. Патч от 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: importlib.find\_loader() теперь вызывает ValueError, если \_\_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 теперь создают вывод, используя указанный linesep везде. Ранее, если пролог, эпилог или тело были сохранены с другим linesep, использовался именно он. Это исправление устраняет проблему несоответствия 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() больше не зависает для больших kappas.
- 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: Исправлена регрессия относительно Python 2 в работе 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: Сделано копирование расширенных атрибутов более устойчивым к отсутствию поддержки файловой системы. Патч от Thomas Wouters.
- bpo-17089: Парсер Expat теперь корректно работает со строковым вводом, когда внутренняя кодировка XML не UTF-8 или US-ASCII. Он также теперь принимает байты и строки размером более 2 GiB.
- 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`](https://python-all.ru/3.4/library/unittest.html#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: For compatibility with the Python version, the C version of decimal now uses strings instead of integers for rounding mode constants.
- 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: За исключением методов чисел, версия decimal на C теперь поддерживает все значения по умолчанию 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, позволяющий создавать 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 при передаче флага -E интерпретатору Python. Патч от Zachary Ware.
- bpo-13390: Новая функция [`sys.getallocatedblocks()`](https://python-all.ru/3.4/library/sys.html#sys.getallocatedblocks) возвращает количество блоков памяти, выделенных в данный момент.
- bpo-16628: Исправлена утечка памяти в ctypes.resize().
- bpo-13614: Исправлена ошибка регистрации setup.py при некорректном rst в описании. Патч от Julien Courteau и Pierre Paul Lefebvre.
- bpo-13512: Создание ~/.pypirc теперь безопасно (CVE-2011-4944). Первоначальный патч от Филипа Дженви, протестирован командами 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`](https://python-all.ru/3.4/library/weakref.html#weakref.WeakMethod) для имитации слабых ссылок на связанные методы.
- bpo-16469: исправлены исключения при преобразовании специальных значений float → Fraction и Decimal → Fraction, чтобы они были согласованы с исключениями при float → int и Decimal → int. Патч от Alexey Kachayev.
- bpo-16481: multiprocessing больше не допускает утечки дескрипторов процессов в Windows.
- bpo-12428: добавлена чистая реализация Python для functools.partial(). Патч от Brian Thorne.
- bpo-16140: модуль подпроцесс больше не закрывает дважды родительские файловые дескрипторы подпроцесс.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://](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`](https://python-all.ru/3.4/library/lzma.html#lzma.LZMAFile) (см. также [issue #16034](https://python-all.ru/3.4/whatsnew/changelog.html)).
- 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: Модуль subprocess больше не выдает вводящее в заблуждение сообщение об ошибке о том, что 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 и некоторые функции уровня модуля получили новый параметр - *short\_empty\_elements*. Он управляет тем, как выводятся элементы без содержимого.
- bpo-16089: ElementTree.TreeBuilder снова может работать с element\_factory, не являющимся Element (исправление регрессии в SimpleTAL).
- bpo-9650: Перечисление часто используемых кодов формата в документации time.strftime и time.strptime. Оригинальный патч от Mike Hoy.
- bpo-15452: Сокетный слушатель конфигурации logging теперь имеет опцию verify, позволяющую приложению применить проверочную функцию к полученным данным конфигурации до их применения.
- bpo-16034: Исправлены регрессии производительности в новой реализации [`bz2.BZ2File`](https://python-all.ru/3.4/library/bz2.html#bz2.BZ2File). Начальный патч от Serhiy Storchaka.
- [`pty.spawn()`](https://python-all.ru/3.4/library/pty.html#pty.spawn) теперь возвращает статус дочернего процесса, возвращаемый [`os.waitpid()`](https://python-all.ru/3.4/library/os.html#os.waitpid).
- bpo-15756: `subprocess.poll()` теперь корректно обрабатывает [`errno.ECHILD`](https://python-all.ru/3.4/library/errno.html#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`](https://python-all.ru/3.4/library/datetime.html#datetime.MAXYEAR). Патч от Cédric Krier.
- bpo-16112: platform.architecture неправильно экранирует аргумент для /usr/bin/file. Патч от David Benjamin.
- bpo-15970: [`xml.etree.ElementTree`](https://python-all.ru/3.4/library/xml.etree.elementtree.html#module-xml.etree.ElementTree) теперь корректно сериализует пустые HTML-элементы 'meta' и 'param'.
- bpo-15842: Методы `SocketIO.{readable,writable,seekable}` теперь возбуждают ValueError, когда файлоподобный объект закрыт. Патч от Alessandro Moura.
- bpo-15876: Исправлена утечка ссылок в модуле [`curses`](https://python-all.ru/3.4/library/curses.html#module-curses): window.encoding.
- bpo-15881: Исправлен hook [`atexit`](https://python-all.ru/3.4/library/atexit.html#module-atexit) в [`multiprocessing`](https://python-all.ru/3.4/library/multiprocessing.html#module-multiprocessing). Оригинальный патч от Chris McDonough.
- bpo-15841: Методы readable(), writable() и seekable() объектов [`io.BytesIO`](https://python-all.ru/3.4/library/io.html#io.BytesIO) и [`io.StringIO`](https://python-all.ru/3.4/library/io.html#io.StringIO) теперь возбуждают ValueError, когда объект закрыт. Патч от Alessandro Moura.
- bpo-15447: В модуле webbrowser теперь используется [`subprocess.DEVNULL`](https://python-all.ru/3.4/library/subprocess.html#subprocess.DEVNULL) вместо явного открытия [`os.devnull`](https://python-all.ru/3.4/library/os.html#os.devnull) и последующего его не закрытия.
- bpo-15509: `webbrowser.UnixBrowser` больше не передаёт пустые аргументы Popen, когда подстановки `%action` дают пустые строки.
- bpo-12776: Функция типа [`argparse`](https://python-all.ru/3.4/library/argparse.html#module-argparse) (указанная в add\_argument) теперь вызывается только один раз. Раньше она вызывалась дважды, когда было указано значение по умолчанию и аргумент тоже передавался. Это было особенно проблематично для типа FileType, так как файл по умолчанию всегда открывался, даже если в командной строке был указан аргумент-файл. (См. также: bpo-11839)
- bpo-15906: Исправлена регрессия в argparse, вызванная предыдущим изменением, при использовании `action='append'`, `type='str'` и `default=[]`.
- bpo-16113: Добавлен модуль sha3 на основе эталонной реализации Keccak 3.2. Модуль [`hashlib`](https://python-all.ru/3.4/library/hashlib.html#module-hashlib) получил четыре дополнительных алгоритма хеширования: `sha3_224`, `sha3_256`, `sha3_384` и `sha3_512`. В рамках патча часть общего кода была перенесена из \_hashopenssl.c в hashlib.h.
- ctypes.call\_commethod был удалён, так как использовался только в недействующей директории samples.
- bpo-16692: В модуль ssl добавлена поддержка TLSv1.1 и TLSv1.2.
- bpo-16832: Добавлен метод abc.get\_cache\_token() для предоставления поддержки проверки действительности кэша в ABCMeta.

### IDLE

- bpo-18429: Команды «Форматировать» / «Форматировать абзац» теперь работают, когда выбраны блоки комментариев. Как и с текстовыми блоками, это лучше всего работает, когда выделение включает только полные строки.
- bpo-18226: Добавлены строки документации и модульные тесты для FormatParagraph.py. Оригинальные патчи от Todd Rovito и Phil Webster.
- bpo-18279: Команда «Удалить завершающие пробелы» (Strip trailing whitespace) больше не помечает файл как изменённый, если он не был изменён. Это исправление последовало за добавлением тестового файла, первоначально написанного 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 on Windows».
- bpo-17532: На OS X меню Options (Параметры) в IDLE теперь отображается всегда. Патч от Guilherme Simões.
- bpo-17585: Исправлена регрессия в IDLE. Теперь IDLE закрывается при вызове exit() или quit().
- bpo-17657: В диалоге «О программе» IDLE теперь отображается полная версия Tk. Патч от Todd Rovito.
- bpo-17613: Предотвращение вывода трассировки при удалении цветовой подсветки синтаксиса в IDLE.
- bpo-1207589: Патч для обеспечения обратной совместимости контекстного меню в IDLE.
- bpo-16887: IDLE теперь корректно обрабатывает нажатие «Отмена» в диалоговом окне «Табуляция/Удаление табуляции».
- 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 теперь перехватывает синтаксические ошибки (SyntaxError), возникающие в токенизаторе. Патч от Roger Serwy.
- bpo-16511: Использовать ширину и высоту IDLE по умолчанию, если параметр конфигурации недействителен. Патч от Serhiy Storchaka.
- bpo-1207589: Добавить пункты Вырезать/Копировать/Вставить в контекстное меню IDLE по правому клику. Патч от Todd Rovito.
- bpo-16123: IDLE - объявлено устаревшим запуск без подпроцесса. Патч от Roger Serwy.

### Тесты

- 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: Исправлен разбор regrtest опций –fromfile, –match и –randomize.
- bpo-16702: Тесты test\_urllib2\_localnet теперь корректно игнорируют прокси для тестов localhost.
- bpo-16664: Добавлены регрессионные тесты для поведения glob в отношении записей, начинающихся с ”.”. Патч от Sebastian Kreft.
- bpo-13390: Опция `-R` regrtest теперь также проверяет утечки выделения памяти, используя [`sys.getallocatedblocks()`](https://python-all.ru/3.4/library/sys.html#sys.getallocatedblocks).
- bpo-16559: Добавлено больше тестов для модуля json, включая некоторые из официального набора тестов на json.org. Патч от Serhiy Storchaka.
- bpo-16661: Исправлен тест [`os.getgrouplist()`](https://python-all.ru/3.4/library/os.html#os.getgrouplist): больше не предполагается, что он даёт такой же вывод, как **id -G**.
- bpo-16115: Добавлены некоторые тесты для аргумента executable в subprocess.Popen(). Первоначальный патч от Kushal Das.
- bpo-16126: Несоответствие формата PyErr\_Format в \_testcapimodule.c. Патч от Serhiy Storchaka.
- bpo-15304: Исправлено сообщение предупреждения при сбое [`os.chdir()`](https://python-all.ru/3.4/library/os.html#os.chdir) внутри [`test.support.temp_cwd()`](https://python-all.ru/3.4/library/test.html#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.

### Сборка

- 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: Исправлен флаг конфигурации –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 в multiarch системном каталоге include.
- bpo-16953: Исправлена компиляция модуля socket на платформах с HAVE\_BROKEN\_POLL. Патч от Jeffrey Armstrong.
- bpo-16320: Удалены избыточные зависимости Makefile для строк и bytes.
- Кросс-компиляция требует настроек хост-системы и сборки. 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 вне дерева исходников из каталога, доступного только для чтения. (Отчасти связано с [issue #9860](https://python-all.ru/3.4/whatsnew/changelog.html).)
- 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 и унифицированное обнаружение и обработка порядка байтов.

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

- bpo-17701: Улучшена документация strftime.
- bpo-18440: Уточнено, что [`hash()`](https://python-all.ru/3.4/library/functions.html#hash) может усекать значение, возвращаемое пользовательским методом `__hash__()` объекта.
- bpo-17844: Добавлены ссылки на кодировщики и декодировщики для кодеков bytes-to-bytes.
- bpo-14097: Улучшена страница «introduction» в руководстве.
- 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 discovery.
- bpo-13094: Добавлен вопрос в раздел «Часто задаваемые вопросы по программированию»: «Почему лямбды, определенные в цикле с разными значениями, все возвращают один и тот же результат?»
- bpo-14901: Обновлены части раздела Windows FAQ. Патч от Ashish Nitin Patil.
- bpo-16267: Улучшена документация подхода (начиная с 3.3) к сочетанию @abstractmethod с @staticmethod, @classmethod и @property.
- bpo-15209: Уточнено описание цепочек исключений в документации модуля exceptions.
- bpo-15990: Улучшена документация аргументов/параметров.
- bpo-16209: Документация встроенной функции str перемещена в новую запись класса str в разделе «Text Sequence Type».
- 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()`](https://python-all.ru/3.4/library/subprocess.html#subprocess.Popen).
- bpo-15979: Улучшить документацию timeit.
- bpo-16036: Улучшить документацию сигнатуры и аргументов встроенной функции [`int()`](https://python-all.ru/3.4/library/functions.html#int).
- bpo-15935: Уточнение документации [`argparse`](https://python-all.ru/3.4/library/argparse.html#module-argparse) относительно аргументов type и default функции add\_argument(). Исправление предоставлено Chris Jerdonek.
- bpo-11964: Задокументировать изменение поведения параметра indent операций кодирования JSON в версии 3.2.
- bpo-15116: Удалить упоминания appscript, так как он больше не поддерживается.

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

- 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.
- 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: Использовать ast.literal\_eval() вместо eval() в Tools/i18n/msgfmt.py. Исправление предоставлено Serhiy Storchaka.

### Windows

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

## Python 3.3.0 final

*Дата выпуска: 29 сентября 2012*

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

- bpo-16046: Исправить загрузку устаревших .pyo-файлов без исходного кода.
- bpo-16060: Исправить ошибку подсчёта ссылок, когда `__trunc__()` возвращает объект, чей `__int__()` даёт нецелое число. Исправление предоставлено Serhiy Storchaka.

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

- bpo-16012: Исправить регрессию в pyexpat. Метод парсера `UseForeignDTD()` снова не требует аргумента.

## Python 3.3.0 release candidate 3

*Дата выпуска: 23 сентября 2012*

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

- bpo-15900: Исправить утечку ссылок в `PyUnicode_TranslateCharmap()`.
- bpo-15926: Исправлен сбой при многократной повторной инициализации интерпретатора.
- bpo-15895: Fix FILE pointer leak in one error branch of `PyRun_SimpleFileExFlags()` when filename points to a pyc/pyo file, closeit is false an and set\_main\_loader() fails.
- Исправления для нескольких регрессий сбоев и утечек памяти, найденных Coverity.

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

- bpo-15882: Изменён модуль `_decimal`: теперь он принимает любой кортеж коэффициентов при построении бесконечностей. Это сделано для обратной совместимости с decimal.py: коэффициенты бесконечностей не определены в \_decimal (в соответствии со спецификацией).
- bpo-15925: Исправлена регрессия в модуле `email.util`, из-за которой функции `parsedate()` и `parsedate_tz()` перестали возвращать None, когда аргумент не удавалось разобрать.
- bpo-15973: Исправлена ошибка сегментации при сравнении объектов часовых поясов datetime.
- bpo-15977: Исправлена утечка памяти в Modules/\_ssl.c при многократном вызове функции \_set\_npn\_protocols(). Спасибо Daniel Sommermann.
- bpo-15969: Модуль [`faulthandler`](https://python-all.ru/3.4/library/faulthandler.html#module-faulthandler): переименованы dump\_tracebacks\_later() в dump\_traceback\_later() и cancel\_dump\_tracebacks\_later() в cancel\_dump\_traceback\_later().
- Модуль \_decimal: использует только комментарии в стиле C89.

## Python 3.3.0 release candidate 2

*Дата выпуска: 09-сен-2012*

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

- bpo-13992: Механизм trashcan теперь потокобезопасен. Это устраняет периодические сбои в многопоточных программах, когда несколько длинных цепочек деаллокаторов выполнялись одновременно и затрагивали подклассы встроенных типов-контейнеров.
- bpo-15784: Изменён метод [`OSError`](https://python-all.ru/3.4/library/exceptions.html#OSError).\_\_str\_\_() для лучшего различения номеров ошибок errno и номеров ошибок Windows.
- bpo-15781: Исправлены две небольшие гонки (race conditions) в блокировке модулей при импорте.

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

- bpo-17158: Добавлен ‘symbols’ в приветственное сообщение help(); уточнены сообщения ‘modules spam’.
- bpo-15847: Исправлена регрессия в argparse, которая больше не принимала кортежи в качестве списков аргументов.
- bpo-15828: Восстановлена поддержка C-расширений в [`imp.load_module()`](https://python-all.ru/3.4/library/imp.html#imp.load_module).
- bpo-15340: Исправлен импорт модуля random, когда `/dev/urandom` не может быть открыт. Это была регрессия, вызванная патчем рандомизации хэшей.
- bpo-10650: Помечен устаревшим параметр watchexp метода `Decimal.quantize()`.
- bpo-15785: Изменён API `window.get_wch()` модуля curses: теперь для большинства клавиш возвращается символ, а для специальных клавиш – целое число, вместо того чтобы всегда возвращать целое. Теперь можно различать специальные клавиши, например клавиши цифровой клавиатуры.
- bpo-14223: Исправлена `window.addch()` модуля curses для специальных символов, таких как curses.ACS\_HLINE: теперь Python-функции addch(int) и addch(bytes) вызывают C-функции waddch()/mvwaddch() (как это было в Python 3.2), вместо wadd\_wch()/mvwadd\_wch(). Python-функция addch(str) по-прежнему вызывает C-функции wadd\_wch()/mvwadd\_wch(), если curses в Python слинкован с libncursesw.

### Сборка

- bpo-15822: Действительно гарантировать, что pickles-грамматики 2to3 установлены правильно (заменяет исправления для [Issue #15645](https://python-all.ru/3.4/whatsnew/changelog.html)).

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

- bpo-15814: Улучшения memoryview в версии 3.3.0 случайно разрешили хеширование многомерных объектов memoryview и memoryview с многобайтовыми форматами элементов. Предполагаемые ограничения теперь задокументированы – они будут правильно применяться в версии 3.3.1.

## Python 3.3.0 release candidate 1

*Дата выпуска: 25-авг-2012*

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

- bpo-15573: Сравнения memoryview теперь выполняются по значению с полной поддержкой любого допустимого определения формата модуля struct.
- bpo-15316: Если элемент из fromlist для [`__import__()`](https://python-all.ru/3.4/library/functions.html#__import__) не существует, не вызывать ошибку, но если исключение было вызвано в процессе импорта, позволить ему распространиться.
- bpo-15778: Обеспечить, чтобы `str(ImportError(msg))` возвращала строку (str), даже если msg не является строкой.
- bpo-2051: Права доступа к исходным файлам снова правильно копируются в кэшированный байткод. (Миграция на importlib повторно ввела эту проблему, поскольку не было регрессионного теста. В рамках этого патча добавлен тест.)
- bpo-15761: Исправлен сбой при установке `PYTHONEXECUTABLE` на Mac OS X.
- bpo-15726: Исправлена неверная проверка границ в PyState\_FindModule. Патч от Robin Schreiber.
- bpo-15604: Обновлены использования `PyObject_IsTrue()` для правильной проверки и обработки ошибок. Патч от Serhiy Storchaka.
- bpo-14846: `importlib.FileFinder` теперь корректно обрабатывает случай, когда каталог, в котором ведётся поиск, удалён после предыдущей попытки импорта.

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

- bpo-13370: Обеспечена работоспособность ctypes на Mac OS X при компиляции Python с помощью компилятора clang.
- bpo-13072: Код формата ‘u’ модуля array теперь считается устаревшим и будет удалён в Python 4.0.
- bpo-15544: Исправлена работа Decimal.\_\_float\_\_ с NaN, несущими полезную нагрузку.
- bpo-15776: Разрешена работа pyvenv в существующем каталоге с флагом --clean.
- bpo-15249: BytesGenerator в модуле email теперь корректно обрабатывает строки From (по запросу), даже если тело содержит нераскодируемые байты.
- bpo-15777: Исправлена утечка ссылок в \_posixsubprocess.
- bpo-665194: Обновлена функция [`email.utils.localtime`](https://python-all.ru/3.4/library/email.util.html#email.utils.localtime) для использования datetime.astimezone и корректной обработки исторических изменений смещений UTC.
- bpo-15199: Исправлен MIME-тип JavaScript по умолчанию на application/javascript. Исправление от Богуслава Кабрды.
- bpo-12643: [`code.InteractiveConsole`](https://python-all.ru/3.4/library/code.html#code.InteractiveConsole) теперь учитывает [`sys.excepthook`](https://python-all.ru/3.4/library/sys.html#sys.excepthook) при отображении исключений. Исправление от Aaron Iles.
- bpo-13579: [`string.Formatter`](https://python-all.ru/3.4/library/string.html#string.Formatter) теперь понимает спецификатор преобразования ‘a’.
- bpo-15595: Исправлена работа `subprocess.Popen(universal_newlines=True)` для некоторых локалей (семейства utf-16 и utf-32). Исправление от Chris Jerdonek.
- bpo-15477: В модули cmath и math добавлен обходной код для платформ, чья системная функция log1p не учитывает знаки нуля.
- bpo-15715: [`importlib.__import__()`](https://python-all.ru/3.4/library/importlib.html#importlib.__import__) будет подавлять ImportError, когда использование fromlist приводит к неудачному импорту.
- bpo-14669: Исправлена сериализация (pickling) соединений и сокетов на Mac OS X путём отправки/приёма подтверждения после передачи файлового дескриптора. TestPicklingConnection вновь включён для Mac OS X.
- bpo-11062: Исправлено добавление сообщения из файла в почтовый ящик Babyl.
- bpo-15646: Предотвращение аналога fork bomb при использовании [`multiprocessing`](https://python-all.ru/3.4/library/multiprocessing.html#module-multiprocessing) в Windows без идиомы `if __name__ == '__main__'`.

### IDLE

- bpo-15678: Исправлены меню IDLE при запуске из командной строки OS X (регрессия 3.3.0b2).

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

- Доработано руководство по переносу кода с Python 2 на 3.
- bpo-14674: Добавлено обсуждение соответствия стандарту модуля [`json`](https://python-all.ru/3.4/library/json.html#module-json). Исправление от Chris Rebert.
- Создан раздел «Concurrent Execution» в документации, а раздел «Optional Operating System Services» разбит с использованием более удобной для пользователя схемы классификации (материалы распределены по новому разделу CE, IPC и обработке текста). Ограничения операционной системы могут быть отражены с помощью тега Sphinx `:platform:` – его размещение в оглавлении не имеет смысла.
- bpo-4966: Обновлена документация по последовательностям с учётом перехода на Python 3 и многочисленных улучшений языка с момента её первоначального написания.
- Некорректный термин «path importer» заменён на предложенное Эриком Сноу – более неудобное, но, по крайней мере, не ошибочное – «path based finder» в справочной документации по системе импорта.
- bpo-15640: Функция [`importlib.abc.Finder`](https://python-all.ru/3.4/library/importlib.html#importlib.abc.Finder) задокументирована как устаревшая.
- bpo-15630: Добавлен пример для оператора continue в руководстве. Исправление от Daniel Ellis.

### Тесты

- bpo-15747: ZFS всегда возвращает EOPNOTSUPP при попытке установить флаг UF\_IMMUTABLE (через chflags или lchflags); изменены соответствующие тесты в test\_posix.py для учёта этого.
- bpo-15285: Изменён подход к тестированию тайм-аутов соединения с использованием двух внешних хостов, настроенных специально для такого теста.
- bpo-15743: Удалено использование устаревших методов в тестах [`urllib`](https://python-all.ru/3.4/library/urllib.html#module-urllib). Исправление от Jeff Knupp.
- bpo-15615: Добавлены тесты для обработки недопустимых входных данных модулем [`json`](https://python-all.ru/3.4/library/json.html#module-json). Исправление от Kushal Das.

### Сборка

- Файлы библиотек для сборки PGO теперь выводятся в каталог PGO.
- Загрузчик для 32-битной версии теперь берётся из каталога PGO при 64-битной сборке PGO.
- Удалён файл `PC\python_nt.h` как неиспользуемый. Добавлена зависимость входных данных для пользовательского этапа сборки.
- bpo-15511: Удалена явная зависимость от pythonxy.lib из конфигурации \_decimal amd64.
- Добавлены отсутствующие конфигурации PGI/PGO для pywlauncher.
- bpo-15645: Обеспечена корректная установка файлов pickle грамматики 2to3.

## Python 3.3.0 beta 2

*Дата выпуска: 12 августа 2012*

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

- bpo-15568: Исправлено возвращаемое значение `yield from` при возбуждении StopIteration пользовательским итератором.
- bpo-13119: [`sys.stdout`](https://python-all.ru/3.4/library/sys.html#sys.stdout) и [`sys.stderr`](https://python-all.ru/3.4/library/sys.html#sys.stderr) теперь используют символ новой строки “rn” в Windows, как и Python 2.
- bpo-15534: Исправлена функция быстрого поиска для не-ASCII строк Unicode.
- bpo-15508: Исправлена строка документации для [`__import__()`](https://python-all.ru/3.4/library/functions.html#__import__), чтобы она содержала правильное значение по умолчанию 0 для ‘level’ и не упоминала отрицательные уровни, так как они не поддерживаются.
- bpo-15425: Устранён лишний вывод трассировки в большем количестве ситуаций, связанных с importlib.
- bpo-14578: Снова добавлена поддержка модулей, зарегистрированных в реестре Windows.
- bpo-15466: Прекращено использование TYPE\_INT64 в marshal, чтобы сделать importlib.h (и другие файлы байт-кода) одинаковыми для 32-битных и 64-битных систем.
- bpo-1692335: Перенесено начальное присваивание аргументов исключения в `BaseException.__new__()` для упрощения сериализации простых подклассов.
- bpo-12834: Исправлена `PyBuffer_ToContiguous()` для несплошных массивов.
- bpo-15456: Исправлен код `__sizeof__()` после изменений #12399. Автор: Serhiy Storchaka.
- bpo-15404: Утечка ссылок в repr объекта PyMethodObject.
- bpo-15394: Исправлена проблема в `PyModule_Create()`, которая приводила к утечке ссылок на некоторых путях обработки ошибок. Автор: Julia Lawall.
- bpo-15368: Исправлена проблема, из-за которой генерация байт-кода была недетерминированной.
- bpo-15202: Теперь везде используется имя “follow\_symlinks” для новых параметров в функциях os и shutil.
- bpo-15314: `__main__.__loader__` теперь корректно устанавливается во время запуска интерпретатора.
- bpo-15111: Если модуль, импортированный с помощью ‘from import’, содержит внутри себя исключение ImportError, не маскировать это общим ImportError для самого модуля.
- bpo-15293: Добавлена поддержка сборки мусора для базового типа узлов AST.
- bpo-15291: Исправлена утечка памяти, при которой узлы AST не освобождались должным образом.
- bpo-15110: Исправлена трассировка, генерируемая при “import xxx”, чтобы не показывать кадры стека importlib.
- bpo-16369: Глобальные объекты PyTypeObject не инициализированы вызовом PyType\_Ready(...).
- bpo-15020: Имя программы, используемое для поиска пути Python, теперь “python3” в Unix, а не “python”.
- bpo-15897: zipimport.c не проверяет возвращаемое значение fseek(). Автор: Felipe Cruz.
- bpo-15033: Исправлена ошибка с кодом возврата при запуске модулей с ключом -m, теперь возвращается правильное значение ошибки (1). Автор: Jeff Knupp.
- bpo-15229: Подкласс [`OSError`](https://python-all.ru/3.4/library/exceptions.html#OSError), чей \_\_init\_\_ не вызывает OSError.\_\_init\_\_, мог создавать неполные экземпляры, что приводило к аварийному завершению при вызове str() для них.
- bpo-15307: Виртуальные окружения теперь используют символические ссылки в сборках framework на Mac OS X, как и другие сборки POSIX.

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

- bpo-14590: configparser теперь корректно удаляет встроенные комментарии, когда разделитель встречается раньше без предшествующего пробела.
- bpo-15424: Добавлена реализация `__sizeof__()` для объектов array. Автор: Ludwig Hähne.
- bpo-15576: Разрешить модулям расширений выступать в качестве модуля \_\_init\_\_ пакета.
- bpo-15502: Функция [`importlib.invalidate_caches()`](https://python-all.ru/3.4/library/importlib.html#importlib.invalidate_caches) теперь работает с [`sys.meta_path`](https://python-all.ru/3.4/library/sys.html#sys.meta_path) вместо [`sys.path_importer_cache`](https://python-all.ru/3.4/library/sys.html#sys.path_importer_cache).
- bpo-15163: Pydoc не должен выводить \_\_loader\_\_ как данные модуля.
- bpo-15471: Не используйте изменяемые объекты в качестве значений по умолчанию для [`importlib.__import__()`](https://python-all.ru/3.4/library/importlib.html#importlib.__import__).
- bpo-15559: Чтобы избежать проблемного режима отказа при передаче в конструктор bytes, объекты модуля ipaddress больше не реализуют `__index__()` (но по-прежнему реализуют `__int__()`, где это уместно).
- bpo-15546: Исправлена обработка патологических входных данных в методах peek() и read1() классов BZ2File, GzipFile и LZMAFile.
- bpo-12655: Вместо требования пользовательского типа [`os.sched_getaffinity()`](https://python-all.ru/3.4/library/os.html#os.sched_getaffinity) и [`os.sched_setaffinity()`](https://python-all.ru/3.4/library/os.html#os.sched_setaffinity) теперь используют обычные множества целых чисел для представления процессоров, к которым ограничен процесс.
- bpo-15538: Исправлена компиляция кода эмуляции [`socket.getnameinfo()`](https://python-all.ru/3.4/library/socket.html#socket.getnameinfo) / [`socket.getaddrinfo()`](https://python-all.ru/3.4/library/socket.html#socket.getaddrinfo). Патч от Philipp Hagemeister.
- bpo-15519: Обеспечить корректную видимость WindowsRegistryFinder в importlib (и использовать для него правильный термин). Оригинальный патч от Eric Snow.
- bpo-15502: Привести абстрактные базовые классы importlib в соответствие с текущим состоянием протоколов импорта, заданных в PEP 420. Оригинальный патч от Eric Snow.
- bpo-15499: Запуск веб-браузера в Unix ранее вызывал задержку в несколько секунд. Оригинальный патч от Anton Barkovsky.
- bpo-15463: Модуль faulthandler обрезает строки до 500 символов, вместо 100, чтобы иметь возможность отображать длинные пути к файлам.
- bpo-6056: Обеспечить использование [`multiprocessing`](https://python-all.ru/3.4/library/multiprocessing.html#module-multiprocessing) метода setblocking(True) на используемых им сокетах. Оригинальный патч от J Derek Wilson.
- bpo-15364: Исправлено, чтобы sysconfig.get\_config\_var('srcdir') возвращал абсолютный путь.
- bpo-15413: Функция [`os.times()`](https://python-all.ru/3.4/library/os.html#os.times) пропала в Windows.
- bpo-15402: Исправлена проблема в модуле struct, из-за которой [`sys.getsizeof()`](https://python-all.ru/3.4/library/sys.html#sys.getsizeof) возвращал неверные результаты для экземпляров struct.Struct. Начальный патч от Serhiy Storchaka.
- bpo-15232: Когда mangle\_from равно True, `email.Generator` теперь правильно искажает строки, начинающиеся с 'From ', которые встречаются в преамбуле или постамбуле MIME.
- bpo-15094: Неправильно размещенный #endif в \_tkinter.c. Патч от Serhiy Storchaka.
- bpo-13922: [`argparse`](https://python-all.ru/3.4/library/argparse.html#module-argparse) больше не удаляет некорректно тире, идущие после первого.
- bpo-12353: [`argparse`](https://python-all.ru/3.4/library/argparse.html#module-argparse) теперь корректно обрабатывает пустые значения аргументов.
- bpo-10017: Исправлен TypeError при использовании pprint на словарях с пользовательскими типами в качестве ключей или другими неупорядочиваемыми ключами. (См. также: bpo-14998)
- bpo-15397: [`inspect.getmodulename()`](https://python-all.ru/3.4/library/inspect.html#inspect.getmodulename) теперь напрямую основан на importlib через новый API [`importlib.machinery.all_suffixes()`](https://python-all.ru/3.4/library/importlib.html#importlib.machinery.all_suffixes).
- bpo-14635: [`telnetlib`](https://python-all.ru/3.4/library/telnetlib.html#module-telnetlib) будет использовать poll() вместо select(), когда возможно, чтобы избежать сбоев из-за ограничения на количество файловых дескрипторов в select().
- bpo-15180: Уточнить сообщение об ошибке в posixpath.join() при смешивании str и bytes.
- bpo-15343: pkgutil теперь включает реализацию iter\_importer\_modules для importlib.machinery.FileFinder (аналогично тому, как он уже обрабатывал zipimport.zipimporter).
- bpo-15314: runpy теперь правильно устанавливает \_\_main\_\_.\_\_loader\_\_.
- bpo-15357: Эмуляция импорта в pkgutil теперь устарела. pkgutil использует importlib внутренне вместо эмуляции.
- bpo-15233: Python теперь гарантирует, что вызываемые объекты, зарегистрированные с помощью модуля atexit, будут вызваны в детерминированном порядке.
- bpo-15238: [`shutil.copystat()`](https://python-all.ru/3.4/library/shutil.html#shutil.copystat) теперь копирует «расширенные атрибуты» Linux.
- bpo-15230: runpy.run\_path теперь правильно устанавливает \_\_package\_\_, как описано в документации.
- bpo-15315: Поддержка VS 2010 в distutils cygwincompiler.
- bpo-15294: Исправлена регрессия в обработке вложенных пакетов пространств имён в pkgutil.extend\_path().
- bpo-15056: [`imp.cache_from_source()`](https://python-all.ru/3.4/library/imp.html#imp.cache_from_source) и [`imp.source_from_cache()`](https://python-all.ru/3.4/library/imp.html#imp.source_from_cache) теперь вызывают NotImplementedError, если `sys.implementation.cache_tag` равен None.
- bpo-15256: Грамматическая ошибка в исключении, которое поднимает [`imp.find_module()`](https://python-all.ru/3.4/library/imp.html#imp.find_module).
- bpo-5931: Переменная окружения [`wsgiref`](https://python-all.ru/3.4/library/wsgiref.html#module-wsgiref) SERVER\_SOFTWARE теперь будет содержать специфичное для реализации название (например, CPython, Jython) вместо общего «Python».
- bpo-13248: Удалён устаревший аргумент «max\_buffer\_size» из BufferedWriter и BufferedRWPair модуля io.
- bpo-13248: Удалён устаревший аргумент «version» из [`argparse.ArgumentParser`](https://python-all.ru/3.4/library/argparse.html#argparse.ArgumentParser).
- bpo-14814: Реализовано более согласованное упорядочивание и сортировка объектов ipaddress.
- bpo-14814: Сетевые объекты [`ipaddress`](https://python-all.ru/3.4/library/ipaddress.html#module-ipaddress) теперь корректно возвращают NotImplemented при сравнении с произвольными объектами, а не вызывают TypeError.
- bpo-14990: Исправлена ошибка: при неверном объявлении кодировки теперь корректно вызывается SyntaxError.
- bpo-14814: [`ipaddress`](https://python-all.ru/3.4/library/ipaddress.html#module-ipaddress) теперь выдаёт более информативные сообщения об ошибках при прямом создании экземпляров (изменения разрешены на стадии бета-тестирования из-за статуса временного API).
- bpo-15247: [`io.FileIO`](https://python-all.ru/3.4/library/io.html#io.FileIO) теперь вызывает ошибку, если ему передан файловый дескриптор, указывающий на каталог.
- bpo-15261: Исправлен сбой os.stat(fd) в Windows, когда fd не открыт.
- bpo-15166: Реализована [`imp.get_tag()`](https://python-all.ru/3.4/library/imp.html#imp.get_tag) с использованием `sys.implementation.cache_tag`.
- bpo-15210: Перехватывать KeyError, когда `importlib.__init__()` не может найти \_frozen\_importlib в sys.modules, а не ImportError.
- bpo-15030: `importlib.abc.PyPycLoader` теперь поддерживает новое поле заголовка с размером исходного кода в .pyc-файлах.
- bpo-5346: Сохранять права доступа файлов почтовых ящиков mbox, MMDF и Babyl при flush().
- bpo-10571: Исправлена опция «–sign» команды upload в distutils. Патч от Jakub Wilk.
- bpo-9559: Если сообщения только добавлялись, при вызове flush() для mbox, MMDF или Babyl больше не создаётся новый файл, переименовываемый поверх старого.
- bpo-10924: Исправлено [`crypt.mksalt()`](https://python-all.ru/3.4/library/crypt.html#crypt.mksalt): теперь используется ГСЧ, подходящий для криптографических целей.
- bpo-15184: Обеспечена согласованность результатов настройки конфигурации OS X для универсальных сборок. Для этого общие для OS X настройки из sysconfig, distutils.sysconfig, distutils.util и distutils.unixccompiler вынесены в новый модуль \_osx\_support.

### C API

- bpo-15610: `PyImport_ImportModuleEx()` теперь использует уровень 0 вместо -1.
- bpo-15169: Удалена C-реализация [`imp.source_from_cache()`](https://python-all.ru/3.4/library/imp.html#imp.source_from_cache), используемая PyImport\_ExecCodeModuleWithPathnames(), вместо неё теперь применяется код на Python. Это приводит к тому, что PyImport\_ExecCodeModuleObject() не пытается определить путь к исходному коду по пути к байт-коду, как это делает PyImport\_ExecCodeModuleWithPathnames(). (См. также bpo-14599)

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

- bpo-6493: Исправлена проблема в ctypes в Windows, из-за которой битовые поля структур типа [`ctypes.c_uint32`](https://python-all.ru/3.4/library/ctypes.html#ctypes.c_uint32) шириной 32 могли устанавливаться некорректно.
- bpo-15194: Обновлена libffi до версии 3.0.11.

### IDLE

- bpo-13052: Исправлен сбой IDLE при замене строки в диалоге поиска/замены, если строка замены заканчивалась на `\`. Патч от Roger Serwy.

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

- bpo-15458: python-config получил новую опцию –configdir для вывода значения $LIBPL.
- Перенесён importlib.test.benchmark в Tools/importbench.
- bpo-12605: Отладочные хуки gdb для CPython (в Tools/gdb) расширены: теперь в командах «py-bt» и «py-bt-full» показывается информация о большем числе C-фреймов, имеющих отношение к CPython:

  - C-фреймы, ожидающие GIL
  - C-фреймы, выполняющие сборку мусора
  - C-фреймы, возникшие из-за вызова PyCFunction

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

- bpo-15041: Обновлён список «см. также» в документации tkinter.
- bpo-15444: Исправлено написание имён участников, содержащих символы не из ASCII. Патч от Serhiy Storchaka.
- bpo-15295: Реорганизована и переписана документация по системе импорта.
- bpo-15230: Четкое описание некоторых ограничений модуля runpy, с рекомендацией в пользу importlib там, где это уместно.
- bpo-15053: Уведомление об изменении блокировки импорта в Python 3.3 скопировано во все соответствующие функции модуля imp, а не только в начало раздела.
- bpo-15288: В примечаниях pkgutil добавлена ссылка на термин «загрузчик» с пояснением, что в Python 3.3 поведение изменится; соответствующие функции помечены как «измененные», так как они больше не работают с модулями, импортируемыми напрямую.
- bpo-13557: Уточнен эффект передачи двух разных пространств имен в [`exec()`](https://python-all.ru/3.4/library/functions.html#exec) или `execfile()`.
- bpo-15250: Задокументировано, что [`filecmp.dircmp()`](https://python-all.ru/3.4/library/filecmp.html#filecmp.dircmp) сравнивает файлы поверхностно. Патч от Криса Джердонека.
- bpo-15442: Список каталогов, игнорируемых по умолчанию [`filecmp.dircmp()`](https://python-all.ru/3.4/library/filecmp.html#filecmp.dircmp), теперь доступен как атрибут модуля; список расширен более современными значениями.

### Тесты

- bpo-15467: Вспомогательные функции для тестов `__sizeof__()` перенесены в test\_support. Патч от Serhiy Storchaka.
- bpo-15320: Сделать итерацию по списку тестов потокобезопасной при запуске тестов в многопроцессном режиме. Патч от Криса Джердонека.
- bpo-15168: Перенести `importlib.test` в `test.test_importlib`.
- bpo-15091: Повторно активирован тест в UNIX, который завершался с ошибкой из-за забытого вызова [`importlib.invalidate_caches()`](https://python-all.ru/3.4/library/importlib.html#importlib.invalidate_caches).
- bpo-15230: В тестах runpy применен более систематический подход.
- bpo-15300: Обеспечить, чтобы временные рабочие каталоги тестов находились в одной родительской папке при запуске тестов в многопроцессном режиме из сборки Python. Патч от Криса Джердонека.
- bpo-15284: Пропускать тесты {send,recv}msg в test\_socket, если IPv6 не включен. Патч от Брайана Бразила.
- bpo-15277: Исправлена утечка ресурсов в support.py при отключенном IPv6. Патч от Брайана Бразила.

### Сборка

- bpo-11715: Исправлено обнаружение мультиархитектурности без установленных инструментов разработки Debian (dpkg-dev).
- bpo-15037: Установщики OS X теперь собираются с локальной копией библиотек ncurses 5.9, чтобы избежать ошибки curses.unget\_wch, присутствующей в старых версиях ncurses, например, поставляемых с OS X.
- bpo-15560: Исправлена сборка расширения \_sqlite3 на OS X с SDK. Кроме того, для установщиков OS X обеспечена согласованность поведения sqlite3 и доступность функций за счет сборки локальной копии libsqlite3 вместо зависимости от широкого спектра версий, поставляемых с различными выпусками OS X.
- bpo-8847: Отключено свертывание COMDAT в PGO-сборках Windows.
- bpo-14018: Исправлена проверка фреймворка Tcl/Tk на OS X при использовании SDK OS X.
- bpo-16256: Установщик OS X теперь устанавливает правильные права доступа для каталога doc.
- bpo-15431: Добавлен проект \_freeze\_importlib для перегенерации importlib.h в Windows. Патч от Kristján Valur Jónsson.
- bpo-14197: Для сборок фреймворка OS X обеспечить создание ссылок на разделяемую библиотеку с правильным суффиксом ABI.
- bpo-14330: Для кросс-сборок не использовать хост-питон, а использовать пути поиска хоста для хост-компилятора.
- bpo-15235: Разрешены версии Berkeley DB до 5.3 для сборки модуля dbm.
- bpo-15268: Поиск curses.h в /usr/include/ncursesw.

## Python 3.3.0 beta 1

*Дата релиза: 27 июня 2012*

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

- Исправлена (вероятнее всего) очень редкая утечка памяти при вызове main() и невозможности декодировать аргумент командной строки.
- bpo-14815: Использовать Py\_ssize\_t вместо long для хэша объекта, чтобы сохранить все 64 бита хэша на Win64.
- bpo-12268: Методы readline, readlines, read() и readall() больше не теряют данные при прерывании лежащего в основе системного вызова read. IOError больше не возникает из-за системного вызова read, возвращающего EINTR внутри этих методов.
- bpo-11626: Добавлены функции \_SizeT в стабильный ABI.
- bpo-15142: Исправлена утечка ссылок при освобождении экземпляров типов, созданных с помощью PyType\_FromSpec().
- bpo-10053: Не закрывать файловые дескрипторы, если FileIO.\_\_init\_\_ завершился ошибкой. Основано на работе Хирокодзу Ямамото.
- bpo-15096: Удалена поддержка ur'', так как сырая нотация несовместима с сырыми строками Unicode в Python 2.x.
- bpo-13783: Объекты-генераторы теперь используют API идентификаторов внутри.
- bpo-14874: Восстановлена скорость декодирования charmap до уровней, существовавших до PEP 393. Патч от Серхия Сторчаки.
- bpo-15026: Кодировка utf-16 стала значительно быстрее (до 10 раз). Патч от Серхия Сторчаки.
- bpo-11022: open() и io.TextIOWrapper теперь вызывают locale.getpreferredencoding(False) вместо locale.getpreferredencoding() в текстовом режиме, если кодировка не указана. Временное изменение кодировки локали через locale.setlocale() не меняет текущую кодировку локали; используется текущая кодировка локали, а не предпочитаемая пользователем.
- bpo-14673: Добавлена реализация sys.implementation от Эрика Сноу.
- bpo-15038: Оптимизация блокировок Python на Windows.

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

- bpo-12288: Считать '0' и '0.0' допустимыми initialvalue для tkinter SimpleDialog.
- bpo-15512: Добавлена реализация \_\_sizeof\_\_ для парсера. Патч от Серхия Сторчаки.
- bpo-15469: Добавлена реализация \_\_sizeof\_\_ для объектов deque. Патч от Серхия Сторчаки.
- bpo-15489: Добавлена реализация \_\_sizeof\_\_ для объектов BytesIO. Патч от Серхия Сторчаки.
- bpo-15487: Добавлена реализация \_\_sizeof\_\_ для буферизованных объектов ввода-вывода. Патч от Серхия Сторчаки.
- bpo-15514: Исправлена поддержка \_\_sizeof\_\_ для cpu\_set. Патч от Серхия Сторчаки.
- bpo-15177: Добавлен параметр dir\_fd в os.fwalk().
- bpo-15061: Переписана hmac.compare\_digest() на C для предотвращения дальнейшего анализа времени выполнения и обеспечения безопасной поддержки всех объектов, поддерживающих буферный протокол, а также строк, содержащих только ASCII.
- bpo-15164: Изменено возвращаемое значение platform.uname() с обычного кортежа на collections.namedtuple.
- Добавлена поддержка Mageia Linux в модуль platform.
- bpo-11678: Добавлена поддержка Arch Linux в модуль platform.
- bpo-15118: Изменено возвращаемое значение os.uname() и os.times() с обычных кортежей на неизменяемые итерируемые объекты с именованными атрибутами (объекты structseq).
- Ускорение \_decimal ещё на 10–15% за счёт кэширования последнего использованного контекста потока. В тесте pi (64-разрядная платформа, prec=9) \_decimal теперь лишь в 1,5 раза медленнее float.
- Удалён модуль packaging, который не готов к широкому использованию.
- bpo-15154: Добавлен параметр «dir\_fd» в os.rmdir, удалён параметр «rmdir» из os.remove / os.unlink.
- bpo-4489: Добавлен shutil.rmtree, не подверженный атакам через символические ссылки. Он используется автоматически на платформах, поддерживающих необходимые функции os.openat() и os.unlinkat(). Основной код – Мартина фон Лёвиса.
- bpo-15156: HTMLParser теперь использует новый словарь «html.entities.html5».
- bpo-11113: Добавлен новый словарь «html5», содержащий именованные символьные ссылки, определённые стандартом HTML5, и эквивалентные символы Unicode, в модуль html.entities.
- bpo-15114: Строгий режим HTMLParser и исключение HTMLParseError объявлены устаревшими, так как парсер теперь может обрабатывать некорректную разметку.
- bpo-3665: Экранирования u и U теперь поддерживаются в регулярных выражениях Unicode. Патч от Серхия Сторчаки.
- bpo-15153: Добавлен inspect.getgeneratorlocals для упрощения тестирования белого ящика обновлений состояния генератора.
- bpo-13062: Добавлен inspect.getclosurevars для упрощения тестирования замыканий с состоянием.
- bpo-11024: Исправления и дополнительные тесты для Time2Internaldate.
- bpo-14626: Крупный рефакторинг функций/параметров в модуле os. Многие функции теперь поддерживают параметры «dir\_fd» и «follow\_symlinks»; некоторые также поддерживают приём открытого файлового дескриптора вместо строки пути. Добавлены коллекции os.support\_\* в качестве вспомогательных средств LBYL. Удалены многие функции, ранее доступные только в альфа-версиях 3.3 (часто начинающиеся с «f» или «l», или заканчивающиеся на «at»). Исходно предложено Serhiy Storchaka; реализовано Larry Hastings.
- bpo-15008: Реализация PEP 362 «Signature Objects». Патч от Yury Selivanov.
- bpo-15138: base64.urlsafe\_{en,de}code() теперь работают в 3-4 раза быстрее.
- bpo-444582: Добавлена функция shutil.which для поиска программ в системном пути. Исходный патч от Erik Demaine, с последующими доработками от Jan Killian и Brian Curtin.
- bpo-14837: Ошибки SSL теперь имеют атрибуты `library` и `reason`, точно описывающие, что произошло и в каком подмодуле OpenSSL. str() SSLError также улучшена соответствующим образом.
- bpo-9527: Метод datetime.astimezone() теперь будет возвращать экземпляр класса timezone, соответствующий системному локальному часовому поясу, при вызове без аргументов.
- bpo-14653: email.utils.mktime\_tz() больше не полагается на системную mktime(), когда указано смещение часового пояса.
- bpo-14684: zlib.compressobj() и zlib.decompressobj() теперь поддерживают использование предопределённых словарей сжатия. Исходный патч от Sam Rushing.
- Исправлена обработка GzipFile имён файлов, заданных как объекты bytes.
- bpo-14772: Возврат значений назначения из некоторых функций shutil.
- bpo-15064: Реализация протокола контекстного менеджера для типов multiprocessing.
- bpo-15101: Финализатор пула теперь избегает присоединения текущего потока.
- bpo-14657: Замороженный экземпляр importlib, используемый для начальной загрузки, теперь также является модулем, импортируемым как importlib.\_bootstrap.
- bpo-14055: Добавлена поддержка \_\_sizeof\_\_ для \_elementtree.
- bpo-15054: Исправлена ошибка в tokenize.tokenize, из-за которой строковые литералы с префиксом 'b' токенизировались неправильно. Патч от Serhiy Storchaka.
- bpo-15006: Разрешено сравнение на равенство между наивными и осведомлёнными объектами time или datetime.
- bpo-15036: Mailbox больше не вызывает ошибку, если между операциями при удалении или изменении нескольких элементов в почтовых ящиках mbox, MMDF или Babyl выполняется сброс (flush).
- bpo-14059: Реализация multiprocessing.Barrier.
- bpo-15061: Неудачно названная функция hmac.secure\_compare переименована в hmac.compare\_digest, ограничена работой только с входными данными bytes, и её документация обновлена, чтобы более точно отражать как её назначение, так и её ограничения.
- bpo-13841: Дочерние процессы теперь завершаются с помощью sys.exit() в Windows.
- bpo-14936: curses\_panel преобразован в API PEP 3121 и PEP 384. Патч от Robin Schreiber.
- bpo-1667546: На платформах, поддерживающих поля tm\_zone и tm\_gmtoff в struct tm, объекты time.struct\_time, возвращаемые функциями time.gmtime(), time.localtime() и time.strptime(), теперь имеют атрибуты tm\_zone и tm\_gmtoff. Исходный патч от Paul Boddie.
- Переименование атрибута adjusted в adjustable в результате time.get\_clock\_info().
- bpo-3518: Удалены ссылки на несуществующий метод BaseManager.from\_address().
- bpo-13857: Добавлена функция textwrap.indent() (исходный патч от Ezra Berch).
- bpo-2736: Добавлен метод datetime.timestamp().
- bpo-13854: Обработка multiprocessing нецелых и нестроковых аргументов SystemExit теперь корректна.
- bpo-12157: pool.map() теперь корректно обрабатывает пустые итерируемые объекты. Исходный патч от mouad.
- bpo-11823: Дизассемблирование теперь показывает количество аргументов при вызовах с именованными аргументами.
- bpo-14711: os.stat\_float\_times() объявлена устаревшей.
- LZMAFile теперь принимает режимы «rb»/«wb»/«ab» как синонимы «r»/«w»/«a».
- Модули bz2 и lzma теперь содержат функцию open(), позволяющую легко открывать сжатые файлы как в текстовом, так и в двоичном режиме.
- BZ2File.\_\_init\_\_() и LZMAFile.\_\_init\_\_() теперь принимают файловый объект в качестве первого аргумента, вместо того чтобы требовать отдельный аргумент «fileobj».
- gzip.open() теперь принимает как файловые объекты, так и имена файлов.
- bpo-14992: os.makedirs(path, exist\_ok=True) вызывал OSError, если путь существовал и у него был установлен бит режима S\_ISGID, хотя этого явно не запрашивалось. Теперь это исключение не возникает, так как mkdir не может контролировать, установит ли ОС этот бит или нет.
- bpo-14989: Опция включения CGI для http.server теперь доступна из командной строки.
- bpo-14987: Добавлен отсутствующий оператор import в модуль inspect.
- bpo-1079: email.header.decode\_header теперь корректно разбирает все примеры из RFC2047. Есть необходимое заметное изменение поведения: начальные и/или конечные пробелы в ASCII-частях теперь сохраняются.
- bpo-14969: Улучшена обработка цепочек исключений в contextlib.ExitStack
- bpo-14963: Переписан contextlib.ExitStack.\_\_exit\_\_ на итеративный алгоритм (патч от Alon Horev)
- bpo-14785: Добавлена функция sys.\_debugmallocstats(), помогающая отлаживать проблемы низкоуровневого распределения памяти
- bpo-14443: Обеспечена компиляция .py-файлов в байт-код с правильным исполняемым файлом Python в bdist\_rpm даже на старых версиях RPM

### C API

- bpo-15146: Добавлена PyType\_FromSpecWithBases. Патч от Robin Schreiber.
- bpo-15042: Добавлены PyState\_AddModule и PyState\_RemoveModule. Добавлена защита по версии для дополнений Py\_LIMITED\_API. Патч от Robin Schreiber.
- bpo-13783: Случайные дополнения к публичному C API в реализации PEP 380 были либо удалены, либо помечены как частные интерфейсы.

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

- bpo-15000: Поддержка архитектуры x32 (unique) в \_posixsubprocess.c.

### IDLE

- bpo-9803: Не закрывать IDLE при сохранении, если открыта точка останова. Патч от Roger Serwy.
- bpo-14962: Обновление цвета текста в окне оболочки IDLE после изменения параметров. Патч от Roger Serwy.

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

- bpo-15176: Уточнено поведение, документация и реализация os.listdir().
- bpo-14982: Документировано, что функции итерации pkgutil требуют, чтобы импортёр определял нестандартный метод iter\_modules() (чего importlib-импортёры не делают).
- bpo-15081: Документирована PyState\_FindModule. Патч от Robin Schreiber.
- bpo-14814: Добавлен первый черновик справочника по API модуля ipaddress

### Тесты

- bpo-15187: Исправление ошибки: удаление временных каталогов, которые оставлял test\_shutil.
- bpo-14769: test\_capi теперь содержит SkipitemTest, который умно проверяет «чётность» между PyArg\_ParseTuple() и статической функцией skipitem() в Python/getargs.c для всех возможных «форматных единиц».
- test\_nntplib теперь терпимо относится к запуску через NNTP-шлюзы, которые добавляют заголовки «X-Antivirus» к статьям
- bpo-15043: test\_gdb теперь полностью пропускается, если настройки безопасности gdb блокируют загрузку хуков gdb
- bpo-14963: Добавлены тестовые примеры для обработки исключений в contextlib.ExitStack (первоначальный патч от Alon Horev)

### Сборка

- bpo-13590: Улучшена поддержка OS X Xcode 4: \* Попытка избежать сборки Python или модулей расширения проблемным компилятором llvm-gcc. \* Поскольку Xcode 4 удаляет поддержку ppc, сборка модулей расширения теперь проверяет поддержку компилятором ppc и автоматически удаляет архитектуры ppc и ppc64, если они недоступны. \* Поскольку Xcode 4 больше не устанавливает SDK в стандартные расположения, сборка модулей расширения теперь возвращается к использованию установленных заголовков и библиотек, если SDK, использованный для сборки интерпретатора, недоступен. \* Обновлён ./configure для использования более подходящих значений по умолчанию для универсальных сборок; в частности, –enable-universalsdk=yes использует SDK по умолчанию из Xcode, а –with-universal-archs теперь по умолчанию имеет значение «intel», если ppc недоступен.
- bpo-14225: Исправлена поддержка Unicode для curses (#12567) на OS X
- bpo-14928: Исправлены проблемы начальной загрузки importlib с помощью пользовательского исполняемого файла (Modules/\_freeze\_importlib) для сборки Python/importlib.h.

## Python 3.3.0 alpha 4

*Дата выпуска: 31 мая 2012*

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

- bpo-14835: Изменить вывод plistlib пустых массивов и словарей, как в OS X. Патч от Sidney San Martín.
- bpo-14744: Использовать новый внутренний API \_PyUnicodeWriter для ускорения str%args и str.format(args).
- bpo-14930: Сделать объекты memoryview допускающими слабые ссылки.
- bpo-14775: Исправлена потенциальная квадратичная сложность сборки словаря из-за повторных попыток сборщика мусора отменить отслеживание словарей.
- bpo-14857: Исправлен регресс в ссылках на неявную переменную замыкания \_\_class\_\_ из PEP 3135 (Возобновлено [issue #12370](https://python-all.ru/3.4/whatsnew/changelog.html))
- bpo-14712: Виртуальные окружения. Реализовано Винаем Саджипом. (См. также: PEP 405)
- bpo-14660: Пакеты пространств имён. Реализовано Эриком Смитом. (См. также: PEP 420)
- bpo-14494: Исправлено \_\_future\_\_.py и его документация, чтобы указать, что абсолютные импорты являются поведением по умолчанию в 3.0, а не в 2.7. Патч от Свена Марнаха.
- bpo-9260: Более детальная блокировка импорта. Теперь большая часть последовательности импорта использует блокировки на модуль вместо глобальной блокировки импорта, устраняя известные проблемы с потоками и импортом.
- bpo-14624: Декодирование UTF-16 теперь в 3–4 раза быстрее на различных входных данных. Патч от Серхия Сторчаки.
- asdl\_seq и asdl\_int\_seq теперь имеют размер Py\_ssize\_t.
- bpo-14133: Реализовано подавление отображения \_\_context\_\_ с помощью атрибута BaseException. Это заменяет исходный механизм из PEP 409. (См. также: PEP 415)
- bpo-14417: Изменение словаря во время поиска теперь перезапускает поиск вместо возникновения RuntimeError (отменяет [issue #14205](https://python-all.ru/3.4/whatsnew/changelog.html)).
- bpo-14738: Ускорение декодирования UTF-8 на не-ASCII данных. Патч от Серхия Сторчаки.
- bpo-14700: Исправлены две сломанные проверки переполнения, приводящие к неопределённому поведению, в форматировании строк старого стиля.

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

- bpo-14690: Использование монотонных часов вместо системных в модулях sched, подпроцесс и trace.
- bpo-14443: Указание rpmbuild использовать правильную версию Python в bdist\_rpm. Первичный патч от Росса Лагервалла.
- bpo-12515: Модуль email теперь регистрирует дефект, если при разборе MIME-части достигается конец файла без закрывающей MIME-границы.
- bpo-1672568: Модуль email теперь всегда декодирует полезные данные base64, добавляя заполнение и игнорируя символы, не входящие в алфавит base64, при необходимости, и регистрируя дефекты для любых подобных проблем.
- bpo-14925: Модуль email теперь регистрирует дефект, когда парсер решает, что отсутствует строка-разделитель заголовка и тела. MalformedHeaderDefect, который существующий код никогда фактически не генерировал, объявлен устаревшим.
- bpo-10365: Диалог открытия файла теперь работает вместо аварийного завершения, даже если родительское окно закрыто до диалога. Патч от Роджера Серви.
- bpo-8739: Обновлён smtpd для поддержки RFC 5321, добавлена поддержка расширения SIZE из RFC 1870.
- bpo-665194: Добавлена функция localtime в email.utils для предоставления осведомлённого местного времени для использования при установке заголовков Date.
- bpo-12586: Добавлены новые временные политики, реализующие удобную поддержку Юникода для заголовков email. Подробности см. в What’s New.
- bpo-14731: Рефакторинг фреймворка Policy в email для поддержки полной обратной совместимости с Python 3.2 по умолчанию, но при этом допускающего внедрение новых функций через новые политики. Обратите внимание, что Policy.must\_be\_7bit переименован в cte\_type.
- bpo-14876: Использование выбранного пользователем шрифта для конфигурации подсветки.
- bpo-14920: Исправлена ошибка help(urllib.parse) в локали C на терминалах. В справке используются только ASCII-символы.
- bpo-14548: Сделать финализаторы multiprocessing проверяющими pid перед выполнением, чтобы справиться с возможностью запуска gc сразу после fork.
- bpo-14036: Добавлена дополнительная проверка для валидации того, что порт в urlparse не выходит за недопустимый диапазон, и возвращает None.
- bpo-14862: Добавлены недостающие имена в os.\_\_all\_\_
- bpo-14875: Использование float('inf') вместо float('1e66666') в модуле json.
- bpo-13585: Добавлен contextlib.ExitStack
- PEP 3144, [Issue #14814](https://python-all.ru/3.4/whatsnew/changelog.html): Добавлен модуль ipaddress
- bpo-14426: Исправлен формат Date в атрибуте Expires заголовка Set-Cookie в Cookie.py.
- bpo-14588: Модуль types теперь содержит функции new\_class() и prepare\_class() для поддержки динамического создания классов в соответствии с PEP 3115. Патч от Daniel Urban и Nick Coghlan.
- bpo-13152: Разрешено указывать собственный размер табуляции для раскрытия табуляции в textwrap. Патч от John Feuerstein.
- bpo-14721: При пустой строке тела запроса теперь отправляется корректный заголовок ‘Content-length: 0’. Первый патч от Arve Knudsen.
- bpo-14072: Исправлен разбор URI ‘tel’ в urlparse за счёт ужесточения проверки портов.
- bpo-9374: Универсальный разбор частей запроса и фрагмента URL для любой схемы. Поддерживается как RFC3986, так и RFC2396.
- bpo-14798: Исправлены функции в pyclbr: теперь они вызывают ImportError, если первая часть составного имени не является пакетом. Патч от Xavier de Gaye.
- bpo-12098: Теперь multiprocessing в Windows запускает дочерние процессы с теми же sys.flags, что и текущий процесс. Первый патч от Sergey Mezentsev.
- bpo-13031: Небольшое ускорение tarfile при распаковке tar-файлов. Патч от Justin Peel.
- bpo-14780: urllib.request.urlopen() теперь имеет аргумент `cadefault` для использования хранилища сертификатов по умолчанию. Первый патч от James Oakley.
- bpo-14829: Исправлена индексация bisect и range() с большими индексами (\>= 2 \*\* 32) в 64-разрядной Windows.
- bpo-14732: Модуль \_csv теперь использует инициализацию модуля в соответствии с PEP 3121. Патч от Robin Schreiber.
- bpo-14809: В http.server и http.client добавлены коды состояния HTTP, введённые RFC 6585. Патч от EungJun Yi.
- bpo-14777: При обращении к буферу обмена Tk tkinter может возвращать нераскодированные байты UTF-8 в виде строки. Изменена функция clipboad\_get(): теперь в окружении X11 при отсутствии запроса конкретного типа сначала запрашивается тип UTF8\_STRING, а в случае неудачи используется текущий тип STRING по умолчанию. Оригинальный патч от Thomas Kluyver.
- bpo-14773: Исправлена ошибка os.fwalk() при обходе сломанных символьных ссылок.
- bpo-12541: Снижены требования к кавычкам вокруг поля «Область» в HTTP-базовой аутентификации в urllib2.
- bpo-14807: Незадокументированная функция tarfile.filemode() перенесена в stat.filemode() с добавлением документации. Добавлен псевдоним tarfile.filemode() с предупреждением об устаревании.
- bpo-13815: TarFile.extractfile() теперь возвращает объекты io.BufferedReader.
- bpo-14532: В модуль hmac добавлена вспомогательная функция secure\_compare() для снижения риска атак по времени. Патч от Jon Oberheide.
- Добавлена importlib.util.resolve\_name().
- bpo-14366: Поддержка сжатия lzma в zip-файлах. Патч от Serhiy Storchaka.
- bpo-13959: Введена importlib.find\_loader(), а imp.find\_module/load\_module задокументированы как устаревшие.
- bpo-14082: shutil.copy2() теперь копирует расширенные атрибуты, если это возможно. Патч от Hynek Schlawack.
- bpo-13959: Единственный аргумент методов importlib.abc.FileLoader.load\_module()/get\_filename() и importlib.machinery.ExtensionFileLoader.load\_module() сделан необязательным. Это позволяет заменить (и тем самым объявить устаревшими) imp.load\_source()/load\_package()/load\_compiled().
- bpo-13959: imp.get\_suffixes() устарела в пользу новых атрибутов importlib.machinery: SOURCE\_SUFFIXES, DEBUG\_BYTECODE\_SUFFIXES, OPTIMIZED\_BYTECODE\_SUFFIXES, BYTECODE\_SUFFIXES и EXTENSION\_SUFFIXES. Это косвенно привело к устареванию inspect.getmoduleinfo().
- bpo-14662: Предотвращение сбоев shutil в OS X, когда целевой объект не поддерживает операции chflag. Патч от Hynek Schlawack.
- bpo-14157: Исправлена ошибка time.strptime, когда без указания года на 29 февраля. Патч от Hynek Schlawack.
- bpo-14753: Обработка отрицательных тайм-аутов в multiprocessing приведена к поведению Python 3.2.
- bpo-14583: Исправлена ошибка importlib, когда \_\_init\_\_.py пакета сначала импортировал один из своих модулей, а затем вызывал ошибку.
- bpo-14741: Исправлена отсутствующая поддержка многоточия (‘...’) в модуле parser.
- bpo-14697: Исправлена отсутствующая поддержка литералов множеств и генераторов множеств в модуле parser.
- bpo-14701: Исправлена отсутствующая поддержка ‘raise ... from’ в модуле parser.
- Добавлена поддержка тайм-аутов в методы acquire() прокси-объектов блокировок, семафоров и условий модуля multiprocessing.
- bpo-13989: Добавлена поддержка текстового режима в gzip.open().
- bpo-14127: Объект результата os.stat() теперь предоставляет три дополнительных поля: st\_ctime\_ns, st\_mtime\_ns и st\_atime\_ns, которые возвращают эти времена в виде целого числа с точностью до наносекунд. Функции os.utime(), os.lutimes() и os.futimes() теперь принимают новый параметр ns, который принимает mtime и atime как целые числа с точностью до наносекунд.
- bpo-14127: shutil.copystat теперь сохраняет точные значения mtime и atime в файловых системах, поддерживающих наносекундную точность. (См. также: bpo-10148)

### IDLE

- bpo-14958: Изменена подсветка синтаксиса IDLE для распознавания всех строковых и байтовых литералов, поддерживаемых в Python 3.3.
- bpo-10997: Предотвращение появления дублирующейся записи в меню «Недавние файлы» IDLE.
- bpo-14929: Исправлено закрытие IDLE 3.x при ошибках декодирования Unicode во время поиска. Исправление от Roger Serwy.
- bpo-12510: Попытка получить недопустимую подсказку больше не приводит к закрытию IDLE. Другие подсказки исправлены или улучшены, количество тестов увеличено втрое. Оригинальный патч от Roger Serwy.

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

- bpo-14695: Обновление поддержки Tools/parser/unparse.py в соответствии с грамматикой Python 3.3.

### Сборка

- bpo-14472: Обновлён .gitignore. Исправление от Matej Cepl.
- Обновлены версии библиотек Windows: bzip 1.0.6, OpenSSL 1.0.1c.
- bpo-14693: На платформах, отличных от Windows, резервные модули hashlib всегда компилируются, даже если OpenSSL присутствует во время сборки.
- bpo-13210: Сборка Windows теперь использует VS2010, перенесённая с VS2008.

### C API

- bpo-14705: Семейство функций PyArg\_Parse() теперь поддерживает единицу формата 'p', которая принимает аргумент «логический предикат». Она преобразует любое значение Python в целое число: 0, если оно «ложно», и 1 в противном случае.

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

- bpo-14863: Обновлена документация os.fdopen(), чтобы отразить тот факт, что теперь это лишь тонкая обёртка вокруг open().
- bpo-14588: Справочник по языку теперь точно документирует процесс определения класса в Python 3. Исправление от Nick Coghlan.
- bpo-14943: Исправлено значение аргумента по умолчанию для winreg.OpenKey и корректно перечислены имена аргументов в описании функции.

## Python 3.3.0 alpha 3

*Дата выпуска: 01-May-2012*

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

- bpo-14699: Исправлен вызов дескриптора classmethod напрямую.
- bpo-14433: Предотвращение краха msvcrt в интерактивной подсказке при закрытом stdin.
- bpo-14521: Сделать результат float('nan') и float('-nan') более согласованным на разных платформах.
- bpo-14646: \_\_import\_\_() устанавливает \_\_loader\_\_, если загрузчик этого не сделал.
- bpo-14605: Больше нет неявных записей в sys.meta\_path. Если sys.meta\_path оказывается пустым, вызывается ImportWarning.
- bpo-14605: Больше нет неявных записей в sys.path\_hooks. Если sys.path\_hooks оказывается пустым, будет выдано предупреждение. Теперь None вставляется в sys.path\_importer\_cache, если не найден ни один искатель. Это также означает, что imp.NullImporter больше не используется неявно.
- bpo-13903: Реализация PEP 412. Отдельные экземпляры словарей теперь могут совместно использовать свои ключи с другими словарями. Классы используют это для совместного использования ключей своих словарей экземпляров для улучшения памяти и производительности.
- bpo-11603: Установка \_\_repr\_\_ равным \_\_str\_\_ теперь вызывает RuntimeError при вызове repr() или str() для такого объекта.
- bpo-14658: Исправлено связывание специального метода со встроенной реализацией специального метода с другим именем.
- bpo-14630: Исправлена ошибка доступа к памяти для экземпляров подкласса int со значением 0.
- bpo-14339: Улучшение скорости функций bin, oct и hex. Исправление от Serhiy Storchaka.
- bpo-14385: Теперь можно использовать пользовательский тип для пространства имён \_\_builtins\_\_ вместо словаря. Это может быть использовано, например, для изоляции (sandboxing). Также теперь вызывается NameError вместо ImportError, если имя \_\_build\_class\_\_ не найдено в \_\_builtins\_\_.
- bpo-12599: Ужесточение проверки при принятии None по сравнению с объектом, подобным false, для importlib.util.module\_for\_loader и importlib.machinery.PathFinder.
- bpo-14612: Исправлено перескакивание между блоками при установке f\_lineno.
- bpo-14592: Попытка выполнить относительный импорт без установленных \_\_package\_\_ или \_\_name\_\_ в globals вызывает KeyError.
- bpo-14607: Исправлена ошибка с keyword-only аргументами, начинавшимися с `__`.
- bpo-10854: ImportError, возникающий при неудачном импорте модуля расширения в Windows, теперь использует новые атрибуты path и name из задачи #1559549.
- bpo-13889: Перед вызовом любой из функций преобразования строки в число с плавающей запятой и обратно из dtoa.c в сборках Python для MSVC проверяется и (при необходимости) устанавливается управляющее слово FPU. Это исправляет проблемы при встраивании Python в приложение на Delphi.
- \_\_import\_\_() теперь соответствует PEP 328 и документации: значение по умолчанию для 'index' равно 0 вместо -1, удалена поддержка отрицательных значений.
- bpo-2377: Сделать importlib реализацией \_\_import\_\_().
- bpo-1559549: ImportError теперь имеет атрибуты 'name' и 'path', которые устанавливаются через именованные аргументы конструктора. В настоящее время они не устанавливаются при импорте, так как предназначены для использования в importlib.
- bpo-14474: Сохранение и восстановление состояния исключения в thread.start\_new\_thread() при записи сообщения об ошибке, если поток порождает необработанное исключение.
- bpo-13019: Исправлена потенциальная утечка ссылок в bytearray.extend(). Патч от Suman Saha.

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

- bpo-14768: os.path.expanduser('~/a') работает некорректно, когда HOME равен '/'.
- bpo-14371: Поддержка bzip2 в модуле zipfile. Патч от Serhiy Storchaka.
- bpo-13183: Исправлена ошибка, из-за которой pdb пропускал фреймы после срабатывания точки останова и выполнения шага. Патч от Xavier de Gaye.
- bpo-14696: Исправлена работа модуля parser: теперь он корректно обрабатывает объявления 'nonlocal'.
- bpo-10941: Исправлена функция imaplib.Internaldate2tuple, чтобы она выдавала корректный результат вблизи перехода на летнее время. Патч от Joe Peterson.
- bpo-9154: Исправлен модуль parser, теперь он корректно обрабатывает аннотации функций.
- bpo-6085: В http.server.py SimpleHTTPServer.address\_string возвращает IP-адрес клиента вместо его имени хоста. Патч от Charles-François Natali.
- bpo-14309: Функция time.clock() объявлена устаревшей, вместо неё используйте time.perf\_counter() или time.process\_time().
- bpo-14428: Реализация PEP 418. Добавлены функции time.get\_clock\_info(), time.perf\_counter() и time.process\_time(), а также time.steady() переименована в time.monotonic().
- bpo-14646: importlib.util.module\_for\_loader() теперь устанавливает \_\_loader\_\_ и \_\_package\_\_ (когда это возможно).
- bpo-14664: Теперь можно использовать @unittest.skip{If,Unless} для тестового класса, который не наследуется от TestCase (то есть миксина).
- bpo-4892: Объекты соединений модуля multiprocessing теперь можно передавать через другие соединения того же модуля. Патч от Richard Oudkerk (sbt).
- bpo-14160: TarFile.extractfile() не мог разрешить символические ссылки, если они находились не в подкаталоге архива.
- bpo-14638: pydoc теперь обрабатывает нестроковые значения \_\_name\_\_ так, как если бы они отсутствовали, вместо того чтобы вызывать ошибку.
- bpo-13684: Исправлена проблема с туннелированием в httplib, приводившая к бесконечным циклам для некоторых сайтов, отправляющих EOF без завершающих rn.
- bpo-14605: Добавлены importlib.abc.FileLoader, importlib.machinery.(FileFinder, SourceFileLoader, SourcelessFileLoader, ExtensionFileLoader).
- bpo-13959: imp.cache\_from\_source()/source\_from\_cache() теперь следуют семантике os.path.join()/split() для манипуляций с путями, вместо своей предыдущей пользовательской семантики, которая переносила самый правый разделитель пути вперёд при объединении.
- bpo-2193: Разрешён символ ':' в значениях NAME куки.
- bpo-14629: tokenizer.detect\_encoding теперь указывает имя файла в исключении SyntaxError, если оно найдено в readline.\_\_self\_\_.name.
- bpo-14629: В tokenizer.detect\_encoding теперь возбуждается SyntaxError, если первые две строки содержат символы, не являющиеся UTF-8, без объявления кодировки.
- bpo-14308: Исправлено исключение, возникающее, когда в списке активных потоков модуля threading после fork() присутствует «фиктивный» поток.
- bpo-11750: Функции Windows API, разбросанные по модулям \_subprocess и \_multiprocessing.win32, теперь находятся в одном модуле «\_winapi». Патч от sbt.
- bpo-14087: multiprocessing: добавлен Condition.wait\_for(). Патч от sbt.
- bpo-14538: HTMLParser теперь корректно разбирает начальные теги, содержащие одиночный символ '/'.
- bpo-14452: SysLogHandler больше не вставляет BOM UTF-8 в сообщение.
- bpo-14386: Внутренний тип dict\_proxy теперь доступен как types.MappingProxyType.
- bpo-13959: Теперь imp.reload() всегда использует \_\_loader\_\_ модуля для выполнения перезагрузки.
- bpo-13959: Добавлен imp.py, а встроенный модуль переименован в \_imp, что позволяет перереализовать части модуля на чистом Python.
- bpo-13496: Исправлено потенциальное переполнение в алгоритме bisect.bisect при применении к коллекции размером \> sys.maxsize / 2.
- Importlib теперь использует новые атрибуты 'name' и 'path' исключения ImportError.
- bpo-14399: zipfile теперь определяет, что архив изменён, даже если изменён только комментарий. Кроме того, TypeError, возникающий при попытке установить недвоичное значение в качестве комментария, теперь вызывается в момент установки комментария, а не при записи zip-файла.
- trace.CoverageResults.is\_ignored\_filename() теперь игнорирует любое имя, начинающееся с '\<' и заканчивающееся на '\>', вместо специальной обработки '\<string\>' и '\<doctest '.
- bpo-12537: Модуль mailbox больше не зависит от знания внутренних деталей реализации объекта Message пакета email.
- bpo-7978: socketserver теперь перезапускает вызов select(), когда возвращается EINTR. Это предотвращает аварийное завершение цикла сервера при получении сигнала. Патч от Jerzy Kozera.
- bpo-14522: Устранено дублирование дескрипторов сокетов в multiprocessing.connection. Патч от sbt.
- Не выполнять Py\_DECREF для NULL-переменной в io.IncrementalNewlineDecoder.
- bpo-3033: Добавлен параметр displayof в tkinter.font. Патч от Guilherme Polo.
- bpo-14482: Возбуждается ValueError, а не NameError, при попытке создать Client или Listener multiprocessing с адресом типа AF\_UNIX в Windows. Патч от Popa Claudiu.
- bpo-802310: Имена шрифтов tkinter всегда генерируются уникальными, если не переданы явно.
- bpo-14151: Возбуждается ValueError, а не NameError, при попытке создать Client или Listener multiprocessing с адресом типа AF\_PIPE на платформах, отличных от Windows. Патч от Popa Claudiu.
- bpo-14493: В webbrowser используется gvfs-open или xdg-open.

### Сборка

- Цель 'make touch' теперь будет обновлять временные метки сгенерированных файлов, зафиксированных в Mercurial, после 'hg update', который не смог правильно установить временные метки.

### Тесты

- bpo-14026: В test\_cmd\_line\_script проверяется, что sys.argv заполняется корректно для различных способов вызова (патч от Jason Yeo)
- bpo-14032: Исправлено неверное имя переменной в отладочном сообщении test\_cmd\_line\_script (патч от Jason Yeo)
- bpo-14589: Обновлена цепочка сертификатов для sha256.tbs-internet.com, что исправляет ошибку теста в test\_ssl.
- bpo-14355: Regrtest теперь поддерживает стандартную загрузку тестов unittest и использует её, если тестовый файл не содержит метода `test_main`.

### IDLE

- bpo-8515: Устанавливать \_\_file\_\_ при запуске файла в IDLE. Первоначальный патч от Bruce Frederiksen.
- bpo-14496: Исправлено неверное имя в idlelib/tabbedpages.py. Патч от Popa Claudiu.

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

- bpo-3561: Установщик Windows теперь имеет опцию (по умолчанию выключена) для добавления каталога Python в системную переменную среды Path.
- bpo-13165: stringbench теперь доступен в папке Tools/stringbench. Ранее он находился в собственном проекте SVN.

### C API

- bpo-14098: Новые функции PyErr\_GetExcInfo и PyErr\_SetExcInfo. Патч от Stefan Behnel.

## Python 3.3.0 alpha 2

*Дата выпуска: 01-Apr-2012*

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

- bpo-1683368: object.\_\_new\_\_ и object.\_\_init\_\_ возбуждают TypeError, если им переданы аргументы, а соответствующий дополнительный метод не переопределён.
- bpo-14378: Исправлена компиляция узлов ast.ImportFrom со строкой '\_\_future\_\_' в качестве имени модуля, которая не была интернирована.
- bpo-14331: Значительно уменьшено использование стекового пространства при импорте модулей за счет выделения буферов путей в куче вместо стека.
- bpo-14334: Предотвращение segfault в type.\_\_getattribute\_\_, когда ему передаются не строки.
- bpo-1469629: Разрешить сборку циклических ссылок через слот \_\_dict\_\_ объекта. (Например, если `x.__dict__ равно x`).
- bpo-14205: Поиск в словаре вызывает RuntimeError, если словарь изменяется во время поиска.
- bpo-14220: Когда генератор делегирует управление другому итератору с помощью синтаксиса yield from, его флаг `gi_running` должен быть установлен в True.
- bpo-14435: Удален выделенный блочный аллокатор из floatobject.c; теперь используется API PyObject\_Malloc(), как и для всех остальных объектов.
- bpo-14471: Исправлена возможная проблема переполнения буфера в модуле winreg.
- bpo-14288: Разрешена сериализация встроенных итераторов.

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

- bpo-14300: В Windows сокеты, созданные с помощью socket.dup(), теперь поддерживают перекрывающийся ввод-вывод. Патч от sbt.
- bpo-13872: socket.detach() теперь помечает сокет как закрытый (это отражается в repr() сокета). Патч от Matt Joiner.
- bpo-14406: Исправлено состояние гонки при использовании `concurrent.futures.wait( return_when=ALL_COMPLETED)`. Патч от Matt Joiner.
- bpo-5136: объявлены устаревшими старые неиспользуемые функции из tkinter.
- bpo-14416: syslog теперь определяет константы LOG\_ODELAY и LOG\_AUTHPRIV, если они определены в \<syslog.h\>.
- bpo-14295: Добавлен модуль unittest.mock.
- bpo-7652: Добавлена опция –with-system-libmpdec для configure, позволяющая связывать модуль \_decimal с установленной библиотекой libmpdec.
- bpo-14380: MIMEText теперь по умолчанию использует utf-8, если ему передан не-ASCII юникод без указания кодировки.
- bpo-10340: asyncore – корректная обработка EINVAL в конструкторе диспетчера на OSX; избегать вызова handle\_connect для разъединенного сокета, который не предназначался для подключения.
- bpo-14204: Модуль ssl теперь поддерживает расширение согласования следующего протокола (Next Protocol Negotiation), если оно доступно в используемой библиотеке OpenSSL. Патч от Colin Marc.
- bpo-3035: Неиспользуемые функции из tkinter помечены как ожидающие устаревания.
- bpo-12757: Исправлен пропуск доктестов при запуске Python с флагом -OO; теперь они работают как в подробном, так и в обычном режиме unittest.
- bpo-7652: Интегрирована библиотека десятичных чисел с плавающей точкой libmpdec для ускорения модуля decimal. Производительность новой реализации на C повышается в 10–100 раз в зависимости от приложения.
- bpo-14269: SMTPD теперь соответствует RFC и требует команды HELO перед MAIL, RCPT или DATA.
- bpo-13694: Асинхронное подключение в asyncore.dispatcher не устанавливает атрибут addr.
- bpo-14344: исправлено представление (repr) объектов email.policy.
- bpo-11686: Добавлены недостающие записи в списки \_\_all\_\_ пакета email (в основном новые классы Bytes).
- bpo-14335: Пользовательский подкласс Pickler в multiprocessing теперь наследуется от реализации на C. Патч от sbt.
- bpo-10484: Исправлена проблема обработки PATH\_INFO в CGIHTTPServer.
- bpo-11199: Исправлено зависание urllib на некоторых FTP-URL.
- Улучшено использование памяти и скорость работы functools.lru\_cache.
- bpo-14222: Использовать новую функцию time.steady() вместо time.time() для тайм-аутов в модулях queue и threading, чтобы избежать влияния обновлений системного времени.
- bpo-13248: Удалены методы get\_prefix/set\_prefix из lib2to3.pytree.Base.
- bpo-14234: CVE-2012-0876: Рандомизация хэшей XML-атрибутов во внутренней хэш-таблице копии библиотеки expat в модуле pyexpat для предотвращения отказа в обслуживании из-за коллизий хэшей. Патч от David Malcolm с изменениями от проекта expat.
- bpo-12818: форматирование адреса больше не экранирует без необходимости скобки () в именах, если имя оказывается в кавычках.
- bpo-14062: BytesGenerator теперь правильно переносит объекты Header, в том числе использует linesep при переносе.
- bpo-13839: при запуске из командной строки модуль pstats теперь принимает несколько имен файлов со статистикой профилирования и объединяет их. Исправление от Matt Joiner.
- bpo-14291: модуль email теперь по умолчанию использует utf-8 для не-ASCII заголовков Unicode, вместо того чтобы вызывать ошибку. Это исправляет регрессию относительно версии 2.7.
- bpo-989712: добавлена поддержка использования Tk без основного цикла.
- bpo-3835: запрещено использование непоточного Tcl в многопоточном Python.
- bpo-2843: добавлен новый Tk API в Tkinter.
- bpo-14184: увеличен размер стека по умолчанию для вторичных потоков в Mac OS X, чтобы предотвратить аварийное завершение интерпретатора при использовании потоков в версии 10.7.
- bpo-14180: методы datetime.date.fromtimestamp(), datetime.datetime.fromtimestamp() и datetime.datetime.utcfromtimestamp() теперь вызывают OSError вместо ValueError, если localtime() или gmtime() завершились неудачей.
- bpo-14180: функции time.ctime(), gmtime(), time.localtime(), datetime.date.fromtimestamp(), datetime.datetime.fromtimestamp() и datetime.datetime.utcfromtimestamp() теперь вызывают OverflowError вместо ValueError, если метка времени не помещается в time\_t.
- bpo-14180: методы datetime.datetime.fromtimestamp() и datetime.datetime.utcfromtimestamp() теперь округляют микросекунды в сторону нуля, а не до ближайшего с отбрасыванием чисел, равноудаленных от нуля.
- bpo-10543: исправлено обнаружение тестов в unittest для файлов байт-кода Jython.
- bpo-1178863: разделение инициализации и установки значения при инициализации Tkinter.Variables; унификация исключений до ValueError; удаление только тех переменных, которые не были удалены ранее; утверждение, что имена переменных являются строками.
- bpo-14104: реализована функция time.monotonic() в Mac OS X; исправление написано Nicholas Riley.
- bpo-13394: модуль aifc теперь использует warnings.warn() для вывода предупреждений.
- bpo-14252: исправлен метод subprocess.Popen.terminate(), чтобы он не вызывал ошибку в Windows, если дочерний процесс уже завершился.
- bpo-14223: функция curses.addch() больше не ограничена диапазоном 0–255, когда модуль curses в Python не слинкован с libncursesw. Это была регрессия, появившаяся в Python 3.3a1.
- bpo-14168: добавлена проверка наличия Element.\_attrs в minidom перед обращением к нему.
- bpo-12328: исправлено использование перекрывающегося ввода-вывода (overlapped I/O) в multiprocessing на Windows. Также добавлена функция multiprocessing.connection.wait(rlist, timeout=None) для одновременного опроса нескольких объектов. Исправление от sbt.
- bpo-14007: теперь принимаются неполные объекты TreeBuilder (отсутствуют методы start, end, data или close) и для реализации на Python. Удалён не выполняющий никаких действий метод TreeBuilder().xml() из реализации на C.
- bpo-14210: pdb теперь поддерживает автодополнение по табуляции не только для имён команд, но и, где возможно, для их аргументов.
- bpo-14310: сокеты теперь можно передавать другим процессам в Windows с помощью методов socket.socket.share() и socket.fromshare().
- bpo-10576: модуль gc теперь содержит член callbacks, который будет вызываться при сборке мусора.

### Сборка

- bpo-14557: исправлена сборка расширений на HP-UX. Исправление от Adi Roiban.
- bpo-14387: accu.h больше не включается из Python.h.
- bpo-14359: O\_CLOEXEC теперь используется в \_posixmodule.c только если он определён. Основано на исправлении от Hervé Coatanhay.
- bpo-14321: pgen не запускается во время сборки, если файлы не изменялись.

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

- bpo-14034: добавлено руководство по argparse.
- bpo-14324: исправлены тесты configure для кросс-компиляции.
- bpo-14327: добавлен вызов AC\_CANONICAL\_HOST в configure.ac и проверка в config.{guess,sub}. Не использовать вызовы uname для кросс-сборок.

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

- bpo-9041: исправлена проблема в ctypes.c\_longdouble, ctypes.c\_double и ctypes.c\_float, из-за которой в случае переполнения возвращалось некорректное исключение.
- bpo-14212: модуль re не сохранял ссылку на буферы, которые сканировал, что приводило к ошибкам сегментации.
- bpo-14259: Метод finditer() объектов re не принимал именованных аргументов, вопреки документации.
- bpo-10142: Поддержка SEEK\_HOLE/SEEK\_DATA (например, в ZFS).

### Тесты

- bpo-14442: Добавлен отсутствующий импорт errno в test\_smtplib.
- bpo-8315: (частичное исправление) python -m unittest test.test\_email теперь работает.

## Python 3.3.0 alpha 1

*Дата выпуска: 05-Mar-2012*

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

- bpo-14172: Исправлена утечка ссылки при маршалинге объекта, похожего на буфер (кроме объекта bytes).
- bpo-13521: dict.setdefault() теперь выполняет только один поиск по заданному ключу, что делает его «атомарным» для многих целей. Патч от Filip Gruszczyński.
- PEP 409, [Issue #6210](https://python-all.ru/3.4/whatsnew/changelog.html): теперь поддерживается «raise X from None» как средство подавления отображения связанного контекста исключения. Связанный контекст по-прежнему доступен как атрибут \_\_context\_\_.
- bpo-10181: Новая реализация memoryview исправляет множественные проблемы владения и времени жизни динамически выделяемых членов Py\_buffer (#9990), а также сбои (#8305, #7433). Добавлено много новых возможностей (см. whatsnew/3.3), документация существенно обновлена. Тестовый объект ndarray из \_testbuffer.c реализует все аспекты PEP-3118, поэтому дальнейшая разработка в направлении полной реализации PEP может продолжаться в стиле, управляемом тестами.

  Спасибо Nick Coghlan, Antoine Pitrou и Pauli Virtanen за рецензирование и многие идеи.
- bpo-12834: Исправлены некорректные результаты memoryview.tobytes() для несплошных массивов.
- bpo-5231: Представлен метод memoryview.cast(), позволяющий изменять формат и форму без копирования базовой памяти.
- bpo-14084: Исправлена утечка файлового дескриптора при импорте модуля с неправильной кодировкой.
- Обновление данных Unicode до версии 6.1.
- bpo-14040: Удалены редко используемые суффиксы имён файлов для расширений C (в основном под POSIX).
- bpo-14051: Разрешена установка произвольных атрибутов для classmethod и staticmethod.
- bpo-13703: oCERT-2011-003: Рандомизация хешей str и bytes для защиты от атак типа «отказ в обслуживании» из-за коллизий хешей в типах dict и set. Патч от David Malcolm на основе работы Victor Stinner.
- bpo-13020: Исправлена утечка ссылки при сбое выделения объекта structsequence. Патч от Suman Saha.
- bpo-13908: Типы, возвращаемые PyType\_FromSpec, теперь готовы к использованию.
- bpo-11235: Исправлен OverflowError при попытке импортировать исходный файл, чьё время изменения не помещается в 32-битную метку времени.
- bpo-12705: Теперь возникает исключение SyntaxError при попытке скомпилировать несколько операторов как один интерактивный оператор.
- Исправлен код инициализации встроенных модулей для сохранения функции init для будущей реинициализации.
- bpo-8052: Модуль подпроцесса posix тратил много времени на закрытие всех возможных файловых дескрипторов в дочернем процессе, а не только открытых. Теперь при поведении close\_fds=True по умолчанию он закрывает только открытые файловые дескрипторы, если это возможно.
- bpo-13629: Перенумерованы токены в token.h, чтобы они соответствовали индексам в \_PyParser\_TokenNames.
- bpo-13752: Добавлен метод casefold() для str.
- bpo-13761: Добавлен именованный аргумент «flush» в функцию print(), используемый для принудительного сброса выходного потока.
- bpo-13645: Файлы pyc теперь содержат размер соответствующего исходного кода, чтобы избежать коллизий временных меток (особенно в файловых системах с низким разрешением временных меток) при проверке актуальности байт-кода.
- PEP 380, [Issue #11682](https://python-all.ru/3.4/whatsnew/changelog.html): Добавлен «yield from \<x\>» для поддержки лёгкого делегирования подгенераторам (первоначальный патч от Greg Ewing, интеграция в 3.3 от Renaud Blanch, Ryan Kelly, Zbigniew Jędrzejewski-Szmek и Nick Coghlan)
- bpo-13748: Литералы сырых байтов теперь можно записывать с префиксом `rb`, а также `br`.
- bpo-12736: Использование полных отображений регистра Unicode для верхнего, нижнего и заглавного регистров.
- bpo-12760: Добавлен режим create в open(). Патч от David Townshend.
- bpo-13738: Упрощена реализация bytes.lower() и bytes.upper().
- bpo-13577: Встроенные методы и функции теперь имеют \_\_qualname\_\_. Исправление от sbt.
- bpo-6695: Полные сборки мусора теперь очищают список свободных объектов set. Начальное исправление от Matthias Troffaes.
- Исправлены OSError.\_\_init\_\_ и OSError.\_\_new\_\_ так, чтобы каждый из них можно было переопределить и передавать дополнительные аргументы (дополнение к [issue #12555](https://python-all.ru/3.4/whatsnew/changelog.html)).
- Исправлено исправление для [issue #12149](https://python-all.ru/3.4/whatsnew/changelog.html): оно было некорректным, хотя и создавало видимость решения проблемы. Спасибо Марку Шеннону (Mark Shannon) за замечание.
- bpo-13505: Объекты bytes теперь упаковываются (pickle) способом, совместимым с Python 2 при использовании протоколов \<= 2.
- bpo-11147: Исправлен неиспользуемый аргумент в \_Py\_ANNOTATE\_MEMORY\_ORDER. (Исправление предоставлено Campbell Barton).
- bpo-13503: Для bytearray используется более эффективный формат свёртки с протоколом pickle \>= 3. Старый формат сохранён для более старых протоколов, чтобы обеспечить возможность распаковки в Python 2. Исправление от Irmen de Jong.
- bpo-7111: Python теперь может работать без потоков stdin, stdout или stderr. В Python 2 это уже было возможно. Однако соответствующие записи модуля sys теперь устанавливаются в None (вместо непригодного файлового объекта).
- bpo-11849: Обеспечено, что освобождённые области памяти действительно освобождаются в POSIX-системах, поддерживающих анонимные отображения памяти. Исправление от Charles-François Natali.
- PEP 3155 / [issue #13448](https://python-all.ru/3.4/whatsnew/changelog.html): Квалифицированное имя (qualified name) для классов и функций.
- bpo-13436: Исправлено ложное сообщение об ошибке, когда объекту AST передавалось недопустимое целое значение.
- bpo-13411: Объекты memoryview теперь могут быть хешируемыми, если хешируемым является базовый объект.
- bpo-13338: Обрабатываются все перечисления в \_Py\_ANNOTATE\_MEMORY\_ORDER, чтобы разрешить компиляцию модулей расширения с -Wswitch-enum в gcc. Начальное исправление от Floris Bruynooghe.
- bpo-10227: Добавлен кэш выделения для одного объекта среза (slice). Исправление от Stefan Behnel.
- bpo-13393: BufferedReader.read1() теперь запрашивает у необработанного потока данных полный запрошенный размер, а не ограничивается размером буфера.
- bpo-13392: Запись pyc-файла теперь должна быть атомарной и в Windows.
- bpo-13333: Декодер UTF-7 теперь принимает одиночные суррогаты (кодировщик уже принимает их).
- bpo-13389: Полные проходы сборки мусора теперь очищают списки свободных объектов для list и dict. Ранее уже очищались другие списки свободных объектов в интерпретаторе.
- bpo-13327: Устранена необходимость явного указания None вторым аргументом в os.utime, os.lutimes, os.futimes, os.futimens, os.futimesat для обновления до текущего времени. Также добавлена обработка именованных аргументов в os.utimensat, чтобы убрать необходимость явного None.
- bpo-13350: Упрощён некоторый код на C путём замены большинства использований PyUnicode\_Format на PyUnicode\_FromFormat.
- bpo-13342: input() ранее игнорировал обработчик ошибок Unicode sys.stdin и sys.stdout в интерактивном режиме (при вызове PyOS\_Readline()).
- bpo-9896: Добавлены атрибуты start, stop и step для объектов range.
- bpo-13343: Fix a SystemError when a lambda expression uses a global variable in the default value of a keyword-only argument: `lambda *, arg=GLOBAL_NAME: None`
- bpo-12797: Добавлен параметр opener для встроенной open() и FileIO.open().
- bpo-10519: Избегаются ненужные рекурсивные вызовы функций в setobject.c.
- bpo-10363: Освобождение глобальных блокировок в Py\_Finalize().
- bpo-13018: Исправлены утечки ссылок в путях ошибок в dictobject.c. Исправление от Suman Saha.
- bpo-13201: Определены операции ‘==’ и ‘!=’ для сравнения объектов range на основе последовательности значений, которые они задают (вместо сравнения по идентичности объектов).
- bpo-1294232: В нескольких случаях, связанных с наследованием метаклассов, интерпретатор иногда вызывал неправильный метакласс при создании нового объекта класса. Теперь эти случаи работают корректно. Исправление от Daniel Urban.
- bpo-12753: Добавлена поддержка псевдонимов имён Unicode и именованных последовательностей. Как `unicodedata.lookup()`, так и ‘N{...}’ теперь разрешают псевдонимы, а `unicodedata.lookup()` также разрешает именованные последовательности.
- bpo-12170: Методы count(), find(), rfind(), index() и rindex() объектов bytes и bytearray теперь принимают целое число от 0 до 255 в качестве первого аргумента. Исправление от Petri Lehtinen.
- bpo-12604: макрос VTRACE разворачивается в пустую операцию (no-op) в \_sre.c, чтобы избежать предупреждений компилятора. Патч от Josh Triplett и Petri Lehtinen.
- bpo-12281: переписан кодек MBCS для корректной обработки обработчиков ошибок replace и ignore на всех версиях Windows. Теперь кодек MBCS поддерживает все обработчики ошибок, а не только replace при кодировании и ignore при декодировании.
- bpo-13188: при вызове без явного аргумента traceback generator.throw() теперь получает traceback из атрибута `__traceback__` переданного исключения. Патч от Petri Lehtinen.
- bpo-13146: запись pyc-файла теперь атомарна в POSIX.
- bpo-7833: модули расширения, собранные с помощью distutils в Windows, больше не будут включать «манифест», чтобы предотвратить их сбой при импорте в некоторых встроенных сценариях.
- PEP 3151 / [issue #12555](https://python-all.ru/3.4/whatsnew/changelog.html): переработка иерархии исключений ОС и ввода-вывода.
- Добавлен внутренний API для статических строк (\_Py\_identifier и др.).
- bpo-13063: ошибка Windows ERROR\_NO\_DATA (номер 232, описание «The pipe is being closed») теперь отображается на POSIX errno EPIPE (ранее EINVAL).
- bpo-12911: исправлено потребление памяти при вычислении repr() больших кортежей или списков.
- PEP 393: гибкое представление строк. Спасибо Torsten Becker за начальную реализацию и Victor Stinner за различные исправления ошибок.
- bpo-14081: параметры 'sep' и 'maxsplit' методов str.split, bytes.split и bytearray.split теперь можно передавать как именованные аргументы.
- bpo-13012: параметр 'keepends' метода str.splitlines теперь можно передавать как именованный аргумент: «my\_string.splitlines(keepends=True)». То же изменение применяется к bytes.splitlines и bytearray.splitlines.
- bpo-7732: больше не открывается каталог как файл при импорте модуля. Каталог игнорируется, если его имя совпадает с именем модуля (например, «\_\_init\_\_.py»), и вместо этого вызывается ImportError.
- bpo-13021: отсутствовал decref на одном из путей обработки ошибок. Спасибо Suman Saha за обнаружение ошибки и предоставление патча.
- bpo-12973: исправлены проверки переполнения, которые полагались на неопределённое поведение в list\_repeat (listobject.c) и islice\_next (itertoolsmodule.c). Эти ошибки вызывали сбои тестов в последних версиях Clang.
- bpo-12904: os.utime, os.futimes, os.lutimes и os.futimesat теперь записывают atime и mtime с наносекундной точностью на современных POSIX-платформах.
- bpo-12802: ошибка Windows ERROR\_DIRECTORY (номер 267) теперь отображается на POSIX errno ENOTDIR (ранее EINVAL).
- bpo-9200: методы str.is\* теперь работают со строками, содержащими символы вне BMP, даже в узких сборках Unicode.
- bpo-12791: циклы ссылок разрываются раньше при выходе генератора с исключением.
- bpo-12773: сделать \_\_doc\_\_ изменяемым для пользовательских классов.
- bpo-12766: вызывать ValueError при создании класса с переменной класса, которая конфликтует с именем в \_\_slots\_\_.
- bpo-12266: исправлено str.capitalize() для корректного приведения к верхнему/нижнему регистру символов в заголовочном регистре и небуквенных символов, имеющих регистр.
- bpo-12732: в узких сборках Unicode разрешены идентификаторы Unicode, находящиеся за пределами BMP.
- bpo-12575: проверка пользовательского AST перед компиляцией.
- Сделать type(None), type(Ellipsis) и type(NotImplemented) вызываемыми. Они возвращают соответствующие экземпляры-одиночки.
- Запрещено суммировать bytes с помощью sum().
- Проверять типы строк AST и идентификаторов, предоставленных пользователем, перед их компиляцией.
- bpo-12647: объект None теперь имеет метод \_\_bool\_\_(), возвращающий False. Ранее bool(None) возвращал False только из-за специальной логики в PyObject\_IsTrue().
- bpo-12579: str.format\_map() теперь вызывает ValueError при использовании на строке формата, содержащей позиционные поля. Начальный патч от Julian Berman.
- bpo-10271: теперь warnings.showwarning() может быть любой вызываемой функцией.
- bpo-11627: исправлен segfault, когда \_\_new\_\_ для исключения возвращает класс, не являющийся исключением.
- bpo-12149: обновлять кеш методов после того, как словарь типа очищается сборщиком мусора. Это исправляет segfault, когда экземпляр и его тип попадают в цикл ссылок, и деаллокатор экземпляра вызывает один из методов типа (например, при наследовании от IOBase). Диагностика и патч от Davide Rizzo.
- bpo-9611: FileIO.read() ограничивает длину значением INT\_MAX в Windows. (См. также: bpo-9015)
- bpo-9642: Унифицированы тесты на доступность кодека mbcs, добавлен новый макрос HAVE\_MBCS.
- bpo-9642: Исправлена инициализация кодировки файловой системы: в Windows используется кодовая страница ANSI, если кодек mbcs недоступен, а в случае невозможности получить кодировку локали (если nl\_langinfo(CODESET) недоступен) выводится фатальная ошибка вместо использования UTF-8.
- Когда генератор выполняет оператор yield, состояние исключения вызывающего кода больше не сохраняется в генераторе.
- bpo-12475: Предотвращена утечка состояния исключения из генератора во фрейм вызывающего кода при последнем возврате.
- bpo-12291: Теперь можно загружать несколько маршалированных объектов из потока, перемежая их с другими данными.
- bpo-12356: Если обязательные позиционные аргументы или аргументы только по ключу не переданы, выводится информативное сообщение об ошибке с указанием имён отсутствующих аргументов.
- bpo-12370: Исправлен super() без аргументов, когда \_\_class\_\_ переопределён в теле класса.
- bpo-12084: os.stat в Windows теперь корректно работает с относительными символическими ссылками при вызове из любого каталога.
- Ослаблены ограничения на тип возвращаемого значения метода \_\_dir\_\_: \_\_dir\_\_ теперь может возвращать любую последовательность, которая будет преобразована в список и отсортирована функцией dir().
- bpo-12265: Сообщения об ошибках при передаче функции недопустимого набора аргументов стали более информативными.
- bpo-12225: Сборка Python по-прежнему возможна, даже если Python находится не в репозитории hg или не установлен Mercurial.
- bpo-1195: my\_fgets() теперь всегда очищает флаги ошибок перед вызовом fgets(). Исправлена следующая ситуация: sys.stdin.read() завершался по CTRL+d (конец файла), а raw\_input() прерывался по CTRL+c.
- bpo-12216: Разрешено появление неожиданных ошибок EOF в любой строке файла.
- bpo-12199: Узлы AST TryExcept и TryFinally объединены в единый узел Try.
- bpo-9670: Увеличен размер стека по умолчанию для вторичных потоков в Mac OS X и FreeBSD, чтобы снизить вероятность краха вместо исключения RuntimeError «максимальная глубина рекурсии». (патч от Ronald Oussoren)
- bpo-12106: Использование сокращённого синтаксиса множественного with теперь отражается в AST.
- bpo-12190: При компиляции и демаршалинге объектов кода из одного файла используется один и тот же объект имени файла.
- bpo-12166: Реализации dir() для различных типов перенесены в их методы \_\_dir\_\_().
- bpo-5715: В socketserver серверный сокет закрывается в дочернем процессе.
- Исправлен поиск \_\_dir\_\_ у объектов. В частности, теперь распространяются ошибки, отличные от AttributeError, возникшие при поиске.
- bpo-12060: В модуле signal используются тип sig\_atomic\_t и ключевое слово volatile. Патч написан Charles-François Natali.
- bpo-1746656: В модуль socket добавлены методы if\_nameindex, if\_indextoname, if\_nametoindex.
- bpo-12044: Исправлено поведение subprocess.Popen при использовании в качестве менеджера контекста: теперь процесс ожидает завершения при выходе из контекста, чтобы случайно не оставить зомби-процессы.
- bpo-1195: Исправлен input() при прерывании по CTRL+d с последующим CTRL+c; теперь флаг конца файла сбрасывается после CTRL+d.
- bpo-1856: Предотвращены крахи и зависания при работе потоков-демонов во время завершения интерпретатора; теперь такие потоки завершаются при попытке захвата GIL.
- bpo-9756: При вызове дескриптора метода или дескриптора-обёртки слота проверка типа объекта больше не читает атрибут \_\_class\_\_. Исправлен крах, если класс переопределяет свой \_\_class\_\_ (например, прокси для типа str). Патч написан Andreas Stührk.
- bpo-10517: После fork() переинициализируется TLS, используемый API PyGILState\_\*, чтобы избежать краха в реализации pthread в RHEL 5. Патч от Charles-François Natali.
- bpo-10914: Корректно инициализируется кодек файловой системы при создании нового под-интерпретатора, чтобы устранить проблему начальной загрузки для кодеков, реализованных на Python, например ISO-8859-15.
- bpo-11918: OS/2 и VMS больше не поддерживаются из-за отсутствия мейнтейнера.
- bpo-6780: Исправлено сообщение об ошибке в методах startswith и endswith – теперь в нём упоминается, что допускаются также кортежи.
- bpo-5057: Исправлена ошибка в оптимизаторе Peephole, которая приводила к созданию непереносимых pyc-файлов между узкой и широкой сборками при оптимизации BINARY\_SUBSCR для символов не из BMP (например, «U00012345»\[0\]).
- bpo-11845: Исправлена опечатка в rangeobject.c, из-за которой происходил сбой в compute\_slice\_indices. Патч от Daniel Urban.
- bpo-5673: Добавлен именованный аргумент `timeout` в subprocess.Popen.wait, subprocess.Popen.communicated, subprocess.call, subprocess.check\_call и subprocess.check\_output. Если блокирующая операция занимает более `timeout` секунд, возбуждается исключение [`subprocess.TimeoutExpired`](https://python-all.ru/3.4/library/subprocess.html#subprocess.TimeoutExpired).
- bpo-11650: PyOS\_StdioReadline() повторяет вызов fgets(), если он был прерван (EINTR), например, при остановке программы с помощью CTRL+z на Mac OS X. Патч написан Charles-Francois Natali.
- bpo-9319: В сообщение синтаксической ошибки «Non-UTF8 code ...» добавлено имя файла.
- bpo-10785: Имя файла в парсере Python теперь хранится как Unicode.
- bpo-11619: \_PyImport\_LoadDynamicModule() больше не кодирует путь в байты на Windows.
- bpo-10998: Удалены упоминания -Q, sys.flags.division\_warning и Py\_DivisionWarningFlag, оставшиеся от Python 2.
- bpo-11244: Удалена лишняя проверка в пипхольном оптимизаторе, которая мешала корректной свёртке констант для отрицательного нуля.
- bpo-11395: io.FileIO().write() ограничивает длину данных до 32 767 байт на Windows, если файл является TTY, в качестве обхода ошибки Windows. Консоль Windows возвращает ошибку (12: not enough space error) при записи в stdout, если режим stdout – бинарный, а длина превышает 66 000 байт (или меньше, в зависимости от использования кучи).
- bpo-11320: Исправлено некорректное управление памятью в Modules/getpath.c, которое могло приводить к сбою при вызове Py\_SetPath().
- bpo-11432: В subprocess.Popen на POSIX-системах в версии 3.2.0 была внесена ошибка: если файловый дескриптор stdout или stderr совпадал с дескриптором stdin, возникало исключение. Из-за этого не работал webbrowser.open. Исправлено.
- bpo-9856: Вызов object.\_\_format\_\_ с непустой строкой формата теперь выдаёт DeprecationWarning. В версии 3.2 это было PendingDeprecationWarning, а в версии 3.4 будет TypeError.
- bpo-11244: Оптимизатор peephole теперь способен сворачивать константы сколь угодно сложных выражений. Это также исправляет регрессию в 3.2, когда операции с отрицательными числами не сворачивались.
- bpo-11450: Информация о версии hg в Py\_GetBuildInfo() больше не обрезается при большом количестве тегов (например, при использовании mq). Патч от Nadeem Vawda.
- bpo-11335: Исправлена утечка памяти в list.sort, когда функция key выбрасывает исключение.
- bpo-8923: Когда строка кодируется в UTF-8 в строгом режиме, результат кэшируется в объекте. Примеры: str.encode(), str.encode(‘utf-8’), PyUnicode\_AsUTF8String() и PyUnicode\_AsEncodedString(unicode, “utf-8”, NULL).
- bpo-10829: Рефакторинг PyUnicode\_FromFormat(): теперь для разбора строки формата на всех трёх этапах используется одна и та же функция; исправлены сбои на недопустимых строках формата.
- bpo-13007: whichdb теперь должен распознавать магические числа gdbm 1.9.
- bpo-11286: Возбуждать ValueError, если в PyMemoryView\_FromBuffer передан буфер с нулевым указателем данных.
- bpo-11272: На Windows input() удаляет символ ‘\\r’ (а не только ‘\\n’), и sys.stdin использует универсальный символ новой строки (заменяет ‘\\r\\n’ на ‘\\n’).
- bpo-11828: startswith и endswith теперь принимают None в качестве индекса среза. Патч от Torsten Becker.
- bpo-11168: Удалена отладочная переменная filename из PyEval\_EvalFrameEx(). Она кодировала имя файла в Unicode в UTF-8, но кодирование не удавалось для нераскодируемых имён (с суррогатными символами), что вызывало неожиданное UnicodeEncodeError при превышении глубины рекурсии.
- bpo-11187: Удалён начальный код (использующий ASCII) из PyUnicode\_AsEncodedString(). Он был заменён на более качественный запасной вариант (использующий кодировку локали) в PyUnicode\_EncodeFSDefault().
- Добавлена проверка результата на NULL в PyType\_FromSpec.
- bpo-10516: Новые методы copy() и clear() для списков и байтовых массивов.
- bpo-11386: bytearray.pop() теперь возбуждает IndexError, если bytearray пуст, вместо OverflowError.
- bpo-12380: Методы rjust, ljust и center у bytes и bytearray теперь принимают аргумент типа bytearray.

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

- bpo-14195: Исправлена проблема, из-за которой экземпляры weakref.WeakSet некорректно возвращали True для экземпляра WeakSet ‘a’ в операциях ‘a \< a’ и ‘a \> a’.
- bpo-14166: Объекты Pickler теперь имеют опциональный атрибут `dispatch_table`, который позволяет устанавливать пользовательские функции приведения для конкретного pickler. Патч от sbt.
- bpo-14177: marshal.loads() теперь возбуждает TypeError при передаче строки Unicode. Патч от Guilherme Gonçalves.
- bpo-13550: Удалён отладочный механизм из модуля threading: удалены аргументы verbose из всех классов и функций threading.
- bpo-14159: Исправлено поведение len() для слабых контейнеров (WeakSet, WeakKeyDictionary, WeakValueDictionary): теперь возвращается более точная оценка, когда некоторые объекты мертвы или близки к смерти. Кроме того, реализация теперь работает за O(1), а не O(n).
- bpo-11841: Исправлена ошибка сравнения с версиями ‘rc’ в packaging.version. Патч от Filip Gruszczyński.
- bpo-6884: Исправлены давние ошибки при разборе MANIFEST.in в distutils на Windows. Также исправлено в packaging.
- bpo-8033: sqlite3: Исправлена обработка 64-битных целых чисел в пользовательских функциях на 32-битных архитектурах. Первоначальный патч от Philippe Devalkeneer.
- HTMLParser теперь умеет обрабатывать косые черты в открывающем теге.
- bpo-13641: Функции декодирования в модуле base64 теперь принимают строки Unicode только из ASCII. Патч от Catalin Iacob.
- bpo-14043: Ускорен \_FileFinder из importlib как минимум в 8 раз, а также добавлена новая функция importlib.invalidate\_caches().
- bpo-14001: CVE-2012-0845: xmlrpc: Исправлен бесконечный цикл в SimpleXMLRPCServer при неверном POST-запросе.
- bpo-13961: Переведён importlib на использование os.replace() для атомарного переименования.
- Устранены неоднозначные значения уровня (как предложено в PEP 328) в importlib.\_\_import\_\_() с помощью возбуждения ValueError при level \< 0.
- bpo-2489: pty.spawn мог потреблять 100% процессора при достижении EOF.
- bpo-13014: Исправлена возможная утечка ссылки в SSLSocket.getpeercert().
- bpo-13777: Добавлены сокеты PF\_SYSTEM на OS X. Патч от Michael Goderbauer.
- bpo-13015: Исправлена возможная утечка ссылки в defaultdict.\_\_repr\_\_. Патч от Suman Saha.
- bpo-1326113: Параметр --libraries команд build\_ext из distutils и packaging теперь корректно разбирает несколько значений (разделённых пробелами или запятыми), переданных этому параметру.
- bpo-10287: nntplib теперь сначала запрашивает возможности сервера (CAPABILITIES) перед отправкой MODE READER и отправляет его, только если сервер ещё не в режиме READER. Патч от Hynek Schlawack.
- bpo-13993: HTMLParser теперь умеет обрабатывать повреждённые закрывающие теги, когда strict=False.
- bpo-13930: lib2to3 теперь поддерживает запись преобразованных выходных файлов в другой каталог, а также копирование неизменённых файлов и изменение суффикса файла.
- bpo-9750: Исправлен sqlite3.Connection.iterdump для таблиц и полей с именем, являющимся ключевым словом или содержащим кавычки. Патч от Marko Kohtala.
- bpo-10287: nntplib теперь снова запрашивает возможности сервера (CAPABILITIES) после аутентификации (поскольку результат может измениться, согласно RFC 4643). Патч от Hynek Schlawack.
- bpo-13590: На OS X 10.7 и 10.6 с Xcode 4.2 сборка пакетов на основе Distutils с модулями-расширениями на C может завершаться ошибкой, поскольку Apple удалила gcc-4.2 – версию, использовавшуюся для сборки 64-битных/32-битных Python с python.org. Если пользователь явно не переопределяет компилятор C по умолчанию, установив переменную окружения CC, Distutils теперь будет пытаться скомпилировать модули-расширения с помощью clang, если требуется gcc-4.2, но он не найден. Кроме того, для удобства: если пользователь явно задаёт CC, его значение подставляется как компилятор по умолчанию в переменную конфигурации Distutils LDSHARED для OS X. (Обратите внимание: 32-битные сборки Python с python.org используют gcc-4.0 и SDK 10.4u, ни один из которых недоступен в Xcode 4. Это изменение не пытается переопределить настройки для поддержки их использования с Xcode 4.)
- bpo-13960: HTMLParser теперь умеет обрабатывать повреждённые комментарии, когда strict=False.
- Если ‘’ является путём (например, в sys.path), убедитесь, что \_\_file\_\_ использует текущую рабочую директорию вместо ‘’ в importlib.
- bpo-13609: Добавлены две функции для определения размера терминала: os.get\_terminal\_size (низкоуровневая) и shutil.get\_terminal\_size (высокоуровневая). Патч от Zbigniew Jędrzejewski-Szmek.
- bpo-13845: На Windows time.time() теперь использует GetSystemTimeAsFileTime() вместо ftime(), чтобы иметь разрешение 100 нс вместо 1 мс (точность часов составляет от 0.5 мс до 15 мс).
- bpo-13846: Добавлены time.monotonic(), монотонные часы.
- bpo-8184: multiprocessing: На Windows не устанавливается SO\_REUSEADDR на соединительных сокетах, а на именованных каналах устанавливается FILE\_FLAG\_FIRST\_PIPE\_INSTANCE, чтобы два слушателя не могли привязаться к одному и тому же сокету/каналу (или любому существующему сокету/каналу).
- bpo-10811: Исправлено рекурсивное использование курсоров. Вместо аварийного завершения теперь возбуждается ProgrammingError.
- bpo-13734: Добавлен os.fwalk(), функция обхода каталогов, возвращающая файловые дескрипторы.
- bpo-2945: Команда upload из distutils теперь учитывает продукты bdist\_rpm.
- bpo-13712: pysetup create не должен преобразовывать package\_data в extra\_files.
- bpo-11805: package\_data в setup.cfg теперь может содержать более одного значения.
- bpo-13676: Корректная обработка строк с встроенными нулями в sqlite3.
- bpo-8828: Добавлена новая функция os.replace() для кроссплатформенного переименования с перезаписью.
- bpo-13848: open() и конструктор FileIO теперь проверяют имя файла на наличие нулевых символов. Патч от Hynek Schlawack.
- bpo-13806: Проверка размера в функциях распаковки audioop была слишком строгой и могла отбрасывать допустимые сжатые данные. Патч от Oleg Plakhotnyuk.
- bpo-13812: Когда дочерний процесс multiprocessing.Process вызывает исключение, теперь stderr сбрасывается после вывода трассировки исключения.
- bpo-13885: CVE-2011-3389: модуль \_ssl всегда отключал механизм защиты от атаки CBC IV.
- bpo-13847: time.localtime() и time.gmtime() теперь при ошибке возбуждают OSError вместо ValueError. time.ctime() и time.asctime() теперь возбуждают OSError, если localtime() завершилась ошибкой. time.clock() теперь возбуждает RuntimeError, если процессорное время недоступно или его значение не может быть представлено.
- bpo-13772: В os.symlink() под Windows больше не делается попытка угадать тип цели ссылки (файл или каталог). Определение было ошибочным и делало вызов неатомарным (а значит, подверженным состояниям гонки).
- bpo-6631: Запрещены относительные пути к файлам в методах urlopen модуля urllib.
- bpo-13722: Исправлено замалчивание ImportErrors при инициализации реестра кодеков.
- bpo-13781: Исправлена ошибка GzipFile, из-за которой возбуждалось исключение при открытии на запись с помощью fileobj, возвращённого os.fdopen().
- bpo-13803: В Solaris distutils не включает разрядность в имя каталога.
- bpo-10278: Добавлена функция time.wallclock() – монотонные часы.
- bpo-13809: Исправлен регресс, из-за которого модуль bz2 не работал при отключённых потоках. Оригинальный патч от Amaury Forgeot d’Arc.
- bpo-13589: Исправлены некоторые примитивы сериализации в модуле aifc. Патч от Oleg Plakhotnyuk.
- bpo-13642: При базовой аутентификации теперь перед кодированием в base64 из строки «пользователь:пароль» удаляется URL-кодирование. Патч предоставлен Joonas Kuorilehto.
- bpo-12364: Исправлено зависание в concurrent.futures.ProcessPoolExecutor. Зависание происходило при получении результата запланированного future после завершения работы исполнителя.
- bpo-13502: threading: исправлено состояние гонки в Event.wait(), из-за которого метод возвращал False, если событие было установлено и сразу же сброшено.
- bpo-9993: Когда источник и приёмник находятся в разных файловых системах, а источник – символическая ссылка, shutil.move() теперь воссоздаёт ссылку в приёмнике вместо копирования содержимого файла. Патч от Jonathan Niehof и Hynek Schlawack.
- bpo-12926: Исправлена ошибка в извлечении ссылок tarfile.
- bpo-13696: Исправлена проблема перенаправления относительных URL с кодом 302.
- bpo-13636: Слабые шифры теперь отключены по умолчанию в модуле ssl (кроме случаев, когда явно запрашивается SSLv2).
- bpo-12715: В функции shutil (copyfile, copymode, copystat, copy, copy2) добавлен необязательный аргумент symlinks. Если он равен true, символические ссылки не разыменовываются, а операция выполняется над самой ссылкой (или создаётся новая, если применимо). Патч от Hynek Schlawack.
- В select.epoll добавлен параметр flags.
- bpo-13626: Добавлена поддержка обмена ключами Diffie-Hellman по SSL через метод SSLContext.load\_dh\_params() и опцию ssl.OP\_SINGLE\_DH\_USE.
- bpo-11006: В подпроцессе больше не выдаётся низкоуровневое предупреждение при сбое pipe2().
- bpo-13620: Поддержка браузера Chrome в webbrowser. Патч предоставлен Arnaud Calmettes.
- bpo-11829: Исправлены дыры выполнения кода в inspect.getattr\_static для метаклассов, у которых есть метаклассы. Патч от Andreas Stührk.
- bpo-12708: В multiprocessing.Pool добавлены методы starmap() и starmap\_async() (аналогично itertools.starmap()). Патч от Hynek Schlawack.
- bpo-1785: Исправлены inspect и pydoc при некорректно работающих дескрипторах.
- bpo-13637: Функции «a2b» в модуле binascii теперь принимают строки в кодировке ASCII, содержащие только символы ASCII.
- bpo-13634: Добавлена поддержка запроса и отключения сжатия SSL.
- bpo-13627: Добавлена поддержка обмена ключами Диффи-Хеллмана на основе эллиптических кривых через метод SSLContext.set\_ecdh\_curve() и опцию ssl.OP\_SINGLE\_ECDH\_USE.
- bpo-13635: Добавлена константа ssl.OP\_CIPHER\_SERVER\_PREFERENCE, чтобы SSL-серверы выбирали шифр на основе собственных предпочтений, а не клиента.
- bpo-11813: Исправлена работа inspect.getattr\_static для модулей. Патч от Андреаса Штюрка.
- bpo-7502: Исправлено сравнение на равенство для экземпляров DocTestCase. Патч от Седрика Крие.
- bpo-11870: threading: Корректная повторная инициализация внутренних блокировок и условных переменных потоков для предотвращения взаимоблокировок в дочерних процессах.
- bpo-8035: urllib: Исправлена ошибка, из-за которой клиент мог оставаться в зависшем состоянии после перенаправления или ошибки.
- bpo-13560: os.strerror() теперь использует текущую кодировку локали вместо UTF-8.
- bpo-8373: Путь файловой системы для сокетов AF\_UNIX теперь использует кодировку файловой системы и обработчик ошибок surrogateescape вместо UTF-8. Патч от Дэвида Уотсона.
- bpo-10350: Чтение и сохранение errno до вызова функции, которая может его перезаписать. Исходный патч от Халлварда Б. Фурусета.
- bpo-11610: Представлен более общий способ объявления абстрактных свойств.
- bpo-13591: Исправлена ошибка в importlib, из-за которой import\_module загружал модуль дважды.
- bpo-13449: Метод sched.scheduler.run() получил новый параметр «blocking». Если установить его в False, run() выполнит запланированные события с истекающим сроком (если такие есть) и завершится. Патч от Джампаоло Родола.
- bpo-8684: Класс sched.scheduler теперь можно безопасно использовать в многопоточных средах. Патч от Джозайи Карлсона и Джампаоло Родола.
- Создан псевдоним resource.error → OSError в стиле PEP 3151.
- bpo-5689: Добавлена поддержка сжатия LZMA в модуль tarfile.
- bpo-13248: Предупреждения PendingDeprecationWarning из Python 3.2 стали DeprecationWarning в Python 3.3. Это затрагивает 'cgi.escape', 'importlib.abc.PyLoader', 'importlib.abc.PyPycLoader', 'nntplib.NNTP.xgtitle', 'nntplib.NNTP.xpath' и закрытые атрибуты 'smtpd.SMTPChannel'.
- bpo-5905: time.strftime() теперь использует текущую кодировку локали вместо UTF-8, если функция wcsftime() недоступна. (См. также: bpo-13560)
- bpo-13464: Добавлен метод readinto() в http.client.HTTPResponse. Патч от Джона Куна.
- tarfile.py: Корректное обнаружение сжатых bzip2 потоков с размером блока, отличным от 900k.
- bpo-13439: Исправлено множество ошибок в строках документации turtle.
- bpo-6715: Добавлен модуль 'lzma' для сжатия алгоритмом LZMA. Спасибо Перу Эйвинду Карлсену за начальную реализацию.
- bpo-13487: Сделать inspect.getmodule устойчивым к изменениям sys.modules во время итерации по нему.
- bpo-12618: Исправлена ошибка, которая не позволяла py\_compile создавать скомпилированные в байт-код файлы в текущем каталоге. Исходный патч от Шурда де Фриса.
- bpo-13444: Если stdout был явно закрыт, не следует пытаться сбросить его при завершении работы и выводить ошибку.
- bpo-12567: Модуль curses использует функции Unicode для аргументов Unicode, если он слинкован с библиотекой ncurses. Он также кодирует строки Unicode в кодировку локали вместо UTF-8.
- bpo-12856: Обеспечено, чтобы дочерние процессы не наследовали случайное зерно родителя для генерации имен файлов в модуле tempfile. Патч от Брайана Харринга.
- bpo-9957: SpooledTemporaryFile.truncate() теперь принимает необязательный параметр size, как и другие файлоподобные объекты. Патч от Райана Келли.
- bpo-13458: Исправлена утечка памяти в модуле ssl при декодировании сертификата с subjectAltName. Патч от Роберта Сяо.
- bpo-13415: os.unsetenv() больше не игнорирует ошибки.
- bpo-13245: Параметры timefunc и delayfunct конструктора класса sched.scheduler теперь необязательны. Методы scheduler.enter и scheduler.enterabs получили новый параметр kwargs. Патч предоставлен Крисом Кларком.
- bpo-12328: В Windows выполнена переработка обработки событий Ctrl-C; \_multiprocessing.win32.WaitForMultipleObjects теперь можно прервать, когда параметр wait\_flag равен false. Патч от sbt.
- bpo-13322: Исправлен BufferedWriter.write() – теперь гарантированно вызывается BlockingIOError, когда обёрнутый сырой файл неблокирующий и запись должна заблокироваться. Раньше код предполагал, что сырая write() вызовет BlockingIOError, но RawIOBase.write() по определению возвращает None при блокировке. Патч от sbt.
- bpo-13358: HTMLParser теперь вызывает handle\_data только один раз для каждого CDATA.
- bpo-4147: toprettyxml из minidom больше не добавляет пробелы вокруг текстового узла, если он является единственным дочерним элементом. Начальный патч от Дэна Кенигсберга.
- bpo-13374: API для работы с байтами в Windows объявлено устаревшим в модуле os. Используйте имена файлов в Unicode вместо байтовых, чтобы больше не зависеть от кодовой страницы ANSI и поддерживать любые имена файлов.
- bpo-13297: Используйте тип bytes для отправки и получения двоичных данных через XMLRPC.
- bpo-6397: Поддержка объектов опроса «/dev/poll» в модуле select в Solaris и производных системах.
- bpo-1745761: HTMLParser теперь корректно обрабатывает невалидные атрибуты, включая соседние и незакавыченные атрибуты. (См. также: bpo-755670, bpo-13357, bpo-12629, bpo-1200313)
- bpo-13193: Исправление distutils.filelist.FileList и packaging.manifest.Manifest в Windows.
- bpo-13384: Удаление ненужного импорта \_\_future\_\_ в Lib/random.py
- bpo-13149: Ускорение объектов StringIO, работающих только на добавление.
- bpo-13373: multiprocessing.Queue.get() иногда мог блокироваться бесконечно при вызове с тайм-аутом. Патч от Арно Исмаля.
- bpo-13254: Исправление инициализации Maildir для корректного чтения содержимого почтового ящика.
- bpo-3067: locale.setlocale() теперь вызывает TypeError, если второй аргумент является недопустимой итерируемой последовательностью. Также обновлены документация и докстринг. Начальный патч от Юрки Пуллияйнена.
- bpo-13140: Исправление атрибута daemon\_threads в ThreadingMixIn.
- bpo-13339: Исправление ошибки компиляции в posixmodule.c из-за отсутствующей точки с запятой. Спасибо Роберту Сяо.
- Байт-компиляция в packaging теперь изолирована от опций -B и -O вызывающего Python, вместо того чтобы быть запрещённой при -B или работать с ошибками при -O.
- bpo-10570: curses.putp() и curses.tparm() теперь ожидают байтовую строку вместо строки Unicode.
- bpo-13295: http.server теперь генерирует корректный HTML 4.01 строгий.
- bpo-2892: сохранение событий iterparse в случае SyntaxError.
- bpo-13287: urllib.request и urllib.error теперь содержат атрибут \_\_all\_\_, чтобы открывать только соответствующие классы и функции. Патч от Флорана Сиклуны.
- bpo-670664: Исправление HTMLParser для корректной обработки содержимого `<script>...</script>` и `<style>...</style>`.
- bpo-10817: Исправление функции urlretrieve для вызова ContentTooShortError даже если reporthook равен None. Патч от Юрки Пуллияйнена.
- Исправление user agent в xmlrpc.client для возврата чего-то похожего на user agent urllib.request: «Python-xmlrpc/3.3».
- bpo-13293: Улучшенное сообщение об ошибке при попытке маршалинга байтов с помощью xmlrpc.client.
- bpo-13291: NameError в пакете xmlrpc.
- bpo-13258: Использование встроенной функции callable() в стандартной библиотеке.
- bpo-13273: исправление ошибки, которая мешала HTMLParser корректно обнаруживать некоторые теги при strict=False.
- bpo-11183: Добавление более детализированных исключений в модуль ssl, чтобы в типичных случаях не приходилось проверять атрибуты исключения.
- bpo-13216: Добавление кодека cp65001 – Windows UTF-8 (CP\_UTF8).
- bpo-13226: Добавление констант RTLD\_xxx в модуль os. Эти константы можно использовать с sys.setdlopenflags().
- bpo-10278: Добавление clock\_getres(), clock\_gettime() и констант CLOCK\_xxx в модуль time. time.clock\_gettime(time.CLOCK\_MONOTONIC) предоставляет монотонные часы
- bpo-10332: multiprocessing: исправление состояния гонки, когда Pool закрывается до завершения всех задач.
- bpo-13255: неверные докстринги в модуле array.
- bpo-8540: Удаление устаревшего атрибута Context.\_clamp в модуле Decimal.
- bpo-13235: Добавлено DeprecationWarning для метода и функции logging.warn().
- bpo-9168: теперь smtpd может привязываться к привилегированному порту.
- bpo-12529: исправлена проблема cgi.parse\_header со строками, содержащими одновременно двойные кавычки и точки с запятой. Исправление от Ben Darnell и Petri Lehtinen.
- bpo-13227: functools.lru\_cache() теперь имеет опцию для различения вызовов с разными типами аргументов.
- bpo-6090: zipfile вызывает ValueError, если передан документ с меткой времени ранее 1980 года. Исправление предоставлено Petri Lehtinen.
- bpo-13150: sysconfig больше не разбирает файлы Makefile и config.h при импорте, а делает это во время сборки. Это ускоряет импорт sysconfig и сокращает время запуска Python на 20%.
- bpo-12448: smtplib теперь сбрасывает stdout при выполнении `python -m smtplib` для корректного отображения приглашения.
- bpo-12454: Модуль mailbox теперь использует ASCII вместо кодировки локали для чтения и записи файлов .mh\_sequences.
- bpo-13194: zlib.compressobj().copy() и zlib.decompressobj().copy() теперь доступны в Windows.
- bpo-1673007: urllib.request теперь поддерживает HEAD-запросы через новый аргумент method. Исправления предоставлены David Stanek, Patrick Westerhoff и Ezio Melotti.
- bpo-12386: packaging больше не завершается ошибкой при записи файла RESOURCES.
- bpo-13158: Исправлено декодирование и кодирование специфичных для GNU tar полей чисел с основанием 256 в tarfile.
- bpo-13025: mimetypes теперь читает MIME-типы, используя кодировку UTF-8, вместо кодировки локали.
- bpo-10653: В Windows используется strftime() вместо wcsftime(), потому что wcsftime() неправильно форматирует часовой пояс.
- bpo-13150: Модуль tokenize больше не компилирует большие регулярные выражения при запуске.
- bpo-11171: Исправлена distutils.sysconfig.get\_makefile\_filename, когда Python сконфигурирован с разными prefix и exec-prefix.
- bpo-11254: distutils и packaging теперь компилируют файлы .pyc и .pyo в директории \_\_pycache\_\_, соответствующие PEP 3147.
- bpo-7367: Исправлен pkgutil.walk\_paths, чтобы пропускать каталоги, содержимое которых не может быть прочитано.
- bpo-3163: Модуль struct получает новые символы форматирования ‘n’ и ‘N’, поддерживающие целочисленные типы C `ssize_t` и `size_t` соответственно.
- bpo-13099: Исправлен sqlite3.Cursor.lastrowid в турецкой локали. Сообщено и диагностировано Thomas Kluyver.
- bpo-13087: BufferedReader.seek() теперь всегда вызывает UnsupportedOperation, если базовый необработанный поток не поддерживает позиционирование, даже если позиционирование могло быть выполнено с использованием внутреннего буфера. Исправление от John O’Connor.
- bpo-7689: Разрешена сериализация динамически созданных классов, если их метакласс зарегистрирован в copyreg. Исправление от Nicolas M. Thiéry и Craig Citro.
- bpo-13034: При декодировании некоторых SSL-сертификатов расширение subjectAltName могло не сообщаться.
- bpo-12306: Предоставлена версия времени выполнения библиотеки zlib C как константа ZLIB\_RUNTIME\_VERSION в модуле zlib. Исправление от Torsten Landschoff.
- bpo-12959: Добавлен collections.ChainMap в collections.\_\_all\_\_.
- bpo-8933: Файлы PKG-INFO от distutils и METADATA от packaging теперь правильно указывают Metadata-Version: 1.1 вместо 1.0, если присутствует поле Classifier или Download-URL.
- bpo-12567: Добавлена функция curses.unget\_wch(). Помещает символ так, чтобы следующий get\_wch() вернул его.
- bpo-9561: distutils и packaging теперь записывают файлы egg-info, используя UTF-8, вместо кодировки локали.
- bpo-8286: Команда sdist в distutils теперь выводит предупреждение вместо аварийного завершения, если в шаблоне манифеста указан неверный путь.
- bpo-12841: tarfile излишне проверял существование числовых идентификаторов пользователя и группы при извлечении. Если один из них не существовал, использовался соответствующий идентификатор текущего пользователя (например, root), и информация о владельце терялась.
- bpo-12888: Исправлена ошибка в HTMLParser.unescape, которая не позволяла экранировать более 128 сущностей. Исправление от Peter Otten.
- bpo-12878: Предоставлен атрибут \_\_dict\_\_ для io.IOBase и его подклассов.
- bpo-12494: При ошибке функции call(), check\_call(), check\_output() и getstatusoutput() модуля подпроцесс теперь завершают процесс, считывают его статус (чтобы избежать зомби) и закрывают каналы.
- bpo-12720: В модуль os добавлены низкоуровневые функции Linux для работы с расширенными атрибутами файлов.
- bpo-10946: Команды distutils bdist\_dumb, bdist\_wininst и bdist\_msi теперь учитывают опцию –skip-build, переданную bdist. Также исправлены команды packaging.
- bpo-12847: Исправлено падение при отрицательных аргументах PUT и LONG\_BINPUT в реализации pickle на C.
- bpo-11564: Больше не происходит падение при попытке сериализовать огромные объекты или контейнеры (более 2\*\*31 элементов). Вместо этого в большинстве случаев вызывается OverflowError.
- bpo-12287: Исправлено повреждение стека в модуле ossaudiodev, когда файловый дескриптор больше FD\_SETSIZE.
- bpo-12839: Исправлено падение модуля zlib из-за несовместимости версий. Исправление от Richard M. Tew.
- bpo-9923: Модуль mailcap теперь корректно использует разделитель путей платформы для переменной окружения MAILCAP на платформах, отличных от POSIX.
- bpo-12835: Продолжение работы над #6560: полностью запрещено использование незашифрованных API sendmsg/recvmsg на сокетах, обёрнутых SSL. Патч от David Watson.
- bpo-12803: SSLContext.load\_cert\_chain() теперь принимает аргумент password, который используется, если закрытый ключ зашифрован. Патч от Adam Simpkins.
- bpo-11657: Исправлена отправка файловых дескрипторов больше 255 через multiprocessing.Pipe.
- bpo-12811: tabnanny.check() теперь своевременно закрывает проверенные файлы. Патч от Anthony Briggs.
- bpo-6560: API sendmsg/recvmsg теперь предоставляется модулем socket, если поддерживается платформой, что позволяет обрабатывать вспомогательные данные в чистом Python. Патч от David Watson и Heiko Wundram.
- bpo-12326: В Linux sys.platform больше не содержит основной номер версии. Теперь это всегда 'linux', а не 'linux2' или 'linux3' в зависимости от версии Linux, на которой собирался Python.
- bpo-12213: Исправлена ошибка буферизации при чередовании чтения и записи, которая могла возникать в BufferedRandom.
- bpo-12778: Снижено потребление памяти при JSON-кодировании большого контейнера из множества маленьких объектов.
- bpo-12650: Исправлено состояние гонки, при котором subprocess.Popen мог допустить утечку ресурсов (файловые дескрипторы/зомби), если был завершён в неподходящий момент.
- bpo-12744: Исправлено неэффективное представление целых чисел от 2\*\*31 до 2\*\*63 в системах с 64-битным C 'long'.
- bpo-12646: Добавлен атрибут 'eof' в zlib.Decompress для упрощения обнаружения усечённых входных потоков.
- bpo-11513: Исправлена обработка исключения в `tarfile.TarFile.gzopen()` при невозможности открыть файл.
- bpo-12687: Исправлена возможная ошибка буферизации при десериализации пиклей в текстовом режиме (в основном протокол 0).
- bpo-10087: Исправлен формат вывода HTML в модуле calendar.
- bpo-13121: Добавлена поддержка математических операторов присваивания для collections.Counter.
- Добавлена поддержка унарного плюса и унарного минуса для collections.Counter.
- bpo-12683: urlparse обновлён: теперь включает svn в число схем, использующих относительные пути (svn версии 1.5 и новее поддерживает относительные пути).
- bpo-12655: В модуль os добавлены функции из sched.h: sched\_yield(), sched\_setscheduler(), sched\_getscheduler(), sched\_setparam(), sched\_get\_min\_priority(), sched\_get\_max\_priority(), sched\_rr\_get\_interval(), sched\_getaffinity(), sched\_setaffinity().
- ThreadError добавлен в threading.\_\_all\_\_.
- bpo-11104: Исправлено поведение команды sdist в distutils при использовании вручную поддерживаемых MANIFEST-файлов (см. также bpo-8688).
- bpo-11281: smtplib.STMP получил параметр source\_address, который добавляет возможность привязки к определённому исходному адресу на машине с несколькими интерфейсами. Патч от Paulo Scardine.
- bpo-12464: tempfile.TemporaryDirectory.cleanup() не должен следовать по символическим ссылкам: исправлено. Патч от Petri Lehtinen.
- bpo-8887: Теперь «pydoc somebuiltin.somemethod» (или help('somebuiltin.somemethod') в коде Python) находит документацию метода.
- bpo-10968: Устранена косвенность в threading. Ранее общедоступные имена (Event, Condition и т.д.) были фабричными функциями, возвращающими экземпляры скрытых классов (\_Event, \_Condition и т.д.) – если Гвидо верно помнит, этот код был написан до появления возможности наследования от типов-расширений. Теперь можно наследоваться от этих классов напрямую, без необходимости импортировать приватные имена с подчёркиванием, как это делал multiprocessing.
- bpo-9723: Добавлены функции shlex.quote для экранирования имён файлов и командных строк.
- bpo-12603: Исправлена pydoc.synopsis() для файлов с неотрицательным st\_mtime.
- bpo-12514: Использован try/finally, чтобы гарантировать, что модуль timeit восстанавливает сборку мусора после завершения.
- bpo-12607: В подпроцессе исправлена проблема, при которой если stdin, stdout или stderr переданы как низкий файловый дескриптор, они перезаписывались.
- bpo-12576: Исправлено поведение urlopen на сайтах, которые не отправляют (или скрывают) заголовок `Connection: close`.
- bpo-12560: Сборка libpython.so на OpenBSD. Патч от Stefan Sperling.
- bpo-1813: Исправлен поиск кодеков в турецких локалях.
- bpo-12591: Улучшена поддержка «универсальных символов новой строки» в модуле подпроцесса: теперь канальные потоки можно корректно читать и записывать.
- bpo-12591: Разрешена работа io.TextIOWrapper с сырыми объектами IO (без метода read1()) и добавлен параметр *write\_through*, предписывающий небуферизированную запись.
- bpo-10883: Исправлена утечка сокетов в urllib.request при использовании FTP.
- bpo-12592: Обеспечена сборка Python на OpenBSD 5 (и будущих основных версиях).
- bpo-12372: Семафоры POSIX не работают на AIX: не используйте их.
- bpo-12551: Добавлен метод get\_channel\_binding() для SSL-сокетов, позволяющий получить данные привязки канала для текущего SSL-сеанса (реализована только привязка канала «tls-unique»). Это позволяет реализовать некоторые механизмы аутентификации, такие как SCRAM-SHA-1-PLUS. Патч от Jacek Konieczny.
- bpo-665194: В email.utils добавлены функции format\_datetime и parsedate\_to\_datetime , обеспечивающие возможность преобразования дат формата RFC2822 в обоих направлениях.
- bpo-12571: Добавлен каталог plat-linux3, зеркалирующий каталог plat-linux2, чтобы «import DLFCN» и другие аналогичные импорты работали на Linux 3.0.
- bpo-7484: smtplib больше не помещает адреса в \<\> в командах VRFY и EXPN ; они не требуются, и на самом деле Postfix не поддерживает такую форму.
- bpo-12273: Удалён ast.\_\_version\_\_. Изменения AST можно отслеживать, проверяя sys.version\_info или sys.\_mercurial.
- Подавлены ложные трассировки «разрыв канала» при завершении ProcessPoolExecutor.
- Исправлена потенциальная утечка ресурсов в concurrent.futures.ProcessPoolExecutor: при вызове shutdown() теперь завершаются все очереди и процессы.
- bpo-11603: Исправлен сбой при перепривязке \_\_str\_\_ как \_\_repr\_\_. Патч от Andreas Stührk.
- bpo-11321: Исправлен сбой при множественном импорте модуля \_pickle при встраивании Python. Патч от Andreas Stührk.
- bpo-6755: Добавлен метод get\_wch() в класс curses.window. Патч от Iñigo Serna.
- Добавлена функция cgi.closelog() для закрытия файла журнала.
- bpo-12502: asyncore: исправлен цикл опроса для сокетов AF\_UNIX.
- bpo-4376: ctypes теперь поддерживает вложенные структуры с порядком байт, отличным от родительской структуры. Патч от Vlad Riscutia.
- Вызывается ValueError при попытке установить слишком большое значение атрибута \_CHUNK\_SIZE объекта TextIOWrapper, а не TypeError.
- bpo-12504: Своевременное закрытие файловых дескрипторов в packaging.database. Исправлена ошибка с функцией удаления (деинсталляции) в Windows.
- bpo-12169: Выделен код, используемый различными командами packaging для выполнения HTTP запросов POST, и обеспечено использование CRLF. (См. также: bpo-10510)
- bpo-12016: Многобайтовые декодеры CJK теперь быстрее повторно синхронизируются. Они игнорируют только первый байт недопустимой последовательности. Например, b’\\xffn’.decode(‘gb2312’, ‘replace’) даёт ‘\\ufffdn’ вместо ‘\\ufffd’.
- bpo-12459: time.sleep() теперь вызывает ValueError при отрицательной длительности сна, вместо бесконечного сна в Windows или IOError в Linux, чтобы поведение было одинаковым на всех платформах.
- bpo-12451: pydoc: html\_getfile() теперь использует tokenize.open() для поддержки скриптов Python, использующих кодировку, отличную от UTF-8 (читает coding cookie скрипта).
- bpo-12493: подпроцесс: Popen.communicate() теперь также обрабатывает ошибки EINTR, если процесс имеет только один канал.
- bpo-12467: warnings: исправлена гонка при выводе предупреждения на завершении работы, если globals()\[‘\_\_file\_\_’\] имеет значение None.
- bpo-12451: pydoc: importfile() теперь открывает Python-скрипт в двоичном режиме вместо текстового с использованием кодировки локали, чтобы избежать проблем с кодировкой.
- bpo-12451: runpy: run\_path() теперь открывает Python-скрипт в двоичном режиме вместо текстового с использованием кодировки локали, чтобы поддерживать кодировки, отличные от UTF-8 (скрипты с указанием кодировки).
- bpo-12451: xml.dom.pulldom: parse() теперь открывает файлы в двоичном режиме вместо текстового (используя кодировку локали) для устранения проблем с кодировкой.
- bpo-12147: Метод send\_message из smtplib, добавленный в версии 3.2, доработан для лучшего соответствия RFC: корректно обрабатываются заголовки Sender и Resent-.
- bpo-12352: Исправлена взаимоблокировка в multiprocessing.Heap, когда блок освобождается сборщиком мусора во время удержания блокировки Heap.
- bpo-12462: time.sleep() теперь немедленно вызывает (Python) обработчик сигнала при прерывании сигналом, а не ждёт следующей инструкции.
- bpo-12442: Новая функция shutil.disk\_usage, возвращающая статистику общего, использованного и свободного дискового пространства.
- bpo-12451: Загрузчик XInclude по умолчанию из xml.etree теперь декодирует файлы из UTF-8 вместо кодировки локали, если кодировка не указана. Он также теперь открывает XML-файлы для анализатора в двоичном режиме вместо текстового, чтобы избежать проблем с кодировкой.
- bpo-12451: doctest.debug\_script() больше не создаёт временный файл, чтобы избежать проблем с кодировкой.
- bpo-12451: pydoc.synopsis() теперь при наличии читает указание кодировки, чтобы читать Python-скрипт в правильной кодировке.
- bpo-12451: distutils теперь открывает сценарий установки в двоичном режиме для чтения указания кодировки вместо открытия в UTF-8.
- bpo-9516: На Mac OS X изменено поведение Distutils: теперь он не пытается глобально проверить или установить переменную окружения MACOSX\_DEPLOYMENT\_TARGET для процесса интерпретатора. Это могло приводить к сбоям в подпроцессах, не относящихся к Distutils, и было ненадёжно, так как тесты или пользовательские программы могли изменить окружение интерпретатора после того, как Distutils его установил. Вместо этого Distutils теперь устанавливает цель развёртывания только в окружении каждого сборочного подпроцесса. По-прежнему можно глобально переопределить значение по умолчанию, задав MACOSX\_DEPLOYMENT\_TARGET перед запуском интерпретатора; его значение должно быть не меньше значения по умолчанию, с которым был собран интерпретатор. Также реализована аналогичная обработка в packaging.
- bpo-12422: В модуле copy не сохраняются в словаре memo объекты, которые являются собственной копией.
- bpo-12303: В модуль signal добавлены функции sigwaitinfo() и sigtimedwait().
- bpo-12404: Из модуля mmap удалён код, несовместимый с C89. Исправление от Akira Kitada.
- bpo-1874: email теперь обнаруживает и сообщает как дефект наличие любого CTE, отличного от 7bit, 8bit или binary, в многосоставном сообщении.
- bpo-12383: Исправлен модуль подпроцесса при env={}: теперь переменные окружения не копируются, запуск происходит с пустым окружением.
- bpo-11637: Исправлена поддержка импорта хуков настройки packaging из каталога проекта.
- bpo-6771: Функция curses.wrapper перемещена из одноимённого модуля-обёртки в \_\_init\_\_, что привело к удалению модуля. Поскольку \_\_init\_\_ уже импортировал эту функцию в curses.wrapper, изменений в API нет.
- bpo-11584: email.header.decode\_header больше не завершается ошибкой, если переданный заголовок является объектом Header, а Header/make\_header больше не завершаются ошибкой при передаче двоичных входных данных с неизвестной 8-битной кодировкой.
- bpo-11700: Методы close объектов-прокси mailbox теперь можно вызывать многократно без ошибки.
- bpo-11767: Исправлена утечка файлового дескриптора в методе \_\_getitem\_\_ модуля mailbox.
- bpo-12133: AbstractHTTPHandler.do\_open() из urllib.request закрывает HTTP-соединение, если его метод getresponse() завершается с ошибкой сокета. Исправление написано Ezio Melotti.
- bpo-12240: В файлах setup.cfg packaging разрешено несколько хуков настройки. Оригинальное исправление от Erik Bray.
- bpo-9284: inspect.findsource() теперь может находить исходный код функций doctest.
- bpo-11595: Исправлены различные ошибки в packaging.util.cfg\_to\_args – вспомогательном модуле совместимости для перехода от distutils к packaging. Оригинальное исправление от Erik Bray.
- bpo-12287: В ossaudiodev добавлена проверка, что устройство не закрыто, в нескольких методах.
- bpo-12009: Исправлена регрессия в обработке комментариев в файлах netrc.
- bpo-12246: Выводится предупреждение и происходит ошибка при попытке установки стороннего проекта из неустановленного Python (собранного из исходников). Оригинальное исправление от Tshepang Lekhonkhobe.
- bpo-10694: zipfile теперь игнорирует мусор в конце zip-файла.
- bpo-12283: Исправлена регрессия в smtplib при экранировании начальных точек в DATA.
- bpo-10424: Argparse теперь включает имена обязательных аргументов, которые отсутствуют, в сообщение об ошибке о пропущенных аргументах.
- bpo-12168: SysLogHandler теперь позволяет управлять завершением NUL с помощью нового атрибута ‘append\_nul’ обработчика.
- bpo-11583: Ускорена работа os.path.isdir в Windows за счёт использования GetFileAttributes вместо os.stat.
- bpo-12021: Аргумент метода read() в mmap стал необязательным. Патч от Petri Lehtinen.
- bpo-9205: concurrent.futures.ProcessPoolExecutor теперь обнаруживает убитые дочерние процессы и в такой ситуации вызывает BrokenProcessPool. Ранее это приводило к надёжному зависанию / блокировке.
- bpo-12040: Открыт новый атрибут `sentinel` у экземпляров `multiprocessing.Process`. Кроме того, исправлен Process.join() – больше не используется опрос при заданном таймауте.
- bpo-11893: Удалён устаревший внутренний класс-обёртка `SSLFakeFile` в модуле smtplib. Патч от Catalin Iacob.
- bpo-12080: Исправлен случай Decimal.power(), который требовал необоснованно много времени для вычисления.
- bpo-12221: Удалены атрибуты \_\_version\_\_ из pyexpat, pickle, tarfile, pydoc, tkinter и xml.parsers.expat. Это были бесполезные константы версий, оставшиеся после перехода с Mercurial.
- Именованные кортежи теперь корректно работают с vars().
- bpo-12085: Исправлена ошибка атрибута в деструкторе subprocess.Popen, если конструктор завершился неудачей, например, из-за необъявленного именованного аргумента. Патч написан Oleg Oshmyan.
- bpo-12028: threading.\_get\_ident() сделан публичным, переименован в threading.get\_ident() и задокументирован. Эта функция уже использовалась через \_thread.get\_ident().
- bpo-12171: IncrementalEncoder.reset() для кодеков CJK (multibytecodec) теперь вызывает encreset() вместо decreset().
- bpo-12218: Удалён wsgiref.egg-info.
- bpo-12196: Добавлена pipe2() в модуль os.
- bpo-985064: Повышена устойчивость plistlib к некорректным входным plist-файлам. Патч от Mher Movsisyan.
- bpo-1625: BZ2File и bz2.decompress() теперь поддерживают многопотоковые файлы. Первоначальный патч от Nir Aides.
- bpo-12175: BufferedReader.read(-1) теперь вызывает raw.readall(), если это возможно.
- bpo-12175: FileIO.readall() теперь считывает позицию и размер файла только один раз.
- bpo-12175: RawIOBase.readall() теперь возвращает None, если read() возвращает None.
- bpo-12175: FileIO.readall() теперь вызывает ValueError вместо IOError, если файл закрыт.
- bpo-11109: Добавлен метод service\_action для BaseServer, используемый классом ForkingMixin для очистки. Первоначальный патч от Justin Warkentin.
- bpo-12045: Предотвращено двойное выполнение команды в ctypes.util.\_get\_soname(). Патч от Sijin Joseph.
- bpo-10818: Удалены Tk GUI и функция serve() из модуля pydoc; pydoc -g был объявлен устаревшим в Python 3.2, и теперь есть новый улучшенный веб-сервер.
- bpo-1441530: В imaplib данные читаются одним блоком для ускорения больших чтений и упрощения кода.
- bpo-12070: Исправлен парсер Makefile в модуле sysconfig для корректной обработки ссылок на «некорректную переменную» (например, «prefix=$/opt/python»).
- bpo-12100: Больше не выполняется сброс инкрементальных кодировщиков кодеков CJK при каждом вызове их метода encode(), но метод reset() по-прежнему вызывается, если аргумент final равен True.
- bpo-12049: Добавлены функции RAND\_bytes() и RAND\_pseudo\_bytes() в модуль ssl.
- bpo-6501: os.device\_encoding() возвращает None в Windows, если у приложения нет консоли.
- bpo-12105: Добавлен O\_CLOEXEC в модуль os.
- bpo-12079: Decimal(‘Infinity’).fma(Decimal(‘0’), (3.91224318126786e+19+0j)) теперь вызывает TypeError (отражая неверный тип третьего аргумента), а не Decimal.InvalidOperation.
- bpo-12124: zipimport больше не хранит ссылку на zlib.decompress(), чтобы можно было выгрузить модуль.
- Добавлен модуль packaging, улучшенная версия distutils (также известная как distutils2).
- bpo-12065: connect\_ex() на SSL-сокете теперь возвращает исходный errno при истечении тайм-аута сокета (ранее возвращалось None).
- bpo-8809: Конструктор SMTP\_SSL и SMTP.starttls() теперь поддерживают передачу аргумента `context`, указывающего на экземпляр ssl.SSLContext. Исправление от Kasun Herath.
- bpo-9516: предотвращение ошибок в sysconfig при установке MACOSX\_DEPLOYMENT\_TARGET в оболочке. (См. также: bpo-9516)
- bpo-8650: Модуль zlib приведён к 64-разрядной чистоте. compress(), decompress() и их инкрементальные аналоги теперь вызывают OverflowError, если на вход подаётся более 4 ГБ, вместо того чтобы молча обрезать входные данные и возвращать неверный результат.
- bpo-12050: zlib.decompressobj().decompress() теперь очищает атрибут unconsumed\_tail при вызове без аргумента max\_length.
- bpo-12062: Исправлена ошибка сброса буфера при выполнении определённой последовательности операций ввода-вывода в файле, открытом в режиме чтения+записи (а именно: чтение, небольшое смещение вперёд, запись, затем смещение перед предыдущей записью, но всё ещё в пределах буферизованных данных, и повторная запись).
- bpo-9971: Написана оптимизированная реализация BufferedReader.readinto(). Исправление от John O’Connor.
- bpo-11799: Обработчики аутентификации urllib.request теперь вызывают ValueError при получении неподдерживаемой схемы аутентификации. Исправление предоставлено Yuval Greenfield.
- bpo-10419: Команда build\_scripts из distutils корректно обрабатывает не-ASCII пути (путь к исполняемому файлу Python). Открывает и записывает скрипт в двоичном режиме, но гарантирует, что shebang декодируется из UTF-8 и из кодировки скрипта. (См. также: bpo-6011)
- bpo-8498: В socket.accept() разрешено указывать 0 в качестве значения backlog, чтобы принимать ровно одно соединение. Исправление от Daniel Evers.
- bpo-12011: signal.signal() и signal.siginterrupt() теперь вызывают OSError вместо RuntimeError: у OSError есть атрибут errno.
- bpo-3709: Добавлен метод flush\_headers в BaseHTTPRequestHandler, который управляет отправкой заголовков в выходной поток и сбросом внутреннего буфера заголовков. Исправление предоставлено Andrew Schaaf.
- bpo-11743: Переписаны классы соединений multiprocessing на чистом Python.
- bpo-11164: Прекращены попытки использования \_xmlplus в модуле xml.
- bpo-11888: Добавлена функция log2 в модуль math. Исправление от Mark Dickinson.
- bpo-12012: ssl.PROTOCOL\_SSLv2 становится опциональным.
- bpo-8407: Обработчик сигнала теперь записывает номер сигнала как один байт вместо нулевого байта в файловый дескриптор пробуждения. Таким образом, стало возможным ожидать более одного сигнала и узнавать, какие сигналы были вызваны.
- bpo-8407: Добавлены функции pthread\_kill(), sigpending() и sigwait() в модуль signal.
- bpo-11927: SMTP\_SSL теперь по умолчанию использует порт 465, как указано в документации. Исправление от Kasun Herath.
- bpo-12002: Метод abort() в ftplib вызывает TypeError.
- bpo-11916: Добавлен ряд специфичных для MacOSX определений в модуль errno. Исправление от Pierre Carrier.
- bpo-11999: Исправлена периодическая ошибка синхронизации mailbox.Maildir, вызванная попыткой обнаружить изменения mtime путём сравнения с системными часами вместо предыдущего значения mtime.
- bpo-11072: Добавлена поддержка команды MLSD (RFC-3659) в ftplib.
- bpo-8808: Конструктор IMAP4\_SSL теперь позволяет передавать параметр SSLContext для управления параметрами защищённого канала. Исправление от Sijin Joseph.
- ntpath.samefile не замечал, что «a.txt» и «A.TXT» ссылаются на один и тот же файл в Windows XP. Как было замечено в [issue #10684](https://python-all.ru/3.4/whatsnew/changelog.html).
- bpo-12000: Если SSL-сертификат содержит subjectAltName без записей dNSName, ssl.match\_hostname() должно использовать commonName субъекта. Исправление от Nicolas Bareil.
- bpo-10775: assertRaises, assertRaisesRegex, assertWarns и assertWarnsRegex теперь принимают именованный аргумент 'msg' при использовании в качестве менеджеров контекста. Первоначальное исправление от Winston Ewert.
- bpo-10684: shutil.move раньше удалял папку в файловых системах без учёта регистра, когда имена источника и назначения совпадали за исключением регистра.
- bpo-11647: Объекты, созданные с помощью contextlib.contextmanager, теперь поддерживают более одного вызова функции при использовании в качестве декоратора. Первоначальное исправление от Ysj Ray.
- bpo-11930: Удалена устаревшая переменная time.accept2year. Удалено ограничение year \>= 1000 из datetime.strftime.
- logging: не определять QueueListener, если в Python нет поддержки потоков.
- functools.cmp\_to\_key() теперь работает с collections.Hashable().
- bpo-11277: mmap.mmap() вызывает fcntl(fd, F\_FULLFSYNC) на Mac OS X для обхода ошибки mmap с разреженными файлами. Патч написан Steffen Daode Nurpmeso.
- bpo-8407: Добавлена функция signal.pthread\_sigmask() для получения и/или изменения маски сигналов вызывающего потока.
- bpo-11858: configparser.ExtendedInterpolation ожидал имена секций в нижнем регистре.
- bpo-11324: ConfigParser(interpolation=None) теперь работает корректно.
- bpo-11811: ssl.get\_server\_certificate() теперь совместим с IPv6. Патч от Charles- François Natali.
- bpo-11763: в TestCase.assertMultiLineEqual больше не используется difflib, если строки слишком длинные.
- bpo-11236: getpass.getpass реагирует на ctrl-c и ctrl-z в терминале.
- bpo-11856: Ускорен разбор чисел JSON.
- bpo-11005: threading.RLock().\_release\_save() вызывает RuntimeError, если блокировка не была захвачена.
- bpo-11258: Ускорение ctypes.util.find\_library() в Linux в 5–10 раз. Первоначальный патч от Jonas H.
- bpo-11382: Тривиальные системные вызовы, такие как dup() или pipe(), не обязаны освобождать GIL. Патч от Charles-François Natali.
- bpo-11223: Добавлена функция threading.\_info(), предоставляющая информацию о реализации потоков.
- bpo-11731: упрощение/улучшение API парсера/генератора email с помощью введения объектов policy.
- bpo-11768: Обработчик сигналов модуля signal теперь вызывает Py\_AddPendingCall() только для первого сигнала, чтобы исправить взаимоблокировку при реентерабельных или параллельных вызовах. PyErr\_SetInterrupt() также записывает в файл пробуждения.
- bpo-11492: исправлены несколько проблем со свёрткой заголовков в пакете email.
- bpo-11852: Добавлены недостающие импорты и обновлены тесты.
- bpo-11875: collections.OrderedDict.\_\_reduce\_\_ временно изменял объект вместо работы с копией.
- bpo-11467: Исправлено поведение urlparse при обработке URL, содержащих в схеме только цифры. Патч от Santoso Wijaya.
- collections.Counter().copy() теперь корректно работает для подклассов.
- bpo-11474: Исправлена ошибка в url2pathname() при обработке «/C|/» в Windows. Патч от Santoso Wijaya.
- bpo-11684: завершён bytes API email.parser добавлением BytesHeaderParser.
- Модуль bz2 теперь корректно обрабатывает входные буферы размером более 4 ГБ.
- bpo-9233: Исправлено json.loads('{}'), чтобы возвращал словарь (вместо списка), когда \_json недоступен.
- bpo-11830: Удалён ненужный код интроспекции в модуле decimal.
- bpo-11703: urllib2.geturl() не возвращает корректный URL, если исходный URL содержит #fragment.
- bpo-10019: Исправлен регресс в модуле json, когда отступ 0 переставал добавлять новые строки и вёл себя как None.
- bpo-11186: pydoc игнорирует модуль, если его имя содержит суррогатный символ в индексе модулей.
- bpo-11815: Использовать облегчённую SimpleQueue для очереди результатов в concurrent.futures.ProcessPoolExecutor.
- bpo-5162: Обрабатывать службы как замороженные исполняемые файлы, чтобы разрешить порождение дочерних процессов из multiprocessing.forking в Windows.
- logging.basicConfig теперь поддерживает опциональный аргумент «handlers», принимающий итерируемый объект с обработчиками для добавления к корневому логгеру. Также в basicConfig добавлены дополнительные проверки параметров.
- bpo-11814: Исправлена вероятная опечатка в multiprocessing.Pool.\_terminate().
- bpo-11747: Исправлено форматирование диапазонов в difflib.context\_diff() и difflib.unified\_diff().
- bpo-8428: Исправлено состояние гонки в multiprocessing.Pool при завершении рабочих процессов: новые процессы могли порождаться во время остановки пула. Патч от Charles-François Natali.
- bpo-2650: re.escape() больше не экранирует символ ‘\_’.
- bpo-11757: select.select() теперь вызывает ValueError при передаче отрицательного таймаута (ранее вызывалась ошибка select.error с EINVAL). Патч от Charles-François Natali.
- bpo-7311: исправлен html.parser для принятия не-ASCII значений атрибутов.
- bpo-11605: email.parser.BytesFeedParser некорректно преобразовывал составные подчасти с 8-битным CTE в Unicode вместо сохранения байтов.
- bpo-1690608: email.util.formataddr теперь поддерживает RFC 2047: добавлен параметр charset, по умолчанию равный utf-8, который используется как кодировка для RFC 2047, когда realname содержит не-ASCII символы.
- bpo-10963: Обеспечено, что subprocess.communicate() никогда не вызывает EPIPE.
- bpo-10791: Реализован отсутствующий метод GzipFile.read1(), позволяющий оборачивать GzipFile в TextIOWrapper. Патч от Nadeem Vawda.
- bpo-11707: Добавлена быстрая C-версия functools.cmp\_to\_key(). Патч от Filip Gruszczyński.
- bpo-11688: Добавлен sqlite3.Connection.set\_trace\_callback(). Патч от Torsten Landschoff.
- bpo-11746: Исправлен SSLContext.load\_cert\_chain() для принятия закрытых ключей на эллиптических кривых.
- bpo-5863: Переписан BZ2File на чистом Python, теперь он может принимать файлоподобные объекты с помощью нового аргумента конструктора `fileobj`. Патч от Nadeem Vawda.
- unittest.TestCase.assertSameElements удалён.
- sys.getfilesystemencoding() вызывает RuntimeError, если initfsencoding() ещё не был вызван: позволяет выявлять проблемы начальной загрузки (startup) на раннем этапе.
- bpo-11393: Добавлен новый модуль faulthandler.
- bpo-11618: Исправлена логика таймаута в threading.Lock.acquire() в Windows.
- Удалён аргумент ‘strict’ у email.parser.Parser, который был устаревшим начиная с Python 2.4.
- bpo-11256: Исправлен inspect.getcallargs для функций, принимающих только именованные аргументы.
- bpo-11696: Исправлена генерация ID в msilib.
- itertools.accumulate теперь поддерживает необязательный аргумент *func* для пользовательской бинарной функции.
- bpo-11692: Удалены ненужные демонстрационные функции в модуле subprocess.
- bpo-9696: Исправлено некорректное возбуждение исключения xdrlib.Packer.pack\_int при попытке упаковать отрицательное (допустимое) целое число.
- bpo-11675: Объекты multiprocessing.\[Raw\]Array, созданные из целочисленного размера, теперь обнуляются при создании. Это соответствует поведению, описанному в документации.
- bpo-7639: Исправлена генерация коротких имён файлов в bdist\_msi
- bpo-11635: Не использовать опрос (polling) в рабочих потоках и процессах, запускаемых concurrent.futures.
- bpo-5845: Автоматически считывать конфигурацию readline для включения автодополнения в интерактивном режиме.
- bpo-6811: Разрешено importlib изменять атрибут co\_filename объекта кода, чтобы он соответствовал текущему пути к исходному коду, а не месту, откуда объект кода был первоначально получен.
- bpo-8754: Использовать repr имени модуля в сообщениях об ошибках importlib.
- bpo-11591: Предотвращать изменение sys.path при “import site”, если python был запущен с -S.
- collections.namedtuple() теперь добавляет атрибут \_source к сгенерированному классу. Это делает исходный код более доступным по сравнению с устаревшей опцией “verbose”, которая выводит его в stdout, но не предоставляет строку исходного кода.
- bpo-11371: Пометить сообщения об ошибках getopt как локализуемые. Патч от Filip Gruszczyński.
- bpo-11333: Добавлен \_\_slots\_\_ в ABC коллекций.
- bpo-11628: Класс, создаваемый cmp\_to\_key, должен использовать \_\_slots\_\_.
- bpo-11666: help() теперь отображает атрибуты и методы именованного кортежа, которые начинаются с подчёркивания.
- bpo-11662: urllib и urllib2 теперь игнорируют перенаправления, если схема не HTTP, HTTPS или FTP (CVE-2011-1521).
- bpo-5537: Исправлены функции time2isoz() и time2netscape() из httplib.cookiejar для года истечения срока больше 2038 на 32-битных системах.
- bpo-4391: Использование правильных форм множественного числа gettext в optparse.
- bpo-11127: Возбуждение TypeError при попытке сериализовать объект сокета.
- bpo-11563: Заголовок `Connection: close` теперь отправляется запросами через класс URLOpener, что помогает закрывать сокеты после завершения соединения. Патч предоставлен Jeff McNeil и Nadeem Vawda.
- bpo-11459: Значение `bufsize` равное 0 в subprocess.Popen() действительно создаёт небуферизованные каналы, так что select() работает с ними корректно.
- bpo-5421: Исправлено вводящее в заблуждение сообщение об ошибке, когда один из аргументов socket.sendto() имеет неверный тип. Патч от Nikita Vetoshkin.
- bpo-10812: Добавлены дополнительные функции POSIX в модуль os.
- bpo-10979: Буферизация stdout в unittest теперь работает с настройкой и завершением классов и модулей.
- bpo-11243: Исправлены методы запроса параметров Message для работы, если заголовки содержат незакодированные не-ASCII данные.
- bpo-11401: Исправлена обработка заголовков без значения; это исправляет регрессию относительно Python2, и теперь результат такой же, как в Python2.
- bpo-9298: Тела в base64 не сворачивались до длины строки менее 78, что было регрессией относительно Python2. В отличие от Python2, последняя строка свёрнутого тела теперь заканчивается символом возврата каретки.
- bpo-11560: shutil.unpack\_archive теперь корректно обрабатывает параметр format. Патч от Evan Dandrea.
- bpo-5870: Добавлена константа [`subprocess.DEVNULL`](https://python-all.ru/3.4/library/subprocess.html#subprocess.DEVNULL).
- bpo-11133: Исправлены два случая, когда inspect.getattr\_static мог вызывать выполнение кода. Патч от Andreas Stührk.
- bpo-11569: Использование абсолютного пути к команде sysctl в multiprocessing, чтобы гарантировать её нахождение независимо от shell PATH. Это обеспечивает работу multiprocessing.cpu\_count на стандартных установках MacOSX.
- bpo-11501: disutils.archive\_utils.make\_zipfile больше не завершается ошибкой, если zlib не установлен. Вместо этого используется сжатие zipfile.ZIP\_STORED для создания ZipFile. Патч от Natalia B. Bidart.
- bpo-11289: Класс `smtp.SMTP` теперь является контекстным менеджером, поэтому его можно использовать в операторе `with`. Предоставлено Giampaolo Rodola.
- bpo-11554: Исправлена поддержка японских кодировок; ранее кодировка тела вывода не выполнялась, если euc-jp или shift-jis были указаны как charset.
- bpo-11407: `TestCase.run` возвращает используемый или созданный объект результата. Предоставлено Janathan Hartley.
- bpo-11500: Исправлена ошибка в коде обхода прокси OS X для полностью квалифицированных IP-адресов в списке исключений прокси.
- bpo-11491: dbm.error больше не возбуждается, когда dbm.open вызывается с флагом «n» и файл существует. Поведение соответствует документации и общей логике.
- bpo-1162477: Корректировка принципа Постела в разборе дат email: обработка того факта, что некоторые несовместимые MUA используют ‘.’ вместо ‘:’ в спецификациях времени.
- bpo-11131: Исправлен знак нуля в операциях плюс и минус decimal.Decimal, когда режим округления – ROUND\_FLOOR.
- bpo-9935: Ускорение сериализации экземпляров пользовательских классов.
- bpo-5622: Исправлен curses.wrapper для возбуждения правильного исключения, если инициализация curses не удалась.
- bpo-11408: В threading.Lock.acquire() вызов gettimeofday() производится только когда действительно необходимо. Патч от Charles-François Natali.
- bpo-11391: Запись в объект mmap, созданный с `mmap.PROT_READ|mmap.PROT_EXEC`, приводила к ошибке сегментации вместо возбуждения TypeError. Патч от Charles-François Natali.
- bpo-9795: Добавлена поддержка протокола контекстного менеджера для класса nntplib.NNTP.
- bpo-11306: модуль mailbox в некоторых случаях адаптируется к невозможности открыть определённые файлы в режиме чтения-записи. Ранее он обнаруживал это по ошибке EACCES, теперь также проверяет EROFS.
- bpo-11265: модуль asyncore теперь корректно обрабатывает ошибки EPIPE, EBADF и EAGAIN при вызовах accept(), send() и recv().
- bpo-11377: функция platform.popen() объявлена устаревшей и переписана через os.popen().
- bpo-8513: на UNIX модуль subprocess поддерживает строку команды в виде bytes.
- bpo-10866: добавлена функция socket.sethostname(). Первоначальная реализация – Ross Lagerwall.
- bpo-11140: метод Lock.release() теперь возбуждает RuntimeError при попытке освободить незахваченную блокировку, как и указано в документации threading. Исключение \_thread.error теперь является псевдонимом RuntimeError. Патч от Filip Gruszczyński. Патч для \_dummy\_thread от Aymeric Augustin.
- bpo-8594: модуль ftplib теперь предоставляет параметр source\_address для указания локального адреса (address, port), к которому необходимо привязаться перед подключением.
- bpo-11326: добавлена недостающая реализация connect\_ex() для SSL-сокетов, и она работает для неблокирующих подключений.
- bpo-11297: добавлен collections.ChainMap().
- bpo-10755: добавлена функция posix.flistdir(). Патч от Ross Lagerwall.
- bpo-4761: добавлено семейство функций `*at()` (openat() и др.) в модуль posix. Патч от Ross Lagerwall.
- bpo-7322: попытка чтения из файлоподобного объекта сокета после истечения таймаута теперь вызывает ошибку вместо молчаливой потери данных.
- bpo-11291: poplib.POP больше не подавляет ошибки при вызове quit().
- bpo-11177: аргументы метода create\_socket() модуля asyncore теперь можно опускать.
- bpo-6064: добавлен именованный аргумент `daemon` в конструкторы threading.Thread и multiprocessing.Process для возможности переопределить поведение по умолчанию, при котором свойство daemonic наследуется от текущего потока/процесса.
- bpo-10956: классы буферизированного ввода-вывода повторяют попытку чтения или записи после получения сигнала и успешного возврата из обработчика.
- bpo-10784: новые функции os.getpriority() и os.setpriority().
- bpo-11114: исправлена катастрофическая производительность метода tell() для текстовых файлов (в некоторых случаях до 1000 раз быстрее). Однако он всё ещё на один-два порядка медленнее, чем tell() для двоичных файлов.
- bpo-10882: добавлена функция os.sendfile.
- bpo-10868: разрешено использование метода register абстрактного базового класса в качестве декоратора класса.
- bpo-11224: исправлен регресс в tarfile, который затрагивал файлоподобные объекты, возвращаемые методом TarFile.extractfile(), в части производительности, потребления памяти и ошибок при работе с потоковым интерфейсом.
- bpo-10924: добавлены соль и Modular Crypt Format в библиотеку crypt. Старая обёртка на C перенесена в \_crypt, и добавлена обёртка на Python с улучшенной генерацией соли и упрощённым API для генерации паролей.
- bpo-11074: модуль tokenize теперь можно перезагружать.
- bpo-11085: абстрактные базовые классы collections перенесены в отдельный модуль collections.abc по образцу importlib.abc. Для обратной совместимости имена импортируются в модуль collections.
- bpo-4681: разрешена работа mmap() с файлами размером и смещениями больше 4 ГБ, даже в 32-битных сборках. Первоначальная реализация Ross Lagerwall, адаптирована для 32-битной Windows.
- bpo-11169: модуль compileall использует repr() для форматирования имён файлов и путей, чтобы экранировать суррогатные символы и отображать пробелы.
- bpo-11089: исправлена проблема производительности, ограничивающая использование ConfigParser() с большими конфигурационными файлами.
- bpo-10276: исправлены результаты zlib.crc32() и zlib.adler32() для буферов размером более 4 ГБ. Патч от Nadeem Vawda.
- bpo-11388: добавлен метод clear() в MutableSequence
- bpo-11174: добавлен argparse.MetavarTypeHelpFormatter, который использует имена типов для названий опциональных и позиционных аргументов в сообщениях справки.
- bpo-9348: генерировать раннюю ошибку, если nargs и metavar в argparse не совпадают.
- bpo-9026: исправлен порядок подкоманд argparse в сообщениях справки.
- bpo-9347: Исправлено форматирование кортежей в сообщениях об ошибках типа= в argparse.
- bpo-12191: Добавлена функция shutil.chown() для смены владельца (пользователя и/или группы) заданного пути с указанием их имён.
- bpo-13988: Ускоритель \_elementtree используется, когда доступен. Теперь xml.etree.cElementTree становится устаревшим псевдонимом для ElementTree.

### Сборка

- bpo-6807: Запуск msisupport.mak выполняется раньше.
- bpo-10580: Небольшое изменение грамматики в установщике Windows.
- bpo-13326: Корректная очистка каталогов \_\_pycache\_\_ на OpenBSD.
- PEP 393: удалена опция configure –with-wide-unicode.
- bpo-12852: Установлено значение \_XOPEN\_SOURCE равным 700 вместо 600 для получения функций POSIX 2008 на OpenBSD (например, fdopendir).
- bpo-11863: Удалена поддержка устаревших систем, объявленных таковыми в Python 3.2 (следуя PEP 11). Это системы, использующие Mach C Threads, легковесные процессы SunOS, потоки GNU pth и потоки IRIX.
- bpo-8746: Исправлены ошибочные проверки configure, чтобы os.chflags() и os.lchflags() снова собирались на системах, поддерживающих эти функции (BSD и OS X). Также добавлены новые флаги файлов stat для OS X (UF\_HIDDEN и UF\_COMPRESSED).
- bpo-10645: Установка Python больше не создаёт файл Python-X.Y.Z-pyX.Y.egg-info в каталоге lib-dynload.
- При сборке sqlite3 больше не происходит случайного включения каталога с sqlite.h дважды.
- bpo-11217: Для универсальных сборок framework Mac OS X (64-бит/32-бит) обеспечено создание символических ссылок «make install» в каталоге –prefix bin для файлов «-32» в каталоге framework bin, как это делает установщик.
- bpo-11347: Используется –no-as-needed при линковке libpython3.so.
- bpo-11411: Исправлена работа «make DESTDIR=» с относительным путём назначения.
- bpo-11268: Предотвращение сбоя установщика Mac OS X, если пакет Documentation был ранее установлен.
- bpo-11495: Поддержка OSF устранена. Она была объявлена устаревшей в Python 3.2.

### IDLE

- bpo-14409: IDLE теперь корректно выполняет команды в окне Shell, когда не может прочитать обычные файлы конфигурации при запуске и вынужден использовать встроенные назначения клавиш по умолчанию. Ранее была ошибка в одном из значений по умолчанию.
- IDLE можно запускать как python -m idlelib
- bpo-3573: IDLE зависает при передаче недопустимых аргументов командной строки (каталог(и) вместо файла(ов)) (Патч от Guilherme Polo)
- bpo-14200: Краш оболочки IDLE при выводе не-BMP символа Unicode.
- bpo-5219: Предотвращение каскада обработчиков событий в IDLE.
- bpo-964437: Окно справки IDLE сделано немодальным. Патч от Guilherme Polo и Roger Serwy.
- bpo-13933: Автодополнение IDLE не работало с некоторыми импортированными модулями, например, hashlib. (Патч от Roger Serwy)
- bpo-13506: Добавлен '' в путь для оболочки IDLE при запуске и перезапуске с помощью Restart Shell. Исходные патчи от Marco Scataglini и Roger Serwy.
- bpo-4625: Если IDLE не может записать в файл последних файлов или файлы точек останова, отображается всплывающее сообщение и работа продолжается, а не аварийно завершается. Исходный патч от Roger Serwy.
- bpo-8641: Обновлена подсветка синтаксиса IDLE 3 для распознавания b”..” и не распознавания u”..”. Патч от Tal Einat.
- bpo-13296: Исправлена ошибка IDLE: теперь флаги compile \_\_future\_\_ очищаются при перезапуске оболочки. (Патч от Roger Serwy)
- bpo-9871: Предотвращение краша IDLE 3 при передаче байтовых строк с недопустимыми шестнадцатеричными escape-последовательностями, например, b'x0'. (Исходный патч от Claudiu Popa.)
- bpo-12636: IDLE читает coding cookie при выполнении скрипта Python.
- bpo-12540: Предотвращение появления процессов-зомби IDLE в Windows из-за изменений в os.kill().
- bpo-12590: Окно редактора IDLE теперь всегда отображает первую строку при открытии длинного файла. В Tk 8.5 первая строка была скрыта.
- bpo-11088: больше не происходит аварийного завершения при использовании F5 для запуска скрипта в IDLE на MacOSX с Tk 8.5.
- bpo-1028: Tk возвращает недопустимый нулевой символ Unicode в %A: UnicodeDecodeError. При Tk \< 8.5 функция \_tkinter.c:PythonCmd() вызывала UnicodeDecodeError, что приводило к выходу из IDLE. Теперь в PythonCmd() выполняется преобразование в допустимый нулевой символ Unicode.
- bpo-11718: диалог открытия модуля в IDLE не мог найти файл \_\_init\_\_.py в пакете.

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

- bpo-14053: теперь patchcheck.py («make patchcheck») работает с патчами MQ. Патч от Francisco Martín Brugué.
- bpo-13930: 2to3 теперь может записывать преобразованные выходные файлы в другое дерево каталогов, а также копировать неизменённые файлы и изменять расширение файла. Смотрите новые опции -o, -W и –add-suffix. Это делает его более полезным во многих рабочих процессах автоматического преобразования кода.
- bpo-13628: python-gdb.py теперь может извлекать больше фреймов в трассировке Python, если Python оптимизирован.
- bpo-11996: libpython (gdb): команда «py-bt» заменена на «py-bt-full», добавлена более умная команда «py-bt», печатающая классическую трассировку Python.
- bpo-11179: восстановлена работа ccbench под Python 3.1 и 2.7.
- bpo-10639: reindent.py больше не преобразует символы новой строки и будет вызывать ошибку при попытке преобразовать файл со смешанными символами новой строки. Добавлена опция «–newline» для указания символа новой строки.

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

- bpo-16847: исправлено некорректное использование \_PyUnicode\_CheckConsistency() в сборках без pydebug. Теперь несколько модулей расширения чисто компилируются при включённых assert() в стандартных сборках (флаг -DDEBUG).
- bpo-13840: исправлено сообщение об ошибке, выдаваемое ctypes.create\_string\_buffer при передаче строки Unicode.
- bpo-9975: socket: исправлено некорректное использование flowinfo и scope\_id. Патч от Vilmos Nebehaj.
- bpo-7777: socket: добавлена поддержка надёжных дейтаграммных сокетов (PF\_RDS).
- bpo-13159: FileIO и BZ2Compressor/BZ2Decompressor теперь используют стратегию роста буфера с линейным временем вместо квадратичного.
- bpo-10141: socket: добавлена поддержка SocketCAN (PF\_CAN). Первоначальный патч от Matthias Fuchs, обновлён Tiago Gonçalves.
- bpo-13070: исправлено аварийное завершение, когда TextIOWrapper, попавший в циклическую ссылку, финализировался после того, как сборщик мусора очищал ссылку на writer его базового BufferedRWPair.
- bpo-12881: ctypes: исправлено аварийное завершение (segfault) при длинных именах полей структуры.
- bpo-13058: ossaudiodev: исправлена утечка файлового дескриптора при ошибке. Патч от Thomas Jarosch.
- bpo-13013: ctypes: исправлена утечка ссылки в PyCArrayType\_from\_ctype. Спасибо Suman Saha за обнаружение ошибки и предоставление патча.
- bpo-13022: исправлено: \_multiprocessing.recvfd() не проверяет, был ли файловый дескриптор фактически получен.
- bpo-1172711: добавлена поддержка ‘long long’ в модуль array. Первоначальный патч от Oren Tirosh и Hirokazu Yamamoto.
- bpo-12483: ctypes: исправлено аварийное завершение, когда уничтожение объекта колбэка вызывает сборщик мусора.
- bpo-12950: исправлена передача файловых дескрипторов в multiprocessing под OpenIndiana/Illumos.
- bpo-12764: исправлено аварийное завершение в ctypes, когда имя поля Structure не является строкой.
- bpo-11241: теперь можно наследовать подклассы ctypes.Array.
- bpo-9651: исправлено аварийное завершение, когда ctypes.create\_string\_buffer(0) передавался некоторым функциям, например file.write().
- bpo-10309: определён \_GNU\_SOURCE, чтобы mremap() получала правильную сигнатуру. Без этого на архитектурах, где sizeof(void\*) != sizeof(int), происходили ошибки. Патч предоставлен Hallvard B Furuseth.
- bpo-12051: исправлено аварийное завершение (segfault) в json.dumps() при кодировании сильно вложенных объектов с использованием ускорений на C.
- bpo-12017: исправлено аварийное завершение (segfault) в json.loads() при декодировании сильно вложенных объектов с использованием ускорений на C.
- bpo-1838: предотвращено аварийное завершение (segfault) в ctypes, когда \_as\_parameter\_ в классе устанавливается на экземпляр того же класса.

### Тесты

- bpo-13125: подавлен ложный вывод test\_lib2to3 в не-подробном режиме. Патч от Mikhail Novikov.
- bpo-13447: добавлен тестовый файл для регрессионных тестов на ошибки в скриптах из каталога Tools.
- bpo-10881: Исправлена ошибка test\_site при сборках фреймворка OS X.
- bpo-13901: Предотвращены сбои test\_distutils на OS X при –enable-shared.
- bpo-13862: Исправлен ложный сбой test\_zlib из-за несовпадения минорных версий во время выполнения и компиляции.
- bpo-12804: Исправлены сбои test\_socket и test\_urllib2net при запуске тестов в системе без доступа в Интернет.
- bpo-13726: Исправлен неоднозначный флаг -S в regrtest. Для медленных тестов используется -o/–slow.
- bpo-11659: Исправлено ResourceWarning в test\_subprocess, возникшее в результате #11459. Патч от Ben Hayden.
- bpo-11577: Исправлено ResourceWarning, вызванное улучшенным покрытием тестов binhex.
- bpo-11509: Значительно увеличено покрытие тестами fileinput. Патч от Denver Coneybeare на PyCon 2011 Sprints.
- bpo-11689: Исправлена ошибка области видимости переменной в тесте sqlite3.
- bpo-13786: Удалена нереализованная длинная опция ‘trace’ из regrtest.py.
- bpo-13725: Исправлено распознавание документированного флага -d в regrtest. Патч от Erno Tukia.
- bpo-13304: Пропуск тестового случая, если отключены пользовательские site-packages (-s или PYTHONNOUSERSITE). (Патч от Carl Meyer).
- bpo-5661: Добавлен тест обработки ECONNRESET/EPIPE в test\_asyncore. Патч от Xavier de Gaye.
- bpo-13218: Исправлены сбои test\_ssl на Debian/Ubuntu.
- Повторно включены тесты test\_parser.py из lib2to3, хотя и с ожидаемым сбоем (см. [issue #13125](https://python-all.ru/3.4/whatsnew/changelog.html)).
- bpo-12656: Добавлены тесты для IPv6 и Unix-сокетов в test\_asyncore.
- bpo-6484: Добавлены модульные тесты для модуля mailcap (патч от Gregory Nofi).
- bpo-11651: Улучшены цели тестирования в Makefile для более быстрого выполнения большей части тестового набора. Опция –multiprocess теперь включена по умолчанию, что сокращает время, необходимое для запуска тестов. «make test» и «make quicktest» теперь включают некоторые ресурсоёмкие тесты, но больше не запускают тестовый набор дважды для проверки ошибок генерации .pyc. Tools/scripts/run\_test.py предоставляет простой платформонезависимый способ запуска тестового набора с разумными настройками по умолчанию.
- bpo-12331: Тестовый набор для модуля packaging теперь можно запускать из установленного Python.
- bpo-12331: Тестовый набор для lib2to3 теперь можно запускать из установленного Python.
- bpo-12626: В regrtest добавлена возможность фильтрации тестов с помощью glob-фильтра через опцию `-m` (или `--match`). Это работает со всеми тестовыми случаями, использующими модуль unittest. Полезно для длинных тестовых наборов, таких как test\_io или test\_subprocess.
- bpo-12624: Теперь можно завершить выполнение после первой же ошибки при работе в подробном режиме (`-v` или `-W`), используя опцию `--failfast` (или `-G`) в regrtest. Полезно для длинных тестовых наборов, таких как test\_io или test\_subprocess.
- bpo-12587: Исправлен некорректный тестовый файл и ссылка в test\_tokenize. (Патч от Robert Xiao).
- bpo-12573: Добавлены проверки ресурсов для висящих объектов потоков и процессов.
- bpo-12549: Исправлен test\_platform, чтобы он не выдавал сбой, когда OS X возвращает ‘x86\_64’ в качестве типа процессора на некоторых Mac-системах.
- Пропуск сетевых тестов, когда getaddrinfo() возвращает EAI\_AGAIN, что означает временную ошибку разрешения имён.
- bpo-11812: Устранена временная ошибка сокета при подключении к ‘localhost’ в test\_telnetlib.py.
- Устранена потенциальная взаимоблокировка в test\_telnetlib.py. Связано с [issue #11812](https://python-all.ru/3.4/whatsnew/changelog.html).
- Предотвращён сбой test\_robotparser при нестабильной работе mueblesmoraleda.com и перенаправлении через чересчур ревностный DNS-сервис (например, OpenDNS) на сайт-заполнитель.
- Предотвращён сбой test\_urllibnet.test\_bad\_address, когда какой-либо чересчур ревностный DNS-сервис (например, OpenDNS) разрешает несуществующее доменное имя. Теперь тест просто пропускается.
- bpo-12440: При проверке возможности сброса некоторых битов в SSLContext.options проверяется версия заголовочных файлов OpenSSL, с которыми был скомпилирован Python, а не версия библиотеки OpenSSL во время выполнения.
- bpo-11512: Добавлен тестовый набор для модуля cgitb. Патч от Robbie Clemons.
- bpo-12497: Установлен каталог test/data, чтобы предотвратить сбои в различных тестах codecmaps.
- bpo-12496: Установлен каталог test/capath, чтобы предотвратить сбой теста test\_connect\_capath в test\_ssl.
- bpo-12469: Тесты wakeup и ожидающих сигналов запускаются в подпроцессе, чтобы тест выполнялся в новом процессе с одним потоком и не изменял обработку сигналов родительского процесса.
- bpo-8716: Предотвращение сбоев, вызванных Aqua Tk на OSX, при попытке запустить test\_tk или test\_ttk\_guionly от имени пользователя, не вошедшего в консольный windowserver (как может быть при использовании buildbot или ssh).
- bpo-12407: Явный пропуск test\_capi.EmbeddingTest в Windows.
- bpo-12400: regrtest -W больше не запускает тесты дважды, а вместо этого перехватывает вывод и отображает его при сбое. regrtest -v больше не выводит ошибку дважды, если есть только одна ошибка.
- bpo-12141: Установлены копии шаблонного файла модуля C, чтобы test\_build\_ext из test\_distutils и test\_command\_build\_ext из test\_packaging больше не пропускались молча при запуске вне каталога сборки.
- bpo-8746: Добавлены дополнительные тесты для os.chflags() и os.lchflags(). Патч от Garrett Cooper.
- bpo-10736: Исправлены сбои test\_ttk test\_widgets с Cocoa Tk 8.5.9 2.8+ на Mac OS X. (Патч от Ronald Oussoren)
- bpo-12057: Добавлены тесты для кодеков ISO 2022 (iso2022\_jp, iso2022\_jp\_2, iso2022\_kr).
- bpo-12096: Исправлено состояние гонки в test\_threading.test\_waitfor(). Патч написан Charles-François Natali.
- bpo-11614: import \_\_hello\_\_ выводит «Hello World!». Патч написан Andreas Stührk.
- bpo-5723: Улучшены тесты json для выполнения с ускорением и без.
- bpo-12041: Сделать test\_wait3 более надёжным.
- bpo-11873: Изменено регулярное выражение в test\_compileall для исправления редких сбоев, когда случайно сгенерированный временный путь совпадал с регулярным выражением.
- bpo-11958: Исправлены FTP-тесты для IPv6: привязка к ::1 вместо «localhost». Патч написан Charles-Francois Natali.
- bpo-8407: Исправлены тесты test\_io, использующие потоки и будильник: используется pthread\_sigmask(), чтобы гарантировать получение сигнала SIGALRM главным потоком. (См. также: bpo-11859)
- bpo-11811: Вынесено обнаружение поддержки IPv6 на текущем хосте и сделано доступным как `test.support.IPV6_ENABLED`. Патч от Charles-François Natali.
- bpo-10914: Добавлен минимальный тест встраивания в test\_capi.
- bpo-11223: Пропускать test\_lock\_acquire\_interruption() и test\_rlock\_acquire\_interruption() из test\_threadsignals, если блокировка потока реализована через мьютекс POSIX и условную переменную POSIX. Условная переменная POSIX не может быть прервана сигналом (например, в Linux системный вызов futex перезапускается).
- bpo-11790: Исправлены периодические сбои в test\_multiprocessing.WithProcessesTestCondition.
- Исправлена возможная ошибка «file already exists» при параллельном запуске тестов.
- bpo-11719: Исправлено сообщение о неожиданном пропуске test\_msilib на платформах, отличных от Windows. Патч от Nadeem Vawda.
- bpo-11727: Добавлена опция --timeout в regrtest: если тест выполняется дольше TIMEOUT секунд, выводит трассировку всех потоков и завершает работу.
- bpo-11653: исправлена совместная работа -W и -j в regrtest.
- Набор тестов для email теперь находится в пакете Lib/test/test\_email. Код тестового окружения также был модернизирован для поддержки новых возможностей unittest.
- regrtest теперь обнаруживает как тестовые пакеты, так и тестовые модули.
- bpo-11577: улучшено тестовое покрытие binhex.py. Патч от Arkady Koplyarov.
- Добавлен новый test\_crashers для проверки скриптов в каталоге Lib/test/crashers и подтверждения того, что они завершаются ожидаемым сбоем.
- bpo-11578: добавлен тест для модуля timeit. Патч от Michael Henry.
- bpo-11503: улучшено тестовое покрытие posixpath.py. Патч от Evan Dandrea.
- bpo-11505: улучшает тестовое покрытие string.py, повышает детализацию тестов string.Formatter. Первоначальный патч от Alicia Arlen.
- bpo-11548: Улучшено тестовое покрытие модуля shutil. Патч от Evan Dandrea.
- bpo-11554: Повторно активирован test\_email\_codecs.
- bpo-11505: Улучшено тестовое покрытие string.py. Патч от Alicia Arlen.
- bpo-11490: test\_subprocess.test\_leaking\_fds\_on\_error больше не даёт ложноположительного результата, если последний каталог в пути недоступен.
- bpo-11223: Исправлено test\_threadsignals: теперь он завершается ошибкой, а не зависает, когда используется реализация блокировок без семафоров в POSIX.
- bpo-10911: Добавлены тесты на CGI с не-ASCII символами. Патч написан Pierre Quentel.
- bpo-9931: Исправлены зависания в GUI-тестах в Windows при определённых условиях. Патч от Hirokazu Yamamoto.
- bpo-10512: Корректное закрытие сокетов в test.test\_cgi.
- bpo-10992: Обеспечено прохождение тестов под coverage.
- bpo-10826: Предотвращён спорадический сбой test\_subprocess на Solaris из-за файлов open door.
- bpo-10990: Предотвращено затирание установленной трассировочной функции тестами.

### C API

- bpo-13452: PyUnicode\_EncodeDecimal() больше не поддерживает обработчики ошибок, отличные от “strict”. Вызывающий код не мог вычислить размер выходного буфера: он зависит от обработчика ошибок.
- bpo-13560: Добавлены функции PyUnicode\_DecodeLocale(), PyUnicode\_DecodeLocaleAndSize() и PyUnicode\_EncodeLocale() в C API для декодирования/кодирования из/в текущую кодировку локали.
- bpo-10831: PyUnicode\_FromFormat() поддерживает форматы %li, %lli и %zi.
- bpo-11246: Исправлено PyUnicode\_FromFormat(“%V”): теперь байтовая строка декодируется из UTF-8 (с обработчиком ошибок replace) вместо ISO-8859-1 (в строгом режиме). Патч написан Ray Allen.
- bpo-10830: Исправлено PyUnicode\_FromFormatV(“%c”) для символов вне BMP в узкой сборке.
- Добавлены PyObject\_GenericGetDict и PyObject\_GeneriSetDict. Это универсальные реализации геттера и сеттера дескриптора `__dict__` для C-типов.
- bpo-13727: Добавлены 3 макроса для доступа к членам PyDateTime\_Delta: PyDateTime\_DELTA\_GET\_DAYS, PyDateTime\_DELTA\_GET\_SECONDS, PyDateTime\_DELTA\_GET\_MICROSECONDS.
- bpo-10542: Добавлены 4 макроса для работы с суррогатами: Py\_UNICODE\_IS\_SURROGATE, Py\_UNICODE\_IS\_HIGH\_SURROGATE, Py\_UNICODE\_IS\_LOW\_SURROGATE, Py\_UNICODE\_JOIN\_SURROGATES.
- bpo-12724: Добавлен макрос Py\_RETURN\_NOTIMPLEMENTED для возврата NotImplemented.
- PY\_PATCHLEVEL\_REVISION был удалён, поскольку с Mercurial он не имеет смысла.
- bpo-12173: Первый аргумент PyImport\_ImportModuleLevel теперь имеет тип `const char *` вместо `char *`.
- bpo-12380: PyArg\_ParseTuple теперь принимает bytearray для формата ‘c’.

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

- bpo-23006: Улучшена документация и индексация dict.\_\_missing\_\_. Добавлена запись в раздел специальных методов языковой модели данных. Пересмотрено и проиндексировано обсуждение в разделе stdtypes mapping/dict.
- bpo-13989: Документировано, что GzipFile не поддерживает текстовый режим, и добавлено более понятное сообщение об ошибке при открытии с неверной строкой режима.
- bpo-13921: Удалена документация и произведена очистка sqlite3.OptimizedUnicode, который устарел в Python 3.x. Теперь это псевдоним для str для обратной совместимости.
- bpo-12102: Документировано, что буферизованные файлы должны быть сброшены перед использованием с mmap. Патч от Steffen Daode Nurpmeso.
- bpo-8982: Улучшена документация для объекта Namespace модуля argparse.
- bpo-9343: Документировано, что родительские парсеры argparse должны быть настроены до своих дочерних.
- bpo-13498: Уточнена документация аргумента exist\_ok функции os.makedirs(). Выполнено с большой помощью носителя языка R. David Murray.
- bpo-13491: Исправлено множество ошибок в документации sqlite3. Первоначальный патч для #13491 от Johannes Vogel. (См. также: bpo-13995)
- bpo-13402: Документировано, что sys.executable является абсолютным путём.
- bpo-13883: PYTHONCASEOK также работает на OS X.
- bpo-9021: Добавлено введение в документацию модуля copy.
- bpo-6005: Примеры в документации библиотеки socket используют sendall вместо метода send, где это уместно.
- bpo-12798: Обновлена документация mimetypes.
- bpo-12949: Документирован аргумент kwonlyargcount для C API функции PyCode\_New.
- bpo-13513: Исправлена документация io.IOBase: ссылка теперь ведёт на метод io.IOBase.readline, а не на модуль readline.
- bpo-13237: Документация по подпроцессу реорганизована с акцентом на удобные функции и наиболее часто используемые аргументы Popen.
- bpo-13141: Продемонстрирован рекомендуемый стиль для примеров socketserver.
- bpo-11818: Исправлены примеры tempfile для Python 3.

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