-
-
Notifications
You must be signed in to change notification settings - Fork 23.4k
Bind compatibility GDExtension methods removed in #88418 #91502
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Bind compatibility GDExtension methods removed in #88418 #91502
Conversation
348a2ef
to
8e0f0dd
Compare
We removed these methods without providing compatibility in PR #88418, because there is no way to use them correctly. If we do need to add them back for compatibility, then we should make them do nothing (and in the case of |
In the godot-rust bindings, I explicitly removed these 3 functions. That way, even when using it with older API levels (4.1 or 4.2), it's not possible to accidentally use them. So it's likely that the initial problem is solved by updating to the latest version. |
Right, but I have gdextension dlls that are probably not using the latest version of the bindings and work fine on Godot 4.2. Even if we remove them from the latest rust bindings, this is still technically a compat break since dlls have to be rebuilt. |
8e0f0dd
to
90cd9fe
Compare
As I wrote on RocketChat, I think there are some misunderstandings. First, what we try to achieve with compatibility on godot-rust side is that you can develop against API level 4.1 and still use the extension in Godot 4.2 and 4.3. This is the case on latest If we encounter bugs, it can unfortunately happen that binary compatibility is affected. Not just the example here with 3 The second and much more important point: godot-rust has supported lazy loading of function pointers for more than half a year. So it explicitly offers different trade-offs depending on the extension's needs. This is documented on the main API docs page. TLDR: like all software, godot-rust is improved over time and it is advised to remain reasonably up-to-date. We can't be responsible for bugs fixed in the past because recompiling DLL is a problem. Furthermore, you can enable lazy loading if that fits your workflow better. |
Note that my above comment merely clarifies the situation around godot-rust. The core discussion here -- breaking API changes in the presence of severe bugs -- can be quite nuanced.
|
90cd9fe
to
7896c25
Compare
These functions were likely not used, but we must ensure they are still bound to ensure API stability.
7896c25
to
0e5e743
Compare
Discussed at the GDExtension meeting, and even though we decided not add compatibility methods for these, this PR is good and there would be no harm in merging this. However, this isn't a policy change in favor of never breaking compatibility ever. |
Thanks! |
These functions were likely not used, but we must ensure they are still bound to ensure API stability.
Without this PR, rust addons give this error:
GDExtension::open_library()
with hash 852856452 needs to be re-added as a bind_compatibility_method.