9 puntos por GN⁺ 2025-04-09 | 2 comentarios | Compartir por WhatsApp
  • Hyperlight Wasm es la extensión más reciente de Hyperlight, la tecnología de máquina virtual (VM) ultraligera que Microsoft donó a la CNCF, y ejecuta cargas de trabajo de WebAssembly (basadas en el Component Model) de forma rápida y segura
  • A diferencia de las VM tradicionales, solo expone slices de memoria y CPU sin sistema operativo ni dispositivos virtuales, ofreciendo tiempos de arranque rápidos de 1 a 2 ms
  • Puede ejecutar componentes wasm escritos en varios lenguajes (C, Rust, Go, Python, JS, etc.) bajo protección del hipervisor

Características principales de Hyperlight Wasm

  • Rendimiento más rápido que una VM tradicional

    • VM tradicional: inicialización de dispositivos → carga del kernel → arranque del sistema operativo → ejecución de la aplicación (aprox. 125 ms)
    • Hyperlight Wasm: puede ejecutarse solo con crear el slice de memoria + cargar Wasm (1 a 2 ms, con objetivo futuro de <1 ms)
    • La velocidad de ejecución favorece la ejecución serverless on-demand o la configuración de un warm pool mínimo
  • Ejecución de varios lenguajes incluso sin sistema operativo

    • Basado en el estándar WASI y en el WebAssembly Component Model, puede ejecutar componentes escritos en la mayoría de los lenguajes
    • Incluye el runtime wasmtime, por lo que también puede ejecutar lenguajes interpretados como Python, JavaScript y C# empaquetando el runtime
    • Desde la perspectiva del desarrollador, basta con compilar al target wasm32-wasip2 para ejecutar en Hyperlight
  • Seguridad mejorada (doble sandbox)

    • Estructura de doble protección con sandbox de Wasm + sandbox de VM basado en hipervisor
    • Incluso si un atacante escapa de wasm, todavía tendría que evadir adicionalmente el sandbox de la VM

Ejemplo de desarrollo: ejecución de un servidor UDP Echo basado en Rust

  • Descarga y compilación del binario wasm con el CLI wkg
  • Conversión del archivo de definición de interfaz WASI (.wit) a binario para generar bindings
  • Con hyperlight_component_macro y host_bindgen! se realiza la generación automática de bindings para las interfaces import/export de Wasm
  • Definición de la lógica del servidor echo mediante la implementación de la interfaz UdpSocket
  • Creación del sandbox hyperlight-wasm para cargar y ejecutar el componente wasm
  • Compilación Ahead-of-Time

    • Uso de la herramienta hyperlight-wasm-aot para compilar wasm con AOT y reducir el tiempo de ejecución
    • El servidor puede ejecutarse con cargo run y probarse por UDP con el comando nc -u

Escalabilidad y planes futuros

  • Hyperlight Wasm planea soportar no solo x86 sino también la arquitectura Arm64
  • Actualmente es necesario implementar directamente la interfaz WASI, pero en el futuro se ofrecerán bindings base
  • Se planea permitir el sandboxing rápido de servicios simples, como servidores HTTP

Guía para participar en la comunidad open source

  • Hyperlight es un proyecto open source de Microsoft publicado bajo licencia Apache 2.0 y registrado en CNCF Sandbox
  • Hyperlight Wasm tiene como objetivo ofrecer un entorno de ejecución rápido y seguro adecuado para cloud native computing
  • El código puede revisarse y recibir contribuciones a través del repositorio de GitHub

👉 Repositorio de GitHub: hyperlight-wasm

2 comentarios

 
GN⁺ 2025-04-09
Comentarios en Hacker News
  • Hace unos meses empecé a usar WebAssembly en serio para crear una biblioteca de autenticación de backend que funcionara en varios lenguajes

    • Basada en Extism, reduje la complejidad de la interfaz
    • Fue una experiencia casi mágica
    • WASM está en una posición interesante
    • Demostró su valor con una especificación central mínima
    • Ahora hay un gran impulso para implementar una superficie de API más amplia para WASI y el Component Model
    • Muchas personas de la comunidad están preocupadas por esta dirección
    • Personalmente, espero que WASM no se vuelva tan complejo que termine siguiendo el camino de los navegadores web, donde solo las grandes empresas tecnológicas pueden implementarlo y experimentar con él
  • Hace unos meses presentamos un VMM ligero llamado Hyperlight

    • Puede crear una nueva VM en alrededor de 1 milisegundo
    • Hoy me da gusto anunciar un guest de Hyperlight Wasm basado en el runtime Wasmtime
    • Ahora es posible ejecutar binarios Wasm Component sobre la interfaz WASI sin un sistema operativo guest dentro de la VM
    • En esta publicación explican cómo funciona y lo ilustran con ejemplos
  • Estoy muy entusiasmado

    • Espero que WASM/WASI crezca hasta convertirse en el sueño de la JVM de los 90
    • Puede convertirse en un objetivo de desarrollo memory-safe que sea fácil de portar y probar en múltiples plataformas
    • Espero que WASM pueda usarse para muchas más cosas además del navegador
  • Se ve interesante

    • ¿Este sería un caso de uso para cuando quieres implementar directamente algo como Cloudflare Workers o Lambda con WASM?
  • Genial

    • Estoy tratando de entender cuál es el valor agregado aquí
    • ¿En qué se diferencia de ejecutarlo a través de wasmtime?
  • Todos estos proyectos geniales e interesantes me hacen pensar que WASM está teniendo éxito en todas partes excepto en el navegador

    • Tal vez deberíamos quitarle el "Web" a Web Assembly y ponerle otro nombre
  • ¿Alguna idea de cómo podría integrar esto en una configuración de Proxmox?

    • Entiendo que esto está diseñado para funcionar sobre bare metal
    • Me resulta un poco incómodo porque no tengo x86 bare metal de sobra
    • Supongo que simplemente tendría que meterlo en una VM y aceptar la virtualización anidada
  • ¿Cómo se inician y administran las instancias?

    • ¿A través de qué API?
    • ¿Podría dársele la capacidad de ejecutar un árbol de Wasm Components conectados a un binario Wasm Component, delegar funciones y administrar su ciclo de vida?
  • Básicamente hay una VM (wasm) para aislar programas dentro de una VM de hardware, que es una abstracción para aislar programas dentro de un proceso en espacio de usuario (un proceso de Linux)

    • ¿Han pensado en usar procesos Unix para aislar programas?
  • ¿Es un unikernel o un library OS?