Skip to content
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

Improve "Version Compatibility" section in "What is GDExtension" #10404

Merged
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
36 changes: 21 additions & 15 deletions tutorials/scripting/gdextension/what_is_gdextension.rst
Original file line number Diff line number Diff line change
Expand Up @@ -24,15 +24,8 @@ you should choose depends on your needs.

.. warning::

Our long-term goal is that GDExtensions targeting an earlier version of
Godot will work in later minor versions, but not vice-versa. For example, a
GDExtension targeting Godot 4.2 should work just fine in Godot 4.3, but one
targeting Godot 4.3 won't work in Godot 4.2.

However, GDExtension is currently *experimental*, which means that we may
GDExtension is currently *experimental*, which means that we may
break compatibility in order to fix major bugs or include critical features.
For example, GDExtensions created for Godot 4.0 aren't compatible with Godot
4.1 (see :ref:`updating_your_gdextension_for_godot_4_1`).

Advantages of GDExtension
^^^^^^^^^^^^^^^^^^^^^^^^^
Expand Down Expand Up @@ -111,13 +104,26 @@ The bindings below are developed and maintained by the community:
Version compatibility
---------------------

GDExtension add-ons compiled for a given Godot version are only guaranteed to work
with the same minor release series. For example, a GDExtension add-on compiled for
Godot 4.0 will only work with Godot 4.0, 4.0.1, 4.0.2. In addition, GDExtension is
not compatible with Godot 3.x.
Usually, GDExtensions targeting an earlier version of Godot will work in later
minor versions, but not vice-versa. For example, a GDExtension targeting Godot 4.2
should work just fine in Godot 4.3, but one targeting Godot 4.3 won't work in Godot 4.2.

tetrapod00 marked this conversation as resolved.
Show resolved Hide resolved
For this reason, when creating GDExtensions, you may want to target the lowest version of
Godot that has the features you need, *not* the most recent version of Godot. This can
save you from needing to create multiple builds for different versions of Godot.

GDExtension add-ons are also only compatible with engine builds that use the
However, GDExtension is currently *experimental*, which means that we may
break compatibility in order to fix major bugs or include critical features.
For example, GDExtensions created for Godot 4.0 aren't compatible with Godot
4.1 (see :ref:`updating_your_gdextension_for_godot_4_1`).

GDExtensions are also only compatible with engine builds that use the same
level of floating-point precision the extension was compiled for. This means
that if you use an engine build with double-precision floats, the extension must
also be compiled for double-precision floats. See
:ref:`doc_large_world_coordinates` for details.
also be compiled for double-precision floats and use an ``extension_api.json``
file generated by your custom engine build. See :ref:`doc_large_world_coordinates`
for details.

Generally speaking, if you build a custom version of Godot, you should generate an
``extension_api.json`` from it for your GDExtensions, because it may have some differences
from official Godot builds.