Leia a versão em inglês deste documento: Inglês
Leia este documento em outros idiomas: inglês, chinês simplificado .
Com a forte ascensão do Go
e NodeJS
, a participação de mercado do PHP
diminuiu gradualmente, mas PHP
ainda permanece oficialmente no campo da programação Web
. Algumas coisas se tornam mais difíceis de manter quanto mais eles tentam. polarphp
baseia-se nos recursos relevantes do NodeJS
e Go
para reencapsular zendVM
, remover alguns dos antigos recursos abandonados PHP
e fortes atributos Web
e implementar um novo conjunto de estrutura de tempo de execução libpdk
para transformar PHP
em uma linguagem de script verdadeiramente universal, capacitando PHP
com programação assíncrona, corrotinas, threads, suporte unicode
integrado, IO
de arquivo padrão e outros recursos, permitindo que os programadores PHP
não apenas façam aplicações web
, mas também enfrentem com calma aplicações reais do lado do servidor. polarphp
não é uma linguagem nova, mas um novo compilador e tempo de execução para PHP
além da linguagem oficial.
PHP
e removendo recursos de linguagem obsoletos unicode
Devido aos recursos de desenvolvimento limitados, o plano de desenvolvimento é provisoriamente definido da seguinte forma:
PHP
lit
para transplante de projeto LLVM
polarphp
usando a estrutura de teste de regressão phplit
polarvm
e complete a infraestrutura da máquina virtualpolarphp
AST para o conjunto de instruções e não defina a camada IR por enquanto.phplit
para testar todos os módulos compilados, desde a estrutura da linguagem até o conjunto de instruçõesGC
integrado do PHP
PHP
libpdk
(parte cpp
)polarphp
no número mínimo de etapas.PHP
totalmente funcional (implementada usando código PHP
com suporte subjacente libpdk
) polarphp
git clone https://github.com/polarphp/polarphp.git
cd polarphp
git submodule init
git submodule update
git checkout v0.0.1-alpha
./devtools/scripts/build_polarphp.sh
Neste momento, o script começa a compilar imagens relacionadas, o que leva muito tempo. Aguarde pacientemente. Aguarde a conclusão da compilação e execute:
docker images
Neste momento, confirme se há a seguinte imagem na saída:
Se não houver problema, começamos a testar se polarphp
está rodando normalmente no espelho.
docker run --rm -it polarphp_debug
Depois de entrar no contêiner, insira nosso programa de linha de comando polarphp
polar --version
Se você obtiver a seguinte saída:
polarphp 0.0.1-git (built: 2019-01-27 12:22)
Copyright (c) 2016-2018 The polarphp foundation (https://polar.foundation)
Zend Engine v3.3.0-dev, Copyright (c) 1998-2018 Zend Technologies
Parabéns, você compilou com sucesso o ambiente de execução polarphp
. Ao compilar a imagem, colocamos um script de teste na pasta ~/temp/
if ( function_exists ( ' phpretrieve_version_str ' )) {
echo " version str: " . php retrieve_version_str () . "n" ;
}
if ( function_exists ( ' phpretrieve_major_version ' )) {
echo " major version: " . php retrieve_major_version () . "n" ;
}
if ( function_exists ( ' phpretrieve_minor_version ' )) {
echo " minor version: " . php retrieve_minor_version () . "n" ;
}
if ( function_exists ( ' phpretrieve_patch_version ' )) {
echo " patch version: " . php retrieve_patch_version () . "n" ;
}
Você pode executar o seguinte comando:
polar ~/temp/main.php
Se não houver erros, você obterá a seguinte saída:
version str: polarphp 0.0.1-git
major version: 0
minor version: 0
patch version: 1
Obrigado por testar polarphp
. Se você tiver alguma dúvida, leia o código QR do WeChat abaixo para participar da comunicação do grupo.
No momento, temos como alvo apenas usuários na China, por isso usamos grupos WeChat e QQ
para nos comunicarmos. Abaixo está o código QR.
PS: Por favor, indique o propósito da visita ao escanear o código QR, por exemplo: aprender
polarphp
ou entusiastasPHP
polarphp
conduz o desenvolvimento secundário além do projeto da linguagem php
e cumpre o contrato do projeto php
. Para obter detalhes, consulte: Contrato do Projeto.
===========================