Avec Grumpy, Google transforme le code Python en programme Go

Google a mis en Open Source Grumpy. Il s’agit d’un runtime capable de transformer le code Python en programme Go.

Google a présenté Grumpy, un projet Open Source, capable de traduire du code Python en programme Go. Cette idée est née pour résoudre un problème sur YouTube. En effet le serveur front-end du site de vidéo et ses API sont principalement écrits en Python et fonctionne sur CPython 2.7.

Avec cet environnement, Google est néanmoins confronté à un problème de performance. Ce n’est pas faute pourtant d’avoir fait des efforts pour améliorer cela, comme l’indique Dylan Trotter dans un billet de blog. Avec son équipe, il a cherché d’autres runtime Python comme Jython, PyPy ou IronPython, mais aucun n’a résolu le problème de performance.

Après avoir testé la concurrence, l’équipe s’est résolue à travailler sur leur propre runtime capable de gérer le temps réel. Les développeurs se sont vite penchés sur  Go, un langage de programmation compilé et concurrent de C et de Pascal créé par la maison mère Google. Et c’est ainsi qu’est né le projet Grumpy.

Grumpy : un runtime et un transcompilateur

Il se définit comme étant un runtime expérimental Python pour Go. Il traduit le code Python en programmes Go et ceux-ci s’exécutent de manière transparente dans le runtime Go. Grumpy est donc à la fois un transcompilateur et un runtime. Dylan Trotter explique : « Nous avions besoin de prendre en charge une grande base de code Python existant, il était donc important d’avoir un haut degré d’interopérabilité avec CPython. » Et d’ajouter que « l’objectif de Grumpy est de faciliter le remplacement à terme des projets en Python ».  Et les performances sont au rendez-vous comme le montre le graphique ci-dessous.

grumpy-benchmark

Une méthode que Google a choisi de partager avec la communauté en plaçant le code de Grumpy sur GitHub. Sollicité par un développeur sur la plateforme de repository sur le support de Python 3, Dylan Trotter a expliqué que « nous avons une grande base de code en Python 2.7 et nous allons nous concentrer là-dessus. Je voudrais supporter Python, mais c’est un travail énorme ». Nos confrères de The Register suggèrent une autre raison : la fin de vie pour Python 2.7 prévue en 2020. Plutôt qu’une migration vers Python 3 lente et fastidieuse, Google a préféré planifier au cours des prochaines années la conversion de son code Python en Go.

A lire aussi :

Salaire des développeurs : Ruby, Python et iOS rapportent

Dropbox améliore Pyston, son offre Python de hautes performances