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

Ricardo Stock ricardostock em bol.com.br
Sexta Maio 30 07:37:27 PDT 2014


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 
Sent: Friday, May 30, 2014 2:18 AM
To: Perl Mongers do Brasil, uni-vos! 
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




-- 

Saravá,
Renato CRON
http://www.renatocron.com/blog/
@renato_cron


--------------------------------------------------------------------------------
_______________________________________________
Brasil-PM mailing list
Brasil-PM em pm.org
http://mail.pm.org/mailman/listinfo/brasil-pm
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://mail.pm.org/pipermail/brasil-pm/attachments/20140530/bf68e501/attachment-0001.html>


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