Era verdad: Facebook tiene un compilador PHP

Era verdad: Facebook tiene un compilador PHP

por

Acelera aplicaciones en un 80%

Lo que hasta ayer era un secreto a voces hoy ha sido confirmado: Facebook tiene un compilador para PHP.

Hasta ahora, PHP ha sido un lenguaje interpretado durante el runtime. Esto significa la máquina virtual Zend transforma el código en instrucciones que el CPU puede entender cada vez que alguien carga la página. Por supuesto, existen maneras de mejorar esta situación tan evidentemente ineficiente, por ejemplo con mecanismos de opcode caché que guardan en memoria el código ya transformado para operaciones repetitivas.

Por la contraparte, lenguajes como C y C++, pese a que están profundamente emparentados con PHP, se compilan antes de correrlos, y pese a que esto los hace naturalmente más veloces, también obliga a recompilar cada vez que cambias lo más mínimo del programa. Como PHP perdería gran parte de su flexibilidad con un enfoque compilativo de esta índole, lo que Facebook  tiene entre manos es en realidad un compilador JIT (Just in Time), similar a lo que tienen hoy en día Java y .NET.

jruby_compiler_monster

Esto permite conservar el PHP como código pero lo compila antes de pasárselo a la máquina Zend. Por como lo describen, probablemente se base en la Low Level Virtual Machine, la base del proyecto Unladen Swallow mediante el cual Google le cambió la cara a Python.

Aunque no he tenido oportunidad de ver el producto, imagino que en este momento está funcionando únicamente para X86 y/o X86-64, visto que es el tipo de servidores que usa Facebook y un compilador JIT tiene que ser adaptado a la arquitectura de cada caso en particular. Yo he jugado con PHP en máquinas PowerPC, ARM y UltraSparc, pero quizá cuántas otras arquitecturas simplemente no podrán disfrutar de este nuevo invento que, según dicen, acelera al 80% las aplicaciones de Facebook ya optimizadas con Memcached porque, dicho sea de paso, el JIT y el Opcode Caché no son sustitutos: se complementan.

Hay bastante contrariedad en la comunidad PHP mundial, sobretodo porque sienten que ha sido un error encerrarse dos años a desarrollar un proyecto que, de haber abierto oportunamente, habría salido antes y habría salido mejor. Sin embargo las cosas son como son y Facebook está liberando el código de su compilador JIT ahora, por lo que en vez de lamentarse por lo que pudo ser, lo adecuado es tomar lo que es y ver cómo adaptarlo y mejorarlo.

Link: CONFIRMED: Facebook Gets Faster, Debuts Homegrown PHP Compiler (ReadWriteWeb)