{"payload":{"feedbackUrl":"https://github.com/orgs/community/discussions/53140","repo":{"id":499433951,"defaultBranch":"main","name":"winrt-go","ownerLogin":"saltosystems","currentUserCanPush":false,"isFork":false,"isEmpty":false,"createdAt":"2022-06-03T08:20:03.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/3724943?v=4","public":true,"private":false,"isOrgOwned":true},"refInfo":{"name":"","listCacheKey":"v0:1715329627.0","currentOid":""},"activityList":{"items":[{"before":"11a17dadc004dd42d809e5936672a49c50318e66","after":null,"ref":"refs/heads/feature/use-uintptr-in-delegate-functions","pushedAt":"2024-05-10T08:27:07.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"jagobagascon","name":"Jagoba Gascón","path":"/jagobagascon","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/12712433?s=80&v=4"}},{"before":"4f7860a3bd2b037de2ed6d7cf5cfab934e174321","after":"db61b37f58779963ab0f34b52e5f0e5c674ebd22","ref":"refs/heads/main","pushedAt":"2024-05-10T08:27:06.000Z","pushType":"pr_merge","commitsCount":2,"pusher":{"login":"jagobagascon","name":"Jagoba Gascón","path":"/jagobagascon","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/12712433?s=80&v=4"},"commit":{"message":"Merge pull request #96 from saltosystems/feature/use-uintptr-in-delegate-functions\n\ndelegate: return uintptr as callback result","shortMessageHtmlLink":"Merge pull request #96 from saltosystems/feature/use-uintptr-in-deleg…"}},{"before":null,"after":"11a17dadc004dd42d809e5936672a49c50318e66","ref":"refs/heads/feature/use-uintptr-in-delegate-functions","pushedAt":"2024-05-10T08:09:45.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"jagobagascon","name":"Jagoba Gascón","path":"/jagobagascon","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/12712433?s=80&v=4"},"commit":{"message":"delegate: return uintptr as callback result\n\nAccording to the syscall.NewCallback docs all the callbacks should\nreturn an uintptr sized result. But we were previously using uint64\nwhich only works for 64 bit systems. This change should allow using\nwinrt-go on 32 bit windows devices.\n\nfixes #83","shortMessageHtmlLink":"delegate: return uintptr as callback result"}},{"before":"3fb5e41e54e65dcbbeee000aba4d64f0000444e1","after":null,"ref":"refs/heads/feature/alloc-vtable-in-the-heap","pushedAt":"2024-05-09T16:41:46.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"jagobagascon","name":"Jagoba Gascón","path":"/jagobagascon","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/12712433?s=80&v=4"}},{"before":"45c2d7a6235a343dda6c6538ae78bd4b6d329f33","after":"4f7860a3bd2b037de2ed6d7cf5cfab934e174321","ref":"refs/heads/main","pushedAt":"2024-05-09T16:41:45.000Z","pushType":"pr_merge","commitsCount":2,"pusher":{"login":"jagobagascon","name":"Jagoba Gascón","path":"/jagobagascon","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/12712433?s=80&v=4"},"commit":{"message":"Merge pull request #95 from saltosystems/feature/alloc-vtable-in-the-heap\n\ndelegates: allocate VTable in heap","shortMessageHtmlLink":"Merge pull request #95 from saltosystems/feature/alloc-vtable-in-the-…"}},{"before":"d40e89232698d668624091d7d267e2367c3b33e9","after":"3fb5e41e54e65dcbbeee000aba4d64f0000444e1","ref":"refs/heads/feature/alloc-vtable-in-the-heap","pushedAt":"2024-05-09T10:22:35.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"jagobagascon","name":"Jagoba Gascón","path":"/jagobagascon","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/12712433?s=80&v=4"},"commit":{"message":"delegates: allocate VTable in heap\n\nThe VTable is a field all WinRT types have and it is used to store\npointers to all the class functions. This field is usually created by\nWinRT, but for delegates we need to provide our own VTable instance.\n\nWe were previously using a Go struct pointer as our VTable, but Go\nstructs can be randomly moved or GCed by the Go runtime, and since we\nare pasing the VTable to WinRT (out of the Go runtime), we were getting\nrandom invalid memory errors.\n\nThis was addressed in a previous PR (#64) but somehow we missed this.\n\nfixes #94","shortMessageHtmlLink":"delegates: allocate VTable in heap"}},{"before":"e17a6710520098b3448c80eaaf4ba8d3ac4746a1","after":"d40e89232698d668624091d7d267e2367c3b33e9","ref":"refs/heads/feature/alloc-vtable-in-the-heap","pushedAt":"2024-05-09T10:08:45.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"jagobagascon","name":"Jagoba Gascón","path":"/jagobagascon","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/12712433?s=80&v=4"},"commit":{"message":"delegates: allocate VTable in heap\n\nThe VTable is a field all WinRT types have and it is used to store\npointers to all the class functions. This field is usually created by\nWinRT, but for delegates we need to provide our own VTable instance.\n\nWe were previously using a Go struct pointer as our VTable, but Go\nstructs can be randomly moved or GCed by the Go runtime, and since we\nare pasing the VTable to WinRT (out of the Go runtime), we were getting\nrandom invalid memory errors.\n\nThis was addressed in a previous PR (#64) but somehow we missed this.\n\nfixes #94","shortMessageHtmlLink":"delegates: allocate VTable in heap"}},{"before":null,"after":"e17a6710520098b3448c80eaaf4ba8d3ac4746a1","ref":"refs/heads/feature/alloc-vtable-in-the-heap","pushedAt":"2024-05-09T10:01:24.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"jagobagascon","name":"Jagoba Gascón","path":"/jagobagascon","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/12712433?s=80&v=4"},"commit":{"message":"delegates: allocate VTable in heap\n\nThe VTable is a field all WinRT types have and it is used to store\npointers to all the class functions. This field is usually created by\nWinRT, but for delegates we need to provide our own VTable instance.\n\nWe were previously using a Go struct pointer as our VTable, but Go\nstructs can be randomly moved or GCed by the Go runtime, and since we\nare pasing the VTable to WinRT (out of the Go runtime), we were getting\nrandom invalid memory errors.\n\nThis was addressed in a previous PR (#64) but somehow we missed this.\n\nfixes #94","shortMessageHtmlLink":"delegates: allocate VTable in heap"}},{"before":"2be6f8e8b7c06971c0688349f94b4a1f939d98c6","after":null,"ref":"refs/heads/feature/fix-generic-input-parameters","pushedAt":"2024-05-09T09:04:53.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"jagobagascon","name":"Jagoba Gascón","path":"/jagobagascon","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/12712433?s=80&v=4"}},{"before":"c45669fd222f53485a8ba2544c6dec0bc2a0d18d","after":"45c2d7a6235a343dda6c6538ae78bd4b6d329f33","ref":"refs/heads/main","pushedAt":"2024-05-09T09:04:52.000Z","pushType":"pr_merge","commitsCount":2,"pusher":{"login":"jagobagascon","name":"Jagoba Gascón","path":"/jagobagascon","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/12712433?s=80&v=4"},"commit":{"message":"Merge pull request #93 from saltosystems/feature/fix-generic-input-parameters\n\ncodegen: fix generic input parameters","shortMessageHtmlLink":"Merge pull request #93 from saltosystems/feature/fix-generic-input-pa…"}},{"before":null,"after":"2be6f8e8b7c06971c0688349f94b4a1f939d98c6","ref":"refs/heads/feature/fix-generic-input-parameters","pushedAt":"2024-05-07T11:55:26.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"jagobagascon","name":"Jagoba Gascón","path":"/jagobagascon","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/12712433?s=80&v=4"},"commit":{"message":"codegen: fix generic input parameters\n\nGeneric parameters are not yet supported so we use the unsafe.Pointer to\nlet the user pass any parameter it wants. We were not taking this into\naccount on function input parameters and we were wraping the\nunsafe.Pointer value again in another unsafe.Pointer, which caused\nerrors for some users.\n\nfixes #92","shortMessageHtmlLink":"codegen: fix generic input parameters"}},{"before":"f0c662c49880609ba261d4ae6f1d54763cb789ec","after":null,"ref":"refs/heads/feature/validate-generated-code-matches-generator","pushedAt":"2024-04-24T08:43:39.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"jagobagascon","name":"Jagoba Gascón","path":"/jagobagascon","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/12712433?s=80&v=4"}},{"before":"03d032b6fb9b0a7e7e8d4c3c5d568973326c3725","after":"c45669fd222f53485a8ba2544c6dec0bc2a0d18d","ref":"refs/heads/main","pushedAt":"2024-04-24T08:43:38.000Z","pushType":"pr_merge","commitsCount":2,"pusher":{"login":"jagobagascon","name":"Jagoba Gascón","path":"/jagobagascon","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/12712433?s=80&v=4"},"commit":{"message":"Merge pull request #91 from saltosystems/feature/validate-generated-code-matches-generator\n\nsanity-check: validate generated code was not modified","shortMessageHtmlLink":"Merge pull request #91 from saltosystems/feature/validate-generated-c…"}},{"before":null,"after":"f0c662c49880609ba261d4ae6f1d54763cb789ec","ref":"refs/heads/feature/validate-generated-code-matches-generator","pushedAt":"2024-04-24T08:34:52.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"jagobagascon","name":"Jagoba Gascón","path":"/jagobagascon","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/12712433?s=80&v=4"},"commit":{"message":"sanity-check: validate generated code was not modified\n\nMost PR we receive include new WinRT autogenerated classes. But that\nautogenerated code is hidden by GitHub when doing a review, so it is\nusually ignored by reviewers. By sanity-checking the generated code we\nmake sure that the code was not manually modified (either by mistake or\nfor malicious purposes).","shortMessageHtmlLink":"sanity-check: validate generated code was not modified"}},{"before":"289d313a74b7e76d508f2c031b8303377a1cb28e","after":"03d032b6fb9b0a7e7e8d4c3c5d568973326c3725","ref":"refs/heads/main","pushedAt":"2024-04-24T07:11:16.000Z","pushType":"pr_merge","commitsCount":2,"pusher":{"login":"jagobagascon","name":"Jagoba Gascón","path":"/jagobagascon","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/12712433?s=80&v=4"},"commit":{"message":"Merge pull request #90 from Cartermel/gen-gatt-serviceprovider\n\nBLE Peripheral Codegen","shortMessageHtmlLink":"Merge pull request #90 from Cartermel/gen-gatt-serviceprovider"}},{"before":"ec850ee6168ffc33e08ff053883d94b070543121","after":null,"ref":"refs/heads/feature/update-readme","pushedAt":"2024-03-20T18:43:40.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"jagobagascon","name":"Jagoba Gascón","path":"/jagobagascon","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/12712433?s=80&v=4"}},{"before":"a2e4fc03f5f48e5bfc4cff209b835b8553aba9d3","after":"289d313a74b7e76d508f2c031b8303377a1cb28e","ref":"refs/heads/main","pushedAt":"2024-03-20T18:43:39.000Z","pushType":"pr_merge","commitsCount":2,"pusher":{"login":"jagobagascon","name":"Jagoba Gascón","path":"/jagobagascon","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/12712433?s=80&v=4"},"commit":{"message":"Merge pull request #87 from saltosystems/feature/update-readme\n\nreadme: update to include info about breaking changes","shortMessageHtmlLink":"Merge pull request #87 from saltosystems/feature/update-readme"}},{"before":null,"after":"ec850ee6168ffc33e08ff053883d94b070543121","ref":"refs/heads/feature/update-readme","pushedAt":"2024-03-20T12:05:55.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"jagobagascon","name":"Jagoba Gascón","path":"/jagobagascon","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/12712433?s=80&v=4"},"commit":{"message":"readme: update to include info about breaking changes\n\nUpdate the readme to include information about `main` branch stability and breaking changes.","shortMessageHtmlLink":"readme: update to include info about breaking changes"}},{"before":"22784f4b0920a24cfbaf90e638ef97a503bd824b","after":null,"ref":"refs/heads/feature/change-static-method-name-strategy-to-avoid-conflicts","pushedAt":"2024-03-20T11:39:52.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"jagobagascon","name":"Jagoba Gascón","path":"/jagobagascon","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/12712433?s=80&v=4"}},{"before":"43a71786fba44f686228ed21a11e570c5a8fc797","after":"a2e4fc03f5f48e5bfc4cff209b835b8553aba9d3","ref":"refs/heads/main","pushedAt":"2024-03-20T11:39:51.000Z","pushType":"pr_merge","commitsCount":2,"pusher":{"login":"jagobagascon","name":"Jagoba Gascón","path":"/jagobagascon","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/12712433?s=80&v=4"},"commit":{"message":"Merge pull request #86 from saltosystems/feature/change-static-method-name-strategy-to-avoid-conflicts\n\ncodegen: change static func names to avoid conflicts","shortMessageHtmlLink":"Merge pull request #86 from saltosystems/feature/change-static-method…"}},{"before":"6ca417832bca796f03205d3204052720b0186373","after":"22784f4b0920a24cfbaf90e638ef97a503bd824b","ref":"refs/heads/feature/change-static-method-name-strategy-to-avoid-conflicts","pushedAt":"2024-03-20T11:36:40.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"jagobagascon","name":"Jagoba Gascón","path":"/jagobagascon","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/12712433?s=80&v=4"},"commit":{"message":"codegen: change static func names to avoid conflicts\n\nThis commit changes the naming strategy to include the class name as a\nprefix of the static function names. Static functions were generated as\npublic functions using the method name found in the windows metadata.\nSince all static functions of a namespace are added to the same Go\npackage, this could cause collisions when two classes had the same\nstatic method (`FromBluetoothAddress` for example can be found in both\nBluetoothdevice and BluetoothLEDevice).\n\nfixes #85","shortMessageHtmlLink":"codegen: change static func names to avoid conflicts"}},{"before":"f8ff369347eb4f4849883b438435bda399a9fe55","after":"6ca417832bca796f03205d3204052720b0186373","ref":"refs/heads/feature/change-static-method-name-strategy-to-avoid-conflicts","pushedAt":"2024-03-18T14:37:42.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"jagobagascon","name":"Jagoba Gascón","path":"/jagobagascon","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/12712433?s=80&v=4"},"commit":{"message":"codegen: change static func names to avoid conflicts\n\nStatic functions were generated as public functions using the method\nname found in the windows metadata. Since all static function of a\nnamespace are added to the same Go package, this could cause collisions\nwhen two classes had the same static method (`FromBluetoothAddress` for\nexample can be found in both Bluetoothdevice and BluetoothLEDevice).\n\nThis commit changes the naming strategy to include the class name as a\nprefix of the static function names. And the existing methods will be\nkept for a while marked as deprecated to maintain backwards\ncompatibility.\n\nfixes #85","shortMessageHtmlLink":"codegen: change static func names to avoid conflicts"}},{"before":null,"after":"f8ff369347eb4f4849883b438435bda399a9fe55","ref":"refs/heads/feature/change-static-method-name-strategy-to-avoid-conflicts","pushedAt":"2024-03-18T14:35:46.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"jagobagascon","name":"Jagoba Gascón","path":"/jagobagascon","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/12712433?s=80&v=4"},"commit":{"message":"codegen: change static func names to avoid conflicts\n\nStatic functions were generated as public functions using the method\nname found in the windows metadata. Since all static function of a\nnamespace are added to the same Go package, this could cause collisions\nwhen two classes had the same static method (`FromBluetoothAddress` for\nexample can be found in both Bluetoothdevice and BluetoothLEDevice).\n\nThis commit changes the naming strategy to include the class name as a\nprefix of the static function names. And to avoid breaking backwards\ncompatibility the existing methods will be kept for a while, but they\nhave been marked as deprecated.\n\nfixes #85","shortMessageHtmlLink":"codegen: change static func names to avoid conflicts"}},{"before":"ad49e9790c38e85b0bfd5bd0ffc612d34c68ba8f","after":"43a71786fba44f686228ed21a11e570c5a8fc797","ref":"refs/heads/main","pushedAt":"2024-03-12T14:42:56.000Z","pushType":"pr_merge","commitsCount":2,"pusher":{"login":"jagobagascon","name":"Jagoba Gascón","path":"/jagobagascon","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/12712433?s=80&v=4"},"commit":{"message":"Merge pull request #84 from aykevl/adv-stopped-event-error\n\nAdd BluetoothLEAdvertisementWatcherStoppedEventArgs","shortMessageHtmlLink":"Merge pull request #84 from aykevl/adv-stopped-event-error"}},{"before":"e138f8bb4e11838eb6bc39218e651513f9adb6ff","after":"18fae0e439a5de7367998af050a431c49f5b714f","ref":"refs/heads/feature/fix-callback-return-type","pushedAt":"2024-03-12T09:55:30.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"jagobagascon","name":"Jagoba Gascón","path":"/jagobagascon","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/12712433?s=80&v=4"},"commit":{"message":"delegate: change return type of callbacks to uintptr\n\nThe `NewCallback` function expects the received argument to be a\nfunction with one uintptr-sized result. That uintptr type may be a 32 or\n64 bit pointer depending on the system, but some functions were always\nreturning a uint64 value. That was causing errors in 32 bit systems.\n\nfixes #83","shortMessageHtmlLink":"delegate: change return type of callbacks to uintptr"}},{"before":null,"after":"e138f8bb4e11838eb6bc39218e651513f9adb6ff","ref":"refs/heads/feature/fix-callback-return-type","pushedAt":"2024-03-12T09:36:48.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"jagobagascon","name":"Jagoba Gascón","path":"/jagobagascon","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/12712433?s=80&v=4"},"commit":{"message":"delegate: change return type of callbacks to uintptr\n\nThe `NewCallback` function expects the received argument to be a\nfunction with one uintptr-sized result. That uintptr type may be a 32 or\n64 bit pointer depending on the system, but some functions were always\nreturning a uint64 value. That was causing errors in 32 bit systems.","shortMessageHtmlLink":"delegate: change return type of callbacks to uintptr"}},{"before":"dd5095ca4a3ff3da9f5857ed3d04fb7382cc6e1f","after":null,"ref":"refs/heads/feature/reuse-syscall-callbacks-to-avoid-reaching-the-Golang-limit","pushedAt":"2024-01-10T12:03:00.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"jagobagascon","name":"Jagoba Gascón","path":"/jagobagascon","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/12712433?s=80&v=4"}},{"before":"9071442c0c840993593b2e654970dcc429fd520a","after":"ad49e9790c38e85b0bfd5bd0ffc612d34c68ba8f","ref":"refs/heads/main","pushedAt":"2024-01-10T12:02:59.000Z","pushType":"pr_merge","commitsCount":2,"pusher":{"login":"jagobagascon","name":"Jagoba Gascón","path":"/jagobagascon","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/12712433?s=80&v=4"},"commit":{"message":"Merge pull request #81 from saltosystems/feature/reuse-syscall-callbacks-to-avoid-reaching-the-Golang-limit\n\ncodegen/delegates: reuse callbacks to avoid reaching go limits","shortMessageHtmlLink":"Merge pull request #81 from saltosystems/feature/reuse-syscall-callba…"}},{"before":"43d8933d1ee5fa523cbe28479aa048139f8b31fc","after":"dd5095ca4a3ff3da9f5857ed3d04fb7382cc6e1f","ref":"refs/heads/feature/reuse-syscall-callbacks-to-avoid-reaching-the-Golang-limit","pushedAt":"2024-01-08T08:25:07.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"jagobagascon","name":"Jagoba Gascón","path":"/jagobagascon","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/12712433?s=80&v=4"},"commit":{"message":"codegen/delegates: reuse callbacks to avoid reaching go limits\n\nOnly a limited number of callbacks may be created in a single Go\nprocess, and any memory allocated for these callbacks is never released.\nBetween NewCallback and NewCallbackCDecl, at least 1024 callbacks can\nalways be created, but this may not be enough for certain applications.\nThis commit avoids that probly by changing delegates so that all of them\nshare the same four callbacks.\n\nfixes #82","shortMessageHtmlLink":"codegen/delegates: reuse callbacks to avoid reaching go limits"}},{"before":"ebf4b67bc1de3c9355f80ae83e4e4a467919edae","after":"43d8933d1ee5fa523cbe28479aa048139f8b31fc","ref":"refs/heads/feature/reuse-syscall-callbacks-to-avoid-reaching-the-Golang-limit","pushedAt":"2023-12-29T09:01:11.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"jagobagascon","name":"Jagoba Gascón","path":"/jagobagascon","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/12712433?s=80&v=4"},"commit":{"message":"codegen/delegates: reuse callbacks to avoid reaching go limits\n\nOnly a limited number of callbacks may be created in a single Go\nprocess, and any memory allocated for these callbacks is never released.\nBetween NewCallback and NewCallbackCDecl, at least 1024 callbacks can\nalways be created, but this may not be enough for certain applications.\nThis commit avoids that probly by changing delegates so that all of them\nshare the same four callbacks.\n\nfixes #82","shortMessageHtmlLink":"codegen/delegates: reuse callbacks to avoid reaching go limits"}}],"hasNextPage":true,"hasPreviousPage":false,"activityType":"all","actor":null,"timePeriod":"all","sort":"DESC","perPage":30,"cursor":"djE6ks8AAAAERl2rAQA","startCursor":null,"endCursor":null}},"title":"Activity · saltosystems/winrt-go"}