
Hello dear Playdate Devs, it’s been a while since my last post about PdGo (write games for Playdate handheld using Golang) - so I’d like to share progress on what you will have soon. 🚀
First, we’ve been actively developing Windows support 🪟 . Soon, PdGo will be available to users on that platform as well. In parallel, we’re building a garbage collector. As you know, C has no GC - you allocate, you free, you become the garbage collector. Lua does have one, but its periodic collection can introduce frame stutters on Playdate. PdGo currently operates closer to the C model: TinyGo’s GC is set to “leaking,” meaning heap allocations from both Go and the Playdate C API are not reclaimed unless freed manually.
This is not where we want to stay. We are developing a conservative mark-and-sweep GC tailored to Playdate’s constraints 🚮 It tracks Go-level objects conservatively and integrates with the SDK allocator, while also using a finalizer pattern to automatically release C-level API objects (such as bitmaps, sprites, and sounds) once they become unreachable. This allows us to manage both heaps within a unified system. The design also introduces lightweight stop-the-world pauses, significantly lighter than Go’s standard tri-color GC, making it suitable for constrained hardware environments.
We are planning to release both Windows support and the new GC together as part of a major upcoming release.
And one more thing - PdGo finally has an official logo. Take a look!
GitHub: https://github.com/playdate-go/pdgo
Thanks for reading! 🙂