• [^] # Re: Vitesse

    Posté par (site web personnel) . En réponse à la dépêche Actualités Python : PyPy 1.2, distutils2, vidéos de Pycon 2010, Python 2.7. Évalué à 10.

    J'ai l'impression que le jit a complètement changé la donne à ce niveau. Est-ce qu'il est envisageable que PyPy devienne l'implémentation de référence ?

    Unladen Swallow utilise un JIT et semble également plus rapide que CPython. Bien qu'Unladen Swallow soit un "simple" fork de CPython, le merge a été refusé (cf. ma dépêche).

    PyPy est un tout nouveau projet écrit depuis zéro. Bien qu'il soit compatible Python, il est conçu complètement différement de CPython. D'ailleurs, il est écrit en RPython (et Python) en non pas en C. Il n'est donc pas question de le merger dans CPython.

    Pour que PyPy devienne l'implémentation de référence, il faudrait qu'il soit apprécié par les utilisateurs puis tellement populaire qu'il rende CPython désuet. Or PyPy semble encore peu utilisé en production, voir pas du tout. Un ami m'a par exemple dit que le module distutils de PyPy est complètement bogué, or il est hyper important pour Python : sans ça, PyPy est inutilisable.

    Même si PyPy devient populaire, CPython et PyPy risquent de coexister très longtemps. Le mieux qui puisse se produire serait d'arriver à détacher la bibliothèque standard Python du projet CPython pour que ça devienne un projet à part entière. CPython sera un interprète tout nu. CPython, PyPy, Jython, Unladen Swallow, IronPython, ... utiliseraient tous la même bibliothèque standard plutôt que chacun utilise sa propre bibliothèque plus ou moins patchée dans son coin.

    CPython est l'implémentation de référence mais aussi celle qui apporte les nouveautés du langage et de la bibliothèque standard. Ça pose d'ailleurs problème : chaque implémentation est plus ou moins bien compatible avec CPython. CPython est par exemple la seule implémentation de Python3 ! Un moratoire a été voté pour interdire les modifications du langage (mais pas de la bibliothèque standard), ce qui devrait permettre à Python3 d'être adopté plus rapidement, et aux autres implémentations d'arriver au même niveau que CPython. Si CPython évolue sans arrêt, les autres implémentations n'arriveront jamais au même niveau.

    J'espère que ma longue réponse t'aura un peu éclairé :-)