{"payload":{"feedbackUrl":"https://github.com/orgs/community/discussions/53140","repo":{"id":618971498,"defaultBranch":"main","name":"SwiftGodot","ownerLogin":"migueldeicaza","currentUserCanPush":false,"isFork":false,"isEmpty":false,"createdAt":"2023-03-25T21:56:30.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/36863?v=4","public":true,"private":false,"isOrgOwned":false},"refInfo":{"name":"","listCacheKey":"v0:1724175847.0","currentOid":""},"activityList":{"items":[{"before":"dfe00c160235e7c2bb2f7a109971a22f13387882","after":"55b37b4a22a5629c81b3072179e9aa444fb67330","ref":"refs/heads/main","pushedAt":"2024-09-12T18:35:55.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"migueldeicaza","name":"Miguel de Icaza","path":"/migueldeicaza","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/36863?s=80&v=4"},"commit":{"message":"Fix incorrect name","shortMessageHtmlLink":"Fix incorrect name"}},{"before":"06521594787181ea6c3f71a79bde5ce2e2b3cd0a","after":"dfe00c160235e7c2bb2f7a109971a22f13387882","ref":"refs/heads/main","pushedAt":"2024-09-12T14:58:35.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"migueldeicaza","name":"Miguel de Icaza","path":"/migueldeicaza","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/36863?s=80&v=4"},"commit":{"message":"Update WINDOWS_BUILD.md (#534)\n\nAdded information about windows DLL in the windows build file","shortMessageHtmlLink":"Update WINDOWS_BUILD.md (#534)"}},{"before":"204471690e89306e770a325e1dbd801c0e2cd8a8","after":"06521594787181ea6c3f71a79bde5ce2e2b3cd0a","ref":"refs/heads/main","pushedAt":"2024-09-12T14:58:17.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"migueldeicaza","name":"Miguel de Icaza","path":"/migueldeicaza","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/36863?s=80&v=4"},"commit":{"message":"Add additional reserved words to generator (#536)\n\nCo-authored-by: Jakob Winkler ","shortMessageHtmlLink":"Add additional reserved words to generator (#536)"}},{"before":"8bd525fda6d60bbc8a9036a2d3d795eb0aa553a9","after":"204471690e89306e770a325e1dbd801c0e2cd8a8","ref":"refs/heads/main","pushedAt":"2024-08-31T20:24:13.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"migueldeicaza","name":"Miguel de Icaza","path":"/migueldeicaza","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/36863?s=80&v=4"},"commit":{"message":"Fix macro tests expecting deprecated append API (#532)","shortMessageHtmlLink":"Fix macro tests expecting deprecated append API (#532)"}},{"before":"a1fa9187c6abfadbc6436ce610fb5557f0d0930b","after":"8bd525fda6d60bbc8a9036a2d3d795eb0aa553a9","ref":"refs/heads/main","pushedAt":"2024-08-27T04:34:23.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"migueldeicaza","name":"Miguel de Icaza","path":"/migueldeicaza","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/36863?s=80&v=4"},"commit":{"message":"Fix deprecation warnings (#530)","shortMessageHtmlLink":"Fix deprecation warnings (#530)"}},{"before":"f5219109658df281fb6f68f6f1cd5f59f7cd23ba","after":"a1fa9187c6abfadbc6436ce610fb5557f0d0930b","ref":"refs/heads/main","pushedAt":"2024-08-23T19:01:35.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"migueldeicaza","name":"Miguel de Icaza","path":"/migueldeicaza","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/36863?s=80&v=4"},"commit":{"message":"die if a class name has already been registered (#529)\n\nCo-authored-by: Rob Mayoff ","shortMessageHtmlLink":"die if a class name has already been registered (#529)"}},{"before":"3f54e31573d49b6dd3c1a7b4f081d437d89b2dce","after":"f5219109658df281fb6f68f6f1cd5f59f7cd23ba","ref":"refs/heads/main","pushedAt":"2024-08-20T17:28:26.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"migueldeicaza","name":"Miguel de Icaza","path":"/migueldeicaza","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/36863?s=80&v=4"},"commit":{"message":"remove GodotObject protocol (#525)\n\nIt doesn't seem like the GodotObject protocol has any reason to exist.\r\nThis patch removes it.\r\n\r\n- The protocol has no requirements.\r\n\r\n- There is exactly one directly conforming type: Object. All\r\n descendants of Object inherit the conformance, but any constraint\r\n requiring GodotObject conformance can be rewritten to instead\r\n require Object inheritance.\r\n\r\n- There are three functions with GodotObject constraints:\r\n\r\n - `VariantStorable.makeOrUnwrap`\r\n - `Variant.asObject`\r\n - `lookupObject`\r\n\r\n All test cases pass if I change these constraints to require Object\r\n inheritance instead of GodotObject conformance.\r\n\r\nCo-authored-by: Rob Mayoff ","shortMessageHtmlLink":"remove GodotObject protocol (#525)"}},{"before":"d1d6ca47f0fc5bb16948017e1a6b2c6c8838b3b5","after":"3f54e31573d49b6dd3c1a7b4f081d437d89b2dce","ref":"refs/heads/main","pushedAt":"2024-08-20T04:22:49.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"migueldeicaza","name":"Miguel de Icaza","path":"/migueldeicaza","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/36863?s=80&v=4"},"commit":{"message":"Add tests cases for, and fix, #513 (#524)\n\n* add some support for using a local libgodot build\r\n\r\n* fix better the first leak of #513\r\n\r\nThe changes in d1d6ca4 made several `Geometry2DTests` fail.\r\n\r\nThe actual unbalanced retain causing the leak in\r\n`VariantRepresentable.swift`:\r\n\r\n``` swift\r\nextension ContentVariantRepresentable {\r\n public init? (_ variant: Variant) {\r\n guard Self.godotType == variant.gtype else { return nil }\r\n\r\n var content = Self.zero\r\n withUnsafeMutablePointer(to: &content) { ptr in\r\n variant.toType(Self.godotType, dest: ptr) // <-- THIS IS THE UNBALANCED RETAIN\r\n }\r\n\r\n self.init(content: content)\r\n }\r\n}\r\n```\r\n\r\nThe `variant.toType` function calls into Godot to copy out the built-in\r\ntype stored in `variant`. If that built-in type has an internal\r\nreference count, Godot increments it. Then, the call to\r\n`self.init(content: content)` increments the count again. The retain\r\nperformed by `variant.toType` is never balanced.\r\n\r\nThis patch fixes the bug by generating a new\r\n`init(alreadyOwnedContent:)` initializer for each Godot builtin class\r\ntype. This needs to be on the builtin wrappers (like `GDictionary`,\r\n`GArray`, etc.), rather than on `Variant` which is where d1d6ca4 put it.\r\n\r\nThis patch also adds a test case to check for the leak by looking at\r\nGodot's `MEMORY_STATIC` performance counter, which is only enabled if\r\nGodot was built with `DEBUG_ENABLED`.\r\n\r\n* fix second leak of #513\r\n\r\nThis patch adds a test for the second leak described in #513, and fixes\r\nthe leak.\r\n\r\nWithout this patch, the leak happens because `Variant.asObject` has an\r\nunneeded call to `rc.reference()` which increments the `RefCounted`\r\nobject's reference count. As far as I can tell, nothing balances this\r\nincrement.\r\n\r\n`Variant.asObject` calls `lookupObject(nativeHandle:)`, which returns\r\na Swift wrapper for an object whose reference count has already been\r\nincremented (if the object is `RefCounted`). The Swift wrapper\r\nbalances that increment with a decrement in its `deinit`.\r\n\r\n---------\r\n\r\nCo-authored-by: Rob Mayoff ","shortMessageHtmlLink":"Add tests cases for, and fix, #513 (#524)"}},{"before":"17bef0febf605856b14fe50ef54cd6217202529d","after":"d1d6ca47f0fc5bb16948017e1a6b2c6c8838b3b5","ref":"refs/heads/main","pushedAt":"2024-08-17T16:19:42.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"migueldeicaza","name":"Miguel de Icaza","path":"/migueldeicaza","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/36863?s=80&v=4"},"commit":{"message":"The calls to gi.array_operator_index already return a copy of the\nVariant, so we do not need to call the constructor that makes a copy -\nintroduce a non-copy constructor.\n\nFixes the first leak in #513","shortMessageHtmlLink":"The calls to gi.array_operator_index already return a copy of the"}},{"before":"4ea00dadf3d95d7df307a0d246241efc2acd5b07","after":"17bef0febf605856b14fe50ef54cd6217202529d","ref":"refs/heads/main","pushedAt":"2024-08-17T00:35:17.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"migueldeicaza","name":"Miguel de Icaza","path":"/migueldeicaza","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/36863?s=80&v=4"},"commit":{"message":"update dependencies to point at swiftlang repos (#518)\n\nApple has been migrating its Swift repos to the swiftlang organization\r\non Github. This patch updates the URLs in Package.swift to point at the\r\nnew organization.\r\n\r\nCo-authored-by: Rob Mayoff ","shortMessageHtmlLink":"update dependencies to point at swiftlang repos (#518)"}},{"before":"727a118267bac8c68e2d563ffd909bcd76e0821b","after":"4ea00dadf3d95d7df307a0d246241efc2acd5b07","ref":"refs/heads/main","pushedAt":"2024-08-17T00:34:44.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"migueldeicaza","name":"Miguel de Icaza","path":"/migueldeicaza","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/36863?s=80&v=4"},"commit":{"message":"eliminate warnings (#520)\n\nThis patch eliminates all the compiler warninsg I get under Xcode 16.0 beta 4:\r\n\r\nPickerNameProviderMacro.swift:58:13\r\nInitialization of immutable value 'types' was never used; consider replacing with assignment to '_' or removing it\r\n\r\nRefCounted.swift:24:9\r\nResult of call to 'initRef()' is unused\r\n\r\nArray.swift:301:5\r\n@discardableResult declared on a function returning Void is unnecessary\r\n\r\nPacked.swift:13:13\r\n'append(value:)' is deprecated: This method signature has been deprecated in favor of append(_:)\r\n\r\nWrapped.swift:143:28\r\nValue 'node' was defined but never used; consider replacing with boolean test\r\n\r\nWrapped.swift:511:17\r\nResult of call to 'retain()' is unused\r\n\r\nObjectCollectionTests.swift:41:81\r\n'append(value:)' is deprecated: This method signature has been deprecated in favor of append(_:)\r\n\r\nObjectCollectionTests.swift:56:19\r\n'append(value:)' is deprecated: This method signature has been deprecated in favor of append(_:)\r\n\r\nVariantCollectionTests.swift:38:19\r\n'append(value:)' is deprecated: This method signature has been deprecated in favor of append(_:)\r\n\r\nVariantCollectionTests.swift:48:28\r\n'append(value:)' is deprecated: This method signature has been deprecated in favor of append(_:)\r\n\r\nCo-authored-by: Rob Mayoff ","shortMessageHtmlLink":"eliminate warnings (#520)"}},{"before":"130ec199bf3d6f3134010702442f60ae1151ff9e","after":"727a118267bac8c68e2d563ffd909bcd76e0821b","ref":"refs/heads/main","pushedAt":"2024-08-14T02:58:40.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"migueldeicaza","name":"Miguel de Icaza","path":"/migueldeicaza","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/36863?s=80&v=4"},"commit":{"message":"work around Godot crash when __CFBundleIdentifier isn't set (#517)","shortMessageHtmlLink":"work around Godot crash when __CFBundleIdentifier isn't set (#517)"}},{"before":"42719ee4257c95ceb5f22c6a6dd43f10b324219b","after":"130ec199bf3d6f3134010702442f60ae1151ff9e","ref":"refs/heads/main","pushedAt":"2024-08-14T02:58:03.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"migueldeicaza","name":"Miguel de Icaza","path":"/migueldeicaza","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/36863?s=80&v=4"},"commit":{"message":"use let instead of var for _initializeClass (#516)","shortMessageHtmlLink":"use let instead of var for _initializeClass (#516)"}},{"before":"738579adc692f508c0094a493cea6579a6f77c46","after":"42719ee4257c95ceb5f22c6a6dd43f10b324219b","ref":"refs/heads/main","pushedAt":"2024-08-08T20:20:31.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"migueldeicaza","name":"Miguel de Icaza","path":"/migueldeicaza","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/36863?s=80&v=4"},"commit":{"message":"Removed my super-secret debugging technique","shortMessageHtmlLink":"Removed my super-secret debugging technique"}},{"before":"ab5fc266af12a70439a7c8a23e9ea6ec74c2b7a1","after":"738579adc692f508c0094a493cea6579a6f77c46","ref":"refs/heads/main","pushedAt":"2024-08-08T19:16:35.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"migueldeicaza","name":"Miguel de Icaza","path":"/migueldeicaza","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/36863?s=80&v=4"},"commit":{"message":"Memory management changes to solve leaks of RefCounted objects.\n\nThis change introduces a number of changes to memory management in\nSwiftGodot, based on the observing GDExtension and surveying both\nGodot and other language bindings, as there is not a lot of\ndocumentation about this.\n\n* RefCounted objects need to call `initRef()` to initialize the\n reference count, otherwise ref/unref do not perform as expected.\n This manifests as a crash upon returning from assinging a property,\n where the ref is properly managed, but Godot's bridge code would\n `unreference()` that before our return, so we would have two owners\n for the same object, leading to corruption.\n\n The `init_ref` is documented as \"Only call if you know what you are\n doing\", and I could not find chat logs, or documentation about how\n to use it, but it looks from C++, Rust and Dart that they do all end\n up calling this manually.\n\n* Wrapped: because I did not really understand how\n \"Optional\" used a clever trick to use the same\n memory space as an \"UnsafeRawPointer\", I resorted to some ugly hacks\n in the past, while the natural idiom would just work.\n\n Fix that problem, and embrace the correct Swift idiom for this.\n\n* We now distinguish objects that we created from those that were\n merely a proxy to an existing object owned by someone else. This is\n generally done with the 'ownsHandle' property of Wrapped.\n\n For the RefCounted subclasses, instead, we set ownsHandle to true,\n and then take a reference.\n\n* When creating a Godot object, we no longer take a strong reference\n for pure peer objects (those that are not subclasses), as those can\n never have any state, so there is no point in keeping this object\n around at all.\n\n So, we either pass a retained pointer to the callbacks for\n user-defined types, or an unretained one for framework types.\n\n* Bonus points: while it has not been needed up until now, implement\n the reference/unreference of user-defined types and ensure the Swift\n object remains alive while Godot needs it to stay alive, and release\n after. This is done in the userTypeBindingReference method, which I\n previously had documented as obscure and not knowing what it does.\n\n That is what it does: Godot calls us back to notify us \"Hey, you are\n alive, do not dare going away\", and then notifies us when they are\n done.\n\n* Nodes that are attached to a scene have their lifecycle managed by\n the Scene, and we are notified and told when to destroy them, but\n the question is, what to do about Node objects that are not\n attached? I suspect that checking `getTree()` being nil might be\n enough to dispose the Node, but I want to make sure that is the case.","shortMessageHtmlLink":"Memory management changes to solve leaks of RefCounted objects."}},{"before":"35e8043f7cf729fac788df4c8f6ef68c1161a823","after":"ab5fc266af12a70439a7c8a23e9ea6ec74c2b7a1","ref":"refs/heads/main","pushedAt":"2024-08-07T17:55:16.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"migueldeicaza","name":"Miguel de Icaza","path":"/migueldeicaza","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/36863?s=80&v=4"},"commit":{"message":"Make arrays conform to RandomAccessCollection","shortMessageHtmlLink":"Make arrays conform to RandomAccessCollection"}},{"before":"4a92f89d105e7369ce3d3ffafb72b9fe4cf5ffed","after":"35e8043f7cf729fac788df4c8f6ef68c1161a823","ref":"refs/heads/main","pushedAt":"2024-08-07T16:24:50.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"migueldeicaza","name":"Miguel de Icaza","path":"/migueldeicaza","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/36863?s=80&v=4"},"commit":{"message":"Flag a few methods as discardableResult","shortMessageHtmlLink":"Flag a few methods as discardableResult"}},{"before":"b1ef82ef693d64cea50c2e62808777b68879cacd","after":"4a92f89d105e7369ce3d3ffafb72b9fe4cf5ffed","ref":"refs/heads/main","pushedAt":"2024-08-07T15:18:42.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"migueldeicaza","name":"Miguel de Icaza","path":"/migueldeicaza","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/36863?s=80&v=4"},"commit":{"message":"Variation for ObjectCollection of the fix for VariantCollection, which was used to fix #417, and the leak was again spotted in the wild","shortMessageHtmlLink":"Variation for ObjectCollection of the fix for VariantCollection, whic…"}},{"before":"a9a36bf65701e426dc7df7d48e53ecc0d25d31cc","after":"b1ef82ef693d64cea50c2e62808777b68879cacd","ref":"refs/heads/main","pushedAt":"2024-07-29T19:28:54.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"migueldeicaza","name":"Miguel de Icaza","path":"/migueldeicaza","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/36863?s=80&v=4"},"commit":{"message":"PropInfo: make it CustomDebugStringConvertible","shortMessageHtmlLink":"PropInfo: make it CustomDebugStringConvertible"}},{"before":"bc14da840f72cddd6d0ca1fef8f26f86fc900514","after":"a9a36bf65701e426dc7df7d48e53ecc0d25d31cc","ref":"refs/heads/main","pushedAt":"2024-07-29T14:20:01.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"migueldeicaza","name":"Miguel de Icaza","path":"/migueldeicaza","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/36863?s=80&v=4"},"commit":{"message":"Update README.md","shortMessageHtmlLink":"Update README.md"}},{"before":"5b18e855b8ec1458beb86edad50e20442d5ad639","after":"bc14da840f72cddd6d0ca1fef8f26f86fc900514","ref":"refs/heads/main","pushedAt":"2024-07-29T14:19:29.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"migueldeicaza","name":"Miguel de Icaza","path":"/migueldeicaza","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/36863?s=80&v=4"},"commit":{"message":"Add additional platform and project info to readme (#510)\n\n* Add metadata badges\r\n\r\n* Use markdown for metadata badges\r\n\r\n* Add Supported Platforms section to readme\r\n\r\n* Add Contributing section to readme\r\n\r\n* Add link to GDExtension documentation to readme\r\n\r\n* Add Development Status section to readme\r\n\r\n* Fix punctuation in readme","shortMessageHtmlLink":"Add additional platform and project info to readme (#510)"}},{"before":"6a1d1d30ba1338c6303db91b16259f92689bec8d","after":"5b18e855b8ec1458beb86edad50e20442d5ad639","ref":"refs/heads/main","pushedAt":"2024-07-28T19:38:56.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"migueldeicaza","name":"Miguel de Icaza","path":"/migueldeicaza","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/36863?s=80&v=4"},"commit":{"message":"Make it easy for folks to find ObjectCollection","shortMessageHtmlLink":"Make it easy for folks to find ObjectCollection"}},{"before":"c9e23209c1ebe80d6b78b560d9e8fe58743fcf27","after":"6a1d1d30ba1338c6303db91b16259f92689bec8d","ref":"refs/heads/main","pushedAt":"2024-07-16T15:21:56.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"migueldeicaza","name":"Miguel de Icaza","path":"/migueldeicaza","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/36863?s=80&v=4"},"commit":{"message":"Mention SwiftGodotKick","shortMessageHtmlLink":"Mention SwiftGodotKick"}},{"before":"5295ca9eb5e67cdf497072e5faed4e81de7d8151","after":"c9e23209c1ebe80d6b78b560d9e8fe58743fcf27","ref":"refs/heads/main","pushedAt":"2024-07-02T19:03:36.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"migueldeicaza","name":"Miguel de Icaza","path":"/migueldeicaza","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/36863?s=80&v=4"},"commit":{"message":"Drop the `value:` parameter name from the various PackedArray.* append\nmethods. Do that, but still provide a deprecated entry point to\nprevent breaking code.\n\nIn a few cases where we surfaced an API that did the append but with\nthe underlying type, we keep the value: parameter in the API, but\nintroduce a convenience `append(_:)` method of the right type, for\nexample for PackedByteArray that would be:\n\n'func append(_ value: UInt8)`","shortMessageHtmlLink":"Drop the value: parameter name from the various PackedArray.* append"}},{"before":"46a7b62a7accf1c8673548fb761ddccf19f76994","after":"5295ca9eb5e67cdf497072e5faed4e81de7d8151","ref":"refs/heads/main","pushedAt":"2024-07-02T18:40:10.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"migueldeicaza","name":"Miguel de Icaza","path":"/migueldeicaza","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/36863?s=80&v=4"},"commit":{"message":"Link to explanation","shortMessageHtmlLink":"Link to explanation"}},{"before":"c9aea93a5aee18d97dd1ea27935719d3bafae5d4","after":"46a7b62a7accf1c8673548fb761ddccf19f76994","ref":"refs/heads/main","pushedAt":"2024-07-02T18:39:06.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"migueldeicaza","name":"Miguel de Icaza","path":"/migueldeicaza","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/36863?s=80&v=4"},"commit":{"message":"Add sample usage patterns for Variants","shortMessageHtmlLink":"Add sample usage patterns for Variants"}},{"before":"1784b98934b0b731f311f0f8ca5f48eb13b75efb","after":"c9aea93a5aee18d97dd1ea27935719d3bafae5d4","ref":"refs/heads/main","pushedAt":"2024-07-02T16:00:41.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"migueldeicaza","name":"Miguel de Icaza","path":"/migueldeicaza","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/36863?s=80&v=4"},"commit":{"message":"Adds support for generating the structures in \"native_structures\" in\nthe JSon file, and also surfaces a handful of methods that take\npointers.\n\nSome work is in place now, currently it maps \"const void*\" and\n\"AudioFrame*\" to OpaquePointer, but this is not ideal.\n\nWhat I need is to handle these in a case-by-case basis, so I can\nexpose better types when surfacing this.\n\nFor example, the AudioFrame APIs while they pass a pointer, in the\ncases where they are used there is a separate parameter that indicates\nthe number of frames in place. So this really should be a\nUnsafeMutableBufferPointer that has been initialized with\nthe base address and the number of elements, but this would require\ncustom code for each case I suspect.\n\nAnd you can see that sometimes the values are return values, so they\nshould not be buffers:\n\nhttps://gist.github.com/migueldeicaza/28974ecb3a1bdfffa818a0f0b6999cb0","shortMessageHtmlLink":"Adds support for generating the structures in \"native_structures\" in"}},{"before":"88ac29201cd2cc9f8a5075ae418da7ff5ea699ff","after":"fc77fcc12c134a834a191e689878ad5f9f60e394","ref":"refs/heads/4.3","pushedAt":"2024-07-02T03:47:41.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"migueldeicaza","name":"Miguel de Icaza","path":"/migueldeicaza","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/36863?s=80&v=4"},"commit":{"message":"Fix the 4.3 build after the last API bump","shortMessageHtmlLink":"Fix the 4.3 build after the last API bump"}},{"before":"7e7f57df486866b2af56fc7e4ab0a6d0cb295c6c","after":"f2600e220907d23214695b707df658f59e5187bd","ref":"refs/heads/libgodot-4.3","pushedAt":"2024-06-28T14:05:22.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"migueldeicaza","name":"Miguel de Icaza","path":"/migueldeicaza","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/36863?s=80&v=4"},"commit":{"message":"Bring new files into the build","shortMessageHtmlLink":"Bring new files into the build"}},{"before":null,"after":"7e7f57df486866b2af56fc7e4ab0a6d0cb295c6c","ref":"refs/heads/libgodot-4.3","pushedAt":"2024-06-28T13:32:15.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"migueldeicaza","name":"Miguel de Icaza","path":"/migueldeicaza","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/36863?s=80&v=4"},"commit":{"message":"Bring the API from libgodot-4.3","shortMessageHtmlLink":"Bring the API from libgodot-4.3"}}],"hasNextPage":true,"hasPreviousPage":false,"activityType":"all","actor":null,"timePeriod":"all","sort":"DESC","perPage":30,"cursor":"Y3Vyc29yOnYyOpK7MjAyNC0wOS0xMlQxODozNTo1NS4wMDAwMDBazwAAAAS0umrU","startCursor":"Y3Vyc29yOnYyOpK7MjAyNC0wOS0xMlQxODozNTo1NS4wMDAwMDBazwAAAAS0umrU","endCursor":"Y3Vyc29yOnYyOpK7MjAyNC0wNi0yOFQxMzozMjoxNS4wMDAwMDBazwAAAARx5ms6"}},"title":"Activity · migueldeicaza/SwiftGodot"}