gopdsdk v0.9.0
This release completes gopdsdk’s offline Playdate sound surface.
Highlights
- Owned audio samples with loading, reloading, borrowed data inspection, copying, decompression, playback ranges, and loop callbacks
- Streaming file-player buffering, loop ranges, reload, and underrun controls
- Explicit audio channels, routing, volume, pan, effects, and modulation
- Headphone, headset-microphone, and speaker-output state and control
- Wavetable and custom-generator synthesis
- Envelope controls, LFOs, control signals, instruments, tracks, and sequences
- Bounded update-thread PCM and custom-generator callbacks
- Fixed native callback pools and 4,096-frame rings that prevent Go re-entry from the audio thread
- Sequence, track, note, signal, and controller introspection
Raw generator userdata/function pointers remain intentionally omitted in favor
of bounded portable Go contracts. setMP3StreamSource is also omitted because
Playdate SDK 3.1.1 does not document a shipping-device contract for it;
packaged MP3 playback remains available through FilePlayer.
Compatibility and verification
The verified Windows profile uses:
- 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
The release checkout passes the full Go test and vet suites, formatting and
diff checks, Simulator c-shared compilation and packaging, and conservative
hard-float device compilation, linking, relocation checks, and packaging.
Final P9 acceptance covers routing, headphone states, samples, wavetable and
custom synthesis, callbacks, underruns, lifecycle cleanup, conservative-GC
soak, bounded memory growth, and unchanged post-run device logs.
macOS and Linux native Go CI remain supported; official SDK, Simulator, device
build, USB, and physical-device integration on those hosts remain unverified.
See CHANGELOG.md, API.md, MIGRATING.md, and COMPATIBILITY.md for the
complete contracts and evidence.