Google открыл исходный код проекта Grumpy, транскомпилятора Python в Go. Разработка создавалась для ускорения работы YouTube, пишет Computing.
Необходимость разработки подобного инструмента появилась из-за желания Google улучшить работу YouTube. Большой проблемой оказалось эффективное выполнение множества параллельных задач в CPython (написанном на C стандартном интерпретаторе Python), с которым работает фронтенд видеосервиса, обрабатывающий миллионы запросов в секунду.
«Мы спросили себя: а что если создать альтернативную среду, оптимизированную для работы в реальном времени? Go показалась идеальной платформой для этого, потому что её характеристики подходят поставленной задаче», — рассказывает инженер YouTube Engineering Дилан Троттер.
Grumpy переводит код на Python в программы Go, которые отлично работают в собственной среде выполнения. Компании нужно было обеспечить высокую степень совместимости нового кода с CPython, чтобы Grumpy мог быстро стать новой средой для любого проекта, написанного на чистом Python.
В связи с этим Google пришлось пойти на две уступки. Во-первых, сервис лишился поддержки модулей расширений языка C. Во-вторых, Grumpy не интерпретатор — программы компилируются и связываются как любой Go-проект. C другой стороны, Grumpy способен импортировать как пакеты Go, так и модули Python.
Стоит отметить, что успех проекта среди Python-сообщества зависит от того, как быстро и качественно команда Google решит существующие проблемы. Одна из них — поддержка только старого синтаксиса Python 2.x, который теряет свою актуальность и лишится официальной поддержки к 2020 году.
Троттер согласен с наличием вопросов и отмечает, что, хотя код Grumpy и выпущен «в народ», проект остаётся на альфа-стадии и содержит много недоработок, искоренением которых занимается команда разработки.
Релоцировались? Теперь вы можете комментировать без верификации аккаунта.