virtualx-engine/core
Juan Linietsky d8078d3f4c Add a backwards-compatibility system for GDExtension method
This adds a way to ensure that methods that were modified in the Godot API will continue working in older builds of GDExtension even if the new signature is different.

```C++
// New version (changed)
ClassDB::bind_method(D_METHOD("add_sphere","radius","position"),&MyShapes::add_sphere);
// Compatibility version (still available to extensions).
ClassDB::bind_compatibility_method(D_METHOD("add_sphere","radius"),&MyShapes::_compat_add_sphere);
```

**Q**: If I add an extra argument and provide a default value (hence can still be called the same), do I still have to provide the compatibility version?
**A**: Yes, you must still provide a compatibility method. Most language bindings use the raw method pointer to do the call and process the default parameters in the binding language, hence if the actual method signature changes it will no longer work.

**Q**: If I removed a method, can I still bind a compatibility version even though the main method no longer exists?
**A**: Yes, for methods that were removed or renamed, compatibility versions can still be provided.

**Q**: Would it be possible to automate checking that methods were removed by mistake?
**A**: Yes, as part of a future PR, the idea is to add a a command line option to Godot that can be run like : `$ godot --test-api-compatibility older_api_dump.json`, which will also be integrated to the CI runs.
2023-05-15 12:05:40 +02:00
..
config Add project manager / editor initial screen settings, implement DisplayServer.get_keyboard_focus_screen method. 2023-04-19 08:54:53 +03:00
crypto [NET] Refactor TLS configuration. 2023-01-28 11:08:02 +01:00
debugger Fix thread IDs. 2023-04-24 15:13:58 +02:00
error Fix incorrect index error macros 2023-01-22 12:23:56 +01:00
extension Add a backwards-compatibility system for GDExtension method 2023-05-15 12:05:40 +02:00
input [Web] Detect host OS and use macOS keys on mac hosts. 2023-04-11 10:58:54 +03:00
io Merge pull request #75447 from bruvzg/brotli_packedarray 2023-04-25 16:16:56 +02:00
math Expose determinant in Transform2D, rename internal method 2023-04-22 13:44:14 -05:00
object Add a backwards-compatibility system for GDExtension method 2023-05-15 12:05:40 +02:00
os Merge pull request #76345 from reduz/fix-thread-ids 2023-04-25 13:20:46 +02:00
string Fix misuses of error macros 2023-04-18 10:20:48 +03:00
templates Optimize HashMap size 2023-04-24 16:18:58 +03:00
variant Expose determinant in Transform2D, rename internal method 2023-04-22 13:44:14 -05:00
core_bind.cpp Merge pull request #69698 from Daylily-Zeleen/daylily-zeleen/show_in_explorer 2023-04-25 09:57:27 +02:00
core_bind.h Merge pull request #69698 from Daylily-Zeleen/daylily-zeleen/show_in_explorer 2023-04-25 09:57:27 +02:00
core_builders.py ci: add Python static analysis check via mypy 2022-09-30 19:03:17 +07:00
core_constants.cpp Make global scope enums accessible as types in GDScript 2023-02-19 13:00:07 -03:00
core_constants.h Make global scope enums accessible as types in GDScript 2023-02-19 13:00:07 -03:00
core_globals.cpp One Copyright Update to rule them all 2023-01-05 13:25:55 +01:00
core_globals.h One Copyright Update to rule them all 2023-01-05 13:25:55 +01:00
core_string_names.cpp One Copyright Update to rule them all 2023-01-05 13:25:55 +01:00
core_string_names.h One Copyright Update to rule them all 2023-01-05 13:25:55 +01:00
doc_data.cpp GDScript: Fix issues with typed arrays 2023-01-31 11:54:41 +02:00
doc_data.h Cache classes editor help 2023-04-13 12:16:47 +02:00
register_core_types.cpp [NET] Refactor TLS configuration. 2023-01-28 11:08:02 +01:00
register_core_types.h One Copyright Update to rule them all 2023-01-05 13:25:55 +01:00
SCsub Expose brotli decompression to the scripting API. 2023-03-29 22:43:36 +03:00
typedefs.h Fix several clang-tidy bool literal conversion warnings 2023-03-04 16:38:35 +02:00
version.h Fix Windows StringFileInfo structure 2023-04-12 22:08:49 +02:00