Releases: utopia-rise/godot-kotlin-jvm
0.16.2-4.6.3
New patch release for Godot Kotlin based on Godot 4.6.3.
New:
- A new simpler IDE plugin has been deployed and passed Jetbrain's review. It's still experimental so report any bug you can find, it mostly handle two things:
- New project creation
- Inspect your Godot code for any registration mistake (to activate manually in the inspection settings)
- Gdj generation can be entirely disabled if you only want to use source file directly.
- A fast build task has been added to the gradle plugin. After a first regular build, it can be used if your change doesn't change your script structurally (Put simply, you can use it if no registered signature changed).
Fixes:
- Fixed
VariantArray<Any?>and `Dictionary<Any?,Any?> creation - Fixed signal registration conflicts when a class declared a signal and a function with the same name.
- Fixed reloading replacing gdj path with virtual path
- Fixed buffer corruption when a registered function with Object argument was used for the first time.
- Removed incorrect warning when a LambdaCallable was called
- Improved
.gdjscanning to properly identified existing files - Registered class names are now sanitized when FQNAME mode is enabled
- Registration files now use unified indentation and a setting has been added in the gradle build.
- Coroutine dispatcher behavior has been improved. No more extra dispatches when already in the correct thread.
Don't forget to change your build.gradle configuration with the following line.
plugins {
id("com.utopia-rise.godot-kotlin-jvm") version "0.16.2-4.6.3"
}What's Changed
- Fix nullable VariantArray and Dictionary checks by @CedNaru in #920
- Unify gdj indent by @CedNaru in #921
- Fix IntelliJ plugin verification setup by @CedNaru in #925
- Remove registration of functions for signal by @CedNaru in #924
- Improve project build process by @CedNaru in #927
- Bump to 0.16.2 by @CedNaru in #931
- Improve virtual script path handling by @CedNaru in #930
- Sanitize registered class name by @CedNaru in #929
- Improve coroutine dispatchers by @CedNaru in #933
- Fix configuration cache by @CedNaru in #934
- Fix callable call issues by @CedNaru in #926
Full Changelog: 0.16.1-4.6.3...0.16.2-4.6.3
0.16.1-4.6.3
New minor release for Godot Kotlin based on Godot 4.6.3.
Warning:
This release contains large internal and workflow changes compared to the previous release.
If you are upgrading an existing project, you should review your Gradle configuration, make the necessary changes, and refresh its cache.
Your previous UUIDs will also be invalidated, so you should also have a full reload of your godot project (Made easier in Project/Tools in the editor)
Gradle plugin:
- Changes to the
godot {}configuration. - Individual languages can be enabled and their version chosen
(experimental). - Proper individual tasks to build for different targets.
- Configuration-cache friendly. You can set it to
truein your Gradle settings. - Optimized to become much shorter on hot runs, with less than 3 seconds on our 3D demo.
- Generated files are no longer added to the source set, so the workflow is much less intrusive.
- Library mode is much simpler and will not generate registrar or
.gdjfiles for you ahead of time.
IDE plugin:
- Simplification of the plugin to remove bloat.
- Project creation wizard entirely redone.
- Individual inspection settings for the 3 languages, but the focus remains on Kotlin.
- The IDE plugin should be generally much faster and should no longer hang as easily.
- Better feedback to tell you whether your JVM scripts are registered properly, including annotations, inheritance, properties, use of local copies, and related issues.
Signals and callables:
- Specific Java and Scala syntax have been added for
MethodCallableandLambdaCallableto bridge the gap with Kotlin. - Documentation properly explain how to use them for all 3 languages
Misc:
- UUIDS for scripts don't collide anymore.
- PackedArray support has been fixed and improved, including missing optimization for packed color arrays.
- Recent Godot math fixes have been ported to the Kotlin core types.
Warning:
Don't forget to change your build.gradle configuration with the following line.
plugins {
id("com.utopia-rise.godot-kotlin-jvm") version "0.16.1-4.6.3"
}What's Changed
- Bump to 4.6.2 by @CedNaru in #904
- Normalize JVM CLI flags, improve command-line parsing, and update docs by @CedNaru in #902
- Enable Gradle configuration cache in project template by @DSteve595 in #862
- Port recent Godot core math fixes to Kotlin core types by @Copilot in #907
- Add Dummy Implementation of abstract API class by @CedNaru in #906
- Rework Java API for Signal/Callable by @CedNaru in #833
- Rework gradle plugin, IDE plugin and shared Kotlin tool modules by @CedNaru in #911
- Fix and improve packedarray by @CedNaru in #915
- Update to 4.6.3 by @CedNaru in #918
New Contributors
- @Copilot made their first contribution in #907
Full Changelog: 0.15.0-4.6...0.16.1-4.6.3
0.15.0-4.6
The files prefixed with godot-kotlin-jvm_editor_ are the editors.
release editors are the editors you use normally. debug editors provide debug symbols and are intended to provide better stacktraces in case of crashes of the editor. Please use those when submitting bugreports.
godot-kotlin-jvm_export_templates_0.15.0-4.6.tpz is the archive for all export templates . See exporting documentation on how to use it.
Changelog:
Targets Godot 4.6. Update your Gradle plugin version:
plugins { id("com.utopia-rise.godot-kotlin-jvm") version "0.15.0-4.6" }
β οΈ Breaking Changes
β¨ New Features
- Scala support (initial) β The binding now has initial support for Scala as a JVM language. ([#761](#761), [#888](#888))
- Godot 4.6 β The module has been updated to target Godot 4.6. ([#895](#895))
π Bug Fixes
π§ Internal / CI
Contributors
@piiertho Β· @CedNaru Β· @chippmann
Full diff: 0.14.3-4.5.1...0.15.0-4.6
0.14.3-4.5.1
New minor release for Godot Kotlin based on Godot 4.5.1.
Fixes:
- Typed Array in JVM scripts no longer lose their type after rebuilding project.
- Boostrap.jar is now properly generate and loaded the first time you build your project.
- API methods with vararg argument behave properly.
- Registering methods with an enum return now works.
- ServiceLoader can now find dependancies in user code.
Changes:
- API classes with required overridable methods are now abstract.
Java:
- You can now use the GD singleton without using the INSTANCE static field.
Warning:
Because of a change in Jetbrains's plugin policy, we are not able to publish the IDE plugin anymore and have to rework it.
Therefore this release won't have an IDE plugin.
Don't forget to change your build.gradle configuration with the following line.
plugins {
id("com.utopia-rise.godot-kotlin-jvm") version "0.14.3-4.5.1"
}What's Changed
- Bugfix/ios lib path and graal jni config by @piiertho in #840
- GH-842 Fix thread context classloader by @chippmann in #848
- Install dependencies before building on Linux by @signalno11 in #828
- Update jvm artifact deployment for new maven central portal by @chippmann in #838
- Updated instructions for building on macOS and debugging via intellij by @falcon4ever in #843
- Make required virtual methods abstract by @CedNaru in #826
- Add build action to patch macos engine build host by @chippmann in #849
- Use stable file ordering when generating templates by @DSteve595 in #852
- Normalize newlines to '\n' when generating templates by @DSteve595 in #853
- Use binary Gradle distribution in project template by @DSteve595 in #850
- GH-835 Fix enum registration by @chippmann in #847
- Use vararg argument in string only methods by @CedNaru in #857
- Make GD singleton friendly to java by @CedNaru in #858
- Update to Godot 4.5 by @CedNaru in #859
- fix: Add java components to publications by @piiertho in #873
- Fix jvm publication by @chippmann in #874
New Contributors
- @signalno11 made their first contribution in #828
- @falcon4ever made their first contribution in #843
- @DSteve595 made their first contribution in #852
Full Changelog: 0.13.1-4.4.1...0.14.1-4.5.1
0.13.1-4.4.1
New patch release for Godot Kotlin
Fix:
- Editor won't complain about missing bootstrap anymore.
- Android exports don't create duplicated resources anymore.
- BitFields/Enums from the Godot API is now visible to Java.
Changes:
- The Gradle build button has been improved and now stream the text of the currently running task instead of only displaying everything at once at the end.
- You can generate the embedded JVM from the editor using the same improved Gradle button.
Don't forget to change your build.gradle configuration with the following line.
plugins {
id("com.utopia-rise.godot-kotlin-jvm") version "0.13.1-4.4.1"
}What's Changed
- Don't inline bitfields by @CedNaru in #820
- Improve Gradle Task Runner by @CedNaru in #819
- Remove explicit registration entry copy as it creates a duplicate entry by @chippmann in #822
- Update to 0.13.1 by @CedNaru in #821
Full Changelog: 0.13.0-4.4.1...0.13.1-4.4.1
0.13.0-4.4.1
New minor update for Godot Kotlin
Changes:
- The bootstrap.jar is gone, the editor can now run by itself !
- Many API methods taking a StringName as parameter can now accept a regular String instead. It's automatically transformed into a StringName and cached for efficiency.
- Most Godot Enum values are now shorter, removing redundant words from the encapsulating Enum.
Error.ERR_PARAMETER_RANGE_ERROR -> Error.PARAMETER_RANGE - The DocString documentation formatting has been improved.
- Mutation helpers for PackedArrays have been added to the API.
- Added a Gradle task to generate the embedded JVM
Fixes:
- JVM modules like java.sql can now be used by your Godot projects.
- The IDE plugin templates use the correct version.
- Non-ascii characters are properly displayed when printing to Godot.
- Reloading the project no longer crashes if you have several registered scripts in the same file.
- Android exports should work again.
Don't forget to change your build.gradle configuration with the following line.
plugins {
id("com.utopia-rise.godot-kotlin-jvm") version "0.13.0-4.4.1"
}What's Changed
- Use the correct parent for ClassLoader by @CedNaru in #805
- Run android builds in parallel and minor improvements by @chippmann in #771
- Remove editor bootstrap by @CedNaru in #804
- API generator rework by @CedNaru in #781
- Make project.godot template version dynamic. by @CedNaru in #807
- Only generate one PathScript if 2 or more are in the same source file by @CedNaru in #810
- Parse JNI Strings as utf8 by @CedNaru in #809
- GH-811 GH-813 Copy missing resource files for android exports by @chippmann in #814
- Add GenerateEmbeddedJreTask to generate JRE by @chippmann in #740
- GH-801 Exclude jvm dir from export by @chippmann in #815
- GH-812 Fix missing types on desugaring in r8 by @chippmann in #816
- Update ide plugin for 2025.1 by @chippmann in #818
- Update to 0.13.0 by @CedNaru in #817
Full Changelog: 0.12.3-4.4.1...0.13.0-4.4.1
0.12.3-4.4.1
Update to Godot 4.4.1 for Godot Kotlin
Features:
- You can now pass several JVM arguments to your project. See command-line section in the documentation.
- Godot Object now has core methods like
_set, _get, getPropertyList, _toString, etc...
Fixes :
- Native core type should no longer leak.
- Fix crash when using new PackedVectorArray batch conversion
- Exports are no longer missing internal package
Don't forget to change your build.gradle configuration with the following line.
plugins {
id("com.utopia-rise.godot-kotlin-jvm") version "0.12.3-4.4.1"
}What's Changed
- Fix PackedVectorArray allocation by @CedNaru in #793
- Remove old patch by @CedNaru in #791
- Add missing core Object methods. by @CedNaru in #792
- Implement multiple custom jvm arguments. by @CedNaru in #794
- Call variant destructor by @CedNaru in #796
- Include internal module in bootstrap generation. by @CedNaru in #797
- Add typing to JVM containers from buffer. by @CedNaru in #795
- Update to Godot 4.4.1 by @CedNaru in #798
Full Changelog: 0.12.2-4.4...0.12.3-4.4.1
0.12.2-4.4
Small fix release for Godot Kotlin/JVM:
Fixes :
- Scripts should be properly reloaded by the editor when modified by an external program, you won't risk overwriting your code with an old copy of it anymore.
- Fix crash when trying to extend a JVM script from the editor.
Improvements:
- More efficient memory management of pointer based coretypes (Array, Dictionary, NodePath, etc...).
- An efficient batch conversion to a JVM Array has been added for PackedVectorArrays.
Don't forget to change your build.gradle configuration with the following line. Be careful, we are now using the same version as Godot so it became 0.12.2-4.4 instead of 0.12.1-4.4:
plugins {
id("com.utopia-rise.godot-kotlin-jvm") version "0.12.2-4.4"
}What's Changed
- Fix script reloading by @CedNaru in #788
- Handle null pointers in get_global_class_name by @CedNaru in #787
- Use PagedAllocator for native core types by @CedNaru in #783
- Add batched conversion to PackedVector arrays by @CedNaru in #784
- Update to 0.12.2 by @CedNaru in #790
Full Changelog: 0.12.1-4.4...0.12.2-4.4
0.12.1-4.4
New 0.12.1-4.4 release for Godot Kotlin
Breaking Changes:
- Internal packages of the Godot library have been changed. Note that many occurrences of
godothave became eithergodot.coregodot.api. - Names of signal parameters should now be set in the @RegisterSignal annotation.
kt @RegisterSignal val mySignal by signal1<Boolean>("reverse")becomeskt @RegisterSignal("reverse") val mySignal by signal1<Boolean>(). - The jar reloading logic has been moved to the C++ code for more stability.. Note that a new ./jvm/ directory containing the jars will be created in your project. You should now place your embedded JVM there as well.
Changes:
- Upgraded to Kotlin 2.1 and Gradle 8.13. Be aware that we had the change the internals of the IDE plugin to handle the new K2 compiler, new bugs might appear. Please report them if this is happening.
- Added new coroutines dispatcher that can run on Godot's main thread or its thread pool.
- JVM Scripts and Jars now have an internal UID based on their paths. For now, the expected behavior when moving/renaming them outside the Godot editor is expected to be the same as in Godot 4.3. Later, we plan to base the UID on the registered script name to make it more stable.
- Added Support Typed Dictionary
- A popup will now appear if the build of Godot you are using does not match your JVM project.
- Added missing TransformXD operators.
- Added missing sort() method in Dictionary
Fixes:
- The Intellij plugin should now work on the latest versions.
- Fixed export of Node inside Array and Dictionary
- Fixed unexpected behavior that might occur when a script had a companion object or static field.
- Fixed property registration when the annotation is in a parent class.
- Fixed registration errors when using script from a different module or library
Don't forget to change your build.gradle configuration with the following line. Be careful, we are now using the same version as Godot so it became 0.12.1-4.4 instead of 0.11.0-4.3.0:
plugins {
id("com.utopia-rise.godot-kotlin-jvm") version "0.12.1-4.4"
}What's Changed
- Declare project status as beta by @chippmann in #717
- Fix macos build by @CedNaru in #719
- Faster API Generation by @CedNaru in #721
- Update kotlin to
2.0.21and update gradle to8.10.2by @chippmann in #722 - feat(coroutines): implement main thread and thread pool dispatchers by @piiertho in #725
- Add new common module by @CedNaru in #726
- CPP reloading by @CedNaru in #621
- Add JetBrains GameDev Days 2024 video on the docs' index by @gabryon99 in #720
- Scan after generating project by @CedNaru in #723
- Add Internal module by @CedNaru in #729
- Update api-differences.md by @ShalokShalom in #748
- Fix CI by @CedNaru in #749
- Clarify JAVA_HOME for MacOS users by @CedNaru in #751
- Split core into core, api and extension modules by @CedNaru in #746
- chore: Move signals parameter names to annotation by @piiertho in #750
- feat(coroutine): Add LambdaCallable::onCancel to cancel coroutine when callable is cancelled by @piiertho in #732
- Fix hint annotation check for hints higher up in class hierarchy by @chippmann in #737
- Fix setting retention from library settings by @chippmann in #738
- Update dependencies and IDE plugin by @chippmann in #758
- Simplify Bootstrap by @CedNaru in #768
- Add documentation on known issue with microsofts jdk on windows by @chippmann in #769
- Update to Godot 4.4 by @CedNaru in #759
- Fix ide plugin deployment and remove obsolete ide plugin specific matrix by @chippmann in #770
- Make ide plugin k2 compatible by @chippmann in #777
- Update 0.12.1-4.4 by @CedNaru in #772
- Try to fix CI by @CedNaru in #780
Full Changelog: 0.11.0-4.3...0.12.1-4.4
0.11.0-4.3
New 0.11.0-4.3 release for Godot Kotlin.
- The export template archive .tpz should now properly work in the editor. Note that the internal name of the editor and templates has been changed to
4.3.stable.jvm.0.11.0to avoid name conflict with the official4.3.stablerelease. - The coroutine
Signal.await()method now works properly on Nodes. - The API exposed to the Java language has been improved. Singletons are now truly static and Callables are easier to create (example in documentation).
- Fix an error that could cause bugs when using PackedVector4Array with registered methods or properties.
Don't forget to change your build.gradle configuration with the following line. Be careful, we are now using the same version as Godot so it became 0.11.0-4.3 instead of 0.11.0-4.3.0:
plugins {
id("com.utopia-rise.godot-kotlin-jvm") version "0.11.0-4.3"
}The files prefixed with godot-kotlin-jvm_editor_ are the editors.
release editors are the editors you use normally. debug editors provide debug symbols and are intended to provide better stacktraces in case of crashes of the editor. Please use those when submitting bugreports.
godot-kotlin-jvm_export_templates_0.11.0-4.3.tpz is the archive for all export templates . See exporting documentation on how to use it.
What's Changed
- Adding badges to the readme. by @CedNaru in #708
- Update IDE plugin to 2024.2 by @chippmann in #707
- Fix signal.await() when signal belongs to a Node by @CedNaru in #710
- Maximize disk space on android CI by @CedNaru in #716
- Make API more friendly to Java by @CedNaru in #712
- Add documentation for Callable + misc improvements by @CedNaru in #715
- Rework Variant.h by @CedNaru in #714
- Fix template usage by @CedNaru in #713
Full Changelog: 0.10.0-4.3.0...0.11.0-4.3