sexta-feira, 3 de junho de 2011

Traduções para Português, Alemão, Coreano e Chinês Tradicional

O translation project do Python Insider está aumentando! Estamos lançando traduções de Português, Alemão, Coreano e Chinês Tradicional. Os tradutores já começaram a publicar as postagens do original em inglês. Estas traduções em paralelo podem ficar um pouco atrasadas das postagens do Python Insider.

Novo módulo de detecção de falhas (faulthandler) do Python 3.3 ajuda no debugging

Quando um usuário relata que seu programa "dá pau", congela, às vezes você só pode tentar ajudar, obter maiores informações e tentar reproduzir o problema. Mesmo com informações detalhadas do usuário, programadores normalmente não são capazes de reproduzir o problema devido à diferenças de sistemas, tais como sistema operacional e compilador. Com sorte, o usuário pode instalar algumas ferramentas de debugging, mas na maioria das vezes você tem de esperar outras pessoas encontrarem o mesmo problema e dar maiores informações.

Erros Fatais

Um novo módulo, introduzido em Python 3.3, deve ajudar em situações semelhantes: faulthandler. faulthandler permite que um "traceback" seja salvo quando um erro fatal (fatal error) ocorrer, tais como "segmentation fault", divisão por zero, mensagens abortadas ou erro no "bus". Você pode ativá-lo dentro de um aplicativo usando o faulthandler.enable(), ou colocando a opção -X faulthandler no executável do Python, ou com a variável de sistema PYTHONFAULTHANDLER=1. Exemplo:

Fatal Python error: Segmentation fault

Current thread 0x00007f7babc6b700:
 File "Lib/test/crashers/gc_inspection.py", line 29 in g
 File "Lib/test/crashers/gc_inspection.py", line 32 in <module>
Segmentation fault

Timeout

faulthandler pode também salvar um "traceback" após algum tempo com faulthandler.dump_tracebacks_later(timeout). Ative-o novamente para reiniciar a contagem ou use faulthandler.cancel_dump_tracebacks_later() para parar a contagem. Exemplo:

Timeout (0:01:00)!
Current thread 0x00007f987d459700:
 File "Lib/test/crashers/infinite_loop_re.py", line 20 in <module>

Use a opção repeat=True para salvar um "tracebakc" a cada n segundos de timeout, ou exit=True para sair do programa imediatamente, de forma não segura, e.g. sem arquivos de saída.

Sinal do Usuário

Se você tem acesso ao computador que esteja rodando o programa, você ainda pode usar o faulthandler.register(signal) para instalar o gerente de sinais que salva o "traceback" quando o sinal é recebido. Em UNIX, por exemplo, você pode usar o sinal SIGUSR1: kill -USR1 <pid> salva o "traceback" atual. Este recurso não está disponível em Windows. Exemplo:

Current thread 0x00007fdc3da74700:
 File "Lib/test/crashers/infinite_loop_re.py", line 19 in <module>

Outra possibilidade é ativa explicitamente faulthandler.dump_traceback() no seu programa.

Problemas de segurança e o arquivo de saída

faulthandler é desativado por padrão, por razões de segurança, sobretudo porque ele arquiva a descrição do arquivo sys.stderr e salva os "tracebacks" no seu arquivo de descrição. Se o sys.stderr é fechado e o arquivo de descrição é reutilizado, o arquivo de descrição pode ser um "socket", um "pipe" ou arquivo crítico ou algo mais. Por padrão, faulthandler escreve "tracebacks" em sys.stderr, mas outro arquivo pode ser especificado. Para maiores informações, leia a documentação do faulthandler.

Módulos terceirizados para versões antigas de Python

faulthandler também mantido como um módulo terceirizado para Python 2.5 até 3.2 em PyPI. A maior diferença entre o Python 3.3 e o módulo terceirizado é a implementação do dump_tracebacks_later(): Python 3.3 usa uma "thread" com um alarme de tempo em um "lock", enquanto o módulo terceirizado usa SIGALRM e alarm().

O alarme de tempo do "lock" é uma novo recurso de Python 3.3, tem uma resolução de microssegundos. O contador de alarm() usado é usado em versões mais antigas, e o sinal do SIGALRM pode interromper a chamada de sistema atual, a qual falhará com um erro EINTR.

Sucesso Inicial

O novo módulo faulthandler já ajudou a localizar "race conditions" nos "buildbots". Esperamos que possam ajudar vocês com seus programas.

Traduções para Romeno e Chinês Simplificado

A equipe do Python Insider está bem feliz em anunciar mais dois blogs. Tradutores de Romeno e Chinês Simplificado se juntaram ao Translation Project, e já começaram a publicar as postagens da versão em Inglês. Como as outras traduções, estas edições paralelas podem ficar um pouco defasadas da versão original.

quinta-feira, 2 de junho de 2011

Jython migrou para Mercurial

Jython finalmente migrou de Subversion para Mercurial. Foi ums longa jornada: infelizmente, tivemos um repositório Subversion que foi um pouco trabalhoso para converter de maneira eficiente para o novo sistema de revisões.

O novo repositório Jython está localizado em

http://hg.python.org/jython

com um espelho no BitBucket for facilitar a bifurcação.

Há também um repositório "read-only" com ramos de recursos (convertidos com bookmarks Mercurial) em http://hg.python.org/jython-fullhistory

Mercurial também torna mais fácil contribuir para Jython, bifurque e nos ajude a criar Jython 2.6!

Python 3.3 vai deixar de suportar OS/2, Windows 2000 e VMS

De vez em quando chega o momento de eliminar alguns sistemas operacionais da lista de sistemas compatíveis para se ajustar à aquilo que os usuários têm usado. Também o número de desenvolvedores que contribuem para cada plataforma é significativo, já que é sempre necessário ter alguém a postos para que os novos lançamentos sejam na data correta e de qualidade. Outros fatores, tais como a idade do sistema operacional e os entraves para desenvolvimentos futuros também pesam na lista.

Victor Stinner recentemente propôs abandonar o suporte a OS/2 e VMS para CPython, um ano após a sua pergunta inicial sobre o suporte a OS/2. A questão inicial de Victor surgiu no momento em que ele trabalhava sem para em Unicode, mais especificamente em problemas com os.execvpe() e variáveis de sistema pela PEP 383 do surrogateescape. OS/2 e VMS no momento não estão representados no time de desenvolvedores e não são testados durante o processo de novos lançamentos da linguagem.

Ao escrever esta postagem, comecei a pensar sobre uma discussão anterior sobre deixar Windows 2000, o qual parecia cair no esquecimento. Sistemas com COMSPEC a command.com também estavam em processo de perda de suporte. A partir de agora ambos se juntam ao OS/2 e VMS. Windows 2000 também deixará de ter suporte, para que o trabalho de desenvolvimento seja mais simples, fazendo com que APIs antigas não sejam mais um problema, num sistema operacional que terminou seu ciclo em 2010.

De maneira a começar a deixar de suportar estes sistemas, estamos modificando a PEP 11.

PEP 11

Esta PEP delineia os sistemas operacionais que não são mais suportados e explica qual o processe de se adicionar um SO à lista.

Uma vez que se é decidido que um sistema deve ser removido, um anúncio formal da remoção é feito. Este anúncio é tradicionalmente feito para a versão que está em desenvolvimento, ou seja deixar o suporte para OS/2, VMS e Windows 2000 será feito para a versão Python 3.3.

O estágio inicial é feito automaticamente, como se levantar uma bandeira branca. O primeiro sinal é a falta de alguém disponível para manter o código e assegurar um lançamento de qualidade. Mudanças na compilação e instalação podem ser feitos para alertar usuários que a plataforma não é mais compatível. Uma nota então é colocada no documento "What's New" com a lista dos sistemas não mais suportados.

Após um ciclo de lançamentos sem suporte, a versão seguinte está pronta para remoção de código. Neste caso, código deve ser removido na versão 3.4. Provavelmente, não haverá uma remoção completa do código obsoleto, mas desenvolvedores que casualmente encontrem blocos #ifdef e seções configure obsoletos no código.

O que você pode fazer

Se você é usuário de OS/2 ou VMS, algumas coisas podem ser feitas para salvar sua plataforma.

Torne-se mantenedor

Nada é melhor para suporte do que um desenvolvedor ativo. Andrew MacIntyre tem sido o mantenedor de OS/2 já há algum tempo, e ele mencionou quando da pergunta inicial de Victor sobre OS/2, que o sistema está defasado quanto ai suporte de Unicode, e que essa deve ser uma área a ser trabalhada. Com relação a VMS, certo suporte existe pelo http://www.vmspython.org, mas com tem sido discutido no problema 11918, alguém tem de aparecer para manter o suporte a VMS.

Se você estiver interessado em assumir o desenvolvimento em uma das plataformas, dê uma olhada no developer's guide e veja o processo de desenvolvimento atual.

Contribua com um "build slave"

Com a presença de um mantenedor, plataformas têm uma maior chance de serem mantidas. Com um "build slave", as chances aumentam ainda mais, não só em ser mantida, mas também em qualidade.

Python usa o Buildbot para uma integração contínua, e "build slaves" são fornecidos para Linux, Mas, Windows e Open Indiana (Solaris), para várias versões, arquiteturas e configurações. Se você puder doar uma máquina ou tempo para manter OS/2 e VMS na lista de sistemas suportados, contate a lista python-dev.

quarta-feira, 1 de junho de 2011

Projeto de Tradução do Python Insider

Nós acreditamos que o conteúdo deste blog é muito útil à toda comunidade Python, e uma das nossas prioridades é atender o maior número de pessoas possíveis. De maneira a aumentar nosso alcance, organizamos um grupo de tradutores para criar versões em paralelo do blog em outras linguagens. Inicialmente, duas traduções foram incluídas: Japonês e Espanhol.

As traduções estarão um pouco atrasadas no começo em relação ao Python Insider, mas tentaremos atualizá-las.

Precisa-se de ajuda

As equipes de tradução ainda são pequenas, o que nos faz buscar pessoas que queiram se envolver. Precisamos de pessoas que possam ajudar nas traduções em qualquer língua. Interessados, favor contatar Doug Hellmann (doug dot hellmann at gmail).

terça-feira, 31 de maio de 2011

Conheça a Equipe: Brian Curtin

Esta postagem é parte da série "Conheça a Equipe", a qual tem a intenção de apresentar a equipe de desenvolvimento Python.

Nome:Brian Curtin
Localização:Chicago, IL
Página:http://blog.briancurtin.com/

Há quanto tempo você usa Python?

Diariamente, comecei há cerca de seis anos. Antes disso usava de vez em quando em matérias na faculdade e em estágios no verão.

Há quanto tempo você tem desenvolvido para a linguagem?

Há pouco mais de um ano. No dia 24 de Março completo um ano com o grupo.

Como você começou como desenvolvedor do núcleo de Python? Você se lembra da sua primeira contribuição?*

Comecei quando percebi um "bug" na documentação enquanto escrevia um módulo de extensão no trabalho, enviei um "patch" que foi inserido quase que imediatamente pelo Georg Brandl. Depois do meu sucesso inicial e um novo "checkout" do código fonte, eu quis me aprofundar e aprender mais sobre os módulos que eu usava e acabei escrevendo um "patch" para adicionar suporte de "context manager" no zipfile.

Minhas primeiras contribuições foram para acertos na documentação tentando simplificá-la. A primeira contribuição de código foi para adicionar novos recursos e melhorar a cobertura de testes no módulo winreg.

Em quais partes de Python você está trabalhando no momento?

Como um dos poucos usuários de Windows envolvidos no desenvolvimento de CPython, eu tento me concentrar nos problemas que usuários de Windows estejam tendo com Python. Por causa disso, eu tive a oportunidade de trabalhar em várias coisas da biblioteca padrão, incluindo módulos que eu nunca usei. Não fiz muita coisa com o interpretador propriamente dito, mas espero mudar.

Você utiliza Python para que quando não está trabalhando no núcleo da linguagem?

Eu crio uma variedade de ferramentas de teste para um banco de dados financeiro, o qual é programado em C++. Um módulo de extensão existe para a API, o que facilita o desenvolvimento de testes de regressão, performance; estamos sempre tentando incluir novas ferramentas.

O que você gosta de fazer quando não está programando?

Eu sou grande admirador de basebol. Eu oficio basebol entre faculdades durante a primavera, outras ligas durante o verão, e aproveito para assistir os jogos do Chicago Cubs.