Rubinius es una implementación de Ruby que tiene la característica principal de estar escrito mayormente en Ruby.
La máquina virtual está escrita en C++ y utiliza LLVM para convertir el bytecode en el código nativo del procesador destino, pero el compilador de los bytecodes y la gran mayoría de las bibliotecas están escritas en Ruby. Este nucleo utiliza un recolector de basura muy optimizado y permite extensibilidad en C que soporta las mismas extensiones en este lenguaje que utiliza el intérprete estándar de Matz (conocido como MRI).
El siguiente diagrama muestra la distribución de componentes de Rubinius:
Uno de los desafíos de Rubinius siempre fue medir el nivel de compatibilidad contra la implementación de Matz, por lo que tempranamente empezaron a trabajar en RubySpec, una serie de pruebas que funcionan como la especificación del lenguaje, ya que éste no tenía una originalmente y por sus propias características de meta-programación, es especialmente complejo de validar.
Básicamente, Rubinius, hasta su última versión estable, soporta Rails, Rake, RSpec, Nokogiri, Mongrel y prácticamente todas las bibliotecas y frameworks hasta Ruby 1.8.x.
La novedad es que el equipo acaba de liberar la versión preliminar 2.0, que fundamentalmente soporta Ruby 1.8.7 y 1.9.2, y funciona bajo Windows, pero además utiliza un nuevo mecanismo de threading realista que aprovecha los múltiples núcleos de los procesadores modernos.
Adicionalmente, el equipo migró el repositorio a GitHub. Para los interesados en el desarrollo de lenguajes, vale la pena al menos pegarle una mirada.
No hay comentarios:
Publicar un comentario