[Brasil-PM] Perl 5.22 não terá mais Module::Build no core

Diogo Leal diogo em diogoleal.com
Quarta Maio 29 14:43:19 PDT 2013


Muito bom o texto. Valeu Garu!
Diogo Leal [estranho]
http://diogoleal.com
talk: estranho em diogoleal.com


2013/5/29 Bruno Buss <bruno.buss em gmail.com>:
> Como sempre: garu++;
>
>
> On Wednesday, May 29, 2013, breno wrote:
>>
>> Calma, não se desesperem :-)
>>
>> tl;dr: o Module::Build não vai morrer, só vai sair do core. Em 2015.
>> Hoje, todos os clientes do CPAN já são capazes de fazer bootstrap do
>> Module::Build automaticamente no sistema via "configure_requires"
>> antes do Build.PL rodar, então essa remoção não fará nenhuma diferença
>> prática para distribuições usando o Module::Build - apenas deixará o
>> core do Perl mais enxuto, leve, e livre de preocupações associadas ao
>> Module::Build. É um ganha-ganha para todos.
>>
>>
>> ---------[ versão "garu" ]---------
>>
>> Como você provavelmente já sabe, o ciclo de desenvolvimento atual do
>> Perl 5 é de uma nova versão estável por ano. Esse mês, a versão 18 do
>> Perl 5 foi lançada. Quase ao mesmo tempo, como de costume, foi lançada
>> a 5.19, primeiro release de desenvolvimento do novo ciclo. Ao ser
>> marcado para remoção, o Module::Build que vem no core do 5.19 emitirá
>> um warning sobre isso, e esse warning continuará até a versão 5.22 -
>> em 2015 - quando ele finalmente será completamente removido do core.
>> Não do CPAN, apenas do core.
>>
>> "Mas peraí", você diz. "O Module::Build não é usado pra instalar
>> módulos sem o 'make'? Não é um dos builders mais usados? O próprio
>> Michael Schwern, criador do ExtUtils::MakeMaker, não disse pra todo
>> mundo migrar do EUMM pro Module::Build? WTF?"
>>
>> De fato, o Module::Build foi *fundamental* para uma série de inovações
>> que aconteceram no mundo Perl na última década(!), especialmente no
>> que se refere ao toolchain para instalação e configuração de módulos.
>> Entre outras, ele formalizou a especificação do Build.PL, foi o
>> primeiro a permitir build e instalação de módulos usando apenas Perl
>> em vez de criar Makefiles, inventou e popularizou o META.yml (que
>> evoluiu para a especificação META oficial do CPAN), permitiu a
>> instalação automática em diretórios personalizados de forma fácil e
>> intuitiva (efetivamente abrindo caminho para iniciativas como
>> local::lib e carton), tornou extremamente fácil a instalação de
>> módulos "Alien" como o SDL e o wxWidgetse, e trouxe insights
>> importantíssimos para a criação de uma série de soluções avançadas, do
>> Module::Install ao Dist::Zilla.
>>
>> No entanto, o Module::Build em si também tem vários problemas - a
>> maioria deles ligados à manutenção. São mais de 4K linhas de código
>> misturadas em um arquivo só (Module::Build::Base), código super
>> acoplado e difícil de acompanhar, depurar e extender. Por exemplo, o
>> Build.PL executado serializa os resultados em alguns arquivos que são
>> usados ao longo da execução do "Build" para reconstruir o objeto
>> original, com montes de meta-opções e potenciais subclasses
>> interferindo no processo como um todo. Uma série de features
>> supérfluas e/ou raras foram adicionadas diretamente em seu núcleo,
>> prejudicando ainda mais o bom entendimento e depuração do processo de
>> montagem e instalação das distribuições. Seu sistema de dependências
>> nunca foi realmente satisfatório, e sua geração automática de
>> Makefile.PL trouxe como consequência a necessidade de manter
>> compatibilidade de features (e, em muitos casos, de bugs) com o EUMM
>> para sempre.
>>
>> Isso não quer dizer que o Module::Build seja um builder ruim - tanto
>> que muitos projetos de sucesso usaram-no e continuam com ele até hoje.
>> Mas todas as questões acima culminaram no Module::Build nunca se
>> tornando o sucessor efetivo e incontestado do EUMM, como havia sido
>> previsto quando ele foi colocado no core. A decisão faz parte de uma
>> estratégia maior de remoção de módulos do core, para deixar a
>> manutenção mais fácil e permitir que os desenvolvedores gastem seu
>> tempo criando novas features e cuidando de bugs importantes, em vez de
>> mantendo módulos que não são realmente essenciais. Ela foi possível
>> graças aos avanços nos clientes de CPAN (cpan, cpanplus, cpanm) que
>> hoje suportam o bootstraping do Module::Build via
>> "configure_requires". Quando o cliente detecta que precisará do
>> Module::Build, ele vai baixá-lo e instalá-lo pra vc automaticamente,
>> antes de rodar o Build.PL. Isso já é feito quando o requisito é uma
>> versão mais recente do M:B que a que foi instalada no core da sua
>> versão do Perl 5. Daqui a dois anos, será a regra.
>>
>> Para mais detalhes (em inglês), incluindo links da discussão associada:
>> http://www.dagolden.com/index.php/2140/paying-respect-to-modulebuild/
>>
>>
>> []s
>>
>> -b
>> _______________________________________________
>> Brasil-PM mailing list
>> Brasil-PM em pm.org
>> http://mail.pm.org/mailman/listinfo/brasil-pm
>
>
>
> --
> Bruno C. Buss
> http://www.brunobuss.net
>
> _______________________________________________
> Brasil-PM mailing list
> Brasil-PM em pm.org
> http://mail.pm.org/mailman/listinfo/brasil-pm


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