godot
godot copied to clipboard
[TRACKER] C++ modules related issues
Godot version: 3.2, 4.0
Issue description: There are some existing issues related to module dependencies which may cause run-time and compile-time errors, or need better user-friendly interface to ensure that certain modules cannot be disabled, or whether the usage of modules may reveal hidden built-in bugs (which can be either workaround on the module level or fixed on the core level, so these are not necessarily the responsibility of module authors, but which nonetheless worth to link).
Bugs
- [x] #36091
- [x] #32217
- [x] #32216
- [x] #39186
- [x] #38759
- [ ] #37301
- [ ] #37234
- [x] #36582
- [ ] #35788
- [x] #35740
- [ ] #33659
- [x] #33641
- [x] #33336
- [x] #33279
- [ ] #32265
- [ ] #31123
- [x] #30333
- [x] #30629
- [x] #28949
- [x] #28650
- [ ] #25448
- [x] #13272
- [x] #39219
- [x] #41710
- [x] #45462
- [x] #45342
- [x] #44536
- [x] #50462
Documentation
- [ ] #15675
- [ ] #11766
- [ ] #9949
Proposals
Some issues remain in Limbo due to indecision regarding the philosophical principles of module development (what's deemed as a module now should be core, for instance see attempted fixes #32272), so it may not worth fixing some of the bugs at the moment (raising awareness for contributors).
- Godot's C++ modules should be self-contained godotengine/godot-proposals#569.
List of modules which cannot be disabled without...
... compile-time errors
with target=debug tools=yes:
regex: rename dialog: https://github.com/godotengine/godot/pull/31290#issuecomment-520227369)freetype: font renderingsvg: editor icons scalinggdscript#41710 (3.2)
with platform=windows tools=yes bits=32:
- ~~
denoise: #39186, #38759.~~
... run-time errors
with target=debug tools=yes:
gdnavigation: #36091bullet: #32217, #32216mbedtls: asset library (requires SSL), crash on project startup.glslang: shader compilation (?) numerous errors spam on startup.
I would add #38759.
Created a script to generate a random modules configuration to "fuzzy test" compiling Godot that way, if you want to burn your CPU cycles. 🙂
#28949 closed.
@Xrayez modules may should be designed with dynamic loading, modules should be attached with dependency infos. Modules can be loaded or unloaded at runtime?More complicated but better to extend godot by user.
@jxo what you describe is more or less handled by GDNative. But there are certainly usability/portability/compatibility issues with using it. For this, you can refer to proposals regarding GDNative.
You can also refer to godotengine/godot-proposals#565 for comparison between modules and GDNative approaches, and how they solve different use cases.
@JXO See also What is GDNative? in the documentation.