Allow GDExtension to access core singletons in INITIALIZATION_LEVEL_SERVERS
#79584
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There are long-standing tricky problems with GDExtension accessing the core singletons, due to the order that they are registered and created.
This PR moves the execution of GDExtension's
INITALIZATION_LEVEL_SERVERS
until after the core singletons are registered.This does create a difference between modules and GDExtensions: modules have
INITIALIZATION_LEVEL_SERVERS
run before the singletons are registered. However, modules don't actually need the singletons be registered, because they can fetch them directly!So, while this is creating a difference, it's allowing the code in a GDExtension to effectively be more similar to a module's, by allowing it to access singletons at all during this level.
EDIT: Marking this as a draft currently, as this is currently just a proposal for discussion on the GDExtension team. Will take it out of draft if folks think this makes sense!