Lançamento da linguagem de programação Perl 5.30.0
Após 11 meses de desenvolvimento aconteceu lançamento de um novo ramo estável da linguagem de programação Perl - 5.30. Na preparação da nova versão, foram alteradas cerca de 620 mil linhas de código, as alterações afetaram 1300 arquivos e 58 desenvolvedores participaram do desenvolvimento.
A filial 5.30 foi lançada de acordo com o cronograma fixo de desenvolvimento aprovado há seis anos, o que implica o lançamento de novas filiais estáveis uma vez por ano e lançamentos corretivos a cada três meses. Em cerca de um mês, está previsto o lançamento da primeira versão corretiva do Perl 5.30.1, que corrigirá os erros mais significativos identificados durante a implementação do Perl 5.30.0. Junto com o lançamento do Perl 5.30, o suporte para o branch 5.26 foi descontinuado, para o qual atualizações poderão ser lançadas no futuro somente se forem identificados problemas críticos de segurança. O processo de desenvolvimento do ramo experimental 5.31 também foi iniciado, com base no qual uma versão estável do Perl 2020 será formada em maio de 5.32.
Suporte experimental para operações "" foi adicionado às expressões regulares.(?<!padrão)"E"(?‹=padrão)» para acesso limitado a modelos nomeados processados anteriormente. A definição do padrão deve estar dentro de 255 caracteres do ponto de referência;
O valor máximo do especificador de tamanho (“n”) em blocos de expressões regulares “{m,n}” foi aumentado para 65534;
Adicionado limitado apoiar máscaras para destacar certas categorias de caracteres em expressões regulares, abrangendo diferentes conjuntos Unicode. Por exemplo, a expressão “qr! \p{nv= /(?x) \A [0-5] \z / }!” permite selecionar todos os caracteres Unicode que definem os números de 0 a 5, incluindo a grafia dos números em tailandês ou bengali;
Adicionado suporte para caracteres nomeados em expressões regulares
padrões internos delimitados por aspas simples (qr’\N{nome}’);
Suporte à especificação Unicode atualizado para a versão 12.1. O sinalizador de desenvolvimento experimental foi removido das chamadas sv_utf8_downgrade e sv_utf8_decode, utilizado no desenvolvimento de extensões na linguagem C;
Adicionada a capacidade de construir perl com a implementação de operações com um código de idioma que suporta operação multithread (-Accflags=’-DUSE_THREAD_SAFE_LOCALE’). Anteriormente, tal implementação era usada apenas ao construir uma versão multithread do Perl, mas agora pode ser habilitada para qualquer construção;
A combinação dos sinalizadores "-Dv" (saída de depuração aprimorada) e "-Dr" (depuração de regex) agora faz com que todos os modos possíveis de depuração de expressões regulares sejam habilitados;
Os recursos anteriormente obsoletos foram removidos:
Agora disponível como separador de linha e caracteres curinga permitido usarem apenas grafemas (caracteres Unicode compostos não são permitidos).
Interrompido suporte para algumas formas obsoletas de uso do caractere “{” em expressões regulares sem escapar dele.
Proibido usando as funções sysread(), syswrite(), recv() e send() com manipuladores ":utf8".
É proibido usar definições de “meu” em declarações condicionais inerentemente falsas (por exemplo, “meu $x se 0”).
O suporte para variáveis especiais “$*” e “$#” foi removido.
O suporte para chamada implícita da função dump() foi descontinuado (agora você deve especificar explicitamente CORE::dump()).
A função File::Glob::glob foi removida (você deve usar File::Glob::bsd_glob).
Adicionada proteção ao pack() contra o retorno de sequências Unicode incorretas.
O fim do suporte ao uso de macros que realizam operações com UTF-8 em código XS (blocos C) foi adiado para o próximo lançamento.
Otimizações de desempenho:
As operações de tradução de UTF-8 para layout de caracteres foram aceleradas (ponto de código), por exemplo, executar a operação ord(“\x7fff”) agora requer 12% menos instruções. O desempenho das operações que verificam a exatidão das sequências de caracteres UTF-8 também foi aumentado;
As chamadas recursivas na função finalize_op() foram eliminadas;
Foram feitas pequenas otimizações no código para recolher caracteres idênticos e definir classes de caracteres em expressões regulares;
Otimizado conversão de definições de tipos assinados em não assinados (IV para UV);
O algoritmo para converter números inteiros em uma string foi acelerado pelo processamento de dois dígitos ao mesmo tempo em vez de um;
Melhorias foram feitas preparado com base na análise da LGTM;
Código otimizado nos arquivos regcomp.c, regcomp.h e regexec.c;
Em expressões regulares, o processamento de padrões como “qr/[^a]/” com caracteres ASCII foi significativamente acelerado.
O suporte para a plataforma Minix3 foi restaurado. É possível construir usando o compilador Microsoft Visual Studio 2019 (Visual C++ 14.2);
Versões atualizadas dos módulos incluídos no pacote básico. Os módulos foram removidos da composição principal B::Depurar и Localidade::Códigos.