Hoot: Scheme on WebAssembly
Hoot brings Scheme to the web browser via WebAssembly, leveraging Guile for a full-featured, self-contained toolchain. This announcement sparks interest among Lisp enthusiasts, eager to explore Scheme's potential in modern web environments. The discussion quickly pivots to a lively debate comparing Guile's developer experience, particularly its debugging and tooling, against alternatives like Racket.
The Lowdown
Hoot is a project by the Spritely Institute designed to bridge the gap between the venerable Scheme programming language and the modern WebAssembly (Wasm) ecosystem. It provides a robust solution for running Scheme code directly in Wasm GC-capable web browsers, aiming to unlock new possibilities for interactive web applications.
- Hoot compiles Scheme code to WebAssembly, enabling execution in compatible web browsers.
- It is built upon Guile, GNU's extensible Scheme implementation, requiring no additional dependencies.
- The project includes a self-contained Wasm toolchain and a Wasm interpreter for testing Hoot binaries within the Guile REPL.
- The Spritely Institute highlights Hoot's utility for building interactive web pages and demonstrates its low-level Wasm tooling through examples like "Wireworld."
Hoot represents a significant effort to bring the power and flexibility of Scheme to the browser, offering a novel approach for developers looking to explore functional programming paradigms in web development.
The Gossip
Guile's Grumbles and Glories
Many commenters express appreciation for Hoot's concept but voice reservations about its reliance on Guile, particularly citing a difficult debugging experience in recent versions and perceived shortcomings in documentation and onboarding. They often contrast Guile with Racket, which is lauded for its superior debugging tools and integrated development environment, reminiscent of classic Lisp systems. Conversely, Guile is defended for its rich library ecosystem, integration with Guix for reproducible builds, and advanced concurrency features like fibers and futures, while acknowledging existing debugging challenges.
Wasm's Wider Reach
Commenters are keen to understand Hoot's broader applicability within the WebAssembly ecosystem. A key question raised is its compatibility with serverless platforms like Cloudflare Workers, indicating interest in leveraging Hoot beyond client-side browser execution for diverse Wasm deployment scenarios.