Skip to main content
Voltar aos Artigos
PHP

TypePHP: e se o PHP pudesse ser compilado em código nativo?

Talvez o futuro do PHP não seja deixar de ser PHP. Talvez seja justamente conseguir ser PHP em mais lugares.

12 minutos de leitura 9 27 Ago 2026

Por décadas, o PHP ocupou um espaço muito particular no desenvolvimento de software: uma linguagem extremamente produtiva, dinâmica e profundamente integrada ao desenvolvimento web.

Grande parte do ecossistema foi construída em torno dessa característica. Frameworks como Laravel e Symfony, servidores como PHP-FPM, ferramentas como Composer e uma enorme quantidade de bibliotecas assumem um modelo no qual o código PHP é executado sobre o runtime do PHP.

Mas e se esse modelo não fosse uma regra?

E se fosse possível continuar escrevendo PHP, utilizando boa parte da familiaridade da linguagem, mas transformar o código em um executável nativo?

É exatamente essa ideia que torna o TypePHP, projeto da Swoole, tão interessante.

TypePHP no GitHub

O que é o TypePHP?

O TypePHP é um compilador AOT (Ahead-Of-Time) para PHP.

Em termos simples, em vez de depender exclusivamente da execução tradicional do PHP em runtime, o projeto propõe um processo no qual o código PHP é convertido para C++ e posteriormente compilado para código de máquina nativo.

A arquitetura pode ser resumida assim:

Código PHP -> Análise e validação -> Lowering para C++17 -> Compilador nativo -> Código de máquina -> Executável / Extensão / Biblioteca

Isso é bastante diferente de simplesmente utilizar OPcache. Também é diferente da proposta tradicional de JIT. 
No OPcache, o PHP continua utilizando seu modelo de execução baseado em bytecode, apenas evitando parte do custo de recompilação.

No JIT, determinadas partes podem ser compiladas dinamicamente durante a execução. No TypePHP, a proposta é antecipar essa compilação.

O resultado pode ser um artefato nativo.

PHP, mas com uma nova possibilidade de distribuição

Talvez uma das consequências mais interessantes não seja nem mesmo performance. É distribuição. Imagine uma aplicação PHP tradicional.

Normalmente, para executá-la em produção, você precisa disponibilizar algo próximo de:

PHP Composer vendor/ código da aplicação extensões configuração runtime

Agora imagine um cenário em que determinada aplicação possa ser compilada para:

my-application

e distribuída como um executável nativo.
Isso muda algumas possibilidades arquiteturais.

O TypePHP possui diferentes modos de compilação, incluindo:

  • bin — geração de executáveis;
  • ext — geração de extensões PHP;
  • lib — geração de bibliotecas compartilhadas.

Isso significa que a ideia não está limitada a transformar uma aplicação inteira em um único binário.

Existe também a possibilidade de pensar em componentes compilados.

Não é apenas sobre velocidade

Quando alguém fala em compilação nativa, a primeira reação normalmente é: Então o PHP vai ficar mais rápido?

Possivelmente, em determinados cenários. Mas essa é apenas uma parte da história. O próprio projeto utiliza tipos nativos para permitir que determinados valores PHP sejam representados diretamente como tipos equivalentes no código nativo.

Por exemplo:

function calculate(int $a, int $b): int { return $a + $b; }

Em determinados caminhos suportados pelo compilador, uma operação desse tipo pode ser transformada em operações muito mais próximas do modelo de execução nativo.

Isso fica ainda mais interessante quando entramos em estruturas de dados e processamento intensivo.

O TypePHP possui suporte a containers tipados baseados em estruturas como:

std::array std::vector std::map

A ideia é permitir que determinados caminhos críticos deixem de depender das estruturas altamente dinâmicas tradicionalmente utilizadas pelo PHP.

Isso cria uma possibilidade interessante:

usar PHP para produtividade e, ao mesmo tempo, utilizar estruturas nativas quando o problema exigir desempenho.

Uma espécie de PHP híbrido

Talvez essa seja uma das características mais interessantes do projeto. Não parece fazer sentido imaginar um futuro no qual absolutamente todo código PHP precise ser convertido para código nativo. O grande potencial pode estar justamente na abordagem híbrida.

Imagine uma aplicação Laravel:

                  Aplicação
         ┌────────────┴────────────┐
         │                         │
    Código comum              Hot paths
         │                         │
      PHP/Laravel              TypePHP
                                   │
                             Código nativo

A maior parte da aplicação poderia continuar utilizando as ferramentas tradicionais do ecossistema.

Mas determinadas operações poderiam ser candidatas à compilação:

  • processamento matemático;
  • transformação de grandes volumes de dados;
  • algoritmos;
  • processamento de arquivos;
  • serialização;
  • workers;
  • processamento de imagens;
  • componentes de infraestrutura;
  • operações que ficam constantemente no caminho crítico.

Isso aproxima o PHP de uma ideia bastante comum em outras linguagens:

não abandonar a linguagem para ganhar performance, mas permitir que partes específicas sejam compiladas de maneira mais agressiva.

E a proteção do código?

Existe outra consequência interessante.

Em uma aplicação PHP tradicional, mesmo quando usamos OPcache, o código-fonte continua fazendo parte do modelo de distribuição da aplicação.

Quando o código é compilado para um artefato nativo, o cenário muda. O projeto destaca justamente a possibilidade de distribuir código compilado em vez do código PHP original. Isso pode ser particularmente interessante para empresas que desenvolvem software proprietário. Por exemplo, imagine uma empresa que desenvolveu um algoritmo comercialmente valioso.

Hoje ela pode precisar distribuir parte significativa desse código junto com a aplicação. Com uma estratégia baseada em compilação nativa, determinadas partes poderiam ser transformadas em:

biblioteca nativa ou extensão ou executável

Isso não significa que código compilado seja impossível de analisar ou engenharia reversa seja impossível.

Nenhum software compilado é magicamente indecifrável.

Mas a barreira é significativamente diferente de simplesmente entregar arquivos .php.

O impacto para SaaS

Aqui começa uma discussão que considero especialmente interessante.

Imagine uma empresa SaaS com uma arquitetura multi-tenant.

Hoje podemos ter:

Load Balancer -> PHP-FPM -> Laravel -> Redis -> PostgreSQL

Agora imagine que alguns componentes possam ser compilados como processos nativos:

                   Load Balancer                     
             ┌──────────┴──────────┐                 
             │                     │                 
        Web Application       Native Workers         
             │                     │                 
          Laravel              TypePHP               
             │                     │                 
             └──────────┬──────────┘                 
                        │                            
                    PostgreSQL                       

Isso pode abrir espaço para arquiteturas nas quais PHP continua sendo responsável pela maior parte da regra de negócio e produtividade, enquanto componentes específicos possuem um ciclo de execução diferente.

Não necessariamente precisamos transformar o sistema inteiro.

Podemos simplesmente identificar onde existe valor em fazê-lo.

E os microsserviços?

Outra possibilidade interessante é utilizar o TypePHP para determinados microsserviços.

Um serviço pequeno que atualmente depende de:

PHP CLI Composer vendor framework runtime

poderia potencialmente ser transformado em um executável.

Isso pode simplificar determinados cenários de deployment.

Por exemplo:

service/ 
└── processor

em vez de depender de uma estrutura completa de aplicação.

Isso não significa que todo microsserviço deva ser compilado.

Na verdade, provavelmente seria um erro adotar essa abordagem indiscriminadamente.

O ponto é poder escolher.

PHP entrando em territórios tradicionalmente associados a outras linguagens

Essa é talvez a parte mais provocativa dessa discussão.

PHP normalmente é associado a:

Web APIs CMS Backoffice SaaS

Mas código nativo abre possibilidades diferentes:

CLI Workers processamento intensivo bibliotecas sistemas embarcados em determinados cenários WebAssembly/WASI extensões serviços de longa duração

O TypePHP inclusive possui backends para WASI e WebAssembly, além de targets para Linux, Windows e macOS em arquiteturas como x64 e ARM64.

Isso não significa que PHP esteja prestes a substituir Rust, C++, Go ou outras linguagens nesses domínios.

Mas significa que a fronteira conceitual pode estar mudando.

O papel dos tipos

Existe ainda uma mudança conceitual importante. PHP historicamente é uma linguagem dinâmica. Isso é uma das razões pelas quais ela é tão produtiva. Mas dinamismo tem um custo.

Quando o compilador conhece antecipadamente informações como:
int float bool

ele pode tomar decisões que seriam muito mais difíceis em um ambiente completamente dinâmico.

Por isso o TypePHP introduz uma ideia interessante: tipagem que não serve apenas para documentação ou análise estática, mas também para produzir código nativo mais previsível.

Essa distinção é importante.

Não estamos falando apenas de:
"Meu IDE sabe que isso é um inteiro."

Estamos falando potencialmente de:
"Meu compilador sabe que isso é um inteiro e pode gerar código especializado para isso."

Compile-time code generation

Outro recurso interessante do projeto é a geração de código em tempo de compilação. Através de atributos, determinadas APIs podem ser geradas automaticamente.

Por exemplo:
#[Getter] #[Setter]
public string $name;

pode resultar na geração dos métodos correspondentes. Isso parece pequeno, mas aponta para uma direção importante:

o compilador passa a participar mais ativamente da construção do software.

Em vez de depender exclusivamente de reflection e comportamento dinâmico em runtime, determinadas informações podem ser resolvidas durante a compilação.

Mas existe um porém importante

É aqui que precisamos evitar o hype.

TypePHP não significa:

“Pegue qualquer projeto PHP existente e compile.”

O próprio projeto deixa claro que existe um modelo de compatibilidade específico. Alguns recursos extremamente dinâmicos do PHP não são compatíveis com a compilação AOT. Isso é natural.

Quanto mais dinâmica é uma linguagem, mais difícil se torna conhecer antecipadamente tudo aquilo que acontecerá durante a execução.

Recursos envolvendo determinados padrões de:

  • referências;
  • closures;
  • reflection;
  • declarações dinâmicas;
  • operações altamente dinâmicas;

podem encontrar limitações.

Portanto, TypePHP não deve ser encarado atualmente como um simples:

php projeto.php

seguido de:

tpc projeto.php

e pronto.

A compatibilidade precisa ser analisada.

Isso significa que o PHP tradicional está ultrapassado?

Não. Na verdade, eu diria exatamente o contrário. OPcache continua sendo extremamente eficiente. JIT pode ser útil em determinados workloads. PHP-FPM continua sendo uma excelente solução para uma enorme quantidade de aplicações. Laravel continua oferecendo uma produtividade absurda. O ecossistema PHP é gigantesco.

O que projetos como TypePHP fazem é adicionar uma nova possibilidade.

E talvez essa seja a melhor forma de enxergar a evolução:

PHP tradicional + OPcache + JIT + TypePHP/AOT = mais opções arquiteturais

Não precisamos escolher uma única abordagem para tudo.

O que isso pode significar para o futuro?

Ainda é cedo para afirmar exatamente qual será o impacto do TypePHP. O projeto está em desenvolvimento e possui uma fronteira de compatibilidade que precisa ser considerada antes de qualquer adoção em produção. Mas a direção é fascinante.

Durante muito tempo, quando um desenvolvedor PHP precisava de determinadas características, a resposta normalmente era:

“Essa parte precisa ser feita em C/C++/Rust/Go.”

Agora podemos começar a fazer outra pergunta:

“Será que ainda precisamos sair do PHP?”

Talvez a resposta continue sendo sim em muitos casos.

Mas talvez, em outros, possamos escrever a primeira versão em PHP, identificar os gargalos e posteriormente compilar apenas aquilo que realmente importa.

Essa possibilidade é muito poderosa.

Minha visão

O que mais me chama atenção no TypePHP não é a promessa de “PHP mais rápido”. Performance, sozinha, não é suficiente para mudar uma linguagem. O que me interessa é a possibilidade de expandir o espaço arquitetural do PHP.

Hoje podemos pensar:

PHP = linguagem para aplicações web

Talvez no futuro seja mais adequado pensar:

PHP = linguagem produtiva + runtime dinâmico + compilação nativa + extensões + bibliotecas + WebAssembly

Isso muda a conversa. Não significa transformar todo projeto PHP em código nativo. Significa ter a opção de escolher, caso a caso, qual modelo faz mais sentido. E, para quem trabalha há anos com PHP, essa talvez seja a parte mais interessante:

não precisamos abandonar uma linguagem que já conhecemos para explorar uma nova classe de possibilidades.

Talvez o futuro do PHP não seja deixar de ser PHP. Talvez seja justamente conseguir ser PHP em mais lugares.

Referência: Swoole TypePHP — GitHub

Compartilhe este conteúdo
Mário Lucas
Sobre o autor
Mário Lucas
Colaborador da comunidade PHP Belém

Conteúdos relacionados

23 Ago 2026 5 min

Aposente o FTP: Como Criar um Ambiente WordPress Seguro, Versionado e Automatizado

Chega de ficar só criando sites WordPress direto em produção, sem ter nenhum versionamento do código. Fazer tudo direto na hospedagem é um risco enorme e te deixa sem controle nenhum sobre a evolução do seu próprio projeto. Neste artigo, você vai aprender a estruturar um fluxo de desenvolvimento extremamente seguro e descomplicado. Descubra como usar o DDEV para rodar ambientes locais padronizados em poucos minutos, as regras de ouro para versionar seu código com Git (salvando apenas o que importa) e como configurar o GitHub Actions para fazer o deploy das suas alterações de forma automática e à prova de falhas. O guia definitivo para sair do amadorismo e blindar seus projetos com um ecossistema profissional.

04 Ago 2026 5 min

Análise de Dados e Machine Learning: explorando o ecossistema PHP

Descubra como o PHP moderno pode ser utilizado para Análise de Dados e Machine Learning sem a necessidade de adotar novas linguagens ou dividir a infraestrutura do seu projeto. Neste artigo, exploramos bibliotecas nativas como Rubix ML e MathPHP, arquiteturas que delegam a carga pesada para o banco de dados e técnicas de alta performance com o uso de Generators (yield). Entenda por que manter uma stack unificada pode simplificar a manutenção, reduzir custos operacionais e acelerar a entrega de valor em sistemas corporativos robustos.

Continue lendo

Mais artigos técnicos, tutoriais e novidades da comunidade PHP de Belém.

Ver todos os artigos