Cuando comenzó el navegador, era solo una ventana para mostrar algo de texto y tal vez algunas imágenes. Era simplemente una nueva forma de distribuir el mismo tipo de documentos que podrías encontrar en una mesa de café, como revistas o libros. Java, JavaScript y CSS cambiaron todo eso. Sólo fue necesario agregar un poco de funcionalidad completa de Turing, y los programadores inteligentes encontraron formas de duplicar procesadores de texto, juegos y más dentro de lo que alguna vez fue un contenedor para palabras e imágenes inmóviles. Sin embargo, a pesar de toda la creatividad, las aplicaciones que se ejecutan en los navegadores eran aún más lentos y consumían más recursos que el código nativo. WebAssembly fue diseñado para solucionar este problema. El código viene precompilado, por lo que no es necesario realizar nada justo a tiempo. Es mucho más pequeño, lo que reduce los costos de ancho de banda y los retrasos en la red. Ofrece una solución general de bajo nivel, para que los desarrolladores puedan entregar código al navegador sin rebajarse al nivel de JavaScript, o incluso sin necesidad de transpilar su código. Pero la historia no termina ahí. Los desarrolladores están encontrando formas de hacer más con WebAssembly que ofrecer páginas web animadas y agregar zip a los anuncios. WebAssembly, o Wasm, es una tecnología fundamental que tiene un lugar en las herramientas y la infraestructura de todas las pilas. Éstos son algunos de los ejemplos recientes más intrigantes que hemos encontrado. 11 nuevos casos de uso para WebAssembly La lista de soluciones inteligentes sigue creciendo. Comenzó lentamente, pero ahora hay cientos de aplicaciones sorprendentes para WebAssembly. Tal vez uno de estos inspire su próximo proyecto: Applets encore Decodificación de voz Reglas de modularidad Cuadernos Wasm Análisis de datos Videojuegos antiguos Funciones como un servicio Bases de datos más grandes y cercanas Excavación dentro de bases de datos Inteligencia avanzada Complementos en todas partes Applets encore ¿Alguna vez has escuchado a alguien ponerse nostálgico por los días en que ¿El código Java se ejecutaría como subprogramas en su navegador? Probablemente no. Esa funcionalidad nativa nunca se entregó y prácticamente desapareció hace años. Pero ahora puedes recuperar la magia con CheerpJ, una versión de JVM compilada en WebAssembly. Es como volver al pasado y ver The Matrix o Good Will Hunting, pero sin las molestias de los 90, como tener que rebobinar la cinta VHS antes de devolverla. Decodificación de voz Si tiene alguna idea persistente de que el navegador es solo para código de juguete, Ermine AI es un buen ejemplo de cómo a los desarrolladores de Wasm no les importan limitaciones tan antiguas. La herramienta incluye un modelo completo de IA para el reconocimiento de voz que se ejecutará localmente, presumiblemente entre los momentos en que el resto del código del navegador esté dando servicio a algún legado. etiqueta. La página web del modelo advierte que el inicio puede ser un poco lento porque lleva tiempo descargarlo todo. Reglas de modularidad Claro, los contenedores son excelentes para implementar software en servidores, pero ¿qué pasa con otros lugares? Container2Wasm sigue siendo un experimento, pero convierte todos sus archivos en un blob Wasm que puede ejecutarse en cualquier lugar que pueda ejecutar archivos binarios de WebAssembly. Si el código necesita ayuda con la emulación, la herramienta también incluye el emulador x86 o RISK-V correcto. Cuadernos WasmMuchos científicos de datos entregan sus resultados en cuadernos respaldados por proyectos como Jupyter. Estos agrupan código, datos y texto de una manera que facilita que cualquier lector también pruebe el software. Si desea ejecutar un comando o invocar una función, todo lo que necesita hacer es hacer clic en el botón derecho. Es una forma ideal de compartir software en un entorno abierto y dinámico que atrae al lector. La configuración del portátil normalmente depende de un servidor para el cálculo. Desde la perspectiva del administrador, esto significa configurarlo y asegurarse de que esté ejecutando Python. Ahora, los kits de herramientas impulsados ​​por Wasm, como Marimo y Sphinx, facilitan aún más el trabajo al permitirle ejecutar el código Python directamente en el navegador. Todo lo que necesitas es una versión Wasm de Python, Pyodide. Configurar el servidor es mucho más fácil y no es necesario manejar los cálculos de todos por ellos. Análisis de datos Otra cosa que les gusta hacer a los científicos de datos es usar R para analizar sus datos y luego usar herramientas como Sweve para formatearlos. Normalmente eso significa instalar R en su máquina local o en un servidor. Ahora las herramientas basadas en Wasm como WebR y R-universe convierten ese código R en Wasm directamente, por lo que se ejecutará directamente en el navegador. Cualquiera que lea su análisis puede ejecutar su código R sin instalar el lenguaje ni tener que asegurarse de que esté disponible la versión correcta. Videojuegos antiguos Todo el mundo recuerda los juegos de su juventud malgastada. La buena noticia es que aún puedes perder fines de semana enteros jugando a estos clásicos, y todo ello sin la molestia de intentar recompilar el antiguo código C o Pascal. Proyectos como Wasm-4 garantizan que todos sus viejos simuladores de vuelo y juegos de aventuras favoritos sigan vivos, directamente en su navegador. ¿A quién no le encantan los reinos bidimensionales dibujados con gráficos de 8 bits o de estructura alámbrica? Funciona como un servicio. Naturalmente, muchos de los principales servicios en la nube que admiten microservicios y las llamadas soluciones sin servidor están interesados ​​en admitir Wasm. Es una forma ideal de empaquetar una pequeña cantidad de código que puede iniciarse rápidamente porque está casi completamente compilado. Los proveedores de la nube como Fermyon, Cloudflare y Wasmer admiten módulos WebAssembly de diversas formas. Otros proveedores están agrupando los módulos con herramientas como WasmEdge y ejecutándolos utilizando funciones del tiempo de ejecución de Node para activar el código WebAssembly. Bases de datos más grandes y más cercanas En el modelo tradicional, la base de datos es un proceso sagrado que se ejecuta en una máquina separada, preferiblemente en su propia computadora protegida. espacio virtual en algún co-lo blindado. Puede que esa siga siendo la realidad tal como la conocemos, pero los desarrolladores están empezando a preguntarse de otra manera. ¿Por qué no simplemente introducir una base de datos completa y rica en funciones en un navegador para que el código pueda utilizar todas las funciones? Claro, W3 nos brindó sistemas de valores clave como WebStorage API o modelos más rápidos y profundos como IndexedDB, pero ambos son limitados. Proyectos como PGLite, DuckDB y SQLite 3 están listos para almacenar colecciones de datos mucho más grandes y analizarlas con una gama mucho mayor de funciones SQL. Son más rápidos y también ofrecen API de nivel inferior para que pueda vincularlos a otros proyectos de Wasm. Explorar bases de datosWasm no es solo un mecanismo de entrega para agregar bases de datos más grandes y más capaces a sus páginas web. Algunos desarrolladores están invirtiendo esta visión e incorporando código Wasm dentro de bases de datos para agregar funciones definidas por el usuario (UDF). SingleStore, por ejemplo, permite a los desarrolladores agregar UDF y sus primas, funciones con valores de tabla. Otras herramientas de transmisión de datos como InfinyOn y Redpanda le permiten transformar la información con funciones de Wasm a medida que fluye por el sistema. Wasm puede terminar siendo el formato dominante para incorporar nuevas capacidades computacionales dondequiera que se almacenen datos. Inteligencia avanzada Si bien WebAssembly puede no ser una opción natural para integrarse profundamente en los LLM o redes neuronales que forman parte de la IA generativa, eso no significa que carezca un lugar en la pila. WasmEdge, por ejemplo, tiene dos sistemas de complementos para TensorFlow (aquí y aquí) y uno para PyTorch, por lo que su código puede interactuar perfectamente con los cálculos de la IA. Dylibso ha experimentado conectando IA como ChatGPT con módulos Extism. En otras palabras, Wasm podría ser la herramienta que necesita para unir su código con IA. Complementos en todas partesWebAssembly no es solo para bases de datos o IA. Muchos paquetes de software quieren facilitar a los usuarios finales la adición de un poco de funcionalidad para ampliar el conjunto de funciones predeterminado. Eso significa desarrollar una API que permita que el código nuevo se mezcle con el código antiguo sin introducir agujeros de seguridad ni destruir la eficiencia. Wasm resulta ser un sistema bastante bueno para hacer esto porque fue diseñado para hacer más o menos lo mismo con las páginas web. Tiene seguridad, brevedad y eficiencia bastante bien diseñadas. Muchos paquetes de software ya ofrecen esto. Un vistazo rápido los encontrará en todas partes, desde proyectos de Apache hasta migración de datos de Zendesk. Los programadores confían en herramientas básicas como Extism para admitir todos los lenguajes principales y algunos que no son tan comunes con las bibliotecas SDK y PDK. Wasmi es otra opción que se centra en sistemas integrados o restringidos. Cuando llega el momento de generar los enlaces, los programadores recurren a fp-bindgen, wasm-bindgen o wit-bindgen para realizar el trabajo de corte. Conclusión ¿Existe un límite en lo que se puede hacer con WebAssembly? No precisamente. Ese es básicamente el punto. Wasm abre puertas para que los usuarios puedan obtener lo que desean del software. Su modularidad se hace rápida, poderosa y omnipresente. Copyright © 2024 IDG Communications, Inc.