Desde asm.js a Web Assembly
Kalil de Lima
-
Montevideo - Uruguay
-
Estudiante de Ing en computación - FING UdelaR
-
Desarrollador FULL STACK en Rootstrap
-
Organizador de Python MVD
FUERA DE LA WEB TENEMOS UN MONTóN DE APLICACIONES ESCRITAS EN
-
C
-
C++
-
Rust
NOS BRINDAN ESTOS BENEFICIOS
-
RÁPIDOS
-
CONFIABLES
-
CONOCIDOS
-
GRAN SOPORTE DE BIBLIOTECAS
¿CóMO APLICAMOS ESTAS TECnologías a la Web?
ESTUDIEMOS UN POCO NUESTRO TARGET
LA WEB
-
ABIERTA
-
BASADA EN ESTÁNDARES
HTML
CSS
JAVASCRIPT
¿QUÉ OPCIONES TENEMOS ENTONCES?
OTROS INTENTOS SIMILARES



TENEMOS LOS SIGUIENTES PROBLEMAS
-
NO SIEMPRE SON MULTIPLATAFORMA
-
PROBLEMAS DE SEGURIDAD
-
VERSIONADO
-
FALTA DE ADOPCIóN
¿QUé PODEMOS HACER DENTRO DE LOS ESTáNDARES ENTONCES?
¿QUé PROBLEMAS PRESENTA JAVASCRIPT?
PODEMOS TRATAR DE ESCRIBIR C-LIKE JAVASCRIPT
ASM.JS
¿QUé ES ASM.JS?
-
UN SUBCONJUNTO DE JAVASCRIPT
-
ESTANDARIZADO
-
NO REQUIERE EXTRAS PARA EJECUTARSE
¿Y LA PERFORMANCE?
JAVASCRIPT Es un lenguaje para el cual es difícil optimizar
PODEMOS uSAR CIERTOS HACKS para lograr este objetivo
size_t strlen(char *ptr) {
char *curr = ptr;
while (*curr != 0) {
curr++;
}
return (curr - ptr);
}function strlen(ptr) {
ptr = ptr|0;
var curr = 0;
curr = ptr;
while ((MEM8[curr>>0]|0) != 0) {
curr = (curr + 1)|0;
}
return (curr - ptr)|0;
}-
Info sobre los tipos
-
Manejo de memoria
PROGRAMAR ASí NO ES FáCIL
ALGUNOS PROBLEMAS
-
MUY BAJO NIVEL
-
ENGORROSO DE ESCRIBIR
-
MUCHO CóDIGO PARA HACER POCO
NECESITAMOS ALGO QUE ESCRIBA ASM.JS por nosotros
NECESITAMOS UN TRANSPILADOR

¿QUé NOS PERMITE HACER EMSCRIPTEN?
-
Escribir nuestro código en C, C++ o Rust
-
salvar las distancias entre EL DESKTOP Y LA WEB
-
Generar un SCRIPT en asm.js
NATIVO VS ASM.JS

¿Todo listo entonces?
TODAVíA TENEMOS ALGUNOS PROBLEMAS
-
Javascript es un lenguaje lento
-
Grandes tiempos de parseo
-
Los scripts asm.js en general son grandes
-
NO HAY SOPORTE PARA TIPOS NATIVOS
PERO PARECE QUE VAMOS BIEN ENCAMINADOS
WEB ASSEMBLY

NO ES UN LENGUAJE
NO ES UNA PLATAFORMA
ES UN ESTáNDAR
CUENTA CON SOPORTE NATIVO DE los mayores fabricantes de navegadores




Web Assemby entre navegadores


Web Assemby entre navegadores
CUENTA CON LAS SIGUIENTES VENTAJAS
-
No requiere parsing
-
Soporte nativo para tipos de datos
-
Optimizaciones JIT ahora en tiempo de compilación
-
Es tenido en cuenta al desarrollar el estándar de la web
ES UN TARGET DE COMPILACIÓN
ALCANZA CON IMPLEMENTAR UN NUEVO BACKEND
NUESTRO CóDIGO FUNCIONA COMO ANTES, INCLUSO MEJOR
¿LISTO?
NO
LIMITANTES DE WEB ASSEMBLY
-
NO HAY SOPORTE PARA TODA LA FUNCIONALIDAD DE LA VM
-
LA COMUNICACIóN CON APLICACIONES EXTERNAS ES LENTA
-
SIGUE CORRIENDO EN EL MISMO ENTORNO DE EJECUCIóN QUE JAVASCRIPT
Web Assembly vs JS

Web Assembly vs JS

IGUAL PODEMOS HACER BASTANTE CON LO QUE TENEMOS
EJECUTAR algoritmos coSTOSOS
INTEGRAR BIBLIOTECAS NO PRESENTES EN EL ECOSISTEMA JS
SCRIPT STREAMING
TOTAL
NUESTRO PROGRAMA ES UNA APLICACIóN ENTERAMENTE EN WEB ASSEMBLY
MIXTA
NUESTRO PROGRAMA ES UNA APLICACIóN WEB QUE SE COMUNICA CON MóDULOS WEB ASSEMBLY
ALGUNOS EJEMPLOS
MOTORES DE VIDEOJUEGOS



SQOOSH

PARA CERRAR
-
ES POSIBLE EJECUTAR APLICACIONES NATIVAS EN LA WEB
-
NECESITAMOS UN ESTáNDAR ABIERTO PARA ESTO
-
PODEMOS USARLO PARA CUBRIR A JS CUANDO NO ES SUFICIENTE
¿Quiénes compilan a WEB aSsEmBLY hoy?
-
C
-
C++
-
Rust
¿Quiénes corren WEB asSEmBLY hoy?
-
Firefox
-
CHROME
-
EDGE
-
Opera
-
PostgreSQL
¿Y AHORA?
MIRANDO HACIA EL FUTURO
-
DAR SOPORTE A MáS LENGUAJES
-
MÁS INTEGRACIONES
-
GARABAGE COLLECTOR
¡Gracias!
kalil.de.lima@fing.edu.uy
github.com/kaozdl
@KAoz_165


owu.herokuapp.com
De asm.js a WebAssembly
By Kalil De Lima
De asm.js a WebAssembly
- 223