Firefox 52 lanzado con soporte para WebAssembly


Representaci贸n 3D de la demostraci贸n de Zen Garden en Firefox 52 con soporte para WebAssembly

Mozilla ha lanzado Firefox 52 , el 煤ltimo navegador con soporte para el sistema operativo Windows XP. Se han realizado varios cambios importantes : se ha simplificado la conexi贸n a puntos de acceso, donde primero debe iniciar sesi贸n en el navegador, aparecen advertencias de peligro si la p谩gina solicita una contrase帽a para una conexi贸n insegura (no HTTPS), el soporte para los complementos NPAPI ha desaparecido (excepto Flash, y el soporte completo permanecer谩 en la compilaci贸n ESR) cerr贸 28 vulnerabilidades .

Pero nada puede compararse con la innovaci贸n principal y fundamental: el soporte para el lenguaje de programaci贸n de bajo nivel WebAssembly (wasm) como el ensamblador, que se llama una de las innovaciones m谩s significativas de la plataforma web en la 煤ltima d茅cada. Esto es lo que faltaba JavaScript.

Montaje web



Los desarrolladores explican por qu茅 era necesario crear WebAssembly . El hecho es que JavaScript fue originalmente concebido como un lenguaje liviano para scripts simples. Nadie imagin贸 en qu茅 se convertir铆a y c贸mo comenzar铆a a aplicarse. Fue inventado para principiantes en programaci贸n, para cosas simples como escribir un formulario en una p谩gina web.

Desde entonces, mucho ha cambiado. Las aplicaciones web modernas son programas inform谩ticos complejos con c贸digo de cliente y servidor, la mayor铆a de los cuales est谩 escrito en JavaScript. A pesar del progreso en el desarrollo de JavaScript en s铆 mismo y de todos los intentos de los desarrolladores para crear motores efectivos para la ejecuci贸n r谩pida de JavaScript, no surgi贸 nada, es simplemente f铆sicamente imposible. JavaScript tiene limitaciones inherentes. El navegador simplemente no puede ejecutar este c贸digo al menos tan r谩pido como el c贸digo nativo en el sistema operativo.

Mozilla fue el primero en madurar antes de desarrollar una especie de m谩quina virtual en un navegador donde puede ejecutar c贸digo de bajo nivel, y hace unos a帽os se lanz贸 asm.js como demostraci贸n (Google experiment贸 con la API Native Client ). El sublenguaje asm.js demostr贸 ser tan bueno que qued贸 claro: necesitamos unir fuerzas con todas las compa帽铆as de desarrollo m谩s grandes para un proyecto conjunto que haga avanzar la web.

El lenguaje WebAssembly de bajo nivel puede funcionar junto con JavaScript y permitir que las aplicaciones web se ejecuten con un rendimiento mucho mayor, casi como las aplicaciones nativas en el sistema operativo.

Ahora, en un navegador, puede ejecutar juegos 3D de alto rendimiento, sistemas de dise帽o asistido por computadora (CAD), editores de video, editores gr谩ficos, visualizaciones cient铆ficas, computaci贸n intensiva en recursos, codificaci贸n de video, cualquier cosa.

Con el tiempo, es m谩s probable que muchas aplicaciones web existentes (correo, redes sociales, editores de texto) y marcos de JavaScript comiencen a usar WebAssembly, lo que aumentar谩 significativamente la velocidad de descarga y aumentar谩 considerablemente su rendimiento mientras trabajan.

A diferencia de otros enfoques, como Flash, que requieren la instalaci贸n de un complemento en un navegador para ejecutar aplicaciones a una velocidad comparable a las aplicaciones nativas, WebAssembly encaja completamente en la plataforma web est谩ndar. Es un est谩ndar abierto y compatible integrado en los navegadores. Esto significa que los desarrolladores pueden integrar bibliotecas WebAssembly para computaci贸n intensiva en CPU (compresi贸n, detecci贸n de rostros, f铆sica) directamente en aplicaciones web existentes que usan JavaScript.

WebAssembly es un est谩ndar abierto desarrollado por Mozilla, Google, Microsoft y Apple. Como puede ver, este grupo representa a los desarrolladores de los cuatro navegadores m谩s comunes, por lo que puede contar con convertirse en wasm como est谩ndar universal. Google promete implementar soporte para WebAssembly en la pr贸xima versi贸n de Chrome (57), Microsoft ya est谩 trabajando en una implementaci贸n en Edge.

El lenguaje de bajo nivel se convertir谩 en una especie de adici贸n a JavaScript y, al final, deber铆a funcionar en todos los lugares donde funciona JS: en todos los navegadores y en todos los entornos de tiempo de ejecuci贸n como Node.js.

驴Qui茅n se beneficiar谩 con el uso de WebAssembly? No se trata solo de escribir nuevas aplicaciones en wasm. A trav茅s de compiladores como Emscripten, se pueden portar juegos completos y aplicaciones nativas listas para usar a la web. El c贸digo C / C ++ portado usando este compilador se ejecutar谩 en el navegador a casi la misma velocidad que la aplicaci贸n nativa. Adem谩s de C / C ++, Rust tambi茅n proporciona soporte preliminar para WebAssembly.

Por ejemplo, puede reproducir la demostraci贸n de Zen Garden (requiere el navegador Firefox 52, solo la versi贸n de escritorio es compatible actualmente).


Las funciones de JavaScript llamar谩n a funciones de WebAssembly y viceversa. Es decir, puede escribir en un solo programa en un lenguaje JavaScript de alto nivel y, a veces, cambiar a C / C ++ / Rust seg煤n sea necesario.

Los desarrolladores comenzar谩n a distribuir y reutilizar m贸dulos WebAssembly de bajo nivel sin tener que comprender su dispositivo, ya que ahora usan bibliotecas JavaScript minificadas.

Mozilla se帽ala que, por el nivel de reutilizaci贸n de c贸digo y arquitectura de software, el muro entre las aplicaciones nativas y web est谩 empezando a colapsar, y esto es solo el comienzo. Las herramientas de desarrollo, los depuradores y los compiladores continuar谩n evolucionando, al igual que la compatibilidad, el rendimiento y la funcionalidad de WebAssembly. Por ejemplo, el plan de Mozilla ahora es implementar soporte para SIMD multihilo y concurrencia.

"En cierto modo, WebAssembly est谩 cambiando lo que significa un desarrollador web", escribe David Bryant, gerente de desarrollo de plataformas en Mozilla, "ya que est谩 cambiando las propiedades fundamentales de la web".

De hecho, ahora es posible portar programas C / C ++ para su ejecuci贸n en un navegador, y en el futuro cercano se puede hacer lo mismo para los lenguajes en los que se escriben las aplicaciones m贸viles: Java, Swift, C #. Todos ser谩n compatibles con la plataforma web est谩ndar. Resulta que, en cierto sentido, todos los programadores eventualmente se convertir谩n en desarrolladores web.

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


All Articles