FISL14: Emscripten

Provavelmente a palestra que mais me afetou em termos de inovação, durante o FISL14, foi esta, de Ricardo Panaggio.

Emscripten, basicamente é um compilador C e C++, mas também oferece suporte a qualquer linguagem que possa ter seu código compilado para LLVM, como por exemplo Lua e Python. Alguns exemplos de linguagens que já rodam no navegador: http://repl.it/languages

Pode parecer loucura, mas é isso mesmo, o projeto compila programas para a linguagem JavaScript, permitindo que estes sejam executados em um browser ou até mesmo em linha de comando, através do node. Para quem é um programador convencional de JavaScript, que até hoje tinha JQuery e AJAX como algo normal, tomar ciência de algo assim é como ver outro mundo.

As motivações para a criação desse compilador, são muitas, mas podemos destacar:

– converter aplicativos legados e já existentes para o modelo web, como por exemplo, o GNUPlot (que já foi portado);

– Aumentar a experiência do usuário em WebApps, como por exemplo, jogos mais refinados e de melhor qualidade;

Mas porque usar JavaScript e não simplesmente disponibilizar a sua linguagem preferida no browser? Poderíamos ter um um interpretador Python rodando no Firefox, por exemplo.

A grande questão é que adotar novos padrões levam muito tempo e o JavaScript já está em desenvolvimento e sendo melhorado a muitas anos, ou seja, já está bastante maduro seu uso em navegadores. Além disso, existe uma certa concorrência entre fornecedores, que tentam fazer “sua implementação” de JavaScript ter melhor performance do que a dos outros, e isso gera uma boa performance em relação a execução dos aplicativos compilados de forma legada.

Nos piores casos, conforme demonstrado na palestra, o aplicativo ficou apenas 3x mais lento em relação a execução nativa na mesma máquina. Isso é algo espetacular, considerando que o mesmo código vai rodar em qualquer plataforma que implemente um browser compatível com a tecnologia JavaScript moderno. E isso que a tecnologia está sendo implementada agora, ou seja, ainda tem muito espaço para melhorar a performance.

Existe um interpretador bytecode que está em avaliação, mas não tem evoluído muito e acaba nos mesmos problemas de adicionar qualquer outra linguagem.

Panaggio salientou que a conversão é bastante fácil e citou alguns exemplos, sendo que o maior destaque foi o porte do Unreal Engine 3 em 4 dias, graças ao uso da bibliotecal WebGL.

O Palestrante demonstrou como fazer a compilação e eu achei esse link com tutoriais: https://github.com/kripken/emscripten/wiki/Tutorial a partir da dica dele de consultar o projeto no GitHub.

Para interagir com o código compilado e a página web, é necessário o uso de “pontes”, abordadas aqui: https://github.com/kripken/emscripten/wiki/Interacting-with-code

Ao final da palestra, não pude deixar de imaginar nas possibilidades de evolução que esta tecnologia pode permitir ao FirefoxOS.

Tags: , ,

Uma resposta to “FISL14: Emscripten”

  1. FISL14: Emscripten, linguagens e o Firefox OS | Linux Ajuda Says:

    […] Ao final da palestra, não pude deixar de imaginar nas possibilidades de evolução que isso pode permitir ao FirefoxOS.” [referência: lgbassani.wordpress.com] […]

Deixe um comentário