River Trail es la propuesta de Intel para extender JavaScript vía un par de instrucciones simples para hacer procesamiento en paralelo, pero manteniendo a JavaScript reconocible. Trabaja también con HTML5, Canvas y WebGL en particular. Hace uso de una biblioteca de paralelismo OpenCL, como un lenguaje intermedio de manera que se pueda usar en cualquier hardware y no necesariamente en el que Intel fabrica. El inventor de JavaScript, Brendan Eich, estuvo presente cuando en el foro de desarrolladores de Intel, se presentó River Trail y comentó al final de la sesión que cabildearía este “nuevo lenguaje” para que fuese parte del estándar ECMAScript.
Cabe decir que el enfoque a los procesos en paralelo ha tomado un rumbo muy definido. Los lenguajes por sí mismos no pueden paralelizar automáticamente. Es una cuestión que los programadores deben definir, es decir, deben indicarle al código qué procesos se pueden paralelizar y cuales no. Desde luego que desde hace mucho se trabaja en diseñar sistemas que paralelicen código automáticamente, pero aún están lejos de que esto pueda ocurrir a corto o mediano plazo. Así, los programas paralelizables usan estructuras de datos en paralelo. Un nuevo arreglo llamado ParallelArray, el cual es un objeto (con herencia y polimorfismo para los que usen objetos en sus labores diarias de programación), da todo el comportamiento necesario. Se puede convertir este arreglo en uno estándar, incluyendo un Canvas, que es un arreglo de pixeles al final de cuentas, o bien incluso, se puede crear un nuevo objeto (vía herencia), que use datos en bloque. Una vez que se tiene un ParallelArray, se puede operar con nuevos métodos paralelos como map, reduce, combine, filter, etc. Toda la sincronización y el bloqueo necesario se toma en cuenta automáticamente.
WebGL, por ejemplo, lleva las 3D a los navegadores, pero sin que se pueda procesar en paralelo, por lo que la producción de imágenes en javaScript siempre ha sido pobre, por decir lo menos. Con la implementación en paralelo, todo parece ser posible. La app demo en el video (ver más abajo), muestra una simulación física de 4000 cuerpos usando WebGL, y la diferencia entre la implementación serial y la de ocho núcleos es muy importante. Por ejemplo, la versión serial corre a 3 fps (frames per second – cuadros por segundo), mientras que la versión en paralelo corre a unos 45 fps.
Puede verse River Trail en acción en una app que está cercana a un juego 3D, en el siguiente video, aunque la calidad del sonido deja que desear.
Si le parece que toda esta información es suficiente para animarse a usar JavaaScript en paralelo, puede bajar el plugin para Firefox aquí y empezar a escribir javaScript paralelo desde ya.
Fuente: i-programmer