VM Python

Un article de Haypo.

(Différences entre les versions)
Version du 17 juillet 2012 à 21:47 (modifier)
Haypo (Discuter | Contributions)
(Inclure du code C et C++ dans Python)
← Différence précédente
Version du 18 juillet 2012 à 00:29 (modifier) (défaire)
Haypo (Discuter | Contributions)
(JIT)
Différence suivante →
Ligne 25 : Ligne 25 :
* [http://code.google.com/p/unladen-swallow/ Unladen Swallow]: fork de CPython 2.6 utilisant LLVM, n'est plus maintenu. Lire [http://qinsb.blogspot.com.au/2011/03/unladen-swallow-retrospective.html Unladen Swallow Retrospective] et la [http://python.org/dev/peps/pep-3146/ PEP 3146]. * [http://code.google.com/p/unladen-swallow/ Unladen Swallow]: fork de CPython 2.6 utilisant LLVM, n'est plus maintenu. Lire [http://qinsb.blogspot.com.au/2011/03/unladen-swallow-retrospective.html Unladen Swallow Retrospective] et la [http://python.org/dev/peps/pep-3146/ PEP 3146].
* [http://psyco.sourceforge.net/ psyco]: n'est plus maintenu. * [http://psyco.sourceforge.net/ psyco]: n'est plus maintenu.
 +
 +Voir aussi :
 +* [http://code.google.com/p/wpython/ WPython]: 16-bit word-codes instead of byte-codes
 +* [http://www.skulpt.org/ Skulpt]: Javascript implementation (incomplet, ex: pas d'exception)
 +* [http://kenai.com/projects/hope HoPe]: Python in Haskell
 +* [https://github.com/bjpop/berp/wiki/ Berp] : Python in Haskell
== Sous-ensemble de Python == == Sous-ensemble de Python ==

Version du 18 juillet 2012 à 00:29

Retour à la page précédente Retour à Python

Python est un langage. On peut compiler du Python pour donner du code machine i386, mais on peut aussi en faire du bytecode Java, ou plus couramment du bytecode pour la machine virtuelle CPython (l'interpréteur le plus connu).

Sommaire

VM

Voici donc une liste de machines virtuelles permettant d'exécuter du Python :

  • pypy : Implémentation de Python codée en Python qui se veut aussi rapide que l'implémentation en C, voir même plus en utilisant une analyse dynamique du code ...
  • Jython : Exécution dans une Java Virtual Machine (JVM, voir Java). Voir aussi le projet Jpype qui permet d'utiliser du Java dans Python.
  • IronPython : Dans une plateforme .NET avec intégration du Common Language Runtime (CLR)
  • Stackless Python
  • Hotpy et Hotpy 2: built using the GVMT (The Glasgow Virtual Machine Toolkit)

Voir aussi :

JIT

Voir aussi :

  • WPython: 16-bit word-codes instead of byte-codes
  • Skulpt: Javascript implementation (incomplet, ex: pas d'exception)
  • HoPe: Python in Haskell
  • Berp : Python in Haskell

Sous-ensemble de Python

Compiler en C++ ou C

Autres

  • numexpr : "The numexpr package evaluates multiple-operator array expressions many times faster than NumPy can."
  • Copperhead : Python vers GPU (Nvidia)
  • Perthon : Python vers Perl

Pseudo-Python vers C

  • Cython "Cython is a programming language based on Python, with extra syntax allowing for optional static type declarations.". Cython est basé sur pyrex.

Inclure du code C et C++ dans Python

  • PyInline permet d'ajouter du code source dans un autre langage directement dans un programme C, et de manière transparente.
  • weave : outil permettant d'inclure du code C/C++ dans du code Python

Optimiser Python

list2str : Petit histoire sur l'optimisation (en Python uniquement) d'une fonction très simple expliquant pourquoi ça va plus vite d'une version à l'autre de la fonction.

Compiler Python en un binaire (Windows / Unix)

Pour distribuer plus facilement Python, il est possible de combiner l'interprète CPython et le bytecode du projet dans un seul programme binaire.

Binaire Windows (PE) :

Binaire Unix (ELF)

  • freeze.py : Inclut dans Python apparement (?)

Articles connexes