Back-End

4 jul, 2018

PHP 7.3 e PHP 8: o que esperar das próximas versões

100 visualizações
Publicidade

O PHP continua sendo a linguagem mais popular do lado do servidor para criar sistemas. Com uma participação de mercado estimada em 80%, a linguagem de programação de vinte e poucos anos está em toda parte. O PHP evoluiu, e as próximas principais etapas são o lançamento da versão 7.3.0, prevista para o final deste ano e as especulações sobre o PHP 8.0.0 com a compilação JIT (just in time).

A última grande versão do PHP foi 7.0.0. Esta versão foi um marco importante com desempenho significativamente aprimorado e menor uso de memória. Desde a versão 7.0, houveram dois lançamentos adicionando recursos: 7.1, em 2016 e 7.2, em 2017.

Mas, assim como ocorre com os estados de versionamento semântico, não pode haver alterações significativas nas versões principais com o patch de versão semântica (major.minor.patch). A próxima versão secundária, PHP 7.3, está prevista para ser lançada no final de 2018.

O lançamento do PHP 8.0 ainda não está agendado, mas como é um grande salto, levará alguns anos. A partir de agora, também não há detalhes dos recursos, mas estima-se que a programação esteja a anos de distância.

Algumas especulações definem o lançamento do PHP 8.0.0 para setembro de 2021:

O que se tornará obsoleto no PHP 7.3?

A RFC Deprecations for PHP 7.3 mostra algumas funcionalidades, no qual o uso será desencorajado, pois serão retiradas ou substituídas no PHP. Conforme o RFC, estas funcionalidades deverão ser removidas no mais tardar na versão 8.0.

Abaixo, algumas das funcionalidades que se tornarão obsoletas:

  • Extensão WDDX;
  • Alias de função mbstring usando um prefixo mb_ (por exemplo, mb_ereg);
  • mb_detect_encoding() sem strict mode;
  • Funções strip_tags() e fgetss();
  • Função image2wbmp.

Principais novidades que entrarão no PHP 7.3

O PHP 7.3 será oficialmente lançado em novembro de 2018 e trará diversas novidades. Algumas das principais:

  • Flexibilidade de sintaxe Heredoc e Nowdoc;
  • Permitir vírgula à direita em chamadas de função e método;
  • Opção para fazer json_encode e json_decode lançar exceções em erros;
  • Atribuições de referências em list();
  • Função is_countable().

Todos os outros RFC’s aprovados, que estão sendo implementados na versão 7.3, você poderá ver aqui, inclusive, com exemplos de código.

Estado de Just In Time (JIT) previsto para o PHP 8

A compilação Just In Time é uma maneira de otimizar o código de execução. É um método popular usado pela Java Virtual Machine (JVM), bem como a popular V8 JavaScript VM do Google.

Inicialmente, o desenvolvimento do PHP antes da evolução atual (PHP 7.x) se concentrava em melhorar o desempenho do PHP usando um JIT. Esse esforço resultou em melhorias substanciais nos benchmarks, mas provou fornecer pequenos aperfeiçoamentos em aplicações do mundo real, como WordPress ou Joomla.

Depois que o trabalho foi feito para o PHP 7.0, fornecendo melhorias significativas, as otimizações no desempenho nas versões 7.1 e 7.2 foram bastante modestas. É por isso que a equipe está trabalhando na implementação do JIT novamente. Existem alguns resultados encorajadores, mas ainda não há uma análise profunda sobre o projeto PHP JIT.

 

Como o PHP é um software de código aberto, os desenvolvedores podem baixar e compilar o código-fonte. No entanto, muitas pessoas evitam a possibilidade de compilar software por conta própria. Felizmente, há uma imagem do Docker disponível, que permite aos desenvolvedores experimentarem as compilações mais recentes do PHP JIT com facilidade:

Este repositório ajuda a testar o php com suporte a jit experimental. Ele foi criado inspirado no tweet acima, que fala sobre 54% de melhoria no desempenho. – Imagem do Docker do PHP com suporte experimental ao JIT

Tanto o JIT quanto o 8.0.0 aparecem no futuro do PHP, mas ambos são recursos significativos que permanecem no futuro. E, especialmente para o JIT, os processos de vida curta do PHP não são ideais para a implementação do JIT ; isso é comparado a processos em execução contínua como o Node.js ou o Java.

Na página dos RFC’s você encontra a documentação completa de todas as features e versões, inclusive com exemplos. A versão 7.3 está em desenvolvimento, então tem features que ainda estão em discussão, e claro, não se limita apenas a novas features, então vale muito a pena conferir a documentação.

Isso é tudo por enquanto, mas se você se deparar com outras mudanças que não são mencionadas aqui, dúvidas ou sugestões, deixe um comentário abaixo.

Obrigado pela leitura!