Почему это новые выпуски Python 3 на более старых версиях Python 3?

Прямо сейчас на странице «Все выпуски» веб-сайта Python Software Foundation ссылка «Загрузить последний выпуск» указывает на версию Python 3.6.4. Однако вы можете найти на странице, что выпуск от 2017-12-19, и с тех пор было два других выпуска для Python 3.5.5 и Python 3.4.8.

Я понимаю, почему существуют две параллельные версии Python с 3 и 2.7, но я не понимаю, почему они являются несколькими версиями Python 3, поскольку они должны быть обратно совместимы с кодом Python 3.

Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
4
0
224
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Python 3.x не обязательно обратно совместим. Например, в Python 3.6 была введена строковая интерполяция, также известная как f-строка. В python 3.5 были введены подсказки типа, которые не были обратно совместимы со старыми версиями 3.x.

Python 3.5 - это обратно совместимый с кодом, написанным для 3.4, независимо от того, поддерживает ли он аннотации или нет. Очевидно, что обратное неверно, код, написанный для 3.5, может не работать на Python 3.4. Это немного обратное объяснение, которое также не касается вопроса о параллельных выпусках.

deceze 19.03.2018 16:01

Под подсказками типа вы имеете в виду PEP-3107?

bipll 19.03.2018 16:07
Ответ принят как подходящий

x.y.Z точечные релизы обычно релизы с исправлением ошибок.
Выпуски x.Y обычно являются выпусками функций, но могут содержать обратную несовместимость незначительный. Релизы X - это большие изменения, которые могут нарушить большую часть существующего кода.

На практике вы не всегда можете сразу обновить версию x.Y; Причины варьируются от фактической несовместимости кода, которую нельзя быстро исправить, до внутренних ограничений развертывания и причин планирования. Дистрибутивы Linux также часто распространяют одну конкретную версию x.Y, а следующая версия появится только через год в годовом цикле выпуска или около того. Однако версии x.y.Z часто появляются в ближайшее время и обычно могут быть установлены без нарушения существующего кода.

Причина, по которой несколько версий x.y.Z поддерживаются параллельно, заключается в том, что пользователи хотят воспользоваться преимуществами исправления ошибок без необходимости обновления до новой основной версии.

Страница Python Цикл разработки описывает, как python поддерживает версии. Вот несколько фрагментов:

17.1.1. In-development (main) branch

The master branch is the branch for the next feature release; it is under active development for all kinds of changes: new features, semantic changes, performance improvements, bug fixes.

17.1.2. Maintenance branches

A branch for a previous feature release, currently being maintained for bug fixes. There are usually two maintenance branches at any given time: one for Python 3.x and one for Python 2.x.

17.1.3. Security branches

A branch less than 5 years old but no longer in maintenance mode is a security branch. The only changes made to a security branch are those fixing issues exploitable by attackers such as crashes, privilege escalation and, optionally, other issues such as denial of service attacks.

Таким образом, помимо основной ветки, получающей обновления новых функций, существует обслуживающая ветка, получающая общие исправления ошибок для каждого из Python 2 и 3, а также ряд других веток, получающих исправления безопасности. Когда применяются исправления ошибок / безопасности, версия микро / патча (третье число в версии) увеличивается. Вот снимок того, как это выглядело на момент написания, из того же документа:

17.1.4. Summary

There are 6 open branches right now in the Git repository:

  • the master branch accepts features and bugs fixes for the future 3.8.0 feature release (RM: Łukasz Langa)
  • the 3.7 branch accepts bug, regression, and doc fixes for the upcoming 3.7.0 feature release (RM: Ned Deily)
  • the 3.6 branch accepts bug fixes for future 3.6.x maintenance releases (RM: Ned Deily)
  • the 3.5 branch accepts security fixes for future 3.5.x security releases (RM: Larry Hastings)
  • the 3.4 branch accepts security fixes for future 3.4.x security releases (RM: Larry Hastings)
  • the 2.7 branch accepts bug fixes for future 2.7.x maintenance releases (RM: Benjamin Peterson)

Другие вопросы по теме