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

O que há de novo, as principais mudanças para o PHP 7.3, data de lançamento e o que esperar do PHP 8.

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, houve 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 RFC, estas funcionalidades deverão ser removidas o 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!

Texto originalmente publicado no Blog da KingHost.