[Brasil-PM] Perl 5.20.0 Lançado! \o/

Renato Santos renato.cron em gmail.com
Sexta Maio 30 07:48:03 PDT 2014


Ricardo,

eu não cheguei a usar a 5.18 pois eu sabia que quebrou alguns modulos do
CPAN, mas eles seriam atualizados alguma hora, principalmente os utilizados
por muita gente.

Não cheguei a completar meu Bundle do 5.16 no 5.20, e tambem instalei sem
testes no que deu, depois desisti e mandei rodar o "cpanm -n --installdeps
." nos projetos que queria testar, pois eu tenho muita coisa a mais no 5.16.

Como eu não rodei os testes, eu não se mais coisa quebrou, até porque eu
não teria como comparar isso com o 5.16. Isso é trabalho do CPAN Testers:
http://static.cpantesters.org/

Tem alguns modulos (não lembro nome agora, acho que aqueles que usam
o berkeley db) dão um certo trabalho pra passar nos testes.


mas podemos ver modulo por modulo aqui:
http://www.cpantesters.org/distro/C/Catalyst-Devel.html#Catalyst-Devel-1.39

eu não recomendo sair colocando versões novas assim na produção, mas nem é
por causa do código do perl, e sim por causa de todos os modulos do CPAN
que ainda não se atualizaram com alguma coisa deprecated, principalmente os
XS.


2014-05-30 11:37 GMT-03:00 Ricardo Stock <ricardostock em bol.com.br>:

>   Gente uma pequena pergunta.
>
> Eu achei realmente fantastico a nova versão do perl, principalmente pela
> parte de assinatura de funções... isso eu sempre achei falta no perl. Mas
> vendo os graficos e o teste do Renato, fica a dúvida.
>
> Vale a pena atualizar agora visto que “EU” ainda não vi possiveis
> problemas que podem surgir com os códigos já em produçao, e passar por um
> trabalho e risco por ganho de micro segundos, pode não vir a ser agora uma
> boa ideia. Visto que hoje meu gargalo esta na conexão e não no
> processamento.
>
> Alguem tem alguma informação sobre possiveis problemas de
> incompatibilidade que possam existir entre as versoes 5.16 e a 5.20.
> Pergunto isso por experiencia, pois quando atualizei o módulo json tive um
> trabalho danado.
>
> Valeu.
>
>  *From:* Renato Santos <renato.cron em gmail.com>
> *Sent:* Friday, May 30, 2014 2:18 AM
> *To:* Perl Mongers do Brasil, uni-vos! <brasil-pm em pm.org>
> *Subject:* Re: [Brasil-PM] Perl 5.20.0 Lançado! \o/
>
>  Pessoas,
>
> depois de fazer alguns testes utilizando o programa ab para medir o tempo
> de resposta médio de alguns endpoints,
> e tambem de observar a CPU utilizada no final do 'forkprove' em alguns
> projetos, rodando no perl 5.20 e depois no 5.16, eu observei pouca, mas
> existente, perda de velocidade.
> Fiquei com isso na cabeça, pois todo mundo dizendo que está mais rápido, e
> não consegui ver isso na pratica. então, fui fazer um teste separado, sem
> todo o ambiente do catalyst, pois como há muitos modulos, alguns do meu
> 5.16 poderiam estar desatualizados em relação ao 5.20.
>
> pois bem,
> fiz o seguinte script:
>
>  use 5.14.2;
> use warnings;
> use Dumbbench;
> use Dumbbench::CPUFrequencyPinner;
> use Dumbbench::BoxPlot;
> require Dumbbench::BoxPlot;
>
> my $opt = '/home/renato/perl5/perlbrew/perls/perl-5.16.2/bin/perl';
> my $unopt = '/home/renato/perl5/perlbrew/perls/perl-5.20.0/bin/perl';
>
> my $code = <<'HERE';
> my %a;
> $a{rand(2)}++ for 1..100000;
> foreach my $x (keys %a){
>     $a{$x} = $a{$x} * -1;
> }
> foreach my $x (reverse keys %a){
>     delete $a{$x};
> }
> HERE
>
> my $db = Dumbbench->new(
>   target_rel_precision => 0.005,
>   initial_runs         => 20,
> );
>
> $db->add_instances(
>   Dumbbench::Instance::Cmd->new(command => [$unopt, '-e', $code],
>                                 name => "5.20"),
>   Dumbbench::Instance::Cmd->new(command => [$opt, '-e', $code],
>                                 name => "5.16"),
> );
>
> SCOPE: {
>   # Pin CPU frequency down to reduce variability
>   my $p = Dumbbench::CPUFrequencyPinner->new;
>   $SIG{INT} = sub {undef $p; exit;};
>   $p->set_max_frequencies($p->min_frequencies->[0]);
>   $db->run;
> }
>
> $db->report;
> use DDP; p $db;
> $db->box_plot->show();
>
> Estou anexado o resultado em grafico,
> se quiserem que eu rode mais testes, com outros codigos dentro do HERE
> vocês me avisem, pois o libROOT é ~meio~ demorado pra compilar.
>
>
>
>
>
> 2014-05-28 21:24 GMT-03:00 Renato Santos <renato.cron em gmail.com>:
>
>>  perl-5.20.0 is successfully installed.
>>
>>
>> hora de fazer o
>>
>>    perl -MCPAN -e autobundle
>>
>> e verificar os ganhos de performance em apps reais!
>>
>>
>> 2014-05-28 15:19 GMT-03:00 Daniel de Oliveira Mantovani <
>> daniel.oliveira.mantovani em gmail.com>:
>>
>> garu++
>>>
>>> Eu ainda não me conformo com a ida da Diana, parece que foi ontem que
>>> nós enchemos a cara no Rio!
>>>
>>> 2014-05-28 14:27 GMT-03:00 Thiago Rondon <thiago em aware.com.br>:
>>>  > Garu++
>>> >
>>> > Você deveria jogar este teu e-mail como artigo em portais de
>>> > desenvolvedores e tecnologia.
>>> >
>>> > Isto é excelente para mostrar como a linguagem vem se desenvolvendo!
>>> >
>>> > Alias, seus e-mails, são artigos. ;-)
>>> >
>>> > Abs,
>>> > -Thiago Rondon
>>> >
>>> >
>>> > 2014-05-28 2:00 GMT-03:00 breno <breno em rio.pm.org>:
>>> >> Oi pessoal,
>>> >>
>>> >> é realmente uma ótima época para o Perl 5. A comunidade internacional
>>> >> continua cada vez mais ativa e a versão 20 que acabou de ser lançada é
>>> >> talvez uma das mais interessantes dos últimos tempos! Vejam algumas
>>> >> das novidades dessa versão:
>>> >>
>>> >>
>>> >> Assinaturas de subrotinas
>>> >> -----------------------------------
>>> >>
>>> >> Até então, para pegar os argumentos passados a uma função ou método em
>>> >> Perl, precisávamos manipular diretamente o @_, em código como:
>>> >>
>>> >> sub pessoa {
>>> >>      my ($nome, $idade) = @_;
>>> >>      print "oi $nome, vc tem $idade anos";
>>> >> }
>>> >>
>>> >> Agora podemos escrever:
>>> >>
>>> >> use feature 'signatures';
>>> >>
>>> >> sub pessoa ($nome, $idade) {
>>> >>     print "oi $nome, vc tem $idade anos";
>>> >> }
>>> >>
>>> >> podemos também garantir que nossa sub não terá argumentos:
>>> >>
>>> >> sub pessoa () {
>>> >>     ...
>>> >> }
>>> >>
>>> >> mais informações sobre essa tão esperada feature em:
>>> >>
>>> https://metacpan.org/pod/release/RJBS/perl-5.20.0/pod/perlsub.pod#Signatures
>>> >>
>>> >>
>>> >>
>>> >> Desreferenciamento pós-fixado
>>> >> ------------------------------------------
>>> >>
>>> >> Até então, para desreferenciar uma variável em Perl precisávamos
>>> >> envolvê-la em chaves, por exemplo:
>>> >>
>>> >> @lista = @{ $ref->{nomes}[3][-1]{lista} };
>>> >>
>>> >> A versão 20 do Perl 5 agora oferece outra sintaxe, mais clara (porque
>>> >> não envolve as chaves extras) e intuitiva (pq segue a lógica de ação
>>> >> do resto do código, da esquerda para a direita). Nessa sintaxe, o
>>> >> mesmo código acima pode ser reescrito como:
>>> >>
>>> >> use experimental 'postderef';
>>> >>
>>> >> @lista = $ref->{nomes}[3][-1]{lista}->@*;
>>> >>
>>> >> Ou seja, basta acessar a referência desejada e adicionar uma última
>>> >> seta, indicando no símbolo o tipo que você vai desreferenciar, seguido
>>> >> de um asterisco. Podemos desreferenciar dessa forma arrays, hashes,
>>> >> escalares, subs e até mesmo globs!
>>> >>
>>> >> Mais detalhes em
>>> >>
>>> https://metacpan.org/pod/release/RJBS/perl-5.20.0/pod/perldelta.pod#Experimental-Postfix-Dereferencing
>>> >>
>>> >>
>>> >>
>>> >> Hash Slices
>>> >> ----------------
>>> >>
>>> >> Ao manipularmos arrays, é muito comum pegar grupos de valores através
>>> de slices:
>>> >>
>>> >> @herculoides = qw( igoo tundro gloop zok gleep );
>>> >> @irmaos = @herculoides[2,4];
>>> >>
>>> >> Também conseguiamos fazer slices de hashes, mas só retornando valores
>>> em listas:
>>> >>
>>> >> my %dados = (
>>> >>     nome => 'Thaddeus "Tad" Ghostal',
>>> >>     apelido => 'Space Ghost',
>>> >>     profissao => 'Apresentador',
>>> >> );
>>> >>
>>> >> my ($nome, $apelido) = @dados{ 'nome', 'apelido' };
>>> >>
>>> >> Agora, no 5.20, podemos fazer hash slices completos, convertendo
>>> >> hashes grandes em sub-hashes! O hash slice funciona como o array
>>> >> slice:
>>> >>
>>> >> my %resumido = %dados{ 'nome', 'apelido' };
>>> >>
>>> >> say $resumido->{apelido};  # 'Space Ghost'
>>> >>
>>> >>
>>> >>
>>> >> Outras melhorias
>>> >> -----------------------
>>> >>
>>> >> * Melhor desempenho - o 5.20 está ainda mais rápido que os anteriores,
>>> >> com melhorias de desempenho em expressões regulares, cópia de strings,
>>> >> acesso a chaves de hash e muito mais!
>>> >>
>>> >> * Protótipos até então eram definidos como, por exemplo: sub lala
>>> >> ($$). Agora podem ser escritos como atributos da sub, ou seja: sub
>>> >> lala :prototype($$). A forma antiga ainda é permitida.
>>> >>
>>> >> * Melhor qualidade na geração de números aleatórios, através de um
>>> >> gerador independente de plataforma.
>>> >>
>>> >> * Suporte a Unicode 6.3 (versão anterior suportava o 6.2).
>>> >>
>>> >> * Android adicionado como plataforma suportada - sim, o 5.20 compila
>>> >> para Android! Instruções em:
>>> >> https://github.com/Perl/perl5/blob/blead/README.android
>>> >> A compilação em ambientes Windows também ficou mais rápida e portátil.
>>> >>
>>> >> * E muito mais!
>>> >>
>>> >> * CGI e Module::Build (e seus módulos associados) são alguns dos
>>> >> módulos que estão deixando o core para torná-lo mais leve e moderno,
>>> >> mas ainda estão disponíveis no seu mirror favorito do CPAN.
>>> >>
>>> >>
>>> >> Obituário
>>> >> -------------
>>> >>
>>> >> A versão 20 do Perl 5 contém também uma homenagem a nossa querida
>>> >> Diana Rosa, falecida em maio com apenas 27 anos. Sempre muito feliz e
>>> >> participante ativa da comunidade de Perl Mongers do Rio de Janeiro,
>>> >> sua memória agora está gravada para sempre em uma das versões mais
>>> >> importantes da linguagem que ela tanto gostava. A mensagem está no
>>> >> perldelta e pode ser vista em:
>>> >>
>>> https://metacpan.org/pod/release/RJBS/perl-5.20.0/pod/perldelta.pod#Obituary
>>> >>
>>> >>
>>> >> Instalando
>>> >> --------------
>>> >>
>>> >> Pra quem usa perlbrew: perlbrew install perl-5.20.0
>>> >>
>>> >> Pra quem usa plenv: plenv install perl-5.20.0
>>> >>
>>> >> Difícil, não? :)
>>> >>
>>> >>
>>> >> Estatísticas e Agradecimentos:
>>> >> ------------------------------------------
>>> >>
>>> >> As seguintes pessoas foram algumas das responsáveis pelo que se tornou
>>> >> o perl 5.20.0 (embora essa lista esteja certamente incompleta): Aaron
>>> >> Crane, Abhijit Menon-Sen, Abigail, Abir Viqar, Alan Haggai Alavi, Alan
>>> >> Hourihane, Alexander Voronov, Alexandr Ciornii, Andy Dougherty, Anno
>>> >> Siegel, Aristotle Pagaltzis, Arthur Axel 'fREW' Schmidt, Brad Gilbert,
>>> >> Brendan Byrd, Brian Childs, Brian Fraser, Brian Gottreu, Chris
>>> >> 'BinGOs' Williams, Christian Millour, Colin Kuskie, Craig A. Berry,
>>> >> Dabrien 'Dabe' Murphy, Dagfinn Ilmari Mannsåker, Daniel Dragan, Darin
>>> >> McBride, David Golden, David Leadbeater, David Mitchell, David Nicol,
>>> >> David Steinbrunner, Dennis Kaarsemaker, Dominic Hargreaves, Ed Avis,
>>> >> Eric Brine, Evan Zacks, Father Chrysostomos, Florian Ragwitz, François
>>> >> Perrad, Gavin Shelley, Gideon Israel Dsouza, Gisle Aas, Graham Knop,
>>> >> H.Merijn Brand, Hauke D, Heiko Eissfeldt, Hiroo Hayashi, Hojung Youn,
>>> >> James E Keenan, Jarkko Hietaniemi, Jerry D. Hedden, Jess Robinson,
>>> >> Jesse Luehrs, Johan Vromans, John Gardiner Myers, John Goodyear, John
>>> >> P. Linderman, John Peacock, kafka, Kang-min Liu, Karen Etheridge, Karl
>>> >> Williamson, Keedi Kim, Kent Fredric, kevin dawson, Kevin Falcone,
>>> >> Kevin Ryde, Leon Timmermans, Lukas Mai, Marc Simpson, Marcel Grünauer,
>>> >> Marco Peereboom, Marcus Holland-Moritz, Mark Jason Dominus, Martin
>>> >> McGrath, Matthew Horsfall, Max Maischein, Mike Doherty, Moritz Lenz,
>>> >> Nathan Glenn, Nathan Trapuzzano, Neil Bowers, Neil Williams, Nicholas
>>> >> Clark, Niels Thykier, Niko Tyni, Olivier Mengué, Owain G. Ainsworth,
>>> >> Paul Green, Paul Johnson, Peter John Acklam, Peter Martini, Peter
>>> >> Rabbitson, Petr Písař, Philip Boulain, Philip Guenther, Piotr
>>> >> Roszatycki, Rafael Garcia-Suarez, Reini Urban, Reuben Thomas, Ricardo
>>> >> Signes, Ruslan Zakirov, Sergey Alekseev, Shirakata Kentaro, Shlomi
>>> >> Fish, Slaven Rezic, Smylers, Steffen Müller, Steve Hay, Sullivan Beck,
>>> >> Thomas Sibley, Tobias Leich, Toby Inkster, Tokuhiro Matsuno, Tom
>>> >> Christiansen, Tom Hukins, Tony Cook, Victor Efimov, Viktor Turskyi,
>>> >> Vladimir Timofeev, YAMASHINA Hio, Yves Orton, Zefram, Zsbán Ambrus,
>>> >> Ævar Arnfjörð Bjarmason.
>>> >>
>>> >> Perl 5.20.0 representa aproximadamente 12 meses de desenvolvimento
>>> >> desde o 5.18.0 e contém aproximadamente 470.000 linhas modificadas por
>>> >> 2.900 arquivos, feitas por 124 autores diferentes. A linguagem Perl
>>> >> continua florescendo em sua terceira década graças a sua vibrante
>>> >> comunidade de desenvolvedores e usuários - e isso inclui você!
>>> >> Obrigado por usar Perl :)
>>> >>
>>> >> Divirtam-se!
>>> >>
>>> >>
>>> >> []s
>>> >>
>>> >> -b
>>> >> _______________________________________________
>>> >> Brasil-PM mailing list
>>> >> Brasil-PM em pm.org
>>> >> http://mail.pm.org/mailman/listinfo/brasil-pm
>>> > _______________________________________________
>>> > Brasil-PM mailing list
>>> > Brasil-PM em pm.org
>>> > http://mail.pm.org/mailman/listinfo/brasil-pm
>>>
>>>
>>>
>>> --
>>>
>>> -dom
>>>
>>> --
>>>
>>> Daniel de Oliveira Mantovani
>>> Business Analytic Specialist
>>> Perl Evangelist /Astrophysics hobbyist.
>>> +55 11 9 8538-9897
>>> XOXO
>>>  _______________________________________________
>>> Brasil-PM mailing list
>>> Brasil-PM em pm.org
>>> http://mail.pm.org/mailman/listinfo/brasil-pm
>>>
>>
>>
>>
>> --
>> Saravá,
>> Renato CRON
>>  http://www.renatocron.com/blog/
>> @renato_cron <http://twitter.com/#!/renato_cron>
>>
>
>
>
> --
> Saravá,
> Renato CRON
>  http://www.renatocron.com/blog/
> @renato_cron <http://twitter.com/#!/renato_cron>
>
> ------------------------------
> _______________________________________________
> Brasil-PM mailing list
> Brasil-PM em pm.org
> http://mail.pm.org/mailman/listinfo/brasil-pm
>
>
> _______________________________________________
> Brasil-PM mailing list
> Brasil-PM em pm.org
> http://mail.pm.org/mailman/listinfo/brasil-pm
>



-- 
Saravá,
Renato CRON
http://www.renatocron.com/blog/
@renato_cron <http://twitter.com/#!/renato_cron>
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://mail.pm.org/pipermail/brasil-pm/attachments/20140530/f68bea71/attachment-0001.html>


Mais detalhes sobre a lista de discussão Brasil-PM