O PHP 8 está a caminho!

Novidades do PHP 8

A nova versão do elefante mais conhecido da programação, tem estimativa de lançamento ainda em Dezembro de 2020.

Como não poderia deixar de ser, com esta nova versão, muitas melhorias a acompanham, tornando o PHP mais rápido e confiável.

Apesar de ainda se encontrar em desenvolvimento, já são conhecidas algumas das melhorias que vão acompanhar esta nova actualização.

PHP JIT (Compilador Just in Time)

Descrição do JIT, proposta da RFC:

“O PHP JIT é implementado como uma parte quase independente do OPcache. Ele pode ser habilitado/desabilitado em tempo de compilação e em tempo de execução do PHP. Quando habilitado, o código nativo dos arquivos PHP é armazenado em uma região adicional da memória compartilhada do OPcache e op_array→opcodes[]. manipulador(es) mantém apontadores para os pontos de entrada do código JIT-ed.”

O que se realça no texto anterior, é a diferença entre o JIT e Opache.

Vamos analisar melhor o que é o JIT para PHP, desde o core até ao resultado final.

A execução do PHP é feita em 4 etapas, que são elas:

  • Lexing/Tokenizing;
  • Parsing;
  • Compilação;
  • Interpretação;

O Opache

Sendo o PHP uma linguagem interpretada, isto significa que um script de PHP é executado, analisado, compilado e por fim executado, a cada solicitação. Isto de certa forma, provoca um enorme desperdício de processamento e tempo.

O Opache entra neste ponto, melhorando a performance do PHP, guarda o código pré-compilado numa memoria partilhada. Dessa forma, o PHP não precisa de carregar e analisar os scripts cada vez que é requisitado.

Activando esta extensão, o processo de 4 etapas que mencionei acima, apenas é percorrido uma vez, sendo que dessa forma, ficando guardado em memória, as futuras requisições fiquei mais rápidas de ser executadas, recorrendo ao pré-compilado do código.

Esta extensão já está disponível por omissão desde o PHP 5.5. Podem validar usando o phpinfo().

Pré-Carga

No PHP 7.4, o Opache foi melhorado com a implementação do pré-carregamento. Este pré-carregamento permite que armazenar alguns scripts na memória do Opache antes de qualquer código seja executado. Esta alteração, trás melhorias significativas na performance das aplicações.

O JIT – Compilador Just in Time

De forma prática, o JIT traduz partes do código intermediário em código máquina. Contornando a compilação, a performance torna-se bastante melhor, tal como o consumo de memória.

Nos primeiros testes feitos com JIT, este mostra que as cargas sobre o CPU funcionam consideravelmente mais rápido.  O JIT não executa o código pela VM do Zend, mas sim através do CPU, trazendo uma melhoria nos cálculos.

Um alerta sobre o JIT, é que usar este em CMS como WordPress, não trás uma melhoria tão considerável, pois este tipo de sistema fica a mercê de outros tipos de optimização.

Um traço negativo, é o que com o aumento da complexidade, a possibilidade do aumento de custos de manutenção e outros, podem vir a aumentar de forma considerável.

Outras melhorias e funcionalidades do PHP 8

O lançamento da nova versão, vai trazer apenas o JIT como melhora. Abaixo fica uma lista de outras funcionalidade que vão ser adicionadas ao PHP 8 em Dezembro de 2020.

  • Validação para Métodos de Traços Abstratos
  • Assinaturas Incompatíveis do Método
  • Matrizes ”Arrays” começando com um índice negativo
  • Tipos de União 2.0
  • throw Expressão
  • Weak Maps
  • Vírgula de Rastreamento na Lista de Parâmetros
  • Allow ::class syntax nos objectos
  • Atributos v2

Conclusão

Certamente até Dezembro teremos muitas outras novidades, que irei trazer a medida que as mais importantes forem partilhadas com o público. Certamente o Just In Time é a funcionalidade mais importante no lançamento do PHP 8.