{
"$type": "site.standard.document",
"bskyPostRef": {
"cid": "bafyreic7bp3o3bs7ztoq7ojdxsu4ua5i4cfeu2d5xlebs47cbub2dxlhua",
"uri": "at://did:plc:ody4pdn672q6cagdlzkj42gw/app.bsky.feed.post/3m3sdxag6v2j2"
},
"path": "/news/hoot-0-7-0-released.html",
"publishedAt": "2026-05-13T23:48:09.284Z",
"site": "https://spritely.institute",
"tags": [
"Guile",
"Autumn Lisp Game Jam",
"itch.io",
"ready-to-use template repository on Codeberg",
"here",
"Hoot project on Codeberg",
"community forum"
],
"textContent": "We are excited to announce the release of Hoot 0.7.0! Hoot is a Scheme to WebAssembly compiler backend for Guile, as well as a general purpose WebAssembly toolchain. In other words, _Scheme in the browser!_\n\nThis release contains bug fixes and a few new features added since the 0.6.1 release back in May. Just in time for the upcoming Lisp Game Jam!\n\n## Make a game with Hoot\n\nThe 2025 edition of the Autumn Lisp Game Jam starts on Friday, 10/31! Halloween jam! ð\n\nFor those who are unfamiliar, the Lisp Game Jam is a casual, 10-day event where participants build small games using the Lisp implementation of their choice. We encourage you to join the jam and make a game with Hoot! Browser games are both easy to distribute and easy for other people to play, which makes Hoot a great choice! itch.io, where the jam is hosted, has built-in support for browser games.\n\nTo make it easy to jump right in and start jamming, we have a ready-to-use template repository on Codeberg that you can clone. It takes care of all the boilerplate and provides some useful bindings to essential web APIs like HTML5 Canvas.\n\nOkay, onto the full release notes!\n\n## New features\n\n * Added Guileâs source module directory to Hootâs load path by default. It is now easy to import any module from Guile that Hoot does not override in its core implementation. Of course, any Guile module that relies on a C extension or as-of-yet unsupported `(guile)` procedure/macro will not work with Hoot. Contributors are wanted to help maximize our Guile compatibility!\n\n * Removed stub SRFI-1 module in favor of loading it from Guileâs source module directory. Guile now has a pure Scheme implementation of SRFI-1 (no more C!) usable by Hoot.\n\n * Hoot modules can now be loaded from JavaScript typed arrays and `ArrayBuffer` objects in methods such as `Scheme.load_main` in `reflect.js`.\n\n * Top-level programs must now start with a `use-modules` or `import` form. The implicit import of `(scheme base)` caused more confusion for users than the convenience was worth.\n\n * The `import` form in a top-level program is now interpreted using R7RS syntax rules whereas previously it used R6RS syntax rules.\n\n * SRFI library names such as `(srfi :1)` are now canonicalized as `(srfi srfi-1)` in R6RS `library` forms to match Guile.\n\n * Added support for integer components in R7RS `define-library` names. Example: `(define-library (srfi 1) ...)`.\n\n * Added support for `#:renamer` in `define-module`.\n\n * Added `filter!`, `reverse!`, and `with-fluids*` procedures to `(guile)`.\n\n * Added printer for record type descriptors.\n\n * Documented `HOOT_LOAD_PATH` environment variable.\n\n\n\n\n## Performance improvements\n\n * Added optimized implementation of `min` and `max`.\n\n\n\n## Bug fixes\n\n * Explicitly set file permissions for reflection library files copied by `guild compile-wasm --bundle`. This problem was especially noticeable on Guix where the files were read-only, breaking successive bundle invocations.\n\n * Fixed `hash` to return the accumulated hash value when the recursion depth limit is reached. Previously, the result of `hashv` was returned, causing objects what were `equal?` to have different hash codes.\n\n * Fixed `define-record-type` to raise a syntax error when an invalid field is specified as a constructor argument.\n\n * Fixed R6RS `rename` syntax rules in `library` `export` forms.\n\n * Fixed implementation of `#:replace` in `define-module` syntax.\n\n * Fixed `put-string` which was not respecting the `port` argument.\n\n * Fixed docstring for `,hoot-run-file` meta-command.\n\n * Fixed link to Git repository URL in the manual.\n\n * Replaced obsolete reference to `parse-wat` in the manual with `wat->wasm`.\n\n * Fixed compilation of `unquote-splicing` in non-tail position.\n\n * Fixed `string-trim` in the case where the result should be the empty string.\n\n * `simple-format` now returns the unspecified value rather than zero values.\n\n * Fixed `select` instruction handling in Wasm toolchain.\n\n\n\n\n## Browser compatibility\n\n * Compatible with Safari 26! ð At long last, Hoot modules now work reliably in Safari and other sufficiently fresh WebKit-based browsers.\n\n * Compatible with Firefox 121 or later.\n\n * Compatible with Chrome 119 or later.\n\n\n\n\n## Get Hoot 0.7.0\n\nHoot is already available in GNU Guix:\n\n\n $ guix pull $ guix install guile-next guile-hoot\n\n(Hoot currently requires a bleeding-edge version of Guile, hence `guile-next` above.)\n\nOtherwise, Hoot can be built from source via our release tarball. See the Hoot homepage for a download link and GPG signature.\n\nDocumentation for Hoot 0.7.0, including build instructions, can be found here.\n\n## Get in touch\n\nFor bug reports, pull requests, or just to follow along with development, check out the Hoot project on Codeberg.\n\nIf you build something cool with Hoot (for the upcoming game jam or otherwise), let us know on our community forum!\n\n## Thanks to our supporters\n\nYour support makes our work possible! If you like what we do, please consider becoming a Spritely supporter today!\n\n### Diamond tier\n\n * Aeva Palecek\n * Daniel Finlay\n * David Anderson\n * Holmes Wilson\n * Lassi Kiuru\n\n\n\n### Gold tier\n\n * Juan Lizarraga Cubillos\n\n\n\n### Silver tier\n\n * Adam King\n * Austin Robinson\n * Brian Neltner\n * Brit Butler\n * Charlie McMackin\n * Dan Connolly\n * Danny OBrien\n * Deb Nicholson\n * Eric Schultz\n * Evangelo Stavro Prodromou\n * Evgeni Ku\n * Glenn Thompson\n * James Luke\n * Jonathan Frederickson\n * Joshua Simmons\n * Justin Sheehy\n * Michel Lind\n * Mikayla Maki\n * Mike Ledoux\n * Nathan TeBlunthuis\n * Nia Bickford\n * Noah Beasley\n * Shane Redman\n * Steve Sprang\n * Travis Smith\n * Travis Vachon\n\n\n\n### Bronze tier\n\n * Alan Zimmerman\n * Alex Poylisher\n * BJ Bolender\n * Ben Hamill\n * Benjamin Grimm-Lebsanft\n * Brooke Vibber\n * Brooklyn Zelenka\n * Carl A\n * Crazypedia No\n * François Joulaud\n * Grant Gould\n * Gregory Buhtz\n * Ivan Sagalaev\n * Jason Wodicka\n * Jeff Forcier\n * Louis Jackman\n * Marty McGuire\n * Mason DeVries\n * Neil Brudnak\n * Nelson Pavlosky\n * Philipp Nassua\n * Robin Heggelund Hansen\n * Rodion Goritskov\n * Ron Welch\n * Stephen Herrick\n * Steven De Herdt\n * Sébastien Rey-Coyrehourcq\n * Tamara Schmitz\n * Thomas Talbot\n * William Murphy\n * r g\n * terra tauri\n\n\n\nUntil next time, happy hooting! ð¦",
"title": "Hoot 0.7.0 released!",
"updatedAt": "2025-10-22T12:00:00.000Z"
}