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

Bruno Buss bruno.buss em gmail.com
Quarta Maio 29 05:25:18 PDT 2013


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 <javascript:;>
> http://mail.pm.org/mailman/listinfo/brasil-pm
>


-- 
Bruno C. Buss
http://www.brunobuss.net
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://mail.pm.org/pipermail/brasil-pm/attachments/20130529/f8302e3c/attachment.html>


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