You are reading the
(unstable) version of this documentation, which may document features not available
or compatible with Godot 3.x.
Checking the stable version of the documentation...
Work in progress
Godot documentation is being updated to reflect the latest changes in version
4.0. Some documentation pages may
still state outdated information. This banner will tell you if you're reading one of such pages.
The contents of this page are up to date. If you can still find outdated information, please open an issue.
What is GDExtension?¶
GDExtension is a Godot-specific technology that lets the engine interact with native shared libraries at run-time. You can use it to run native code without compiling it with the engine.
GDExtension is not a scripting language and has no relation to GDScript.
Differences between GDExtension and C++ modules¶
You can use both GDExtension and C++ modules to run C or C++ code in a Godot project.
They also both allow you to integrate third-party libraries into Godot. The one you should choose depends on your needs.
Advantages of GDExtension¶
Unlike modules, GDExtension doesn't require compiling the engine's source code, making it easier to distribute your work. It gives you access to most of the API available to GDScript and C#, allowing you to code game logic with full control regarding performance. It's ideal if you need high-performance code you'd like to distribute as an add-on in the asset library.
GDExtension is not limited to C and C++. Thanks to third-party bindings, you can use it with many other languages.
You can use the same compiled GDExtension library in the editor and exported project. With C++ modules, you have to recompile all the export templates you plan to use if you require its functionality at run-time.
GDExtension only requires you to compile your library, not the whole engine. That's unlike C++ modules, which are statically compiled into the engine. Every time you change a module, you need to recompile the engine. Even with incremental builds, this process is slower than using GDExtension.
Advantages of C++ modules¶
We recommend C++ modules in cases where GDExtension isn't enough:
C++ modules provide deeper integration into the engine. GDExtension's access is not as deep as static modules
You can use C++ modules to provide additional features in a project without carrying native library files around. This extends to exported projects.
The Godot developers officially support the following language bindings for GDExtension:
There are no plans to support additional languages with GDExtension officially. That said, the community offers several bindings for other languages (see below).
The bindings below are developed and maintained by the community:
Not all bindings mentioned here may be production-ready. Make sure to research options thoroughly before starting a project with one of those. Also, double-check whether the binding is compatible with the Godot version you're using.
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.