KPHP – um compilador PHP

KPHP é um compilador PHP. Ele compila um subconjunto limitado de PHP em um binário nativo rodando mais rápido que o PHP.

O KPHP pega seu código-fonte PHP e o converte em um equivalente C ++, então compila o código C ++ gerado e o executa em um servidor HTTP embutido. Você poderia chamar o KPHP de transpilador, mas nós o chamamos de compilador.

KPHP não é orientado a JIT: todos os tipos são inferidos em tempo de compilação. Não tem fase de “inicialização lenta”.

Nota
O KPHP foi desenvolvido no VK.com e mantido como proprietário por anos – até o código-fonte aberto no final de 2020.

Limitações
O KPHP não compilaria qualquer código PHP aleatório:

Ele não oferece suporte a recursos que não podem ser compilados, como chamadas pelo nome ou simulações.
Ele não compila o código, que quebra o sistema de tipos, por exemplo, misturando números e objetos em um array.
Ele não possui recursos de PHP dos quais o VK.com nunca precisou, como classes SPL e análise XML.
Alguns detalhes da sintaxe do PHP simplesmente não foram implementados, como geradores e classes anônimas.
Você pode ler mais sobre isso aqui: diferenças entre KPHP e PHP.

Recursos sobre PHP
O KPHP analisa seu código como um todo e realiza várias otimizações com foco no desempenho e segurança:

Inferindo tipos de todas as variáveis, como declará-los em C ++.
Otimizações de tempo de compilação, como getters inlining ou redução de oscilações de refcounters.
Verificações de tempo de compilação, incluindo imutabilidade e requisitos de sistema de tipo.
Otimizações de tempo de execução, como pré-inicialização de matrizes constantes e vetores digitados.
Além do acima, KPHP tem corrotinas. Por enquanto, entretanto, eles são quase inaplicáveis ​​fora do código VK.

Benchmarks
Geralmente, quando seu código se encaixa nas melhores práticas, ele é executado de 3 a 10 vezes mais rápido que o PHP.

Dê uma olhada na página de benchmarks comparando o desempenho de KPHP e PHP.
Você também pode se referir a PHP vs KPHP vs C ++.

KPHP nem sempre é mais rápido que PHP, mas pode ser usado para acelerar seu código:

Pense sobre os tipos e controle-os com PHPDoc, porque a tipagem estrita aumenta o desempenho.
Use classes em vez de arrays associativos, pois eles são muito mais rápidos no KPHP.
Ajuste o uso de memória e CPU com funções integradas e criador de perfil.
Outro aspecto essencial do KPHP são as “abstrações de custo zero”. Crie um número ilimitado de define e constantes – eles não existem em tempo de execução. Funções simples como getters são sequenciais e não têm sobrecarga.

Dica

Desempenho KPHP em comparação com PHP:

“Um pedaço aleatório de código PHP pode funcionar mais rápido” – se você tiver sorte, sim, mas pode não funcionar.
“Mas posso otimizá-lo para funcionar mais rápido” – normalmente sim, concentre-se em tipos limpos e integrados KPHP.
“KPHP é mais rápido em grandes projetos com toneladas de abstrações” – geralmente sim.
“Tentei compilar o código PHP, mas falhei”
Essa situação é bastante comum. O KPHP raramente compila código já existente sem erros. Geralmente leva algum tempo para reescrever o código PHP para que seja compilado com o KPHP.

Leia mais sobre isso compilando um projeto existente.

Desenvolvimento típico de KPHP
Use PHP para desenvolvimento: sincronize seu IDE com o servidor de desenvolvimento e escreva o código. É carregado automaticamente e funciona – o PHP é um intérprete.
Use PHP para teste e empacotamento: PHPUnit não pode e não deve ser compilado.
Compile um servidor com KPHP e implemente-o em produção.
Monitore registros e estatísticas de produção.
Você pode organizar seu projeto de forma que uma parte dele seja compilada e a outra funcione em PHP.

A licença
O KPHP é distribuído sob a licença GPLv3, em nome da VK.com (V Kontakte LLC).

Faça perguntas e forneça feedback
Para se comunicar com a comunidade KPHP, use questões do Github ou e-mails públicos disponíveis no Github.

Você também pode dar uma olhada em nossa página de perguntas frequentes.

Contribuindo
Se você desenvolveu uma biblioteca PHP útil que é compilada com sucesso com o KPHP, sinta-se à vontade para compartilhá-la aqui.

Se você quiser contribuir para o próprio KPHP, tente se aprofundar em seus aspectos internos. Eles são muito difíceis de entender de uma vez. Aprenda sobre a arquitetura KPHP e examine os cenários de contribuição imaginária.

Como começo a usar o KPHP?
Basta seguir a Documentação. A documentação do KPHP é organizada em uma ordem natural de aprendizado.

 

Fonte: https://vkcom.github.io/kphp

 

Leave a Reply