u/AmorBielyi

https://preview.redd.it/kufptz4q1swg1.png?width=1024&format=png&auto=webp&s=a8ab28e74e7dcd58f74b0ebaa381fd537877c516

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! 🙂

reddit.com
u/AmorBielyi — 21 days ago