Video: Presentación de HipHop for PHP

Finalmente ya está disponible el video de la presentación oficial de HipHop for PHP realizada en los cuarteles generales de Facebook en Palo Alto, California, el día de ayer. Durante el acontecimiento se revelaron algunos datos muy interesantes del proyecto, como por ejemplo, que comenzaron a implementarlo en sus servidores de producción desde hace 6 meses, y que actualmente Facebook ya sirve un 90% de su contenido con HipHop.

También resumieron su necesidad para iniciar este proyecto en estos cuatro motivos:

  1. PHP tiene un alto uso del CPU.
  2. PHP tiene un alto consumo de memoria.
  3. Querían reusar la lógica de PHP en otros sistemas.
  4. Las extensiones son difíciles de escribir para la mayoría de los programadores de PHP.

Pero además de HipHop, también crearon HPHPi, que es un intérprete experimental diseñado para la etapa de desarrollo de nuevas funcionalidades para Facebook. Con HPHPi no es necesario compilar el código de PHP antes de ejecutarlo en HipHop, permitiendo de esta manera detectar errores prematuramente sin cambiar la forma en la que codifican con PHP.

Las más de 300.000 líneas de código y más de 5.000 Unit Tests de HipHop se publicarán en la cuenta de Facebook en Github, y su repositorio estará hospedado en la dirección github.com/facebook/hiphop-php, aunque al momento de escribir esto todavía no está disponible.

Facebook presenta HipHop for PHP

Por una vez los rumores resultaron ser ciertos y exactamente tal como se esperaba Facebook anunció hoy el lanzamiento de HipHop para PHP. Según el ingeniero Haiping Zhao, HipHop les permitió reducir el uso del CPU en sus servidores en un promedio del 50%, dependiendo de la página, resultando en un enorme impacto para todo el sitio de Facebook.

Aunque HipHop se estuvo desarrollándose durante los últimos 2 años, reconocen que todavía no está completo, y la calidad de su código actual puede considerarse como "Beta". Liberarlo bajo la misma licencia de PHP permitiría a su comunidad completar el trabajo, y al mismo tiempo ofrecer un nuevo enfoque a la hora de escalar sitios muy complejos.

¿Pero qué es exactamente HipHop? Según el mismo Zhao:

“HipHop no es técnicamente un compilador. En su lugar es un transformador de código. HipHop transforma tu código fuente PHP en un altamente optimizado código C++ y luego usa g++ (GNU C++) para compilarlo. HipHop ejecuta el código fuente en una manera semánticamente equivalente y sacrifica algunas características raramente usadas -como eval()- a cambio de una performance mejorada. HipHop incluye el transformador de código, una reimplementación del runtime de PHP y una re-escritura de varias extensiones de PHP comunes para aprovechar estas optimizaciones”.

¿Facebook presentará un "compilador de PHP" este Martes?

Facebook

Aprovechamos esta jornada dominical para suspender nuestra objetividad y hacernos eco de esta noticia relacionada con el reciente rumor sobre los desarrollos internos en Facebook relacionados con el lenguaje PHP.

Ahora se dice que el equipo del núcleo de PHP fué invitado al campus de Facebook y, después de obligarlos a firmar un NDA (Non-Disclosure Agreement), se les demostró el nuevo proyecto Open Source del gigante de las redes sociales. Aparentemente, este próximo Martes Facebook presentaría oficialmente el proyecto bajo una licencia de código abierto. Y se trataría, ni más ni menos, de "algún tipo de compilador para PHP".

La idea no parece del todo descabellada, pues con los más de 350 millones de usuarios que debe soportar Facebook, cualquier pequeña mejora en el desempeño de PHP tendría un gran impacto en toda su infraestructura.

¿Facebook está creando un Hyper-PHP compilado?

Un bloggero publica partes de una informal entrevista realizada a una amiga y empleada de hace 2 años de Facebook en el marco de la reciente mudanza de esa empresa a Stanford Research Park, lugar que alguna vez fué el hogar de gigantes como Hewlett-Packard, General Electric y Lockheed.

Pero lo que nos interesa de la entrevista es la mención sobre los desarrollos internos que Facebook estaría realizando sobre el mismo lenguaje de PHP:

- ¿Cuéntame un poco sobre los ingenieros de Facebook?

“Son extraños, pero muy inteligentes. Por ejemplo, hay uno que escencialmente está re-escribiendo por su propia cuenta todo el sitio. Nuestro sitio está codificado, yo diría, en un 90% con PHP. Él está creando HPHP, Hyper-PHP, lo que significa que literalementa está re-escribiendo el lenguaje completo.

Hay una diferencia entre codificar en un lenguaje interpretado y uno compilado. PHP es ejemplo de un lenguaje interpretado. La computadora o el navegador lee el programa como un script, de arriba hacia abajo, y lo ejecuta en ese órden: cualquier cosa que declares al final no puede ser referenciado al principio. Pero en un lenguaje compilado (todo) el programa es compilado en un archivo ejecutable. Entonces no es necesario leer el programa desde el principio al final para ejecutar los comandos. Es mucho más rápido de esta manera.

Así que este ingeniero está convirtiendo el sitio de uno que funciona con un lenguaje interpretado a uno que funciona con un lenguaje compilado. ...”

- ¿Y cuál será el efecto de ejecutar el sitio en Hyper PHP?

“Vamos a reducir el uso del CPU en nuestros servidores en un 80%, así que, prácticamente, los usuarios simplemente verán que el sitio es más rápido. Las páginas cargarán en un quinto del tiempo que lo hacían”.

- ¿Cuándo saldrá esto?

“Cuando esté listo. En los próximos meses, idealmente”.

Supongo que en este momento creer lo anterior es sólo una cuestión de fé. Pero considerando que Facebook es uno de los usuarios más grandes de PHP del mundo y que ya tiene más de 350 Millones de usuarios la idea de un "HPHP" no parece tan descabellada.

Error en Ubuntu 9.10 afecta a PEAR

En el blog de PEAR (PHP Extensión and Application Repository) se reporta que la versión inicial de Ubuntu 9.10 "Karmic Koala" tiene un error que afecta a PHP y a PEAR, y cuya corrección llegó demasiado tarde como para incluirse en ese lanzamiento. El error sí está corregido y sin duda será incluído en las siguientes actualizaciones de "Karmic Koala".

El error principal afecta a la libería zlib, y se hace evidente al intentar instalar o actualizar un paquete; ya que hacerlo involucra descargar un archivo "tarball" que está comprimido. El error causa que algunas funciones de zlib no estén disponibles para PHP y que el código de Archive_Tar falle sin ninguna notificación

Una solución provisoria es usar el argumento -Z para que se descarge sólo un archivo .tar en lugar de uno .tgz, por ejemplo:

pear install -Z phpdocumentor

KDevelop 4 Beta 6 ya soporta PHP

KDevelop

Junto con el anuncio de la versión Beta 6 de KDevelop 4.0, el IDE para el desarrollo de aplicaciones Qt para el escritorio gráfico KDE de GNU/Linux y otros Unix, también se presentaron los nuevos plugins de PHP y PHP-Documentation, que finalmente agregan soporte para ese lenguaje, incluyendo vista de clases, completado de código y vista de documentación.

Los plugins actualmente están en una etapa de desarrollo inicial, pero ya se ven bastante bien. Y aunque no hay ninguna fecha para el lanzamiento de sus versiones definitivas, ya están disponibles en los repositorios unstable de ese proyecto.

La nueva versión de KDevelop4 requiere de KDE 4.3 y Qt 4.5, y puede compilarse siguiendo estas instrucciones. También soporta otros lenguajes de programación como C, C++, Java, Ada, SQL, Python, Perl y Pascal.

Rastreo de código en Zend Server 5.0 Beta

La nueva versión 5.0 Beta del Zend Server incluye una muy interesante nueva característica de rastreo de código (Code Tracing) que puede capturar la ejecución de un archivo PHP en tiempo real.

Esta característica está diseñada para ayudar a los desarrolladores a encontrar y corregir errores de programación, permitiendo registrar la jerarquía de ejecución de los llamados de funciones, incluyendo los argumentos usados y los valores devueltos. Las "estadísticas" recopiladas mientras se encuentre activada esta opción también registran la duración de ejecución de cada función y la memoria usada.

Zend Server 5.0 Beta para Windows o Linux puede descargarse con las versiones 5.2 o 5.3 de PHP. Es destacable, sin embargo, que aparentemente su versión comunitaria gratuita no incluirá ni esta característica de rastreo de código ni tampoco la nueva cola de trabajos.

Zend presenta Simple Cloud API

Simple Cloud

Zend Technologies anunció su nuevo proyecto Simple Cloud API, una iniciativa para permitir a los desarrolladores usar una interface común para acceder a múltiples servicios de múltiples proveedores en la nube computacional, comenzando por Amazon Web Services, Windows Azure, Nirvanix Storage Delivery Network y Rackspace Cloud Files.

Simple Cloud API busca atraer la participación y las contribuciones de la comunidad Open Source para agregar adaptadores para virtualmente todos los principales proveedores de la nube. Los desarrolladores conseguirían así implementar sus aplicaciones en esos entornos sin necesidad de código específico para cada uno y con la promesa de poder tener la posiblidad de migrar de uno a otro sin introducir grandes cambios en su programación.

Pero si bien la Simple Cloud API ofrece un acceso fácil a la funcionalidad común de esos servicios, desde Zend se apresuran a aclarar también que:

“Los desarrolladores pueden usar Simple Cloud API para el 80% de los casos, y luego usar la librería del cliente (específico) de Zend Framework para acceder a las características de valor agregado de cada vendedor”.