Releases: libgdx/gdx-liftoff
1.12.0.5 "Upgrades and Apples"
This release updates to Gradle 8.4, which gets us nearly nothing other than some security fixes, but those are important too. Likely more important is the fix in StartupHelper when running Liftoff or generated LWJGL3 projects on macOS. A snippet of code recently added to crykn/Guacamole, which is the original source of StartupHelper, was meant to help run on GraalVM Native Image, but the check was flipped incorrectly (both here and in Guacamole). That made Macs essentially unable to start Liftoff or apps that used StartupHelper since about Liftoff 1.12.0.2 .
If you are concerned that you might have a problematic StartupHelper in your project (which may have never been tested on a Mac), just make sure the section that mentions Graal in it looks like this (the correct way for Java):
// There is no need for -XstartOnFirstThread on Graal native image
if (!System.getProperty("org.graalvm.nativeimage.imagecode", "").isEmpty()) {
return false;
}
The important part is the !
at the start of the if
statement, which was missing before. In Kotlin, StartupHelper uses isNotEmpty()
instead of isEmpty()
, so it doesn't use !
at the start. Here's a correct way for Kotlin:
// There is no need for -XstartOnFirstThread on Graal native image
if (System.getProperty("org.graalvm.nativeimage.imagecode", "").isNotEmpty()) {
return false
}
New projects will use the corrected StartupHelper class, much like Liftoff itself does.
The GWT Plugin and RoboVM versions were also updated, to 1.1.29 and 2.3.20, respectively.
As always, I hope this release has fewer bugs than the last one!
1.12.0.4 "A Small Bit Of Tidying"
This release is fairly small, but eliminates a number of warnings and compatibility concerns with Gradle 8.3, the current IDEA/Android Studio releases, and the AGP 8.x line. It also disables the quite-incompatible "full mode" minimization of the R8 compiler on Android by default, which means normal ProGuard configuration is more likely to work with Android release builds. AGP is on version 8.1.1 now, which may need you to update IDEA to work out of the box (if your IDEA version is more than about a month old), but should definitely work with recent Android Studio.
1.12.0.3 "What Comes Up Must Come Down"
This is a small release that upgrades the used and included Gradle version to 8.3, which (finally) allows using Java 20 to compile your project. It also downgrades the LWJGL3 NFD dependency of Liftoff itself, so it should be more compatible with Linux window managers. This fixes #128 . Other than some third-party dependency updates, that's all there is here!
1.12.0.2 "Back In The Game"
This release fixes the... problematic rollout of 1.12.0.1, which had a number of issues that showed up at distribution time, but not during development. Fixes include:
- Back to using Java 8, instead of 11.
- This makes the samples build again.
- A weird upstream api/implementation quirk needed working around. Info here.
- The ktlint formatting was broken on Gradle 8, but a newer version of ktlint is compatible, so I just needed to update to that...
- ...Oh, and to fix several ktlint style violations, some of which were only questionably wrong.
In addition to those fixes, a few of my libraries had their default versions updated to the current ones, but otherwise no new features here.
I hope this isn't as broken as the last release!
1.12.0.1 "Live On Gradle 8 The Ocho"
This release finally brings gdx-liftoff to using Gradle 8, over 5 months after it was first released. This is bigger than it sounds! This gives new projects the ability to be built with Java 20 just fine, so if you just downloaded Java, and it's the latest version, you aren't going to be stuck with a broken build any more. There's various fixes for iOS, Android, Kotlin, and other areas. I'm cautiously encouraging people to try Gradle 8 and see if it works for them -- it's worked fairly stably for me in various configurations, but I can't test iOS development, so that could easily be lacking.
1.12.0.0 "Barbarian Might"
CONGRATULATIONS, AND REJOICE, ADVENTURER LIBGDX! YOU HAVE GAINED 1 LEVEL. ROLL FOR HEALTH POINTS.
Yes, libGDX 1.12.0 is finally out! And about a day after that released, here's gdx-liftoff's release to coincide with it! I had to scramble to fix various mostly-small breaking changes that affected gdx-liftoff itself, and now you can experience the same rush of seething fury delighted excitement that I did! Expect many libraries to be potentially broken in the short-term, especially those that use scene2d.ui . As these libraries receive updates, many will be no-longer-broken soon. But, this libGDX version isn't all breaking changes! There's also plenty of new features and fixes, as shown by how many people were using and testing the 1.11.1-SNAPSHOT version before the release. One bug snuck through to the 1.12.0 release, but is already fixed by the custom GWT 2.10.0 backend I also maintain; if you use gdx-liftoff, you won't ever notice it. (It affected Tiled maps on GWT.)
This release is just a JAR; it includes the functionality that previously needed .bat files inside the JAR now. It should work without needing -XstartOnFirstThread
on Mac. It should also work for Windows users with chars in their usernames that aren't only A-Z, a-z or 0-9. These are issues that Liftoff addresses in LWJGL3 for itself, and also for new LWJGL3 projects by adding a StartupHelper class and using it in the LWJGL3 launcher.
FARE THEE WELL, TRAVELER LIBGDX. MAY FORTUNE SMILE UPON YOUR NEWBORN PROJECTS.
1.11.0.9 "Smack It Until It Works"
This release mainly fixes the Kotlin launchers on LWJGL3, which previously made a broken Java file in with the Kotlin sources. It also updates Kotlin to 1.8.21 and the KTX libraries to 1.11.0-rc6, plus it adds the new ktx-ai library as an option. That's about it; if you don't use Kotlin at all, you won't notice a change.
1.11.0.8 "Start Me Up"
aThis release took a while longer than usual, but there's some nice new features here.
- Java 11 is now the default. Android currently requires a JDK of at least version 11 to build anything, and will soon require version 17 (!).
- TeaVM also requires version 11.
- GWT now defaults to version 2.10.0, using an alternate backend that supports this newest version, if you are targeting Java version 9, 10, or 11. GWT 2.10.0 supports language level 11, but not very many APIs from after 8.
- Because 11 is the default, an out-of-the-box GWT project will work here thanks to the alternate backend. This gives you access to nice things like the
var
keyword in Java. - Thanks to @lyze237 , once a project has been generated you can now open it in IDEA with one click, saving you time and avoiding the frustrating file open dialog in IDEA. - This feature requires you to have installed IntelliJ IDEA (Community or Ultimate) via JetBrains Toolbox. It may work if you have installed IDEA as standalone, but no guarantees. Toolbox is great to have in general, so I recommend it even if you aren't using this feature.
- Because 11 is the default, an out-of-the-box GWT project will work here thanks to the alternate backend. This gives you access to nice things like the
- LWJGL3 projects now include a modified version of StartOnFirstThreadHelper, which not only allows your application to run on macOS without any command-line changes, it also allows your application to run on Windows if the user has a non-alphanumeric username.
- This last part previously was achieved, mostly, using some .bat files that could be used with your project, but these aren't needed anymore.
- There's a bunch of TeaVM updates, though I'm not totally sure it's as up-to-date as it could be.
- Purely to glorify my own project, SquidSquad is now available as a third-party extension. It has the most involved set of dependencies of any library I have worked on, so it's a great reason to use gdx-liftoff to handle dependencies for you!
This release is just a JAR; you don't need .bat files on Windows to launch it, even if your username is purely-non-ASCII characters. In theory. If the launching part isn't working for you, please report an issue here or on Discord!
1.11.0.7 "Katydid Leap"
This release includes an update to Kotlin 1.8.0 for generated projects, and some long-standing minor issues have been fixed. Notably, when releasing on Android, minimization with ProGuard is enabled by default, so you will need to either configure ProGuard for your Android code or disable minimization in android/build.gradle . If you have any questions about this process, ask @Frosty-J , since he's been pushing for this change for a while. Various "tommyettinger libraries" have had their versions updated in yet another cascade of updates, this time affecting TextraTypist (now on 0.7.6) because one of its dependencies was broken (RegExodus, which should now be at least 0.1.15). In general, this is a very minor release and does nothing you couldn't manually do to an existing project, but it should make brand-new projects a little nicer to work with.
Like the last release, this is distributed as a .zip file; download and extract it first, then run either the .jar directly, or (if that doesn't work and you're on Windows), try running gdx-liftoff-non-a-z-name-1.11.0.7.bat
, which has special fixes for the case where a user's username contains a non-A-Z letter or some punctuation. That case seems to break LWJGL3 apps (like Liftoff) unless they account for it carefully. If you're releasing an app or game that uses LWJGL3 as a .jar release, I'd at least consider copying and adapting that .bat file to run your .jar file instead of gdx-liftoff-1.11.0.7.jar ; you should be able to release to more users that way.
1.11.0.6 "Hi, My Name Is..."
This release, two months in the making, is a little more wide-ranging than some other recent releases. Here are the highlights:
- Tons of third-party extension updates.
- These were what delayed the release, because many of a certain developer's libraries (that is to say, my libraries) shared a common bug that affected GWT projects, and all of them needed updating at about the same time.
- The packaging is now a .zip file, containing the normal .jar file, and also two .bat files if needed on Windows.
- gdx-liftoff-1.11.0.6.bat just launches the JAR normally, but will work even if double-clicking JARs doesn't normally function on a particular Windows machine.
- gdx-liftoff-non-a-z-name-1.11.0.6.bat is meant for the not-uncommon case where a user has a character in their username that isn't A-Z, 0-9, or a few other allowed chars. This is most common with names that have non-English letters in them. It does some extra steps to ensure necessary files are extracted properly to
C:\gdx-liftoff\
, which avoids an encoding problem with such a username. - This is hopefully clear, but you need to extract the files out of the .zip before you can run any of them.
- TeaVM! You can now enable (experimental) TeaVM support like any other platform, as a checkbox on the first tab.
- TeaVM compiles for the web like GWT, but doesn't need Java source code, and can compile Kotlin, Scala, or probably other languages as well.
- There's lots of promise for future developments in TeaVM, such as using Emscripten to compile and use native libraries in the browser. This is already done for Bullet in TeaVM, which GWT cannot use.
- You may want to read about TeaVM on its homepage, or the libGDX-specific TeaVM changes on its homepage.
- Numerous Android-related updates, such as Android Gradle Plugin 7.3.0 by default, default SDK of 32, and better auto-selection of core library desugaring based on other versions.
Thanks to, among others, czyzby, LandoSystem, fourlastor, SheerSt, and everyone who reported or helped track down bugs in this release. The whole TeaVM team did a lot of work that made the new platform possible, so thanks to all of them, too. Thanks to the GWT gitter and its helpful developers for tracking down the strange bug in (my) libraries that needed all of them to update. And thanks to all of the gdx-liftoff users, for choosing a tool that does things differently!