2008-08-26 7 views
10

J'ai eu du mal à comprendre la traduction de PyPy. Cela ressemble à quelque chose de révolutionnaire simplement en lisant la description, mais j'ai du mal à trouver une bonne documentation sur la traduction d'un vrai morceau de code vers quelque chose comme LLVM. Est-ce qu'une telle chose existe? La documentation officielle de PyPy ne fait que survoler la fonctionnalité, plutôt que de fournir tout ce que je peux essayer moi-même.Où puis-je en savoir plus sur la fonction de traduction de PyPy?

Répondre

5

Ce document semble aller dans un peu de détails (et je pense une description complète est hors de portée pour une réponse stackoverflow):

L'idée générale de la traduction d'une langue à l'autre n'est pas particulièrement révolutionnaire, mais il n'a que récemment gagné en popularité/applicabilité dans des applications «du monde réel». GWT fait avec Java (génération Javascript) et il y a une bibliothèque pour traduire Haskell dans diverses autres langues (appelé YHC)

+1

Le lien est mort (PyPy déplacé). Est-ce le même document? http://pypy.readthedocs.org/en/latest/translation.html – leewz

+0

@leewangzhong C'est probablement le cas, mais je crains de ne pas savoir exactement à quoi ressemblait le lien original à ce stade. – rcreswick

+0

Oh oui, nous avons des moyens de le savoir. https://web.archive.org/web/20111227090444/http://codespeak.net/pypy/dist/pypy/doc/translation.html. Vous méritez une mise à jour de votre réponse? – leewz

2

Vous cherchez une traduction spécifique à Python, ou simplement le général "comment compilez-vous du code en bytecode"? Si ce dernier est votre cas, vérifiez the LLVM tutorial. Je trouve surtout le chapitre deux, qui vous apprend à écrire un compilateur pour votre propre langue, intéressant.

3

Traducteur PyPy est en général, pas destiné à une utilisation plus publique. Nous l'utilisons pour traduire notre propre interpréteur python (y compris JIT et GC, tous deux écrits en RPython, ce sous-ensemble restreint de Python). L'idée est qu'avec un bon JIT et GC, vous serez capable d'accélérer même sans connaître ou utiliser l'outil de traduction de PyPy (et plus important encore, sans en vous limitant à RPython).

Cheers, Fijal

1

Il ressemble à quelque chose d'absolument révolutionnaire de la simple lecture de la description,

Pour autant que je sache, PyPy est nouvelle dans le sens où il est le premier système expressément conçu pour mettant en œuvre langues. D'autres outils existent pour aider avec une grande partie du front-end, comme les générateurs d'analyseurs, ou pour le back-end, comme la génération de code, mais il n'existait pas grand chose pour connecter les deux.

Questions connexes