Google выпустила Grumpy для трансляции кода Python на язык Go и лучшей производительности
1Иллюстрация с сайта Google Open Source Blog
Вчера компания Google сообщила о выпуске экспериментальной среды исполнения кода Python на языке Go, которая получила название Grumpy.
В инфраструктуре Google задействованы миллионы строк кода на Python. Например, frontend-сервер, обслуживающий youtube.com и различные API этого сервиса, в основном написаны на Python и обслуживают миллионы запросов в секунду. Фронтенд YouTube запущен на CPython 2.7, что привело инженеров Google к необходимости «выполнять огромную работу по улучшению исполняемой среды и адаптации приложения для оптимальной работы в этой среде». Несмотря на то, что их усилия приносили определённые результаты, постоянно возникала проблема производительности в CPython при обслуживании большого числа одновременных процессов. Для её решения были исследованы многие исполняемые среды Python: у каждой из них были обнаружены свои плюсы и минусы, но в итоге в Google пришли к необходимости созданию своей runtime, специально оптимизированной для задач реального времени. Так появился проект Grumpy.
Grumpy от Google — это не просто ещё одна исполняемая среда (runtime) для Python, а транскомпилятор кода Python в код Go. Транслированные с помощью Grumpy приложения могут (без необходимости в дальнейшей модификации) запускаться в среде языка Go: «Для нас было необходимо обеспечить поддержку большой существующей кодовой базе Python, поэтому важно иметь высокую степень совместимости с CPython. Цель Grumpy — служить любому проекту, написанному на чистом Python, готовой заменой для среды исполнения».
У Grumpy есть некоторые ограничения — например, отсутствует поддержка модулей расширения к Python на языке Си. Но есть и примечательные достоинства — в частности, отсутствие глобальной блокировки интерпретатора и использование сбора мусора Go для управления жизненным циклом объектов (вместо подсчёта указателей). «Мы считаем, что у Grumpy есть потенциал более гладкого масштабирования, чем с CPython, для многих реальных нагрузок», — заявляют в Google, подтверждая своё мнение результатами одного из тестов производительности (см. иллюстрацию к новости).
Исходный код Grumpy написан на языках Python и Go, опубликован на GitHub на условиях свободной лицензии Apache License 2.0.
Постоянная ссылка к новости: http://www.nixp.ru/news/13903.html. Дмитрий Шурупов по материалам Google Open Source Blog.
Django 2.0 — крупное обновление популярного веб-фреймворка на Python
SciPy 1.0 — обновление Open Source-экосистемы для математики и науки на Python 1 1
NGINX Unit — новый сервер приложений и основа для service mesh от создателей веб-сервера nginx 1
GCC 7.1 — крупное обновление свободных компиляторов к 30-летию проекта
Apache Libcloud 2.0.0 — новая версия Open Source-библиотеки для доступа к облачным провайдерам
Go 1 — первый крупный релиз языка программирования от Google 4 6
Последние комментарии
- OlegL, 17 декабря в 15:00 → Перекличка 21
- REDkiy, 8 июня 2023 года в 9:09 → Как «замокать» файл для юниттеста в Python? 2
- fhunter, 29 ноября 2022 года в 2:09 → Проблема с NO_PUBKEY: как получить GPG-ключ и добавить его в базу apt? 6
- Иванн, 9 апреля 2022 года в 8:31 → Ассоциация РАСПО провела первое учредительное собрание 1
- Kiri11.ADV1, 7 марта 2021 года в 12:01 → Логи catalina.out в TomCat 9 в формате JSON 1