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.

Chave mudanças:

  • 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.

Fonte: opennet.ru

Adicionar um comentário