Show HN: Rewriting Scratch 3.0 from scratch in Lua (browser-free native runtime)

github.com

2 points by sixddc 6 hours ago

Built 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.