Google создала Grumpy — транскомпилятор Python в Go

5 января 2017, 19:22

Google открыл исходный код проекта Grumpy, транскомпилятора Python в Go. Разработка создавалась для ускорения работы YouTube, пишет Computing.

Читать далее

Иллюстрация: dev.by

Необходимость разработки подобного инструмента появилась из-за желания 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 и выпущен «в народ», проект остаётся на альфа-стадии и содержит много недоработок, искоренением которых занимается команда разработки.

Обсуждение