Los lenguajes de programación evolucionan al igual que el hardware. Si dejan de hacerlo se vuelven obsoletos y desaparecen. Otros nacen y por razones por demás extrañas, empiezan a cobrar popularidad y de pronto se vuelven lenguajes de uso común. Tal es el caso de Python, el cual quizás ha empezado a ser usado con más frecuencia por su sintaxis limpia y su afán de hacer código que sea leíble fácilmente. Aparte de esto, Python tiene incluidos varios paradigmas. Por una parte es un lenguaje de programación que bien puede considerarse imperativo (como Pascal, C), pero que también usa parte del paradigma de la programación funcional. Un detalle interesante es que Python se interpreta, pero considerando la velocidad de las computadoras, esto no disminuye radicalmente su eficiencia.
Ahora nos enteramos que ha salido la versión 2.0 de PyPy, que tiene soporte para procesadores ARM y compatibilidad CFFI. Para quienes no estén muy enterados sobre lo que pasa en el mundo de Python, PyPy es una interesante alternativa que cae en lo que se llama just-in-time compiler – JIT, que puede hacer que Python se ejecute más rápidamente. Ofrece además la facilidad de correr en un sandbox, es decir, en un ambiente seguro para evitar así virus o código malicioso. La nueva versión corre en máquinas ARM que corran Linux. Hay una versión que no parece ser estable para Windows de 64 bits. Así que por lo pronto, Linux es el ganador.
El soporte para CFFI significa que la nueva versión puede llamar código escrito en C desde Python usando una interfaz llamada Foreign Function Interface. CFFI -dicen los creadores de PyPy- es muy rápido pero que le falta aún una etapa de optimización que lo haría más rápido aún, como una llamada a código nativo de C.
La versión 2.0 es beta y algunas características parecen ni estar presentes, pero se espera que para la versión final sí se encuentren como soporte a greenlets en el JIT, que es una extensión de C para Python, que permite añadir co-rutinas al lenguaje, las cuales son útiles para multitareas cooperativas. Sin embargo, dos características que no estarán en la versión final 2.0 son un tiempo más corto para iniciar JIT y soporte para software de memoria transaccional.
Referencias: