Pypy_logo

PyPy 2.5.0 já está disponível

O PyPy 2.5 foi liberado ontem (03/02) e vem com várias melhorias de desempenho e correções de bugs.

O PyPy é uma alternativa a outros interpretadores como CPython (o padrão), Jython e IronPython, e de acordo com os diversos benchmarks publicados, o mais rápido entre eles.

Novidades da versão

  • Dicionários agora são ordenados por padrão
  • Separação da documentação do PyPy e do RPython
  • Melhorado o tempo de inicialização
  • A troca de objetos entre C e o PyPy melhorou, o que melhorou o tempo de I/O
  • errno (e GetLastError, WSAGetLastError) agora é lançado o mais próximo possível da função que o chamou
  • Melhorias no suporte ao numpy. Mais especificamente o módulo linalg
  • Várias outras correções de bugs

Você pode fazer o download da nova versão aqui.

  • Daniel dos Santos

    “Dicionários agora são ordenados por padrão”

    Isso é um bug ou uma feature?

    • Alexandre Vicenzi

      Eu vejo mais como uma feature, pois entendo que a ordenação seja para melhorar a visualização dos valores, não algo tido como obrigatório para o funcionamento dos Dicionários.

      • Daniel dos Santos

        O problema é que dicionários e listas são estruturas de dados com comportamentos diferentes. Quando você leva o usuário a confiar em um comportamento que não é padrão você induz a introdução de um bug na hora de portar o software.

        As tabelas em Lua são arrays associativos (funcionam como dicionários, mas são usados também como listas). Até a versão 5.1 as tabelas mantinham a ordem em que os elementos eram inseridos, mas a partir da versão 5.2 o hash das tabelas passou a usar seed aleatório e os scripts dos nossos usuários que dependiam desse comportamento simplesmente pararam de funcionar.

        • Alexandre Vicenzi

          Sim, entendo. Mas se pensar no Python 2 para o 3 também a enormes problemas de compatibilidade, o que faz com que muitas pessoas fiquem na 2.7.

      • Daniel dos Santos

        Eu li o post deles sobre dicionários. A ordenação não é uma feature, apenas uma escolha de implementação pra melhorar a eficiência. É bom saber que eles estão preocupados com a portabilidade.

        “One surprising part is that the new design, besides being more memory efficient, is ordered by design: it preserves the insertion order. This is not forbidden by the Python language, which allows any order. It makes the collections.OrderedDict subclass much faster than before: it is now a thin subclass ofdict. Obviously, we recommend that any portable Python program continues to use OrderedDict when ordering is important. Note that a non-portable program might rely on more: for example, a **keywordsargument now receives the keywords in the same order as the one in which they were given in the call. ”

        http://morepypy.blogspot.com.br/2015/01/faster-more-memory-efficient-and-more.html

        • Alexandre Vicenzi

          Que bom que você encontrou essa explicação oficial.

  • Daniel dos Santos

    “Dicionários agora são ordenados por padrão”

    Isso é um bug ou uma feature?

    • Alexandre Vicenzi

      Eu vejo mais como uma feature, pois entendo que a ordenação seja para melhorar a visualização dos valores, não algo tido como obrigatório para o funcionamento dos Dicionários.

      • Daniel dos Santos

        O problema é que dicionários e listas são estruturas de dados com comportamentos diferentes. Quando você leva o usuário a confiar em um comportamento que não é padrão você induz a introdução de um bug na hora de portar o software.

        As tabelas em Lua são arrays associativos (funcionam como dicionários, mas são usados também como listas). Até a versão 5.1 as tabelas mantinham a ordem em que os elementos eram inseridos, mas a partir da versão 5.2 o hash das tabelas passou a usar seed aleatório e os scripts dos nossos usuários que dependiam desse comportamento simplesmente pararam de funcionar.

        • Alexandre Vicenzi

          Sim, entendo. Mas se pensar no Python 2 para o 3 também a enormes problemas de compatibilidade, o que faz com que muitas pessoas fiquem na 2.7.

      • Daniel dos Santos

        Eu li o post deles sobre dicionários. A ordenação não é uma feature, apenas uma escolha de implementação pra melhorar a eficiência. É bom saber que eles estão preocupados com a portabilidade.

        “One surprising part is that the new design, besides being more memory efficient, is ordered by design: it preserves the insertion order. This is not forbidden by the Python language, which allows any order. It makes the collections.OrderedDict subclass much faster than before: it is now a thin subclass ofdict. Obviously, we recommend that any portable Python program continues to use OrderedDict when ordering is important. Note that a non-portable program might rely on more: for example, a **keywordsargument now receives the keywords in the same order as the one in which they were given in the call. ”

        http://morepypy.blogspot.com.br/2015/01/faster-more-memory-efficient-and-more.html

        • Alexandre Vicenzi

          Que bom que você encontrou essa explicação oficial.

  • Daniel dos Santos

    “Dicionários agora são ordenados por padrão”

    Isso é um bug ou uma feature?

    • Alexandre Vicenzi

      Eu vejo mais como uma feature, pois entendo que a ordenação seja para melhorar a visualização dos valores, não algo tido como obrigatório para o funcionamento dos Dicionários.

      • Daniel dos Santos

        O problema é que dicionários e listas são estruturas de dados com comportamentos diferentes. Quando você leva o usuário a confiar em um comportamento que não é padrão você induz a introdução de um bug na hora de portar o software.

        As tabelas em Lua são arrays associativos (funcionam como dicionários, mas são usados também como listas). Até a versão 5.1 as tabelas mantinham a ordem em que os elementos eram inseridos, mas a partir da versão 5.2 o hash das tabelas passou a usar seed aleatório e os scripts dos nossos usuários que dependiam desse comportamento simplesmente pararam de funcionar.

        • Alexandre Vicenzi

          Sim, entendo. Mas se pensar no Python 2 para o 3 também a enormes problemas de compatibilidade, o que faz com que muitas pessoas fiquem na 2.7.

      • Daniel dos Santos

        Eu li o post deles sobre dicionários. A ordenação não é uma feature, apenas uma escolha de implementação pra melhorar a eficiência. É bom saber que eles estão preocupados com a portabilidade.

        “One surprising part is that the new design, besides being more memory efficient, is ordered by design: it preserves the insertion order. This is not forbidden by the Python language, which allows any order. It makes the collections.OrderedDict subclass much faster than before: it is now a thin subclass ofdict. Obviously, we recommend that any portable Python program continues to use OrderedDict when ordering is important. Note that a non-portable program might rely on more: for example, a **keywordsargument now receives the keywords in the same order as the one in which they were given in the call. ”

        http://morepypy.blogspot.com.br/2015/01/faster-more-memory-efficient-and-more.html

        • Alexandre Vicenzi

          Que bom que você encontrou essa explicação oficial.