Firefox 52 lançado com suporte ao WebAssembly


Renderização em 3D da demonstração Zen Garden no Firefox 52 com suporte para WebAssembly

A Mozilla lançou o Firefox 52 , o navegador mais recente com suporte para o sistema operacional Windows XP. Foram efetuadas várias alterações importantes : a conexão com os pontos ativos foi simplificada, onde você deve primeiro fazer login no navegador, aparecerão avisos de perigo se a página solicitar uma senha para uma conexão não segura (não HTTPS), o suporte para plug-ins NPAPI desapareceu (exceto o Flash, e o suporte total permanecerá na compilação do ESR) fechou 28 vulnerabilidades .

Mas nada se compara à inovação principal e fundamental - o suporte à linguagem de programação de baixo nível WebAssembly (wasm), como assembler, que é chamada de uma das inovações mais significativas da plataforma web na última década. Isto é o que faltava em JavaScript.

Webassembly



Os desenvolvedores explicam por que havia a necessidade de criar o WebAssembly . O fato é que o JavaScript foi originalmente concebido como uma linguagem leve para scripts simples. Ninguém imaginou o que iria crescer e como começaria a ser aplicado. Foi inventado para iniciantes em programação - para coisas simples, como escrever um formulário em uma página da web.

Desde então, muita coisa mudou. Os aplicativos da web modernos são programas de computador complexos com código de cliente e servidor, a maioria dos quais é escrita em JavaScript. Apesar do progresso no desenvolvimento do próprio JavaScript e de todas as tentativas dos desenvolvedores de criar mecanismos eficazes para a execução rápida do JavaScript, nada aconteceu, é simplesmente fisicamente impossível. JavaScript tem limitações inerentes. O navegador simplesmente não pode executar esse código pelo menos tão rápido quanto o código nativo no sistema operacional.

A Mozilla foi a primeira a amadurecer antes de desenvolver um tipo de máquina virtual em um navegador onde você pode executar códigos de baixo nível - e, alguns anos atrás, o asm.js foi lançado como demonstração (o Google experimentou a API do Native Client ). A sub-linguagem asm.js. mostrou-se tão boa que ficou clara: precisamos unir forças com todas as maiores empresas de desenvolvimento para um projeto conjunto que levará a web adiante.

O WebAssembly de idioma de baixo nível pode funcionar em conjunto com JavaScript e permitir que aplicativos da Web sejam executados com desempenho muito maior - quase como aplicativos nativos no sistema operacional.

Agora, em um navegador, você pode executar jogos 3D de alto desempenho, sistemas de desenho assistido por computador (CAD), editores de vídeo, editores gráficos, visualizações científicas, computação com muitos recursos, codificação de vídeo - qualquer coisa.

Com o tempo, muitos aplicativos da Web existentes - correio, redes sociais, editores de texto - e estruturas de JavaScript têm mais probabilidade de começar a usar o WebAssembly, o que aumentará significativamente a velocidade de download e aumentará muito seu desempenho enquanto estiver trabalhando.

Diferente de outras abordagens, como o Flash, que exige a instalação de um plug-in em um navegador para executar aplicativos a uma velocidade comparável a aplicativos nativos, o WebAssembly se encaixa totalmente na plataforma da Web padrão. É um padrão aberto e compatível integrado aos navegadores. Isso significa que os desenvolvedores podem integrar as bibliotecas do WebAssembly para computação intensiva da CPU (compactação, detecção de faces, física) diretamente nos aplicativos da Web existentes que usam JavaScript.

O WebAssembly é um padrão aberto desenvolvido pela Mozilla, Google, Microsoft e Apple. Como você pode ver, esse grupo representa os desenvolvedores dos quatro navegadores mais comuns, para que você possa se tornar wasm como um padrão universal. O Google promete implementar o suporte ao WebAssembly na próxima versão do Chrome (57). A Microsoft já está trabalhando em uma implementação no Edge.

A linguagem de baixo nível se tornará uma espécie de adição ao JavaScript e, no final, deve funcionar em qualquer lugar onde o JS funcione: em todos os navegadores e em todos os ambientes de tempo de execução, como o Node.js.

Quem se beneficiará do uso do WebAssembly? Não se trata apenas de escrever novos aplicativos no wasm. Através de compiladores como o Emscripten, jogos inteiros e aplicativos nativos prontos podem ser portados para a web. O código C / C ++ portado usando esse compilador será executado no navegador quase na mesma velocidade que o aplicativo nativo. Além do C / C ++, o Rust também fornece suporte preliminar para o WebAssembly.

Por exemplo, você pode reproduzir a demonstração do Zen Garden (requer o navegador Firefox 52, apenas a versão para desktop é suportada no momento).


As funções JavaScript chamarão as funções do WebAssembly e vice-versa. Ou seja, você pode escrever em um único programa em uma linguagem JavaScript de alto nível e, algumas vezes, mudar para C / C ++ / Rust, conforme necessário.

Os desenvolvedores começarão a distribuir e reutilizar os módulos WebAssembly de baixo nível sem precisar entender seu dispositivo, pois agora eles usam bibliotecas JavaScript minificadas.

A Mozilla observa que, pelo nível de reutilização de código e arquitetura de software, a barreira entre aplicativos nativos e da Web está começando a entrar em colapso, e isso é apenas o começo. As ferramentas, depuradores e compiladores do desenvolvedor continuarão a evoluir, assim como a compatibilidade, desempenho e funcionalidade do WebAssembly. Por exemplo, o plano da Mozilla agora é implementar o suporte a multithreading e simultaneidade SIMD.

“De certa forma, o WebAssembly está mudando o que um desenvolvedor da web significa”, diz David Bryant, gerente de desenvolvimento de plataforma da Mozilla, “assim como está mudando as propriedades fundamentais da web”.

De fato, agora tornou-se possível portar programas C / C ++ para execução em um navegador e, em um futuro próximo, o mesmo pode ser feito para os idiomas em que os aplicativos móveis são gravados - Java, Swift, C #. Todos eles se tornarão compatíveis com a plataforma web padrão. Acontece que, em certo sentido, todos os programadores se tornarão desenvolvedores da web.

Source: https://habr.com/ru/post/pt402173/


All Articles