Pyston 2 une implémentation de Python avec un compilateur JIT

Après une pause de trois ans dans le développement, le lancement du projet Pyston 2 a été publié, qu'est-ce que j'ai développéà une implémentation performante du langage Python en utilisant les développements du projet LLVM.

La mise en oeuvre se distingue par l'utilisation des technologies de compilation JIT modernes et vise à atteindre des performances élevées similaires aux langages système traditionnels tels que C ++.

Le code des versions précédentes par Pyston a été distribué sous la licence Apache, mais le code Pyston 2 n'est pas encore disponible et seules les versions prêtes à l'emploi sont publiées pour Ubuntu 18.04 et 20.04 (un fichier avec le code est disponible au téléchargement mais il n'y a qu'un stub avec des informations indiquant que le projet est toujours fermé).

La publication du code fait partie des plans des développeursmais ce sera fait après la formation du modèle d'entreprise de la nouvelle société et il a été décidé de continuer à développer Pyston sans le soutien financier de Dropbox.

À propos de Pyston 2

Contrairement aux versions précédentes, Pyston 2 est marqué stable et non en version d'essai. Beaucoup de travail a été fait pour optimiser les performances et Pyston 2 est maintenant plus rapide que le Python 3.8 d'origine d'environ 20% lors du passage à la suite de tests python-macrobenchmarks.

Les gains de performances les plus notables sont observés dans les charges de travail des applications Web inhérentes. Dans des tests séparés comme chaos.py et nbody.py, Pyston 2 surpasse Python 3.8 d'un facteur 2. Le coût d'utilisation de JIT est une légère augmentation de la consommation de mémoire.

Nous sommes très heureux de publier Pyston v2, une implémentation plus rapide et hautement compatible du langage de programmation Python. La version 2 est 20% plus rapide que le Python 3.8 standard dans nos macrobenchmarks. Plus important encore, il est probablement plus rapide dans votre code. Pyston v2 peut réduire les coûts du serveur, réduire les latences des utilisateurs et améliorer la productivité des développeurs.

Pyston v2 est facile à implémenter, donc si vous recherchez de meilleures performances Python, nous vous recommandons de prendre cinq minutes et d'essayer Pyston. Cela est l'un des moyens les plus simples d'accélérer votre projet.

En termes de compatibilité avec Python natif, le projet Pyston est présenté comme l'implémentation alternative la plus compatible pour CPython, puisque Pyston est un fork de la base de code CPython principale.

Piston prend en charge toutes les fonctions CPython, y compris l'API C pour développer des extensions C. Pyston a été initialement développé par Dropbox, qui en 2017 a décidé d'arrêter le développement interne. Début 2020, les meilleurs développeurs de Pyston ont fondé leur entreprise, complètement réinventé le projet et ont commencé à travailler chez Pyston à plein temps.

Les détails techniques sur le remplissage Pyston 2 ne sont pas encore fournis, seuls DynASM JIT, la mise en cache en ligne et les optimisations générales de CPython sont mentionnés. La version précédente de Pyston utilisait une méthode JIT à la fois, similaire au JIT dans les moteurs JavaScript modernes.

Dans JIT, le code Python a été analysé et traduit à une représentation intermédiaire LLVM (IR, Intermediate representation). De plus, la représentation IR a été traitée dans l'optimiseur LLVM et transmise au moteur LLVM JIT pour exécution, qui a converti la représentation IR en code machine.

Pour obtenir des informations sur les types de variables pour les programmes en langage dynamique Python, la technique de prédiction probabiliste des types d'objets a été utilisée, suivie de la clarification du choix correct du type lors de l'exécution.

Par conséquent, Pyston a constamment fait varier l'exécution entre deux branches: la rapide, lorsque les taux prédits sont confirmés, et la lente, qui est utilisée en cas de non-concordance de type.

Le travail pourrait être fait en mode multithread, permettant l'exécution en parallèle de plusieurs threads de code en langage Python et sans le verrou d'interpréteur global (GIL).

Enfin si vous voulez en savoir plus, vous pouvez vérifier les détails dans le lien suivant


Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont marqués avec *

*

*

  1. Responsable des données: Miguel Ángel Gatón
  2. Finalité des données: Contrôle du SPAM, gestion des commentaires.
  3. Légitimation: votre consentement
  4. Communication des données: Les données ne seront pas communiquées à des tiers sauf obligation légale.
  5. Stockage des données: base de données hébergée par Occentus Networks (EU)
  6. Droits: à tout moment, vous pouvez limiter, récupérer et supprimer vos informations.