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

breno breno em rio.pm.org
Terça Maio 27 22:00:06 PDT 2014


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


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