Viagem pelas VMs do python

Preview:

DESCRIPTION

Palestra apresentada na PyCampus 2010

Citation preview

Rodrigo P. M. de Araújo

rodrigo.araujo@veezor.com

Gerenciamento de memória

Gerenciamento de threads

Desempenho

Coleta de lixo

Global InterpreterLock

JIT (Just in Time)

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

Possui GIL

Não possui JIT

Coletor de lixo: Contagem de referências

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.

JIT (x86) – Custo de manutenção alto

PEP 3003 – Python LanguageMoratorium

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

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

Dynamic Language Runtime

SilverLight

Windows Forms

Interpretador Python escrito em Python

Interpretador Python escrito em RPython +ferramenta de tradução para RPython.

Subconjunto da linguagem Python

Permite inferência de tipos

Linguagem de alto nível

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

Ferramenta de tradução permite gerar código em: C

.Net

Java

Possibilidade de unificar o desenvolvimento do CPython, IronPython, Jython.

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

rodrigo.araujo@veezor.com

twitter.com/fenrrir