Carakan: El nuevo motor JavaScript ultrarrápido de Opera

La compañía Opera Software está definiendo un nuevo motor JavaScript con nombre en clave Carakan, 2,5 veces más rápido que el incluido en Opera 10.

Mejorar el motor anterior

Mientras tanto, Lindstrom dijo que el equipo de Opera se ha centrado en mejorar el anterior motor en tres áreas fundamentales: un bytecode basado en registros, la generación de código nativo y la clasificación automática de objetos.

Según Lindstrom, el último par de generaciones del motor ESMAScript de Opera ha utilizado un bytecode basado en una pila de instrucciones. Sin embargo, dijo Lindstrom: “En el nuevo motor, hemos optado por un conjunto de instrucciones bytecode basado en registros. En una máquina basada en registros, en vez de pila de valores de tamaño dinámico, hay bloques de tamaño fijo llamados “registros”. De esta forma, en lugar de mirar sólo los valores ubicados al principio de la pila, cada instrucción puede acceder a cualquier registro. Con esto no es necesario copiar valores de y hacia la parte superior de la pila para trabajar con ellos, se necesitan ejecutar menos instrucciones, y es necesario copiar menos datos”.

“Esta compilación nativa de código esta basada en un análisis de tipo estático (con un tipo de sistema interno más rico que los habituales de ECMAScript) para eliminar validaciones innecesarias, especialización especulativa donde sea preciso (con atención a los tipos estáticos indeterminados), y a un relativamente ambicioso asignador de registros que permite generar un código nativo compacto con tan pocos movimientos inter-registro y accesos a memoria como sea posible”, dijo Lindstrom.

Adicionalmente, para crear el código nativo a partir del código típico ECMAScript, también generamos instrucciones nativas que ayudan a ajustarse con las expresiones regulares, dijo.

“El otro área de mayores mejoras para Carakan respecto al motor actual es la representación de objetos ECMAScript”, dijo Lindstrom. “En el nuevo motor, cada objeto es asignado a una clase que agrupa diversa información acerca del objeto, como si es un prototipo y el orden y nombre de todas sus propiedades”, añadió. “La asignación por clases es natural y muy dinámica desde que ECMAScript es un lenguaje muy dinámico, pero este lenguaje esta organizado de tal forma que los objetos con el mismo prototipo y el mismo conjunto de propiedades son asignados a la misma clase”.

Mientras tanto, Lindstrom dijo que el nombre Carakan, como los nombres de los anteriores motores ECMAScript de Opera, Futhark, Linear A y Linear B, es el nombre de un sistema de escritura, o “script”.

Opera anunció Carakan en la conferencia Web Directions North en Denver. También en este evento, Opera anunció Vega, una nueva librería de gráficos vectoriales.

En un post del blog, el desarrollador de Opera Espen Andre Overdahi dijo que Opera creo Vega después de que la compañía comenzase a trabajar en el soporte SVG, que requiere de una librería de gráficos vectoriales.

“Examinamos que librerías estaban disponibles para usarse y que cumpliesen nuestros requisitos: rapidez, bajo consumo de memoria y que funcionase en un amplio rango de plataformas que van desde móviles hasta TV u ordenadores de sobremesa”, dijo Overdahi. “No encontramos nada que encajase bien en nuestras necesidades, así que decidimos escribirla nosotros mismos. Poco después de crear Vega, también le añadimos soporte Canvas”.

Overdahi dijo que la más reciente mejora de Vega es la habilidad para usar aceleración basada en hardware. Y dijo que Opera esta actualmente utilizando OpenGL y Direct3D.