Processamento paralelo em JavaScript ganha força com a nova extensão da Intel
A linguagem JavaScript sempre foi sequencial (não-paralela), embora a capacidade de processamento paralelo já esteja disponível até em dispositivos móveis. Para reduzir essa limitação, a Intel tem trabalhado em seus laboratórios numa extensão do JavaScript capaz de explorar as vantagens dos sistemas com vários núcleos, chamada River Trail.
A extensão permite fazer o uso dos vários núcleos das CPUs Intel e de suas novas funcionalidades vetoriais (SSE/AVX) em aplicações web. O River Trail visa com isso tornar possível o uso de aplicações que necessitam de grande poder computacional, tal como o processamento de fotos, no próprio browser. (Conheça mais sobre as extensões vetoriais da Intel aqui e aqui).
A integração com tecnologias web existentes foi uma das maiores preocupações durante o desenvolvimento da nova extensão, conforme comenta Stephan Herhut do Intel Labs:
Nossa meta foi tornar a escrita de aplicações web com o River Trail tão fácil quanto a programação com JavaScript convencional. O River Trail estende o JavaScript com um modelo de programação paralela simples mas poderoso. Além disso, como a tecnologia é embiutida em JavaScript, funciona bem com as novas APIs de HTML5. Particulatmente, o River Trail funciona bem com o WebGL, uma API JavaScript desenvolvida recentemente para OpenGL e usada para a visualização 3D no browser. Uma de nossas aplicações de desmonstração é um simulador de física com mais de 4 mil elementos, utilizando o River Trail para processamento e visualização com o WebGL.
O River Trail estende o JavaScript com construções determinísticas de paralelismo na manipulação de dados, que são traduzidas em tempo de execução em uma camada de abstração de hardware de baixo nível. Com o uso de CPUs de vários núcleos e instruções vetoriais, o River Trail consegue obter reduções no tempo de processamento (link para vídeo) quando comparado ao JavaScript sequencial.
Em particular, é adicionado o tipo ParallelArray ao JavaScript. Trata-se de uma estrutura somente-leitura que mantém os dados de um array, cujos elementos podem ser processados em paralelo. A sua criação pode ser feita através do construtor ou devolvida na chamada de um dos métodos de protótipo de ParallelArray. O dado passado para o construtor ou o protótipo é tipicamente um array JavaScript ou uma função usada para gerar os valores para o ParallelArray.
Por exemplo, "new ParallelArray([1,2,3])" cria um ParallelArray com os valores 1, 2 e 3. O array fica acessível por funções como combine, filter, map, reduce, entre outras. O processamento dentro dessas funções é feito em paralelo. As funções citadas podem ser usadas normalmente como um subconjunto do JavaScript.
O River Trail está disponível como um add-on do browser Firefox.
Conteúdo educacional
Mobilidade: Frameworks, SOs e o Mercado
Ricardo Ogliari 23 Mai, 2013
Caminhos de uma estratégia mobile
Sérgio Lopes 23 Mai, 2013
Complexidade organizacional no Século 21
Alexandre Magno 16 Mai, 2013

Olá visitante
Você precisa cadastrar-se no InfoQ Brasil ou Login para enviar comentários. Há muitas vantagens em se cadastrar.Obtenha o máximo da experiência do InfoQ Brasil.
Dê sua opinião