Hace 4 años | Por --625430-- a w3.org
Publicado hace 4 años por --625430-- a w3.org

El WebAssembly Working Group ha publicado las tres especificaciones de WebAssembly como recomendaciones W3C, marcando la llegada de un nuevo lenguaje para la web del cual permite ejecutar código en el navegador.

Comentarios

D

#8 Javascript es muy lento cuando se utiliza de forma normal.
Webassembly tiene todas las de ganar y es mucho más facil de usar en aplicaciones que necesiten rendimiento o que necesiten threads, sin olvidar que se puede reaprovechar millones de librerías hechas en c/c++ que es como un legado humano de conocimiento.
La idea es muy buena pero veremos como se gestiona algo que a mi modo de ver es revolucionario, que hará apple cuando las aplicaciones webassembly son de una calidad similar a las apps, permitirá su uso sin pasar por caja?
Que hará google cuando no pueda meter mano de los entresijos de una web para su "indexación"?
Tengo mis palomitas preparadas.

K

#11 no es cierto lo que dices. Como te comentaba JavaScript es muy rápido (optimizado o no). Otra cosa es que el código JS sea una mierda pero el mismo código escrito en C++ también lo sería.

La ventaja de WebAssembly es que se puede compilar rutinas concretas ya escritas en otros lenguajes y poder ejecutar esas rutinas concretas en el navegador. Pero su utilidad termina aquí. Es decir no es su intención sustituir a JavaScript en absoluto.

Que hará google cuando no pueda meter mano de los entresijos de una web para su "indexación"?

???? Vale, definitivamente aquí estamos confundiendo cosas. Google no indexa una web generada con JavaScript a día de hoy.

Por cierto, NO tiene soporte de threads ni de muchísimas otras cosas. Están ello, por supuesto, pero ahora mismo no lo soporta.

D

#12 El soporte de threads en wasm están soportados y habilitados por defecto desde chrome 74, estuvieron en trial desde la 69.
SharedArrayBuffer se deshabilitó por las vulnerabilidades que todos sabemos, pero chrome ya lo ha reactivado y el resto pues les seguirá pronto. Solo hay que ver la aplicación earth en wasm para ver la mejora de rendimiento con threads.
Con lo de que javascript es rápido, ya sabes que todo es relativo, pero yo que hago aplicaciones nativas con Qt/QML, el codigo es una mezcla de C++ y javascript, y bueno, las comparaciones reales no van en la linea de tu pensamiento.
Solo tienes que ver las recomendaciones por doquier de Digia de usar javacript lo menos posible si quieres rendimiento (de hecho ahora se ha optado por desarrollar un compilador en tiempo de compilación de javascript para mejorar tiempos).

K

#22 por lo general los motores de JavaScript son bastante rápidos... En teoría por supuesto pero también en los diferentes tests que se hacen en los diferentes entornos. No soy un experto ni nunca he llevado web engines al escritorio pero seguramente en tus aplicaciones usas un V8 integrado sobre más cosas y en tu caso probablemente sean esas otras cosas lo que hace que algo vaya lento. Si tienes problemas de rendimiento en tus interfaces me juego el cuello a que es debido a las rutinas de dibujado de la interfaz y, quizás, a los cambios de contexto de un entorno a otro. Probablemente sea lo primero. Qué se puede hacer para evitar eso? Probablemente nada... Más allá de evitar usar JavaScript para manipular la interfaz como bien comentas.

Un saludo!

D

#12 se puede compilar rutinas concretas ya escritas en otros lenguajes y poder ejecutar esas rutinas concretas en el navegador

pero ahí ya depende de la arquitectura y sistema operativo que tenga el cliente,¿o hay que compilar para todos los clientes posibles?

Porkopek_

#12 Google no indexa una web generada con JavaScript a día de hoy

Claro que sí.
https://seopressor.com/blog/javascript-seo-how-does-google-crawl-javascript/

A efectos de SEO, es mejor renderizar el HTML en el servidor, pero Google si que indexa páginas donde el HTML se produce solo client-side

dudo

#11 apple permite instalar cualquier web como app, de hecho cuando salió el iPhone sólo se podían instalar webapps, el modelo no tuvo mucho éxito

prejudice

#11 Que hará google cuando no pueda meter mano de los entresijos de una web para su "indexación"?
Si los buscadores no indexan bien tu página, posiblemente el problema lo tengas tú.
A parte de eso. A día de hoy, existen soluciones para que indexen correctamente cuándo haces aplicaciones SPA ( https://es.m.wikipedia.org/wiki/Single-page_application ), por ejemplo en angular se puede usar Server-side Rendering ( https://angular.io/guide/universal ) para que los buscadores indexen todo bien, como si fuera una aplicación web clásica

D

#14 un foro de hackers de la web y lo que le han dicho en la JS party Valdepeñas

D

#15 Algunos juegos 3D "potentes" no tiraban lento en absoluto en un navegador como Chrome con un Pentium G y 4GB de RAM. Y una HD2000/3000 como soporte gráfico integrado.

https://www.webassemblygames.com/

D

#17 ¿Y que y tiene esto que ver con "JavaScript optimizado es tan rápido como C++ o en algunas tareas incluso más rápido"?

D

#20 A, vale, JS. Bueno, con algunos JIT como v8 pueden jugar con la optimización en según que casos donde C++ no puede. Pero no generalmente.

D

#15 https://jquesnelle.github.io/mupen64plus-ui-console/

Un ejemplo. Y en PC's actuales podrías emular la DC y la PSP sin problemas al menos a 2X usando WebAssembly y un port EMScripten de PPSSPP.

K

#14 no me apetece buscar pero es fácil encontrar webs especializadas hablando precisamente sobre esto. Un adelanto: los algoritmos de manejo de strings suelen ser casi tan rápidos en JavaScript como en C++. Y otra cosa, JavaScript es código interpretado sólo la primera vez que se lee. Después se compila a código máquina por el navegador.

Nova6K0

#16 Se ve perfectamente en la implementación de las páginas web... Una cosa entra casi en cualquier web con NoScript desactivado en dicha web y luego con NoScript activado en la misma, a ver si notas diferencia. Yo ya te digo que sí. Además de que te evitas posibles scripts de minado, malwares varios por redirección...

Salu2

m

#44: Y que si el principal uso es minar criptomonedas...

prejudice

#8 JavaScript optimizado es tan rápido como C++ o en algunas tareas incluso más rápido.

Se me ha caído el monóculo en la taza de té

m

#1: Y otra: ¿Qué pasa si no puedes usar un navegador actualizado?

A algunos lo de la retrocompatibilidad se les olvida bastante.

K

#6 ?? WebAssembly no es JavaScript, es un lenguaje diferente. Creo que te estás confundiendo con "asm.js" que sí es JavaScript.

omegapoint

#9 es verdad, lo siento, he leido mal.

D

Ahora que empezaba a entender el JavaScript... Grrrr

omegapoint

#5 esto es javascript igual.

¿lo tuyo es sarcasmo?

m

#5 Siempre seguirás necesitando Javascript. WebAssembly no tiene acceso al DOM, este se usa para realizar cálculos complejos que después querrás pintar en pantalla con Javascript.

m

#5 #29 Aunque creo que había entendido mal la noticia, parece que recomienda un sustituto a javascript y no una mejora de WebAssembly

hasta_los_cojones

Y yo recomiendo rust para programar y compilar a webasambly

M

#4 Pregunta tonta de Rust. Los paquetes de Rust...¿cargo se llaman?...¿Funcionan en ambiente nativo y web igualmente? ¿O hay paquetes que sólo funcionan nativo? ¿Si es así se pueden filtrar?

hasta_los_cojones

#26 para que funcione en web tienes que compilarlo a webasambly

Y no te puedo decir mucho más porque aún no he hecho nada más que ejemplos y ejercicios.

El lenguaje mola. Más que go, más que c y más que java.

No sé si mola más que erlang. Nunca he usado erlang.

cosmonauta

#36 Noorrrr... Go mola más.

Ahora en serio, golang y Rust son los mejores lenguajes del momento.

hasta_los_cojones

#40 las gorrutinas me han flipado, pero la gestión de memoria de rust y el polimorfismo, me han flipado incluso más.

Por cierto, con go no se puede compilar para webasambly, porque go tiene recolector de basura, ¿no?

cosmonauta

#43 Si se puede. Sólo hay que pasarle un flag de compilación, igual que si haces compilación cruzada.

hasta_los_cojones

#49 ohhhh, intrresante.

Supongo que aunque WebAssembly no tiene recolector de basura nativamente, el archivo compilado puede incluirlo. Tampoco tiene recolector de basura el código máquina, y eso no impide que un lenguaje como go pueda compilar a código máquina.

Igual le doy otra ojeada.

#50 nop, lo estoy aprendiendo para usarlo en proyectos propios y de cara al futuro.

cosmonauta

#43 ¿Trabajas con Rust? Yo lo he estado mirando en plan novato y me ha gustado, pero no quise profundizar más después de ver que no había una sola oferta de Rust en toda Barcelona.

En go somos pocos, pero cada vez hay más oferta.

D

#26 Cargo es el gestor de paquetes y herramienta de compilación, los paquetes en sí se llaman crates.

M

#58 ¿Pero los paquetes son universales o los hay sólo para "binario" y otros sólo "web"?

D

#59 Creo, pero no estoy seguro, que muchos son universales, a menos que dependan de funcionalidades específicas del SO. Compilar tu crate para WASM es un poco con utilizar un compilador cruzado, pero por suerte hay herramientas que ayudan en la tarea:

https://lib.rs/crates/wasm-pack
https://rustwasm.github.io/docs/wasm-pack/

J

Para los curiosos, Webassembly se usa en lichess.org en el análisis de jugadas en vivo (https://lichess.org/analysis)
El código del motor de ajedrez Stockfish lo han portado a Webassembly en https://github.com/niklasf/stockfish.wasm

g

Mierda, justo ahora que acabo de aprender react y typescript....

Probé webassembly hace un tiempo. Una simple aplicación de todo list eran 20 MB a descargar por el navegador. No lo veo

box3d

#35 Define "simple" y entenderé si 20MB es mucho o poco.

T

#37 Tampoco es que puedas complicar mucho un "TODO List"...

box3d

#56 Cargar Qt con widgets (framework de escritorio, con ventanas y botones, compilado para WebAsm) son ~10MB. Sin hacer nada. Pero es un framework pesado.

20MB es una animalada. A saber cuanta librería estabas cargando.

Jesuo

Si, si, un claro ingles nativo el que escribió eso, y la dirección w3.org ccccccccchirria.

Jakeukalane

#2 ¿a qué te refieres?

David_VG

#3 w3CCCC

Jakeukalane

#7 world wide web (w3) consortium. El consortium no lo han puesto en la url. Es su web.

David_VG

#10 explicaselo a el yo solo soy el mensajero.

Jakeukalane

#2 - #10

Jesuo

#13 W3C.org

Jesuo

#13 w3c.org me importa una mierda como redireccione hoy o los dns, tengo muy buena memoria.

frg

#48 No tan buena, que el dominio w3.org lo compraron en el 94, ... lol lol

P

#2

Porkopek_

#2 El inglés del artículo es perfecto. Puede no ser nativa, pero o lo habla muy bien o se lo ha revisado un nativo

Ithilwen2

Opera mini aprende alguna cosa