Pergunta

Pelo que tenho visto e lido em blogs, PyPy é um projeto muito ambicioso. Quais são algumas das vantagens que trará para a mesa em relação aos seus irmãos (CPython, Jython e IronPython)? É velocidade, compatibilidade entre plataformas (incluindo plataformas móveis), a capacidade de usar o C-extensões sem a GIL, ou isso é mais um exercício técnico sobre o que pode ser feito?

Foi útil?

Solução

PyPy é realmente dois projetos:

  • Um compilador intérprete conjunto de ferramentas que lhe permite escrever intérpretes em RPython (um subconjunto estático de Python) e têm intérpretes de plataforma cruzada compilado autônomo, para a JVM, para .NET (etc)
  • Uma implementação de Python em RPython

Estes dois projectos permitem muitos coisas.

  • Manter Python em Python é muito mais fácil do que mantê-la em C
  • A partir de uma única base de código pode gerar intérpretes Python que executar na JVM, .NET e autônoma - ao invés de ter várias implementações ligeiramente incompatíveis
  • Parte do conjunto de ferramentas do compilador inclui um gerador JIT experimental (agora em sua quinta encarnação e começar a trabalhar muito bem) - a objetivo é para um JITed PyPy para executar muito mais rápido do que CPython
  • É muito mais fácil de experimentar com características fundamentais de linguagem - como remover o GIL, melhor coleta de lixo, integrando stackless e assim por diante

Portanto, há realmente um monte de razões para PyPy ser emocionante, e ele está finalmente começando a viver de acordo com todas as suas promessas.

Outras dicas

A característica mais importante é, naturalmente, o compilador JIT. Em CPython arquivos são compilados em bytecode (.pyc) ou bytecode otimizado (.pyo) e depois interpretado. Com PyPy eles serão compilados para código nativo. PyPy também inclui manchas Stackless Python , incluindo é impressionante apresenta (serialização tasklet, fios de luz etc.)

In case that Python gets a real JIT I think it's going to be as fast as any other implementation.

The advantage is that it's much easier to implement new features. One can see this today by observing the library. Often modules are written in Python first and then translated into C.

cross-platform compatibility

Yes

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top