I've been intermittently following the development of GDExtension (the replacement for GDNative in Godot 4.0) since pre-alpha days.
While there has been some recent improvement/forward motion, GDExtension has seemed relatively low in development priority, and currently it still seems neither fully baked nor completely documented. So there seemed limited benefit/opportunity for beginning a port of Foreigner to 4.0 in the pre-beta days.
While still incomplete, GDExtension development does now seem to be at a point where initial exploratory development of an extension/add-on is possible in order to get familiar with the new feature.
A vision for Foreigner/FFI & Godot 4.0
[TODO]
Known differences between Godot 3.x & 4.0 likely to impact Foreigner
[TODO]
Useful GDExtension-related links for future reference
GDExtension examples & documentation:
Initial introduction blog post (includes example walkthrough):
Even more essential reading--documents a wealth of GDExtension-related knowledge & current issues. (i.e. if you only read one GDExtension-related issue today, it should probably be that one. :D )
Current status
GDExtension
(the replacement forGDNative
in Godot 4.0) since pre-alpha days.GDExtension
has seemed relatively low in development priority, and currently it still seems neither fully baked nor completely documented. So there seemed limited benefit/opportunity for beginning a port of Foreigner to 4.0 in the pre-beta days.GDExtension
development does now seem to be at a point where initial exploratory development of an extension/add-on is possible in order to get familiar with the new feature.A vision for Foreigner/FFI & Godot 4.0
Known differences between Godot 3.x & 4.0 likely to impact Foreigner
Useful
GDExtension
-related links for future referenceGDExtension
examples & documentation:Initial introduction blog post (includes example walkthrough):
"Introducing GDNative's successor, GDExtension"
Mentions options for chat locations related to
GDExtensions
in "Where to go from here" section at end of post.C++ Bindings/"SDK":
Repo: https://github.com/godotengine/godot-cpp/
Of particular note:
https://github.com/godotengine/godot-cpp/#versioning
"[IMPORTANT] godot-cpp commits to use to match official 4.0 beta releases #874"
Somewhat vague but useful "Getting Started with
GDExtension
" information: https://github.com/godotengine/godot-cpp/#getting-startedExample
GDExtension
: https://github.com/godotengine/godot-cpp/tree/master/testhttps://github.com/godotengine/godot-headers:
Core implementation/headers:
core/extension/*
https://github.com/godotengine/godot/blob/master/core/extension/gdnative_interface.h
GDNativeInterface
struct: https://github.com/godotengine/godot/blob/926429392a73a0c2261bc4ed4503c99025842d7c/core/extension/gdnative_interface.h#L384-L558https://github.com/godotengine/godot/blob/master/core/extension/gdnative_interface.cpp
https://github.com/godotengine/godot/blob/master/core/extension/native_extension.h
https://github.com/godotengine/godot/blob/master/core/extension/native_extension.cpp
Original initial PR: " Implement native extension system (GDExtension) #49744 "
Informative examples & issues related to
GDExtension
& Godot 4.0 ports in other projects:https://github.com/GodotVR/godot_xr_reference
"Summator Example from Custom Modules made with the GDExtension system in Godot 4": https://github.com/paddy-exe/GDExtensionSummator
https://github.com/Zylann/godot_voxel (
master
branch now targets Godot 4.0)"Porting [
godot_voxel
] to GDExtension #333" (Tracking issue for the project port)This issue includes a comprehensive overview of the Godot 4.0/
GDExtension
/module porting process & is essential reading."GDExtension issues tracker #442" (Tracking issue for
GDExtension
technology/feature itself.)Even more essential reading--documents a wealth of
GDExtension
-related knowledge & current issues. (i.e. if you only read oneGDExtension
-related issue today, it should probably be that one. :D )Documents build process: https://voxel-tools.readthedocs.io/en/latest/module_development/#gdextension
https://github.com/nonunknown/gdextension-creator (untested)
https://github.com/godot-rust/godot-rust/issues/824
Hey, wait a minute, that name looks familiar: https://github.com/godotengine/godot-cpp/issues/860 :D