Skip to content

gopdsdk v1.0.0 - Stable Offline Playdate Go SDK

Choose a tag to compare

@ivan-gromov-dev ivan-gromov-dev released this 18 Aug 19:49
· 6 commits to master since this release
389a909

gopdsdk v1.0.0 is the first stable release of the independent, cross-platform Go SDK for building offline Playdate games.

This release freezes the documented public API, ownership and error contracts, callback ordering and lifetime rules, CLI surface, device Go profile, compatibility policy, and semantic-versioning guarantees for the v1.x line.

Highlights

  • Complete public Go contract for materially useful offline Playdate SDK capabilities.
  • Stackless playdate/schedule scheduler with:
    • fixed task capacity;
    • deterministic FIFO execution;
    • cancellation-safe task IDs;
    • delayed, deadline, and repeating tasks;
    • bounded non-blocking queues;
    • deterministic round-robin polling.
  • Bounded, reflection-free playdate/json package.
  • Verified conservative-device support for:
    • normal-return defer;
    • the documented public reflection subset;
    • runtime.GC;
    • pure time.Duration parsing and formatting.
  • Complete offline audio graph support, including:
    • nested channel routing;
    • borrowed post-effects channel outputs;
    • dry and wet level modulation signals;
    • LFO initial phase, deterministic random seeding, and continuous global update.
  • Explicit ownership, close, expiry, callback, and termination behavior across native resources.
  • Stable SemVer, migration, support, compatibility, and deprecation policies.

Device Go profile

Device applications use sequential Go compiled with TinyGo, conservative GC, scheduler none, and fail-stop panic handling.

Goroutines, blocking channels, select, sleep, timers, and tickers are replaced by playdate/schedule. recover, finalizers, application cgo, and undocumented reflection paths remain unsupported. See API.md for the exact contract.

Verification

The release passed:

  • formatting, the complete Go test suite, vet, and git diff --check;
  • external-consumer CLI tests;
  • native CI on Windows, macOS, and Linux;
  • the Linux race detector;
  • official Playdate SDK 3.1.1 Simulator builds;
  • TinyGo 0.41.1 conservative hard-float device builds;
  • USB deployment and physical Playdate execution;
  • the combined Simulator and physical-device acceptance regression;
  • conservative-GC soak and bounded memory/resource checks;
  • lifecycle cleanup and unchanged post-run crash/error logs.

Official SDK, Simulator, device-build, USB, and physical-device verification is currently established on Windows. macOS and Linux are native-CI tested, but their official SDK and hardware levels remain unverified.

Verified toolchain

  • Go 1.26.5
  • Playdate SDK 3.1.1
  • TinyGo 0.41.1 with LLVM 20.1.1
  • Arm GNU Toolchain GCC 15.3.1

Other versions are not rejected solely by version number, but remain unverified until the relevant probe and acceptance level passes.

Install

go run github.com/Djunichi/gopdsdk/cmd/gopdsdk@v1.0.0 doctor
go run github.com/Djunichi/gopdsdk/cmd/gopdsdk@v1.0.0 init --module example.com/my-game ./my-game
cd my-game
go mod tidy