O documento discute diferentes implementações da linguagem Python, incluindo CPython (a implementação de referência escrita em C), Jython (escrita em Java), IronPython (.NET), PyPy (escrita em Python) e como cada uma lida com aspectos como gerenciamento de memória, threads, desempenho e compatibilidade.
7. Implementação de referencia do Python
Versão atual 2.7.1 e 3.1.3(incompatível com a série 2)
Release 1.0 em 1994
Release 2.2 em Dezembro de 2001
Release 2.5 em Setembro de 2006
Multiplataforma
Número vasto de extensões
8.
9.
10. Possui GIL
Não possui JIT
Coletor de lixo: Contagem de referências
11. Códigos em C
“Difícil de manter”.
“Difícil modificar”.
Difícil voltar atrás na escolha do gerenciamento de
memória e threads.
17. Python + JVM
Anunciado em 26/11/2000
Jython 2.2 – 2007
Jython 2.5 – 2009
Não existe GIL
Vários algoritmos de coleta de lixo
Possui JIT
Interoperabilidade com eco-sistema Java
Sem suporte a extensões C
Multiplataforma
18.
19.
20.
21.
22.
23. Python + Microsoft .Net
Versão atual 2.6 / Python 2.6
Versão 2.7 em estágio beta
Não existe GIL.
Possui JIT
Vários algoritmos de coleta de lixo
Interoperabilidade com eco-sistema .Net
Suporte parcial a extensões C (IronClad)
Multiplataforma
31. Subconjunto da linguagem Python
Permite inferência de tipos
Linguagem de alto nível
32. Códigos de alto nível
Aspectos ortogonais são inseridos durante a tradução
Estratégia de coleta de lixo
Modelo de threads
JIT
Suporta vários algoritmos de coleta de lixo
Suporta mais de um modelo de threads
Vários tipos de JIT já foram implementados
33. Ferramenta de tradução permite gerar código em:
C
.Net
Java
Possibilidade de unificar o desenvolvimento do
CPython, IronPython, Jython.
34. Python + Python = Python
Anunciado em 2003
PyPy 1.0 – 2007 – Python 2.4
PyPy 1.4 – 2010 – Python 2.5
PyPy 1.5 – 2011 – Python 2.7
Possui GIL!!! # remoção programada
Possui JIT (x86, x86-64) # arm no release 1.5
Suporte parcial a extensões C (cpyext)
Multiplataforma