Perl 7 continuará perfeitamente o desenvolvimento do Perl 5 sem quebrar a compatibilidade com versões anteriores

O Conselho de Governadores do Projeto Perl delineou planos para o desenvolvimento do ramo Perl 5 e a criação de um ramo de Perl 7. Durante as discussões, o Conselho de Governadores concordou que não é aceitável quebrar a compatibilidade com o código já escrito para Perl 5, a menos que quebre a compatibilidade é necessária para corrigir vulnerabilidades. O Conselho concluiu também que a linguagem deveria evoluir e que as novas funcionalidades deveriam ser promovidas de forma mais intensa, facilitando ao mesmo tempo o acesso às inovações emergentes e incentivando a sua adoção.

Ao contrário das intenções originais de permitir que alterações que quebram a compatibilidade retroativa sejam incluídas por padrão no branch Perl 7, o novo plano é fazer a transição gradual do branch Perl 5 para Perl 7 sem quebrar a compatibilidade retroativa com o código existente. A versão do Perl 7.0 não será conceitualmente diferente da próxima ramificação do Perl 5.xx.

O desenvolvimento de novas versões do Perl 5 continuará como antes - novos recursos adicionados ao branch que são incompatíveis com o código antigo serão, como antes, incluídos apenas se o pragma “use version” ou “use feature feature” for explicitamente especificado no código. Por exemplo, Perl 5.010 introduziu uma nova palavra-chave "say", mas como o código existente poderia usar funções chamadas "say", o suporte para a nova palavra-chave foi habilitado apenas pela especificação explícita do pragma "use feature 'say'".

Nova sintaxe adicionada à linguagem, que quando processada em versões anteriores gerava um erro, torna-se imediatamente disponível sem a necessidade de especificar pragmas especiais. Por exemplo, Perl 5.36 introduzirá uma sintaxe simplificada para processar vários valores de lista de uma só vez (“foreach my ($key, $value) (%hash) {”) que estará imediatamente disponível, mesmo em código sem o “use v5.36” pragma.

Em sua forma atual, Perl 5.36 usa o pragma "use v5.36" para habilitar 13 recursos de quebra de interoperabilidade ('say', 'state', 'current_sub', 'fc', 'lexical_subs', 'signatures', 'isa ', ' bareword_filehandles', 'bitwise', 'evalbytes', 'postderef_qq', 'unicode_eval' e 'unicode_strings'), habilite os modos “use strict” e “use warnings” por padrão e desabilite o suporte para a notação indireta herdada para chamar objetos (quando em vez de “- >" usa um espaço) e matrizes e hashes multidimensionais no estilo Perl 4 ("$hash{1, 2}").

Quando alterações suficientes forem acumuladas, em vez da próxima versão do Perl 5.x, será gerada uma versão do Perl 7.0, que se tornará uma espécie de instantâneo de estado, mas permanecerá totalmente compatível com versões anteriores do Perl 5. Para habilitar alterações e configurações que quebrem a compatibilidade, você precisará adicionar explicitamente o pragma “use v7” ao código. Aqueles. o código com o pragma "use v7" pode ser tratado como "Perl moderno", no qual estão disponíveis alterações de linguagem que quebram a compatibilidade, e sem - "Perl conservador", que permanecerá totalmente compatível com versões anteriores.

Fonte: opennet.ru

Adicionar um comentário