Show HN: Rewriting Scratch 3.0 from scratch in Lua (browser-free native runtime)
github.comBuilt a native Scratch 3.0 runtime in Lua that runs .sb3 projects without a browser.
Why? Browser sandboxing prevents access to hardware features (haptics, sensors, fine-grained perf controls). Native runtime gives you direct hardware access and lets you deploy to consoles, handhelds, embedded devices. Also means much smaller binaries (LÖVE is ~7MB vs 50-100MB for Electron).
How it works:
- Scratch blocks compile to IR, then optimize, then generate Lua
- LuaJIT executes the compiled code
- Coroutine-based threading for concurrent scripts
- Lazy loading + LRU cache for memory management
- SVG support via resvg FFI
~100% compatible with Scratch 3.0 blocks. Extensions that need JavaScript won't work (no Music, TTS, Video Sensing), but core blocks are there.
Built on LÖVE framework, so it's cross-platform (desktop, mobile, gaming devices).
Still rough around the edges (user input not implemented yet, cloud variables only work locally), but it runs real Scratch projects today.