Rodrigo P. M. de Araújo
rodrigo.araujo@veezor.com
Gerenciamento de memória
Gerenciamento de threads
Desempenho
Coleta de lixo
Global Interpreter
       Lock
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 Language
        Moratorium
 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

Viagem pelas VMs do python

  • 1.
    Rodrigo P. M.de Araújo rodrigo.araujo@veezor.com
  • 2.
  • 3.
  • 4.
  • 5.
  • 7.
     Implementação dereferencia 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
  • 10.
     Possui GIL Não possui JIT  Coletor de lixo: Contagem de referências
  • 11.
     Códigos emC  “Difícil de manter”.  “Difícil modificar”.  Difícil voltar atrás na escolha do gerenciamento de memória e threads.
  • 12.
     JIT (x86)– Custo de manutenção alto
  • 13.
    PEP 3003 –Python Language Moratorium
  • 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
  • 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
  • 26.
     Dynamic LanguageRuntime  SilverLight  Windows Forms
  • 29.
     Interpretador Pythonescrito em Python
  • 30.
     Interpretador Pythonescrito em RPython + ferramenta de tradução para RPython.
  • 31.
     Subconjunto dalinguagem Python  Permite inferência de tipos  Linguagem de alto nível
  • 32.
     Códigos dealto 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 detraduçã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
  • 36.
    rodrigo.araujo@veezor.com twitter.com/fenrrir