Lea la versión en inglés de este documento: Inglés
Lea este documento en otros idiomas: inglés, chino simplificado .
Con el fuerte aumento de Go
y NodeJS
, la participación de mercado de PHP
se ha ido erosionando gradualmente, pero PHP
oficialmente todavía se apega al campo de la programación Web
. Algunas cosas se vuelven más difíciles de conservar cuanto más intentan mantenerse. polarphp
se basa en las características relevantes de NodeJS
y Go
para volver a encapsular zendVM
, eliminar algunas de las antiguas características abandonadas PHP
y fuertes atributos Web
, e implementar un nuevo conjunto de marco de ejecución libpdk
para convertir PHP
en un lenguaje de programación verdaderamente universal, potenciando PHP
con programación asincrónica, corrutinas, subprocesos, soporte unicode
incorporado, IO
de archivos estándar y otras características, lo que permite a los programadores PHP
no solo crear aplicaciones web
, sino también enfrentar con calma aplicaciones reales del lado del servidor. polarphp
no es un lenguaje nuevo, sino un nuevo compilador y tiempo de ejecución para PHP
además del oficial.
PHP
y elimina características de lenguaje obsoletas unicode
integrados Debido a los recursos de desarrollo limitados, el plan de desarrollo se establece tentativamente de la siguiente manera:
PHP
front-endlit
para trasplantar proyecto LLVM
polarphp
utilizando el marco de prueba de regresión phplit
polarvm
y complete la infraestructura de la máquina virtual.polarphp
AST en el conjunto de instrucciones y no defina la capa IR por el momento.phplit
para probar todos los módulos compilados desde la estructura del lenguaje hasta el conjunto de instruccionesGC
integrado de PHP
PHP
libpdk
(parte cpp
)polarphp
en el número mínimo de pasos.PHP
completamente funcional (implementada usando código PHP
con soporte subyacente 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
En este momento, el script comienza a compilar imágenes relacionadas, lo que lleva mucho tiempo. Espere pacientemente. Espere a que se complete la compilación y ejecute:
docker images
En este momento, confirme que haya la siguiente imagen en el resultado:
Si no hay ningún problema, comenzamos a probar si polarphp
se está ejecutando normalmente en el espejo.
docker run --rm -it polarphp_debug
Después de ingresar al contenedor, ingrese nuestro programa de línea de comando polarphp
polar --version
Si obtiene el siguiente resultado:
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
Felicitaciones, ha compilado con éxito el entorno de ejecución polarphp
. Al compilar la imagen, colocamos un script de prueba en la carpeta ~/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" ;
}
Puede ejecutar el siguiente comando:
polar ~/temp/main.php
Si no hay errores, obtendrá el siguiente resultado:
version str: polarphp 0.0.1-git
major version: 0
minor version: 0
patch version: 1
Gracias por probar polarphp
. Si tiene alguna pregunta, escanee el código QR de WeChat a continuación para unirse a la comunicación grupal.
Actualmente, solo nos dirigimos a usuarios en China, por lo que utilizamos WeChat y grupos QQ
para comunicarnos. A continuación se muestra el código QR. Los estudiantes interesados pueden escanear el código para unirse.
PD: indique el propósito de su visita al escanear el código QR, por ejemplo: aprender
polarphp
o entusiastasPHP
polarphp
lleva a cabo un desarrollo secundario además del proyecto de lenguaje php
y cumple con el acuerdo del proyecto php
. Para obtener más detalles, consulte: Acuerdo del proyecto.
============================