- Proyecto diseñado para ejecutar código Scheme en WebAssembly (navegadores con soporte de GC), e incluye un compilador de Scheme→Wasm y una cadena de herramientas Wasm completa
- Está construido sobre GNU Guile, no tiene dependencias adicionales y cuenta con una estructura autosuficiente (toolchain self-contained)
- En el entorno REPL de Guile es posible probar binarios de Hoot mediante el intérprete de Wasm
- La versión más reciente es v0.7.0 y se proporcionan enlaces a archivos de lanzamiento, firmas, documentación y anuncio oficial
- Como intento por extender el lenguaje Scheme al entorno web, muestra el potencial de expansión del ecosistema Lisp en el navegador
Resumen de Hoot
- Hoot es un proyecto desarrollado por Spritely Institute que permite ejecutar código Scheme sobre WebAssembly (Wasm)
- Funciona en navegadores web que admiten la función de GC (Garbage Collection)
- Incluye un compilador que convierte código Scheme a Wasm y una cadena de herramientas completa para desarrollo relacionado con Wasm
- Está construido sobre Guile y no tiene dependencias externas adicionales
- La cadena de herramientas es autosuficiente e integra un intérprete de Wasm, lo que permite probar directamente binarios de Hoot desde el REPL de Guile
Distribución y desarrollo
- La versión más reciente es v0.7.0, y se ofrecen enlaces a archivos de descarga, firmas, documentación y anuncio oficial
- Archivo de lanzamiento:
guile-hoot-0.7.0.tar.gz
- También se proporcionan archivos de documentación y firma, junto con la página de noticias relacionada
- La versión de desarrollo está disponible en el repositorio de Codeberg (
https://codeberg.org/spritely/hoot)
Material relacionado
- Se ofrecen varios artículos sobre creación de páginas web interactivas con Hoot y ejecución de Scheme dentro del navegador
- “Building interactive web pages with Hoot”
- “Scheme in the browser: A Hoot of a tale”
- “Lisp Game Jam - ‘Wireworld’ - Hoot's low level Wasm tooling in action”
- También puede consultarse información adicional desde la perspectiva de los desarrolladores a través del blog de Andy Wingo y un video de entrevista de System Crafters
1 comentarios
Comentarios de Hacker News
Es interesante ver que el desarrollo de Guile se está activando últimamente
Aunque da un poco de pena que parezca que mucha gente de la antigua comunidad de Racket se esté pasando para allá
Es triste cuando una comunidad se divide, y Guile todavía da la impresión de estar por detrás de Racket en rendimiento y variedad de bibliotecas
Los benchmarks dicen otra cosa, pero parece algo que habría que comprobar directamente
Lo suficiente como para correr juegos a 60fps, y el GC ocurre con poca frecuencia
El ecosistema de bibliotecas también ha mejorado mucho frente a antes
(wiki de Missing Stair)
Después de ese incidente, la fragmentación de la comunidad parece haber sido un resultado inevitable
Por ejemplo, con Overeasy se pueden hacer pruebas, y con McFly se puede escribir documentación en línea
También influye que el ambiente de la industria se haya puesto más difícil últimamente después de la generación de código con IA y el colapso de la inversión de VC
El proyecto en sí está genial, pero me deja pensando que ojalá hubieran usado otro lenguaje en vez de Guile
A través de Guix se pueden hacer fácilmente builds reproducibles
Eso sí, siguen quedando problemas relacionados con el debugger, el expansor de macros y las bibliotecas estándar de R6RS
El soporte multicore de Racket antes era pesado, pero ahora parece haber mejorado frente a los fibers/futures de Guile
Qué bueno ver que vuelvan a aparecer intentos como este de compilar a WASM
Antes parecía que el entusiasmo se había apagado, pero si aumentan este tipo de lenguajes, mejor, porque así se puede evitar JavaScript
Este proyecto me hizo pensar en la futura dirección de los lenguajes de programación
Si la IA se convierte en quien escribe la mayor parte del código, probablemente los lenguajes cambien para priorizar la claridad y la reducción de errores
Serán menos divertidos para los humanos, pero producirán código más fácil de corregir
En ese contexto, lenguajes como Rust probablemente se mantendrán en los puestos altos
Lo que me pregunto es si un lenguaje como Hoot podrá encontrar un lugar incluso en ámbitos especializados, o si se quedará como un lenguaje de hobby
¡Está realmente genial! Me pregunto si también podría funcionar en Cloudflare Workers
Ojalá Guile tuviera un mejor soporte para Windows
repl.wasmpesa 1.6MiB, así que parece un poco grande. Me pregunto cuánto pesará el ejemplo detodoTodavía ni siquiera se le ha aplicado la optimización de wasm-opt
Hoot es un compilador AOT, así que en el REPL se incluye código adicional como el expansor de macros, el sistema de módulos del runtime y el intérprete
Un ejemplo real, todo.wasm, anda por los 566K (143K comprimido) e incluye también un algoritmo de diff de DOM virtual
Se espera que con optimizaciones adicionales, como reducir la cantidad de variables locales o adoptar la propuesta de stack switching, el tamaño pueda bajar todavía más
Los temas relacionados están resumidos aquí
woot (expresión breve de entusiasmo)
Esto es precisamente lo que JavaScript originalmente apuntaba a ser
Si Netscape no hubiera impuesto una sintaxis estilo C/Java, quizá se habría convertido en un lenguaje como este