Skip to content

Update gdextension_interface.json and extension_api.json for Godot 4.7-beta1#1972

Merged
dsnopek merged 1 commit intogodotengine:masterfrom
dsnopek:godot47-beta1
May 4, 2026
Merged

Update gdextension_interface.json and extension_api.json for Godot 4.7-beta1#1972
dsnopek merged 1 commit intogodotengine:masterfrom
dsnopek:godot47-beta1

Conversation

@dsnopek
Copy link
Copy Markdown
Collaborator

@dsnopek dsnopek commented Apr 21, 2026

This PR aims to update the GDExtension interface and API files for Godot 4.7-beta1, and make some small build system changes, so that we still default to using the latest stable Godot version (4.6)

This is a DRAFT because Godot 4.7-beta1 still isn't out yet!

But this let's us get ready a bit, and let's me make some follow-up PRs that use the new stuff :-)

@dsnopek dsnopek added this to the 10.x milestone Apr 21, 2026
@dsnopek dsnopek requested a review from a team as a code owner April 21, 2026 14:08
@dsnopek dsnopek added the enhancement This is an enhancement on the current functionality label Apr 21, 2026
@dsnopek dsnopek marked this pull request as draft April 21, 2026 14:18
@dsnopek dsnopek marked this pull request as ready for review April 27, 2026 20:48
@dsnopek dsnopek requested a review from a team as a code owner April 27, 2026 20:48
@dsnopek dsnopek changed the title [DRAFT] Update gdextension_interface.json and extension_api.json for Godot 4.7-beta1 Update gdextension_interface.json and extension_api.json for Godot 4.7-beta1 Apr 27, 2026
@dsnopek
Copy link
Copy Markdown
Collaborator Author

dsnopek commented Apr 27, 2026

Taking this out of DRAFT now that -beta1 is released!

@Naros
Copy link
Copy Markdown
Contributor

Naros commented Apr 29, 2026

@dsnopek I assume that when 4.7 goes stable, extension_api.json is renamed to extension_api-4.6.json, and the 4.7 equivalent is renamed to extension_api.json?

I wonder if it would make more sense to avoid all the shuffling around of extension_api.json if they were always committed with their version and we let default_api_version and api_version dictate which version is used, so that when 4.7 goes stable, it's just a simple default_api_version swap?

@dsnopek
Copy link
Copy Markdown
Collaborator Author

dsnopek commented Apr 29, 2026

I assume that when 4.7 goes stable, extension_api.json is renamed to extension_api-4.6.json, and the 4.7 equivalent is renamed to extension_api.json?

Yes

I wonder if it would make more sense to avoid all the shuffling around of extension_api.json if they were always committed with their version and we let default_api_version and api_version dictate which version is used, so that when 4.7 goes stable, it's just a simple default_api_version swap?

That would be easier to maintain, for sure!

However, I went the way I went, because I know there's people whose workflow (either locally or in CI) is to replace the gdextension/extension_api.json file and I wanted that to still work. I think we used to have that in our documentation, actually, which is how it spread initially? The docs now recommend using custom_api_file

Copy link
Copy Markdown
Member

@Ivorforce Ivorforce left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks fine to me.

If there are any last-minute changes to Godot's API before release, we can always amend.

Comment thread tools/godotcpp.py

def _get_api_file(extension_dir, api_version):
if api_version is None or api_version == supported_api_versions[-1]:
if api_version is None or api_version == default_api_version:
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It's kind of questionable we're defaulting at all. We technically would like users to target the minimum API version they can support, but defaulting to a low version would be confusing. Making the decision always explicit might be good long-term.

@dsnopek dsnopek merged commit 5e4200d into godotengine:master May 4, 2026
37 of 40 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement This is an enhancement on the current functionality

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants