{"slug": "hoot", "name": "Hoot", "category": "dev-libs", "category_name": "Libraries and frameworks", "description": "", "recommenders": 3, "commenters": 5, "warners": 0, "score": 1.923, "rising": -0.98, "first": "2026-01-21", "latest": "2026-08-19", "why": "does a very good job of running scheme in web assembly", "why_is_quote": true, "has_verdict": false, "sentiment": {"recommend": 3, "neutral": 3, "compare": 1, "warn": 0}, "spark": [0, 0, 2, 0, 0, 0, 0, 0, 1, 0, 0, 0], "listed": true, "loved": [], "caveat": "", "short_quote": "does a very good job of running scheme in web assembly", "kind": "", "icon": false, "domain": "spritely.institute", "github_repo": null, "official_url": "https://spritely.institute/hoot/", "pricing": "", "aliases": ["Hoot"], "verdict": null, "praise": [{"label": "", "summary": "", "quotes": [{"id": 782042832, "item_id": 48877677, "url": "https://news.ycombinator.com/item?id=48877677", "by": "trescenzi", "date": "2026-07-11", "stance": "recommend", "quote": "does a very good job of running scheme in web assembly", "excerpt": "Hoot[1] already exists and does a very good job of running scheme in web assembly. Everything Spritely is working on is pretty cool. 1: https://spritely.institute/hoot/", "context": "", "use_case": "", "switched_from": "", "story": "A pure scheme web programming tool"}, {"id": 750185248, "item_id": 46886578, "url": "https://news.ycombinator.com/item?id=46886578", "by": "davexunit", "date": "2026-02-04", "stance": "recommend", "quote": "It's not only a Scheme compiler but a full Wasm toolchain available as a library.", "excerpt": "Yeah those interested in Wasm topics might find https://spritely.institute/hoot/ interesting. It's not only a Scheme compiler but a full Wasm toolchain available as a library.", "context": "", "use_case": "Scheme to Wasm compilation", "switched_from": "", "story": "Goblins: Distributed, Transactional Programming with Racket and Guile"}, {"id": 747619008, "item_id": 46726188, "url": "https://news.ycombinator.com/item?id=46726188", "by": "dannyobrien", "date": "2026-01-22", "stance": "recommend", "quote": "Hoot, Spritely's Guile-on-Wasm project", "excerpt": "Also (on the bigger than this rather than smaller), Hoot, Spritely's Guile-on-Wasm project https://spritely.institute/hoot/", "context": "", "use_case": "Guile Scheme on WebAssembly", "switched_from": "", "story": "Compiling Scheme to WebAssembly"}, {"id": 747389360, "item_id": 46711835, "url": "https://news.ycombinator.com/item?id=46711835", "by": "apitman", "date": "2026-01-21", "stance": "recommend", "quote": "Hoot is another interesting one", "excerpt": "Hoot is another interesting one: https://spritely.institute/hoot/", "context": "", "use_case": "", "switched_from": "", "story": "The WebRacket language is a subset of Racket that compiles to WebAssembly"}]}], "caveats": [], "who": [], "tags": [], "use_cases": ["scheme to webassembly compiler", "scheme to wasm compilation", "guile scheme on webassembly", "scheme to wasm compiler"], "compared": [{"slug": "spritely-goblins", "name": "Spritely Goblins", "co": 2, "switched_from": 0, "switched_to": 0}], "makers": [{"id": 781271632, "item_id": 48829477, "url": "https://news.ycombinator.com/item?id=48829477", "by": "paroneayea", "date": "2026-07-08", "stance": "recommend", "quote": "Spritely started Hoot to get Spritely's programs, built on top of Spritely Goblins, to a wider audience", "excerpt": "Hi! Yes, Spritely started Hoot to get Spritely's programs, built on top of Spritely Goblins, to a wider audience. And the network protocol we use / co-designed is OCapN, which is indeed in the family of CapTP languages: https://ocapn.org/ The good news is there are four fairly mature implementations (two Scheme implementations across Guile and Racket, a Dart implementation, a Javascript implementation) and one upcomi", "context": "works on Spritely", "use_case": "Scheme to wasm", "switched_from": "", "story": "Scheme Is a Hoot"}, {"id": 750939536, "item_id": 46933721, "url": "https://news.ycombinator.com/item?id=46933721", "by": "davexunit", "date": "2026-02-08", "stance": "compare", "quote": "I had Hoot passing more of the benchmarks than Guile itself", "excerpt": "That's how I see it, too. I used these benchmarks early in Hoot's development as a rough measure of r7rs compliance and only occasionally as a guide for improving performance. I never published my results but I had Hoot passing more of the benchmarks than Guile itself, which I found funny.", "context": "", "use_case": "", "switched_from": "", "story": "Hoot: Scheme on WebAssembly"}], "threads": [{"url": "https://news.ycombinator.com/item?id=48794049", "title": "Scheme Is a Hoot", "mentions": 3}, {"url": "https://news.ycombinator.com/item?id=46923254", "title": "Hoot: Scheme on WebAssembly", "mentions": 2}, {"url": "https://news.ycombinator.com/item?id=46662247", "title": "The WebRacket language is a subset of Racket that compiles to WebAssembly", "mentions": 2}, {"url": "https://news.ycombinator.com/item?id=49363668", "title": "Extensible Software in the Age of LLMs", "mentions": 1}, {"url": "https://news.ycombinator.com/item?id=48877314", "title": "A pure scheme web programming tool", "mentions": 1}, {"url": "https://news.ycombinator.com/item?id=47295837", "title": "Notes on Writing WASM", "mentions": 1}], "sentiment_by_month": {"2025-11": {}, "2025-12": {}, "2026-01": {"recommend": 2, "compare": 1}, "2026-02": {}, "2026-03": {"neutral": 1}, "2026-04": {}, "2026-05": {}, "2026-06": {}, "2026-07": {"neutral": 1, "recommend": 1}, "2026-08": {"neutral": 1}, "2026-09": {}, "2026-10": {}}, "quotes": [{"id": 789927601, "item_id": 49370475, "url": "https://news.ycombinator.com/item?id=49370475", "by": "dannyobrien", "date": "2026-08-19", "stance": "neutral", "quote": "Hoot[2], their Guile Scheme implementation in Wasm", "excerpt": "There's also Spritely's[0] work on Ocapn[1], and Hoot[2], their Guile Scheme implementation in Wasm. [0] - https://spritely.institute/ [1] - https://github.com/ocapn/ocapn [2] - https://spritely.institute/hoot/", "context": "", "use_case": "", "switched_from": "", "story": "Extensible Software in the Age of LLMs"}, {"id": 782042832, "item_id": 48877677, "url": "https://news.ycombinator.com/item?id=48877677", "by": "trescenzi", "date": "2026-07-11", "stance": "recommend", "quote": "does a very good job of running scheme in web assembly", "excerpt": "Hoot[1] already exists and does a very good job of running scheme in web assembly. Everything Spritely is working on is pretty cool. 1: https://spritely.institute/hoot/", "context": "", "use_case": "", "switched_from": "", "story": "A pure scheme web programming tool"}, {"id": 781294481, "item_id": 48830905, "url": "https://news.ycombinator.com/item?id=48830905", "by": "davexunit", "date": "2026-07-08", "stance": "neutral", "quote": "", "excerpt": "The OCapN group is actively working on a milestone for 1.0, the first interop target. It's getting close! https://github.com/ocapn/ocapn/milestone/2", "context": "", "use_case": "", "switched_from": "", "story": "Scheme Is a Hoot"}, {"id": 781291537, "item_id": 48830721, "url": "https://news.ycombinator.com/item?id=48830721", "by": "rao-v", "date": "2026-07-08", "stance": "neutral", "quote": "I suppose Hoot was created to make Goblins [0] available to a broader public via wasm", "excerpt": "\u201cSpritely has been going strong for many years. I suppose Hoot was created to make Goblins [0] available to a broader public via wasm, as a reference implementation of CapTP specification\u201d Has extreme Curtains for Zoosha (https://amp.knowyourmeme.com/memes/curtains-for-zoosha) energy", "context": "", "use_case": "Scheme to WebAssembly compiler", "switched_from": "", "story": "Scheme Is a Hoot"}, {"id": 756767312, "item_id": 47297957, "url": "https://news.ycombinator.com/item?id=47297957", "by": "apitman", "date": "2026-03-08", "stance": "neutral", "quote": "Some exist at least: https://spritely.institute/hoot/", "excerpt": "Some exist at least: https://spritely.institute/hoot/", "context": "", "use_case": "", "switched_from": "", "story": "Notes on Writing WASM"}, {"id": 750939232, "item_id": 46933702, "url": "https://news.ycombinator.com/item?id=46933702", "by": "davexunit", "date": "2026-02-08", "stance": "neutral", "quote": "", "excerpt": "This is not the smallest REPL binary out there but it's far from the largest I've seen. My anecdotal evidence suggests it's somewhere in the middle or maybe smaller than average. We haven't configured our web server to gzip these assets (we should). Gzipped repl.wasm is 339K. This binary hasn't been run through wasm-opt, either. Hoot is primarily an ahead-of-time compiler, not an interpreter, so this REPL demo has a ", "context": "", "use_case": "", "switched_from": "", "story": "Hoot: Scheme on WebAssembly"}, {"id": 750185248, "item_id": 46886578, "url": "https://news.ycombinator.com/item?id=46886578", "by": "davexunit", "date": "2026-02-04", "stance": "recommend", "quote": "It's not only a Scheme compiler but a full Wasm toolchain available as a library.", "excerpt": "Yeah those interested in Wasm topics might find https://spritely.institute/hoot/ interesting. It's not only a Scheme compiler but a full Wasm toolchain available as a library.", "context": "", "use_case": "Scheme to Wasm compilation", "switched_from": "", "story": "Goblins: Distributed, Transactional Programming with Racket and Guile"}, {"id": 747619008, "item_id": 46726188, "url": "https://news.ycombinator.com/item?id=46726188", "by": "dannyobrien", "date": "2026-01-22", "stance": "recommend", "quote": "Hoot, Spritely's Guile-on-Wasm project", "excerpt": "Also (on the bigger than this rather than smaller), Hoot, Spritely's Guile-on-Wasm project https://spritely.institute/hoot/", "context": "", "use_case": "Guile Scheme on WebAssembly", "switched_from": "", "story": "Compiling Scheme to WebAssembly"}, {"id": 747495536, "item_id": 46718471, "url": "https://news.ycombinator.com/item?id=46718471", "by": "soegaard", "date": "2026-01-22", "stance": "compare", "quote": "I am using a similar representation of immediates as Hoot and wasm_of_ocaml.", "excerpt": "I am using a similar representation of immediates as Hoot and wasm_of_ocaml. The representation is explained here: https://github.com/soegaard/webracket/blob/main/compiler.rkt#L3763 Internally the compiler uses a series of passes implemented using Nanopass. (generate-code (flatten-begin (closure-conversion (anormalize (categorize-applications (assignment-conversion (\u03b1-rename (explicit-case-lambda (explicit-begin (con", "context": "", "use_case": "Scheme to Wasm compiler", "switched_from": "", "story": "The WebRacket language is a subset of Racket that compiles to WebAssembly"}, {"id": 747389360, "item_id": 46711835, "url": "https://news.ycombinator.com/item?id=46711835", "by": "apitman", "date": "2026-01-21", "stance": "recommend", "quote": "Hoot is another interesting one", "excerpt": "Hoot is another interesting one: https://spritely.institute/hoot/", "context": "", "use_case": "", "switched_from": "", "story": "The WebRacket language is a subset of Racket that compiles to WebAssembly"}]}