Enzo Novoselic
1b98247ef8
Fix RequiredResult<T> not being parsed properly by include-cleaner
2026-05-02 14:02:01 -04:00
HolonProduction
612475a680
GDScript: Track columns by raw string offsets
2026-04-26 21:32:46 +02:00
Thaddeus Crews
01603e77df
Merge pull request #118678 from hpvb/fix-115173
...
Fix race in `RefCounted::unreference()`
2026-04-22 09:58:32 -05:00
Thaddeus Crews
92846d7c3e
Merge pull request #112035 from Ivorforce/no-unsafe-new-overloads
...
Change `new` overloads to use a tag instead of a pointer
2026-04-20 09:15:47 -05:00
Thaddeus Crews
e91640c755
Merge pull request #118773 from dsnopek/gdextension-placeholder-no-deprecated
...
GDExtension: Use `create_instance3` for placeholder classes
2026-04-20 09:15:38 -05:00
Lukas Tenbrink
9e43daa74d
Change new overloads to use a tag instead of a pointer, which can lead to problems. Inline the new definition to save on a call.
2026-04-20 15:46:34 +02:00
David Snopek
10685b471e
GDExtension: Use create_instance3 for placeholder classes
...
Co-authored-by: Mike Owens <mike@mikeowens.us >
2026-04-20 06:41:44 -05:00
David Snopek
470408515e
GDExtension: Don't memdelete(gdtype) on placeholders
2026-04-19 12:25:51 -05:00
HP van Braam
6409ce6bb6
Fix race in RefCounted::unreference()
...
When two threads unreference() a RefCounted Object at the same time there's
a potential race.
Thread A sees rc_val == 1, enters the if() block.
Thread B sees rc_val == 0, enters the if() block.
Thread A gets scheduled out, or is simply scheduled on a slower core and
Thread B finishes, returning die = true. Thread B then frees the Object.
Some time during or after ~Object() Thread A wakes up and tries to call
methods on the Object, which is either destroyed or in the process of being
destroyed, leading to a use-after-free.
We fix the problem by counting how many threads are currently inside
the critical section, and blocking returning die = true as long as there are
still other threads potentially alive.
Tested by running with --test and by opening and playing various public and
private Godot projects.
This fixes #115173
2026-04-17 12:24:56 +02:00
Thaddeus Crews
790c68368f
Merge pull request #118590 from Bromeon/feature/required-ptr-conversion
...
Add `RequiredParam` -> `RequiredResult` conversion
2026-04-16 09:41:12 -05:00
Thaddeus Crews
66dd6fe737
Merge pull request #118582 from Ivorforce/is_class_sn
...
Change `Object::is_class` to take `StringName` instead of `String`, for better performance
2026-04-15 14:02:32 -05:00
Lukas Tenbrink
299b0f69f9
Change Object::is_class to take StringName for better performance (intended for GDExtension casting and inheritance checks).
2026-04-15 13:08:43 +02:00
dillyo09
f313fa9a06
Build: Remove redundant SCons environment clones
2026-04-15 01:30:23 -07:00
Jan Haller
71d44651c4
Add RequiredParam -> RequiredResult conversion
...
Adds implicit conversion from `RequiredResult<T_Other>` to `RequiredParam<T>` (where
`T_Other` derives from `T`). This allows passing a `RequiredResult` directly to a
`RequiredParam` without an intermediate variable.
Also changes `SceneTree::get_root()` to return `RequiredResult<Window>`. It is used in a
conversion as described above.
Why non-null: The root window is created in the `SceneTree` constructor and only set to
null in the destructor, so it is always valid during normal use. The function is no longer
`_FORCE_INLINE_` because `RequiredResult<Window>` requires Window to be a complete type.
2026-04-15 01:23:48 +02:00
Thaddeus Crews
8f7bdc1722
Merge pull request #118214 from Ivorforce/gdext-init-refcount
...
Add `classdb_construct_object3` and `classdb_register_extension_class6` (refcount-aware inits)
2026-04-14 15:44:29 -05:00
kobewi
f8cd68f283
Improve missing type error in ClassDB
2026-04-14 16:24:49 +02:00
David Snopek
4e79ddb81c
GDExtension: Use real GDType in placeholder
2026-04-13 17:13:26 -05:00
Lukas Tenbrink
c9279c1e53
Add classdb_construct_object3 and classdb_register_extension_class6, which are refcount-aware initialization functions (establishing RefCounted objects with a refcount of 1).
2026-04-12 12:29:04 +02:00
HolonProduction
97091c639b
Deprecate ScriptLanguage::instance_has
2026-04-10 20:00:34 +02:00
Thaddeus Crews
aa73f2c43f
Merge pull request #117575 from Ivorforce/gdtype-signals-obj
...
Integrate `GDType` signal ownership into `Object`, exchanging use of `ClassDB`
2026-04-10 10:32:21 -05:00
Nolkaloid
1d165e7ea9
Add keyword code completion option
2026-04-08 20:04:08 +02:00
Lukas Tenbrink
098b35cca0
Integrate GDType signal ownership into Object, exchanging use of ClassDB.
2026-04-08 17:53:05 +02:00
Thaddeus Crews
7c720b815f
Merge pull request #117710 from HolonProduction/lsp/text-edit-string
...
LSP: Calculate simple string insertions on the server-side
2026-04-06 13:02:20 -05:00
StarryWorm
a88418e2ae
Fix CI errors
2026-04-02 15:04:02 -04:00
Thaddeus Crews
7e911ad73a
Merge pull request #118049 from Shadows-of-Fire/patch-1
...
Enable clang-tidy's performance-move-const-arg check
2026-04-01 12:55:18 -05:00
Shadows_of_Fire
d89811d890
Enable clang-tidy's performance-move-const-arg check
2026-03-31 18:57:24 -04:00
kobewi
d62f1c8900
Add type filters to create dialog
2026-03-31 17:17:23 +02:00
Thaddeus Crews
1bb4e60952
Merge pull request #115157 from Naros/script-extension-expose-reload-from-file
...
Delegate `Script::reload_from_file` to `ScriptLanguage`
2026-03-30 13:35:16 -05:00
HolonProduction
82f308d957
LSP: Calculate string insertions on the server-side
2026-03-25 14:53:31 +01:00
Rémi Verschelde
1951485a07
Merge pull request #109892 from Ryan-000/Bind-Object-ConnectFlags-as-a-bitfield-instead-of-enum-
...
Bind `Object::ConnectFlags` as a bitfield, instead of enum.
2026-03-23 22:33:43 +01:00
Thaddeus Crews
0e8bd28a10
CI: Implement clangd-tidy as GitHub Action
2026-03-20 09:16:38 -05:00
Thaddeus Crews
fb4a304dee
Merge pull request #111965 from Ivorforce/memnew-typed
...
Make `memnew(RefCounted)` return `Ref`, to improve ownership safety
2026-03-19 15:39:15 -05:00
StarryWorm
189c9497b3
split method_bind_common.h from method_bind.h
2026-03-18 17:41:32 -04:00
Lukas Tenbrink
05c33acbb1
Make memnew(RefCounted) return Ref, to force callers to take ownership of it through a reference.
2026-03-18 20:34:08 +01:00
Ryan
69f9e3a75c
Bind Object::ConnectFlags as a bitfield, instead of enum.
2026-03-18 15:21:18 -04:00
Thaddeus Crews
4e7fefbf62
Merge pull request #117474 from Ivorforce/gdtype-signals
...
Move signal ownership from `ClassDB` to `GDType`
2026-03-18 11:43:30 -05:00
Rémi Verschelde
e33e98a26f
Style: Apply clang-format grouping rules
2026-03-17 20:11:01 +01:00
Mikael Hermansson
64f7bbbf12
Improve thread-safety of Object signals
2026-03-17 14:02:35 +01:00
Lukas Tenbrink
7a73d3f16b
Move signal ownership from ClassDB to GDType.
2026-03-17 11:58:10 +01:00
Thaddeus Crews
fc0960188b
Merge pull request #111262 from leandro-benedet-garcia/separate-property-and-method-info
...
Separate Property and Method Info from Object files
2026-03-16 11:32:57 -05:00
Leandro (cerberus1746) Benedet Garcia
7482600828
Separate method and property info into separate files
2026-03-16 09:59:10 -03:00
Lukas Tenbrink
67f63addc1
De-duplicate name and inherits StringName properties from ClassDB::ClassInfo, in favour of GDType.
2026-03-15 16:57:10 +01:00
Rémi Verschelde
22decccd3f
Merge pull request #115192 from Naros/script-api-fix-has-methods
...
Add `has_script_method` to `Script` for scripting access
2026-03-14 12:15:50 +01:00
Lukas Tenbrink
efcc97ee8a
Move enum registration from ClassDB / ClassInfo to GDType.
...
Create caches across supertypes for faster lookup.
2026-03-13 19:20:30 +01:00
Rémi Verschelde
e015e8bde4
Remove unused includes in core with clangd-tidy
2026-03-11 06:41:36 +01:00
Yyf2333
282e4544b0
Split VariantCaster from binder_common.h
2026-03-10 17:59:33 +08:00
Rémi Verschelde
2dd1f4ef60
Decouple node.h from scene_tree.h, minimize its other includes
2026-03-05 13:54:46 +01:00
StarryWorm
3cb2d376f8
Get rid of all unnecessary class_db.h includers
2026-03-04 17:40:05 -05:00
Rémi Verschelde
eabb9a63d4
Rename callable_method_pointer.h to callable_mp.h and include it explicitly
...
This allows removing it from `class_db.h`, significantly reducing the amount of files
that include it transitively.
Also includes some include cleanup in `control.h` and `rich_text_label.h` done while
ensure they don't depend on `callable_mp`.
2026-03-04 16:23:23 +01:00
Rémi Verschelde
727b06a79f
Move ProcessID typedef out of OS
...
This allows decoupling a number of files from `os.h`.
2026-03-04 15:00:45 +01:00