Rewriting Scratch 3.0 from scratch in Lua (browser-free native runtime)
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.
Share cardActual performance
Launch Intel predictions
Analyze your own launch →Correct prediction on native model
Similar products
Nested VMs from Scratch in C
A debugger from scratch – part 1
Javadoc Rewritten from Scratch
MMOBomb 4.0 – I rebuild it from scratch
GCounter CRDT Implemented from Scratch in Golang
An itch that I can't quite scratch.
Implement a toy video encoder from scratch in browser
Debco – Build Debian Containers from Scratch Without Dockerfile
Ponder – A minimalist browser scratch pad
Image-triangulation – Delaunay and Voronoi from scratch