Domanda

Da quello che ho visto e letto sui blog, PyPy è un progetto molto ambizioso. Quali sono alcuni vantaggi che porterà sul tavolo rispetto ai suoi fratelli (CPython, Jython e IronPython)? È la velocità, la compatibilità multipiattaforma (comprese le piattaforme mobili), la capacità di usare le estensioni c senza il GIL o è più un esercizio tecnico su cosa si può fare?

È stato utile?

Soluzione

PyPy è in realtà due progetti:

  • Una toolchain di compilatore di interpreti che consente di scrivere interpreti in RPython (un sottoinsieme statico di Python) e di compilare autonomi interpreti multipiattaforma, per JVM, per .NET (ecc.)
  • Un'implementazione di Python in RPython

Questi due progetti consentono molte cose.

  • Mantenere Python in Python è molto più facile che mantenerlo in C
  • Da una singola base di codice è possibile generare interpreti Python eseguiti su JVM, .NET e standalone, anziché avere più implementazioni leggermente incompatibili
  • Parte della toolchain del compilatore include un generatore sperimentale JIT (ora alla sua quinta incarnazione e che inizia a funzionare davvero bene) - l'obiettivo è che un PyPy JIT esegua molto più veloce di CPython
  • È molto più facile sperimentare le funzionalità del linguaggio fondamentale, come la rimozione di GIL, una migliore raccolta dei rifiuti, l'integrazione di stackless e così via

Quindi ci sono davvero molte ragioni per cui PyPy è eccitante e finalmente sta iniziando a mantenere tutte le sue promesse.

Altri suggerimenti

La caratteristica più importante è ovviamente il compilatore JIT. In CPython i file vengono compilati in bytecode ( .pyc ) o in bytecode ottimizzato ( .pyo ) e quindi interpretati. Con PyPy saranno compilati in codice nativo. PyPy include anche Patchless Python , incluso il suo impressionante caratteristiche (serializzazione tasklet, thread leggeri ecc.)

Nel caso in cui Python ottenga un vero JIT penso che sta per essere veloce come qualsiasi altra implementazione.

Il vantaggio è che è molto più semplice implementare nuove funzionalità. Lo si può vedere oggi osservando la biblioteca. Spesso i moduli vengono prima scritti in Python e poi tradotti in C.

  

compatibilità multipiattaforma

Si

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top