JIT-компилятор уберут из CPython после отзыва PEP 836
Экспериментальный JIT-компилятор, появившийся в CPython в 2024 году к выпуску 3.13, покидает проект. Его сопровождающие отозвали PEP 836, который должен был сделать JIT официально поддерживаемой частью интерпретатора. Это фактически ставит точку в разработке, некогда считавшейся многообещающей.
Предыстория
JIT добавил в CPython Брандт Бухер в начале 2024 года. Обычно столь крупные изменения принимаются только после одобрения PEP руководящим советом, однако Бухер ограничился докладом на спринте ключевых разработчиков. Написать документ его побудил член совета Томас Воутерс, который был также релиз-менеджером Python 3.13. В итоге Бухер и Саванна Островски подготовили PEP 744. Он имел лишь информационный статус и не означал формального консенсуса.
В июне совет приостановил работу над JIT в основной ветке. Он потребовал полноценный PEP со сроками, критериями успеха и ответами на вопросы о сопровождении, совместимости и влиянии на дистрибьюторов. На принятие документа отвели шесть месяцев, иначе код подлежал удалению. По словам Воутерса, единого повода для такого решения не было. Совет давно обсуждал, как JIT сочетается с инструментированием, отладкой и профилированием, а также с внешними проектами вроде CinderX, Numba и компилятора PyTorch.
PEP 836
Бухер, Островски и Кен Джин 3 июля опубликовали PEP 836 под названием «JIT Go Brrr». Многие участники обсуждения, в том числе Воутерс и Марк Шеннон, сочли, что документ стоило разделить на два. Авторы с этим не согласились.
21 сентября совет (без Островски, которая входит в его состав, но как соавтор не участвовала) признал, что PEP отвечает на все вопросы, хотя «некоторые ответы убедительнее других». Совет подчеркнул, что решает другой вопрос: продолжать ли эксперимент в основной ветке. Он перечислил десять пунктов для доработки, от расхода памяти до безопасности. По мнению совета, авторы были «чрезмерно оптимистичны» насчёт различий в поведении, заметных пользователям, а безопасности уделили недостаточно внимания. Проверку совместимости с популярными пакетами из PyPI авторы планировали провести к первому релиз-кандидату Python 3.17, то есть примерно в августе 2028 года. Совет назвал этот срок «слишком, слишком поздним».
Отзыв
19 октября Островски объявила об отзыве PEP. Она написала, что совет справедливо задаёт высокую планку, но у авторов нет сил продвигать текущую версию. При этом они по-прежнему верят в выбранное техническое направление, включая поддержку free-threaded-сборок, и опубликуют эталонную реализацию для всех желающих.
Бретт Кэннон пояснил, что работа прекращается в основном репозитории, а продолжится ли она где-то ещё, решит сообщество. Альтернативный PEP до истечения срока он считает маловероятным: все, кто активно развивал JIT, были авторами или участниками PEP 836. Код, вероятно, удалят в начале цикла разработки Python 3.16.
В комментариях читатели спросили, чем этот JIT лучше PyPy. Ответ в том, что PyPy — альтернативная реализация с рядом отличий, а здесь JIT должен был появиться в эталонном CPython и стать доступным всем новым версиям языка.
Источник: Lobsters
Комментарии
Войдите, чтобы комментировать.