Репост из: Находки в опенсорсе
JIT могут удалить из CPython!
PEP-836: https://peps.python.org/pep-0836
JIT в CPython имеет очень много проблем, давайте их обсудим.
Если вы все пропустили, то вот вам краткий таймлайн всей истории:
- В мае 2021 года создается команда Faster CPython, под руководством Гвидо в MS, которая должна работать над улучшением скорости CPython
- Где-то в 2022м году к команде присоединяется Brandt Butcher, автор первой версии JIT
- В октябре 2023 года, Brandt презентовал свою идею добавления JIT в CPython
- В январе 2024 года, PR был влит в 3.13, создана первая версия Copy-and-Patch JIT
- В апреле 2024 года релиз менеджеры и SC с таких новостей немного прифигели и попросили сделать PEP хотя бы пост-фактум: https://peps.python.org/pep-0744
- В октябре 2024 года выходит 3.13 с JITом, который можно включить опционально
- В мае 2025 года MS увольняет всех участников команды Faster CPython
- В октябре 2025 года выходит 3.14 с JIT бинарниками. Теперь можно было выбрать образ, который планируешь использовать. Free-Threading все еще не поддерживается
- В конце 2025 года добавлен Tracing JIT
- В июне 2026 года SC выпускает объявление, что работа над JIT полностью заморожена до момента пока: не будет опубликован четкий план развития JIT, конкретные метрики успешности проекта, дизайн АПИ (планировали подключать разные JITы в будущем, но от такой идеи отказались)
- В июле 2026 появляется PEP-836 с ответами на вопросы SC, пока его статус "ждет ответа от SC"
Что произойдет, если SC откажется от текущего PEP? Весь код JIT должен быть удален из 3.16+
Возможно ли такое? Вероятность мала, но она пока есть.
А что по скорости?
Перформанс - основная проблема текущего JITа. А точнее отсутствие перформанса.
Официальные цифры такие:
- В 3.13 разница была +-0%, потому что задача была по сути просто добавить инфру для дальнейших оптимизацией. Принимается.
- В 3.14 разброс был от -10% до +20% на разных кейсах. Говорить, что стало быстрее в общем - нельзя, потому надо замерять каждый кусок кода отдельно.
- В 3.15 наконец-то появилась заявленная цель в 5% среднего ускорения. Чего вроде бы добились на всех платформах. Где-то чуть лучше, где-то похуже. Но и кейсы ускорились не все.
- В 3.16 сейчас ставят цель в 10%, пока рано говорить об успешности
Все точные данные можно посмотреть на официальном сайте: https://www.doesjitgobrrr.com
Какие еще большие задачи ждут JIT?
- Необходимо добавить полную поддержку Free-Threading
- Увеличить покрытие тестами
- Добавить поддержку дебаггеров и профайлеров для JIT кода
Цели выше ставились для 3.15, их успешно продолбали. В том числе из-за необходимости писать PEP.
- Добавить 2х человек в команду
- Поддержать LLVM 22 и возможно другие версии
- Полноценная документация
- Возможно получится убрать build-time зависимость от LLVM для сборки JIT, как планировалось ранее
В работе прямо сейчас в рамках 3.16 релиза.
Итоги
Денег больше нет, команда работает на волонтерских началах, сроки жмут, начальство душит. Знакомо? 🌚
Но вера все еще живет!
Я приглашаю вас всех присоединяться к развитию JIT! Давайте вместе сделаем CPython быстрее.
Как? Открывайте задачки, читайте код, реализуйте оптимизации, улучшайте существующие, добавляйте thread-safety для FT, гоняйте бенчмарки, пишите тесты! Работы - буквально вагон.
Обсуждение: Верите ли вы в JIT в CPython? Готовы ли вы помочь?
Одной строкой
- В среду будет митап MoscowPython, где я буду выступать, приходите. Места для регистраций еще есть!
- Релизнули подкаст с @pylounge, поговорили про DMR, псиопы в разработке, общее ощущение усталости и упадка в мировом IT
| Поддержать | YouTube | GitHub | Чат |
PEP-836: https://peps.python.org/pep-0836
JIT в CPython имеет очень много проблем, давайте их обсудим.
Если вы все пропустили, то вот вам краткий таймлайн всей истории:
- В мае 2021 года создается команда Faster CPython, под руководством Гвидо в MS, которая должна работать над улучшением скорости CPython
- Где-то в 2022м году к команде присоединяется Brandt Butcher, автор первой версии JIT
- В октябре 2023 года, Brandt презентовал свою идею добавления JIT в CPython
- В январе 2024 года, PR был влит в 3.13, создана первая версия Copy-and-Patch JIT
- В апреле 2024 года релиз менеджеры и SC с таких новостей немного прифигели и попросили сделать PEP хотя бы пост-фактум: https://peps.python.org/pep-0744
- В октябре 2024 года выходит 3.13 с JITом, который можно включить опционально
- В мае 2025 года MS увольняет всех участников команды Faster CPython
- В октябре 2025 года выходит 3.14 с JIT бинарниками. Теперь можно было выбрать образ, который планируешь использовать. Free-Threading все еще не поддерживается
- В конце 2025 года добавлен Tracing JIT
- В июне 2026 года SC выпускает объявление, что работа над JIT полностью заморожена до момента пока: не будет опубликован четкий план развития JIT, конкретные метрики успешности проекта, дизайн АПИ (планировали подключать разные JITы в будущем, но от такой идеи отказались)
- В июле 2026 появляется PEP-836 с ответами на вопросы SC, пока его статус "ждет ответа от SC"
Что произойдет, если SC откажется от текущего PEP? Весь код JIT должен быть удален из 3.16+
Возможно ли такое? Вероятность мала, но она пока есть.
А что по скорости?
Перформанс - основная проблема текущего JITа. А точнее отсутствие перформанса.
Официальные цифры такие:
- В 3.13 разница была +-0%, потому что задача была по сути просто добавить инфру для дальнейших оптимизацией. Принимается.
- В 3.14 разброс был от -10% до +20% на разных кейсах. Говорить, что стало быстрее в общем - нельзя, потому надо замерять каждый кусок кода отдельно.
- В 3.15 наконец-то появилась заявленная цель в 5% среднего ускорения. Чего вроде бы добились на всех платформах. Где-то чуть лучше, где-то похуже. Но и кейсы ускорились не все.
- В 3.16 сейчас ставят цель в 10%, пока рано говорить об успешности
Все точные данные можно посмотреть на официальном сайте: https://www.doesjitgobrrr.com
Какие еще большие задачи ждут JIT?
- Необходимо добавить полную поддержку Free-Threading
- Увеличить покрытие тестами
- Добавить поддержку дебаггеров и профайлеров для JIT кода
Цели выше ставились для 3.15, их успешно продолбали. В том числе из-за необходимости писать PEP.
- Добавить 2х человек в команду
- Поддержать LLVM 22 и возможно другие версии
- Полноценная документация
- Возможно получится убрать build-time зависимость от LLVM для сборки JIT, как планировалось ранее
В работе прямо сейчас в рамках 3.16 релиза.
Итоги
Денег больше нет, команда работает на волонтерских началах, сроки жмут, начальство душит. Знакомо? 🌚
Но вера все еще живет!
Я приглашаю вас всех присоединяться к развитию JIT! Давайте вместе сделаем CPython быстрее.
Как? Открывайте задачки, читайте код, реализуйте оптимизации, улучшайте существующие, добавляйте thread-safety для FT, гоняйте бенчмарки, пишите тесты! Работы - буквально вагон.
Обсуждение: Верите ли вы в JIT в CPython? Готовы ли вы помочь?
Одной строкой
- В среду будет митап MoscowPython, где я буду выступать, приходите. Места для регистраций еще есть!
- Релизнули подкаст с @pylounge, поговорили про DMR, псиопы в разработке, общее ощущение усталости и упадка в мировом IT
| Поддержать | YouTube | GitHub | Чат |