Wednesday, October 29, 2025

Show HN: Rewriting Scratch 3.0 from scratch in Lua (browser-free native runtime) https://ift.tt/oIlJuUs

Show HN: Rewriting Scratch 3.0 from scratch in Lua (browser-free native runtime) 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. https://ift.tt/mBwHjDG October 28, 2025 at 11:08PM

No comments:

Post a Comment

Show HN: Rewriting Scratch 3.0 from scratch in Lua (browser-free native runtime) https://ift.tt/oIlJuUs

Show HN: Rewriting Scratch 3.0 from scratch in Lua (browser-free native runtime) Built a native Scratch 3.0 runtime in Lua that runs .sb3 pr...