Manticore 0.18 compila Laravel y Symfony en binarios nativos
Manticore ya compila una pequeña app Laravel y el demo de Symfony en binarios nativos con servidor HTTP integrado.
Menos piezas para desplegar una aplicación PHP
En un homelab, cuanto menos software tenga que mantener en cada servicio, mejor. Una aplicación PHP habitual implica intérprete, extensiones, configuración, servidor web o PHP-FPM y sus actualizaciones. Manticore plantea otra ruta: compilar código PHP por adelantado para obtener un binario nativo que se ejecuta sin instalar el runtime de PHP. (github.com)
La versión 0.18 es relevante porque el experimento ya no se limita a scripts pequeños. El proyecto incluye una aplicación Laravel que usa rutas web y JSON, Eloquent con SQLite, sesiones, Blade, Carbon y Monolog, y la compila como un único binario que atiende peticiones. También compila symfony/demo en un binario nativo capaz de servir la aplicación. (github.com)
Qué cambia respecto a un despliegue Laravel normal
Esto no convierte Laravel en una aplicación estática ni elimina la necesidad de datos, secretos o ficheros persistentes. Lo que cambia es la forma de empaquetar y ejecutar el código: el resultado no carga vendor/autoload.php ni necesita un proceso PHP separado en el servidor. Para una herramienta interna, una API pequeña o una prueba autocontenida, esa reducción de componentes merece una tarde de laboratorio. (github.com)
Me interesa especialmente para servicios que quiero poder destruir y recrear sin discutir con versiones de extensiones o con una imagen base demasiado grande. El compilador ofrece una imagen Docker que ya incluye la cadena de herramientas necesaria, así que permite fijar el entorno de compilación en lugar de prepararlo a mano en cada máquina. Eso encaja bien con un repositorio, una pipeline sencilla y un artefacto binario que después puedo desplegar en otra VM o contenedor. (github.com)
Una primera prueba reproducible
La forma más directa de probar el compilador es montar el directorio actual dentro de la imagen oficial y generar un binario desde un archivo PHP. El comando publicado para la versión 0.18.0 es este:
docker run --rm -v "$PWD":/work -u "$(id -u):$(id -g)" \
ghcr.io/manticorephp/compiler:0.18.0 manticore compile app.php -o appPara una aplicación completa no esperaría sustituir su proceso de despliegue desde el primer intento. Empezaría por clonar y construir el ejemplo examples/laravel-app del propio proyecto, revisar qué cambia frente a un esqueleto Laravel convencional y automatizar esa compilación en una rama de pruebas. Así puedo comprobar rutas, migraciones, sesiones, almacenamiento y errores antes de decidir si el enfoque encaja en un servicio concreto. (github.com)
La letra pequeña importa
No lo trataría como reemplazo de PHP-FPM en producción. El anuncio de la versión deja claro que el compilador todavía no se presenta como listo para producción, y las notas de lanzamiento mantienen incidencias conocidas en el demo de Symfony, entre ellas fugas por petición y falta de seguridad con peticiones concurrentes en un único worker. (reddit.com)
Tampoco hay que confundir “binario nativo” con “ejecutable completamente estático”. Los binarios generados enlazan dinámicamente con bibliotecas del sistema, y las dependencias aumentan si el programa usa capacidades como SQLite, cURL o PCRE2. El contenedor facilita compilar, pero el destino sigue necesitando compatibilidad con las bibliotecas que el binario espera encontrar. (github.com)
Por eso lo veo como una opción para aprender, medir y simplificar despliegues muy controlados, no como una migración general de aplicaciones Laravel. Probaría primero una app pequeña con SQLite, datos desechables y tráfico conocido, dejando PHP convencional como referencia funcional. Si el binario reproduce el comportamiento que necesito y reduce trabajo operativo, entonces ya habrá motivos para ampliar la prueba. (github.com)