{"payload":{"feedbackUrl":"https://github.com/orgs/community/discussions/53140","repo":{"id":738224041,"defaultBranch":"main","name":"swift-playdate-examples","ownerLogin":"apple","currentUserCanPush":false,"isFork":false,"isEmpty":false,"createdAt":"2024-01-02T18:12:33.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/10639145?v=4","public":true,"private":false,"isOrgOwned":true},"refInfo":{"name":"","listCacheKey":"v0:1714762468.0","currentOid":""},"activityList":{"items":[{"before":"a7df8de86cfb18712a5892a9795378fcee00dd57","after":"6cfa89df9984d88fc69e0b5fa278edcf59e7320d","ref":"refs/heads/gh-pages","pushedAt":"2024-05-03T19:00:35.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"rauhul","name":"Rauhul Varma","path":"/rauhul","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/9739930?s=80&v=4"},"commit":{"message":"Update documentation","shortMessageHtmlLink":"Update documentation"}},{"before":"15706e59afbaace15fff65c29d1535b5d60e0fcc","after":"a7df8de86cfb18712a5892a9795378fcee00dd57","ref":"refs/heads/gh-pages","pushedAt":"2024-05-03T18:58:56.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"rauhul","name":"Rauhul Varma","path":"/rauhul","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/9739930?s=80&v=4"},"commit":{"message":"Update documentation","shortMessageHtmlLink":"Update documentation"}},{"before":"2a3f5837b4d72e95fbfcfca6c31692300153762e","after":null,"ref":"refs/heads/fix-build","pushedAt":"2024-05-03T18:54:28.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"rauhul","name":"Rauhul Varma","path":"/rauhul","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/9739930?s=80&v=4"}},{"before":"4363fd02aa76da05efbcc6eb865b842b2ae524c9","after":"749dd8f518429168d03e754764afb334a80b527d","ref":"refs/heads/main","pushedAt":"2024-05-03T18:54:27.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"rauhul","name":"Rauhul Varma","path":"/rauhul","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/9739930?s=80&v=4"},"commit":{"message":"Update to work with May 1st Nightly (#18)\n\nCode gardening to make the examples build with the\r\n\"org.swift.59202405011a\" nightly toolchain.","shortMessageHtmlLink":"Update to work with May 1st Nightly (#18)"}},{"before":"ccf2697e9d0c1173154004cbd767703e66c43eb0","after":"2a3f5837b4d72e95fbfcfca6c31692300153762e","ref":"refs/heads/fix-build","pushedAt":"2024-05-03T18:54:09.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"rauhul","name":"Rauhul Varma","path":"/rauhul","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/9739930?s=80&v=4"},"commit":{"message":"Update to work with May 1st Nightly\n\nCode gardening to make the examples build with the\n\"org.swift.59202405011a\" nightly toolchain.","shortMessageHtmlLink":"Update to work with May 1st Nightly"}},{"before":null,"after":"ccf2697e9d0c1173154004cbd767703e66c43eb0","ref":"refs/heads/fix-build","pushedAt":"2024-05-03T18:52:13.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"rauhul","name":"Rauhul Varma","path":"/rauhul","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/9739930?s=80&v=4"},"commit":{"message":"Update to work with May 1st Nightly\n\nCode gardening to make the examples build with the\n\"org.swift.59202405011a\" nightly toolchain.","shortMessageHtmlLink":"Update to work with May 1st Nightly"}},{"before":"101a873c8fc7baf032c1d7a075a3bc3bf28323c0","after":"4363fd02aa76da05efbcc6eb865b842b2ae524c9","ref":"refs/heads/main","pushedAt":"2024-05-03T18:29:15.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"rauhul","name":"Rauhul Varma","path":"/rauhul","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/9739930?s=80&v=4"},"commit":{"message":"Fix C Function Pointer Compatibility for Update Callback (#17)\n\nWork around swift regression which prevents passing `update` as a C\r\nfunction pointer.","shortMessageHtmlLink":"Fix C Function Pointer Compatibility for Update Callback (#17)"}},{"before":"ccf5ecf0c627382e77a76efc18a9b376612c3480","after":"101a873c8fc7baf032c1d7a075a3bc3bf28323c0","ref":"refs/heads/main","pushedAt":"2024-03-22T22:55:12.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"rauhul","name":"Rauhul Varma","path":"/rauhul","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/9739930?s=80&v=4"},"commit":{"message":"Fix SwiftPM/Xcode build of SwiftBreak (#15)","shortMessageHtmlLink":"Fix SwiftPM/Xcode build of SwiftBreak (#15)"}},{"before":"4e71d7f0954a8857b18cea716c6042858b3073b2","after":"ccf5ecf0c627382e77a76efc18a9b376612c3480","ref":"refs/heads/main","pushedAt":"2024-03-22T21:11:42.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"rauhul","name":"Rauhul Varma","path":"/rauhul","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/9739930?s=80&v=4"},"commit":{"message":"Make Sprite: ~Copyable (#13)\n\nNow that support for `UnsafeMutablePointer` has\r\nlanded in the standard library (gated under the\r\n`-enable-experimental-feature NoncopyableGenerics`), we can use it to\r\nsimplify the `Sprite` type.\r\n\r\nThis converts the `Sprite` wrapper for the Playdate SDK from an\r\nenum+class to track ownership to a non-copyable struct that can have a\r\n`deinit` and needs no reference counting. It also adds a very minimal\r\narray type to hold the bricks (since the regular `Array` type cannot yet\r\nhold non-copyable types).\r\n\r\nThis drops binary size by about 14%. Half of this is from simplifying\r\nthe sprite type, and half is from the simpler array type.","shortMessageHtmlLink":"Make Sprite: ~Copyable (#13)"}},{"before":"1c30e82fa2fe799a24d37f7476a9714a2c6c2b0a","after":null,"ref":"refs/heads/perf","pushedAt":"2024-03-22T18:52:17.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"rauhul","name":"Rauhul Varma","path":"/rauhul","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/9739930?s=80&v=4"}},{"before":"8d9d4d8c1b287754e709b0ccc3cb66d96f99377f","after":"4e71d7f0954a8857b18cea716c6042858b3073b2","ref":"refs/heads/main","pushedAt":"2024-03-22T18:52:16.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"rauhul","name":"Rauhul Varma","path":"/rauhul","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/9739930?s=80&v=4"},"commit":{"message":"Refactor Life implementation for better perf (#14)\n\nRestructures the Conways Game of Life swift implementation to make the\r\nhotloop faster. This version matches the C versions performance while\r\nusing nicer wrapper types.\r\n\r\nUsing -Osize causes the binary to be smaller than the C version at the\r\ncost of perf. This commit changes the build to use -O instead, which\r\ncauses the binary size to match C, but also matches the performance of\r\nthe C version.\r\n\r\n\"Screenshot","shortMessageHtmlLink":"Refactor Life implementation for better perf (#14)"}},{"before":"8b9415d132b4c55ba8691edf1c865c561177af35","after":"1c30e82fa2fe799a24d37f7476a9714a2c6c2b0a","ref":"refs/heads/perf","pushedAt":"2024-03-22T18:51:46.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"rauhul","name":"Rauhul Varma","path":"/rauhul","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/9739930?s=80&v=4"},"commit":{"message":"Refactor Life implementation for better perf\n\nRestructures the Conways Game of Life swift implementation to make the\nhotloop faster. This version matches the C versions performance while\nusing nicer wrapper types.\n\nUsing -Osize causes the binary to be smaller than the C version at the\ncost of perf. This commit changes the build to use -O instead, which\ncauses the binary size to match C, but also matches the performance of\nthe C version.","shortMessageHtmlLink":"Refactor Life implementation for better perf"}},{"before":null,"after":"8b9415d132b4c55ba8691edf1c865c561177af35","ref":"refs/heads/perf","pushedAt":"2024-03-22T18:49:59.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"rauhul","name":"Rauhul Varma","path":"/rauhul","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/9739930?s=80&v=4"},"commit":{"message":"Refactor Life implementation for better perf\n\nRestructures the Conways Game of Life swift implementation to make the\nhotloop faster. This version matches the C versions performance while\nusing nicer wrapper types.\n\nUsing -Osize causes the binary to be smaller than the C version at the\ncost of perf. This commit changes the build to use -O instead, which\ncauses the binary size to match C, but also matches the performance of\nthe C version.","shortMessageHtmlLink":"Refactor Life implementation for better perf"}},{"before":"d8c51b285a3da5adfb9aec1b6498dd39c5010f82","after":"8d9d4d8c1b287754e709b0ccc3cb66d96f99377f","ref":"refs/heads/main","pushedAt":"2024-03-19T01:14:10.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"rauhul","name":"Rauhul Varma","path":"/rauhul","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/9739930?s=80&v=4"},"commit":{"message":"Updates game Template to mimic SwiftBreak. (#12)\n\nBefore, new games created from the Template directory would fail to\r\ncompile. When fixed, would fail to link\r\nThis PR borrows the patterns from Swift Break.\r\n\r\n\r\n## The Errors\r\n\r\nAfter copying the Template directory and updating the appropriate\r\n`{{Game Name}}` placeholders and the `pdxinfo` file contents, builds\r\nwould fail with this error:\r\n```\r\nmake: *** No rule to make target `/Users/markd/Projects/thirdparty/swift-playdate-examples/Sources/CPlaydate/posix_memalign.c', needed by `build//Users/markd/Projects/thirdparty/swift-playdate-examples/Sources/CPlaydate/posix_memalign.o'. Stop.\r\n```\r\n\r\nTaking out the `SRC += $(REPO_ROOT)/Sources/CPlaydate/posix_memalign.c`\r\nline from the makefile results in a link error not finding the\r\n`playdate` symbol:\r\n```\r\ndevice_lib.o:(.text.$s10device_lib12eventHandler7pointer0C03args5Int32VSvSg_So13PDSystemEventas6UInt32VtF+0x24): undefined reference to `playdate'\r\n```\r\n\r\nso use `SRC += $(REPO_ROOT)/Sources/CPlaydate/playdate.c` instead.\r\n\r\nThen, while building, get this error:\r\n\r\n```\r\nSources/Entry.swift:3:5: error: var 'game' is not concurrency-safe because it is non-isolated global shared mutable state\r\n 1 │ import Playdate\r\n 2 │ \r\n 3 │ var game: Game!\r\n │ ├─ error: var 'game' is not concurrency-safe because it is non-isolated global shared mutable state\r\n │ ╰─ note: isolate 'game' to a global actor, or convert it to a 'let' constant and conform it to 'Sendable'\r\n 4 │ \r\n 5 │ @_cdecl(\"update\")\r\n```\r\nEntry.swift changed for SwiftBreak to initialize the game in-place\r\nrather than waiting until `.initialize` time in the Playdate lifecycle.","shortMessageHtmlLink":"Updates game Template to mimic SwiftBreak. (#12)"}},{"before":"c0c88f1da6c2b60d46e83e4dbccfa49c6730edb3","after":null,"ref":"refs/heads/local-swift","pushedAt":"2024-03-19T00:10:59.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"timsneath","name":"Tim Sneath","path":"/timsneath","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2319867?s=80&v=4"}},{"before":null,"after":"c0c88f1da6c2b60d46e83e4dbccfa49c6730edb3","ref":"refs/heads/local-swift","pushedAt":"2024-03-19T00:09:45.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"timsneath","name":"Tim Sneath","path":"/timsneath","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2319867?s=80&v=4"},"commit":{"message":"Update README.md\n\nAdd quick links to the documentation","shortMessageHtmlLink":"Update README.md"}},{"before":"625aead19a45791c027af63e276bab6bbe3c79a8","after":"15706e59afbaace15fff65c29d1535b5d60e0fcc","ref":"refs/heads/gh-pages","pushedAt":"2024-03-15T01:45:06.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"rauhul","name":"Rauhul Varma","path":"/rauhul","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/9739930?s=80&v=4"},"commit":{"message":"Update documentation","shortMessageHtmlLink":"Update documentation"}},{"before":"33262de42a0f0191a3958e26b601341748d97537","after":"625aead19a45791c027af63e276bab6bbe3c79a8","ref":"refs/heads/gh-pages","pushedAt":"2024-03-15T01:42:32.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"rauhul","name":"Rauhul Varma","path":"/rauhul","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/9739930?s=80&v=4"},"commit":{"message":"Update documentation","shortMessageHtmlLink":"Update documentation"}},{"before":"7e64d27344e47b57d211d1d25ca6c934faf85616","after":null,"ref":"refs/heads/more-documentation","pushedAt":"2024-03-15T01:33:02.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"rauhul","name":"Rauhul Varma","path":"/rauhul","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/9739930?s=80&v=4"}},{"before":"ecdeff51ef35f350b50247c7d01761ff4d6c67e4","after":"d8c51b285a3da5adfb9aec1b6498dd39c5010f82","ref":"refs/heads/main","pushedAt":"2024-03-15T01:33:01.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"rauhul","name":"Rauhul Varma","path":"/rauhul","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/9739930?s=80&v=4"},"commit":{"message":"Documentation updates (#10)\n\nVarious updates to documentation formatting and organization, very few\r\ncontent changes. Few grammar changes.","shortMessageHtmlLink":"Documentation updates (#10)"}},{"before":null,"after":"7e64d27344e47b57d211d1d25ca6c934faf85616","ref":"refs/heads/more-documentation","pushedAt":"2024-03-15T01:31:35.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"rauhul","name":"Rauhul Varma","path":"/rauhul","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/9739930?s=80&v=4"},"commit":{"message":"More documentation updates","shortMessageHtmlLink":"More documentation updates"}},{"before":"f3a50184c197130114bb4e1df0990bd3a2f5653d","after":"ecdeff51ef35f350b50247c7d01761ff4d6c67e4","ref":"refs/heads/main","pushedAt":"2024-03-15T00:57:42.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"rauhul","name":"Rauhul Varma","path":"/rauhul","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/9739930?s=80&v=4"},"commit":{"message":"Autodetect the swift toolchain identifier, typos and documentation (#6)\n\n# Summary\r\n\r\nThis PR:\r\n- [x] Updates `swift.mk` to detect the swift toolchain identifier (so\r\nyou can just run `make` without editing).\r\n- [x] Updates some occurrences of `Example` to `Examples`.\r\n- [x] Moves the toolchain identifier documentation, with some changes,\r\ninto `BuildingTheExamples.md`\r\n\r\n### `swift.mk` toolchain detection\r\n\r\nThe `DownloadingTheTools.md` document described how to determine the\r\nSwift toolchain identifier and edit `swift.mk` to add the variable. The\r\nexample also assumed that the Swift toolchain was installed for _all_\r\nusers, but would not work if it was installed for the current user only.\r\n\r\n`swift.mk` will now check:\r\n- if the `TOOLCHAINS` environment variable is defined and, if so, us it.\r\n- if the local user has a latest Swift toolchain installed (in\r\n`~/Library`) and, if so, use it.\r\n- if there is a globally installed latest Swift toolchain (in\r\n`/Library`) and, if so, use it.\r\n\r\nThis way you can just execute `make` without having to edit `swift.mk`.\r\n\r\nThis means that a locally installed toolchain takes precedence over a\r\nglobally installed toolchain. If one does need to specify a specific\r\ntoolchain, you can still do so by defining the environment variable:\r\n\r\n```bash\r\n$ TOOLCHAINS=org.swift.59202403121a make\r\n```\r\n\r\n```bash\r\n$ TOOLCHAINS=org.swift.59202312211a swift build -c release\r\n```\r\n\r\n ### Documentation updates\r\n\r\nAs `swift.mk` will now determine the toolchain identifier, having the\r\nstep to edit `swift.mk` inside `DownloadingTheTools.md` is distracting\r\nand makes downloading the tools more complicated. This PR moves the\r\nsection about obtaining the toolchain identifier into a dedicated\r\nsection at the end of `BuildingTheExamples.md`.","shortMessageHtmlLink":"Autodetect the swift toolchain identifier, typos and documentation (#6)"}},{"before":"1322f48aa68ad3e1860cc935a2458b61003186e9","after":"f3a50184c197130114bb4e1df0990bd3a2f5653d","ref":"refs/heads/main","pushedAt":"2024-03-14T16:14:49.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"rauhul","name":"Rauhul Varma","path":"/rauhul","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/9739930?s=80&v=4"},"commit":{"message":"Update Package.swift to remove Foundation import (#3)\n\nPrefer using `PackageDescription.Context.environment` instead of\r\nusing `ProcessInfo().environment` directly.","shortMessageHtmlLink":"Update Package.swift to remove Foundation import (#3)"}},{"before":"c818b6656fa7e4069ff246f5bc6b8389bc375877","after":null,"ref":"refs/heads/ide-setup-documentation","pushedAt":"2024-03-14T15:58:09.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"rauhul","name":"Rauhul Varma","path":"/rauhul","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/9739930?s=80&v=4"}},{"before":"f8b43542286561e04d40b66d598108d90bb31b0f","after":"1322f48aa68ad3e1860cc935a2458b61003186e9","ref":"refs/heads/main","pushedAt":"2024-03-14T15:58:08.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"rauhul","name":"Rauhul Varma","path":"/rauhul","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/9739930?s=80&v=4"},"commit":{"message":"Expand IDE setup documentation (#8)\n\nAdds more detailed instructions on how to configure the Nova Icarus\r\nextension and the VSCode Swift extension.","shortMessageHtmlLink":"Expand IDE setup documentation (#8)"}},{"before":"bbcdd377b648e36ba4de97047f8f5310c29653d4","after":"c818b6656fa7e4069ff246f5bc6b8389bc375877","ref":"refs/heads/ide-setup-documentation","pushedAt":"2024-03-14T15:57:38.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"rauhul","name":"Rauhul Varma","path":"/rauhul","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/9739930?s=80&v=4"},"commit":{"message":"Expand IDE setup documentation\n\nAdds more detailed instructions on how to configure the Nova Icarus\nextension and the VSCode Swift extension.","shortMessageHtmlLink":"Expand IDE setup documentation"}},{"before":"e931e6a23a7a675a5a42f83594433ccd64586af8","after":"bbcdd377b648e36ba4de97047f8f5310c29653d4","ref":"refs/heads/ide-setup-documentation","pushedAt":"2024-03-14T15:56:57.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"rauhul","name":"Rauhul Varma","path":"/rauhul","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/9739930?s=80&v=4"},"commit":{"message":"Expand IDE setup documentation\n\nAdds more detailed instructions on how to configure the Nova Icarus\nextension and the VSCode Swift extension.","shortMessageHtmlLink":"Expand IDE setup documentation"}},{"before":"27d1ead55503a0e37240a8561e3c652916eafa96","after":"e931e6a23a7a675a5a42f83594433ccd64586af8","ref":"refs/heads/ide-setup-documentation","pushedAt":"2024-03-14T15:56:20.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"rauhul","name":"Rauhul Varma","path":"/rauhul","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/9739930?s=80&v=4"},"commit":{"message":"Expand IDE setup documentation\n\nAdds more detailed instructions on how to configure the Nova Icarus\nextension and the VSCode Swift extension.","shortMessageHtmlLink":"Expand IDE setup documentation"}},{"before":"cc5ade88e7a69b39d4da6b126b6b95112b58c698","after":"27d1ead55503a0e37240a8561e3c652916eafa96","ref":"refs/heads/ide-setup-documentation","pushedAt":"2024-03-13T20:50:59.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"rauhul","name":"Rauhul Varma","path":"/rauhul","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/9739930?s=80&v=4"},"commit":{"message":"Expand IDE setup documentation\n\nAdds more detailed instructions on how to configure the Nova Icarus\nextension and the VSCode Swift extension.","shortMessageHtmlLink":"Expand IDE setup documentation"}},{"before":null,"after":"cc5ade88e7a69b39d4da6b126b6b95112b58c698","ref":"refs/heads/ide-setup-documentation","pushedAt":"2024-03-13T20:50:03.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"rauhul","name":"Rauhul Varma","path":"/rauhul","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/9739930?s=80&v=4"},"commit":{"message":"WIP: ide setup docs","shortMessageHtmlLink":"WIP: ide setup docs"}}],"hasNextPage":true,"hasPreviousPage":false,"activityType":"all","actor":null,"timePeriod":"all","sort":"DESC","perPage":30,"cursor":"djE6ks8AAAAEQQnpcgA","startCursor":null,"endCursor":null}},"title":"Activity · apple/swift-playdate-examples"}