It's been 3 years since the release of Godot 3.2 and the start of the
major overhaul of the codebase for Godot 4.0.
And the work on that new version had started even 6 months before with
Juan working on the Vulkan renderer and various core changes in a
feature branch. This got merged in #36098 on Feb 11, 2020, oh well, we
3 days early ;)
Close to 15,000 pull requests have been merged for the 4.0 milestone,
which is half of the total amount of PRs in Godot's open source
lifetime. This is our biggest release by far, and it's finally time to
let it loose.
A huge thankyou to all the contributors who were involved over the
years, with contributions of any kind. Now's the final stretch to iron
out the remaining blocking bugs and release 4.0-stable.
This addresses issues where some drivers are reporting they don't meet the vulkan hardware level 1 support requirements even though they render as expected when the check is removed.
The hard limit is set at 2048 depth which seems sensible between
legitimate recursive calls while still avoiding a crash because of a
stack overflow in most of the cases.
Note that it is still possible to reach the stack limit and get an
overflow before reaching a call depth. This is intended as a half-way
measure to stop crashing in most cases, since there's no reliable nor
portable way to check the amount of stack memory left.
- Remove WIP translation templates, moved to godot-editor-l10n which
will be the source and target for Weblate contributions.
* https://github.com/godotengine/godot-editor-l10n
- Re-add translations with a high completion ratio, stripped of the
untranslated and fuzzy strings, and of the location and translator
comments, to keep the size lower.
* Threshold editor interface: 20% complete.
* Threshold properties: 20% complete.
* Threshold classes: 10% complete.
1. `number_width` isn't used later
2. `return_type` is used only once
3. AudioServer::get_singleton()->get_channel_count() always returns a channel_count of 1 or larger
4. negative `aa->backward` conditional
5. `current_canvas` == `find_world_2d()->get_canvas()`
6. identical if `render_shadows`
- Separate editor interface and property translations.
- Add property translation in TranslationServer.
- The split and merge of the POT/PO/Makefiles and extract scripts is done
directly in godot-editor-l10n, the files will be removed in the next commit.
- Remove the hardcoded "to_include" lists from the SCsub, we'll only commit the
files which are ready to inclue.