Releases: migueldeicaza/SwiftGodot
0.45: remove GodotObject protocol (#525)
SwiftGodot 0.45 is out!
This release works with both Godot 4.2 and Godot 4.3, but does not
surface yet any of the Godot 4.3 features, that is a patch I will
merge shortly after this release goes out.
Changes in this release:
-
Major upgrade to how we manage the lifecyle of object, which fixes
some long-standing memory leaks in SwiftGodot, I did the initial
pass, but Rob Mayoff found and fixed some hartd scenarios with
Variants - and they should now all be handled correctly. Thank you
Rob! (the major changes did not have a bug logged, but the commit
is 738579a, the other fixes are for
#513, #524). -
PropInfo implements CustomDebugStringConvertible (miguel).
-
Arrays*.resize now have a @discardableResult and Array has it for
append and push_back as well (miguel). -
Arrays now conform to RandomAccessCollection (miguel)
-
Various warning fixes by Rob Mayoff (Fixes #516 and #520 for Xcode
16 beta4) -
Rob Mayoff also fixed a crash on startup on MacOS when launching the
app (Fixes #517) -
We now reference the new home for a few dependencies, (Rob Mayoff,
#518) -
Eliminated the GodotObject protocol that provided no value (Rob
Mayoff, #525).
0.44.0: Drop the `value:` parameter name from the various PackedArray.* append
-
New IntersectRayResult strong type from Estevan Hernandez
-
Generates various native_structures, and also surfaces a handful of
APIs that take pointers (those that exposed 'const void*' and
'AudioFrame*') and were not available before. Additioanl
pointer-based APIs will come, but there are some ambiguities and
areas where we could surface a better API than just pointers, so I
am explicitly going slow here, to avoid having to write a lot of
additional compatibility hacks later. -
The append methods in PackedArray classes no longer take a "value: "
parameter, although a version is kept for compatibility. -
The append methods now use the natural type for the array they
contain, which should reduce the amount of casts necessary. That
is, in the past we surfaced "append(value: Int64)" for the
PackedArrayInt32, which was odd.Now:
- PackedByteArray.append takes a UInt8
- PackedFloat32Array.append takes a Float
- PackedInt32Array.append takes a Int32
0.43.0
-
Optimization, BindNode will now cache the resolution of a node (Alex Loren)
-
BindNode now allows a path to be provided (Alex Loren)
-
GArray.append no longer takes a named "value:" parameter, to be
closer to the Swift idiom on arrays (Joey Nelson) -
Now the GodotError's localizedDescription uses Godot's own localized
description rather than being a dump of the enumeration values
(Miguel). Turns it into a more useful Swift Error. -
Fixes the initialization process, so multiple Swift extensions can
be added to a project (Miguel). -
Fixes the deinitializtaion process (Miguel)
-
Brings support for Godot's built-in methods that take variable
arguments, which were previoulsy not supported, and worked as if there had been no additional arguments provided, this brings:
func Callable.call (_ args: Variant...)
func Callable.callDeferred(_ args: Variant...)
func Callable.rpc(_ args: Variant...)
func Callable.rpcId(peerId: Int64, _ args: Variant...)
func Callable.bind(_ args: Variant...)
func Signal.emit(_ args: Variant...)
-
Fix resolution of dynamic types when only proper supertypes are exposed through GDExtension (#493, Gabor Koncz)
-
New documentation on how to launch extensions directly from VSCode,
as an alternative to attach (Zacaria Guenna)
0.42.0: Export enum (#476)
-
Support for Exporting enumerations to Godot, to do this, flag your
enumerations withCaseIterable
, and then use@Export(.enum)
.
See the Exports
Documentation
for additional information - Miguel. -
Fix compilation when used with codebases that define their own
Variant
type, fix from Stefan Urbanek. -
Fixes Godot documentation conversion by handling url fragments.
Miguel. -
Fix dynamic type of singletons (Gergely Kis, Gabor Koncz)
-
Performance: Exposed withUnsafeConstAccessToData for
PackedByteArray, which avoids a data copy of the underlying buffer.
Improvement by Kevin Watters. -
Performance, all accessors to Packed data arrays now avoid copies, improvement by Kevin Watters.
-
Handle
return
as a special keyword, to fix compilation for some
scenarios, fix by Josh Bromberg. -
Various documentation updates, Miguel, Mikhail Tishin, Dolapo Falola
0.41.0
Version 0.41 is out, with lots of small improvements:
-
Wrapped.isValid can now be used to determine if an object has been
released, this is the case when you might have called the
queueFree
method, use this on those objects to check if the object
has alreayd been released or not.This helps alleviate the issue discussed in:
#416Miguel
-
New helper method Variant.typeName (GType) which can be used to get
the underlying type name (Miguel) -
Add support for Swift 5.10 on Windows, which had a handful of
breaking issues (Mikhail Tishin) -
Upgraded Swift Syntax to a newer version (Mikhail Tishin)
-
GDictionary now supports
debugDescription
which will return the
dictionary contents (Miguel) -
Updates the documentation to reflect some recent API changes
(Mikhail Tishin, Miguel). -
We no longer depend on Foundation to build SwiftGodot, which should
help users that do not want to pay the price of using it. The
downside is that we lost thePackedByteArray.asData()
method (as
Data is defined in Foundation). But in exchange, we got an
asBytes
that reutnrs a byte array, and two unsafewith*
methods
that can be used to access the underlying buffer directly) - Mikhail
Tishin and Miguel. -
Packed Byte, Int32, Int64, Double and Float can now be initialized
from arrays of those types without using an intermediary GArray of
Variants (Miguel) -
Now we have a static library of SwiftGodot in the build for those
that need it (Mikhail Tishin) -
Fixes a leak in returned VariatnCollections (Miguel).
0.40.0
-
Makes @export work with GArray and Variant types, fixes #410 by Miguel
-
API typo fix for degreesToRadians, spotted by @jbromberg
-
Fixes Exported VariantCollection and ObjectCollection types do not
appear in the Editor (#408) by Estevan Hernandez. -
Enumerations now conform to CustomDebugStringConvertible to assist
in your debugging and GodotError exposeslocalizedDescription
by Miguel) -
Fixes running tests with
swift test
when using --verbose mode
(Issue #407) by Mikhail Tishin -
Fixes Unable to use await for Timer.timeout signal (#403) by Mikhail Tishin.
0.39.0
0.38: The `Variant(fromContent:)` and `Variant(fromContentPtr:)` now make a
Release 0.38:
-
Many new framework type tests by Mikhail Tishin and many defaults in
our core types to match the default values in Godot. Thank you
Mikhail! -
Methods for built-in types now also follow the pattern of the object
types of Godot, if the first parameter name matches the last word of
the method, the name is dropped (Mikhail Tishin) -
Additional diagnostics in the use of macros, it will now flag when a
@callable is applied to an async or throwing function (Jae Kong) -
Bug fix #342: Fix editor crash when trying to set mismatched value
to exported property. Mikhail Tishin -
Workaroudn a Swift-ism that passes UnsafeRawPointers representing
nil, but not being a UnsafeRawPointer - helps catch bugs when we get
a null back from godot (Miguel) -
Fixes Signal dispatching, these were incorrectly encoded and would
crash your application (Miguel) -
Fixes #exportGroup was applying the prefix to all subsequent
exported properties' propertyName - Estevan Hernandez -
Adds support for #exportSubgroups - Estevan Hernandez
-
Adds support for keyed indexer for built-in Types (Mikhail Tishin),
fixes bugs #45 and #46 -
Prevent SwiftGodot subclasses from executing in editor by default
(Mikhail Tishin). This brings a Godot @tool-like setup, you can
control this by passing calling the @godot macro with either (.tool)
or (.gameplay). -
Fixes to the Snapping methods (Mikhail Tishin)
-
New unary minus operatos for Vectors (Mikhail Tishin)
-
Fixes for Hot Reloading (Mikhail Tishin), but we still have an issue
with Godot or Swift not fully unloading libraries that is being
tracked (#384 -
Fixes exporting of fields named
value
Airyzz. -
Add support for calling variant methods and access elements of
arrays held in variants (Miguel) -
Makes the
NodePath
description method match the Godot method that
produces their name - as Godot does not surface this method (Miguel) -
New convenience for PackedByteArray:
asData()
returns the byte
array as a Swift Data type. -
Color now exposes HSV properties (Mikhail Tishin)
-
Variant memory leak fixes. Miguel See the discussion here for
additional information:
#388 -
StringName and GString are now Hashable (Mikhail Tishin)
0.37: Document VS Code (#335)
-
New guide on using SwiftGodot with Visual Studio Code by Joseph Hill
-
Strongly typed PhysicsDirectSpaceState3D.IntersectRayResult by
Estevan Hernandez. -
Fixed the default initializer for Quaternions (the Godot upstream
documentation was wrong) Mikhail Tishin -
Fewer debugging messages (Miguel)
0.36
Many math functions are now backed by direct swift calls, rather than
marshaling parameters, and calling Godot (Nathan Van Fleet).
@SceneTree path argument is now optional (Marquis Kurt)
Size reduction in binary by using call_object_method_bind_v (@pcbeard)
Vas improvements in @callable array return types and @export - now it
supports VariantCollection and ObjectCollection (Estevan Hernandez)
Fixes the default arguments for StringNames (Mikhail Tishin)
Fix static method generation for built-in structs (Mikhail Tishin)