LINUX.ORG.RU

Google представила Grumpy — экспериментальный транскомпилятор Python в Go

 , , , ,


3

16

Google представила транскомпилятор и runtime для языка программирования Python — Grumpy. Инструмент планируется использовать в качестве замены CPython из-за плохой масштабируемости последнего.

Продукты компании содержат десятки миллионов строк Python-кода. Так, для фронт- и API-серверов сервиса YouTube, обрабатывающих миллионы запросов в секунду, до сих пор использовался CPython 2.7.

Grumpy позволит транспилировать Python-код в Go, который в свою очередь будет компилироваться в нативный. Из преимуществ подобного подхода — лучшая масштабируемость и совместимость с Go, что может в конечном итоге способствовать плавной миграции на этот ЯП.

>>> Подробности



Проверено: Shaman007 ()
Ответ на: комментарий от Bad_ptr

Two design choices we made had big consequences. First, we decided to forgo support for C extension modules. This means that Grumpy cannot leverage the wealth of existing Python C extensions but it gave us a lot of flexibility to design an API and object representation that scales for parallel workloads. In particular, Grumpy has no global interpreter lock, and it leverages Go’s garbage collection for object lifetime management instead of counting references.
...
Grumpy programs are compiled and linked just like any other Go program. ... interoperability with Go code becomes very powerful and straightforward: Grumpy programs can import Go packages just like Python modules

Bad_ptr ★★ ()
Последнее исправление: Bad_ptr (всего исправлений: 1)

транспилировать

Достаточно транслировать.

P.S. Аффтара трансклюкировать, ибо засорять русский язык калькированием transpiler'ов нинужно :)

quickquest ★★★★★ ()

CPython 2.7

Они очень сильно зафакапились с питоном 3, да? На него перешли только восторженные пионеры и какие-то случайные люди по-моему. При этом переписали огромную кучу своего барахла, а преимуществ получили ноль. Печалька. Питон был неплохим язычком, если сравнивать с пхп, перлом и руби. Но вот это состояние нахождения в двух версиях одновременно: 2.7 и 3.х, его убивает имхо.

Запили ли бы новую версию совместимой со старой - горя бы не знали. Наверное. Питон 4 совместимый с 2.7, кто-нибудь?

anonymous ()
Ответ на: комментарий от EXL

Для PHP завезли только крестцы.

Quercus есть. PHP на JVM. И куча менее живых поделок под разные платформы, типа .NET и т.п.

Но после появления HHVM и выхода PHP7 интерес к таким реализациям резко упал.

KRoN73 ★★★★★ ()

Меня вот это несколько смутило:

echo "print 'hello, world'" | make run


Они что, додумались обозвать транслятор Grumpy как make? :)

Update: А, торможу, они в корень своего репо положили Makefile :)

KRoN73 ★★★★★ ()
Последнее исправление: KRoN73 (всего исправлений: 1)

Из преимуществ подобного подхода — лучшая масштабируемость и совместимость с Go, что может в конечном итоге способствовать плавной миграции на этот ЯП.

Так вот в чём соль — всех питонистов «плавно» перетащить на Go.

На Python вроде бы уже тонны кода написаны — всё «перетранспилируют» в Go?

DeVliegendeHollander ★★ ()

Со скоростью какой-то просто мегафейл :) Скомпилировал под сабжем свой «объектный Фибоначчи». Для сравнения:

Go 1.6 — 0.755 сек.
PyPy 2.0.2 — 12.0 сек.
PHP 7.0.4 — 57.9 сек.
Python 2.7.5 — 129 сек.
Python 3.4.3 — 145 сек.
Сабж под Python 1.6.2... !!! — 676 сек.

KRoN73 ★★★★★ ()

Из преимуществ подобного подхода — лучшая масштабируемость и совместимость с Go, что может в конечном итоге способствовать плавной миграции на этот ЯП.

Вот почему это гавно пилят. Питонщики давайте дружно скажем: «Фу!», этой поделке. Пусть эффективные менеджеры Гуглятины соснут.

anonymous ()
Ответ на: комментарий от EXL

Ну хорошо, работать будет быстро. Наверное.

не наверно, а точно быстрее

меня только один момент смущает
в питоне есть ооп, а в гоу нет
мне интересно, что получится, если взять какую-нибудь питоновскую библиотеку, построенную на классах со всеми ооп-причиндалами и перевести на гоу, на что это будет похоже ?

kto_tama ★★★★★ ()
Ответ на: комментарий от anonymous

Ахахаха, да это ты соснешь со своей гвидоподелкой, бомж! У серьезных людей использование питона считается нормальным только когда это либо прототип, либо скорость не нужна ВООБЩЕ. В остальных случаях петон хуже жабы. __________________________ Эффективный менеджер гугла

anonymous ()
Ответ на: комментарий от menangen

Лучше Python -> Groovy

Груви (славный язычёк!) хоть и напоминает Пайтон — но у него есть главный недостаток: Не является целостным.

Допустим даже если позабудем про yield/await/async..

Так как Груви вызывает Ява-код — нередко можно попасть в КОМИЧЕСКУЮ ситуацию что Груви не знает какую выбрать функцию из нескольких перегруженных её вариантов (особенно когда аргумент null).

А также эта нелепость про то что в Груви — «магические» функции пишутся без __знаков_подчёркивания__ (то есть без явного указания их магичности). В итоге это может сработать как ожидалось, а может и сработать на вред (как повезёт:-))

user_id_68054 ★★★★★ ()
Ответ на: комментарий от anonymous

В чём факап? В том что очередную ноунейм-реализацию сделали совместимой с устаревшим говном? Так это проблема реализации, которую и так никто кроме автора использовать не будет. А так все новые проекты пишутся на троечке, да и старые мало-помалу её стали поддерживать.

anonymous ()
Ответ на: комментарий от anonymous

питон 3 был зарелизен в 2008 году, 8 лет назад. до сих пор никто не торопится ничего переписывать. лучше уже питон 4 подождать, чтобы два раза не переписывать, а лучше, в натуре, уже что-то другое использовать, у чего нет таких проблем.

питон внезапно стал чем-то вроде руби, которое лучше не использовать, чтобы голова о совместимости не болела. это всё печально.

anonymous ()
Ответ на: комментарий от DeVliegendeHollander

Так вот в чём соль — всех питонистов «плавно» перетащить на Go.

когда-то, где-то в 2000 году, рекламой питона было то, что его широко используют в гугле и это считалось мега-круто и всё такое. так что готовься, наверное.

anonymous ()
Ответ на: комментарий от Bad_ptr

На ОпенНете новость более развернутая:

Grumpy избавлен от ключевой проблемы Python - глобальной блокировки интерпретатора (GIL, Global Interpreter Lock), не допускающей параллельного выполнения нескольких нитей кода.

joy4eg ★★★★ ()
Ответ на: комментарий от anonymous

Гугля имеет привычку с большой помпой объявить про новую мегафичу, а потом тихонько ее придушить, если бабло не пошло. Уже не раз и не два обжигались. Посему очередной айронпайтон со вкусом гоу понаблюдаем со стороны пока.

Linfan ★★★★ ()
Ответ на: комментарий от anonymous

Запили ли бы новую версию совместимой со старой - горя бы не знали. Наверное. Питон 4 совместимый с 2.7, кто-нибудь?

Тебе то что? С первых слов понятно что ты в курсе о том, что ним происходит, только по новостям на лоре и плохо представляешь откуда исходит слышимый тобой звон (так же, как выучившие аббревиатуру из трех букв).

Проблемы от третьей ветки сравнимы с проблемами от стандартов C++XX и переходом на них (или использованию незнакомого тебе фреймворка при js-разработке, это вообще повсеместно и гимора от этого в разы больше). В основном это попаболь только для тех, кто уже привык к новому, а в проекте приходится писать по-старинке.

anonymoos ★★★★ ()