ENIGMA Forums

General fluff => Announcements => Topic started by: Goombert on April 23, 2019, 03:15:50 am

Title: New LateralGM Stability Releases
Post by: Goombert on April 23, 2019, 03:15:50 am
(https://user-images.githubusercontent.com/3212801/56475611-8606c100-6458-11e9-92d0-70d2f5bb7f4f.png)

This may come as a welcome surprise to many of you, but I wanted to announce a few LateralGM releases that I've made recently. Yes, we are still working on a new IDE, but are not yet ready to completely drop LateralGM so I don't mind making a few stability changes and healthy fixes for the project to placate everybody in the interim. The main point of these changes is not to introduce radical changes to LGM, but simply make maintenance a little easier, including some custom error dialogs that facilitate users solving certain issues themselves rather than posting them to our GitHub.

As always, you can obtain the new releases on GitHub. The installation scripts in enigma-dev have also been updated to refer to the latest LateralGM release.
https://github.com/IsmAvatar/LateralGM/releases/tag/v1.8.53

Summary of Changes
1) New event selector based on a mockup by Josh which is a critique of the GameMaker 5 event selector.
2) Fixed translations that already existed but where the keys have been renamed. Also provided new translations where possible using Google Translate.
3) Cleanup of the GMX writer including refactoring of group writing.
4) Memory leak fix in the GMX and GMK readers.
5) Fixed some inconsistent use of certain icons.
6) Fixed some action list behavior including exceptions around clipboard options and empty selection.
7) Fixed clipboard copying of actions using a deep copy addressing the linked actions issue.
8) Fixed resource name completions in the code editor.
9) Fixed default sprite transparency which addresses issues with loading GMX projects after GMK projects.
10) Improved external editor error handling with custom error messages directing users how to resolve desktop editing failures themselves.
11) Made it easier to import multiple sprite sheets to the same sprite by making the "Add Spritesheet Subimages" button not clear the sprite's previous subframes first.
Title: Re: New LateralGM Stability Releases
Post by: time-killer-games on April 23, 2019, 06:46:30 am
OH EM GEE!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!  :o
Title: Re: New LateralGM Stability Releases
Post by: Dragonite on April 24, 2019, 12:55:10 pm
I'm pretty happy about this, as LateralGM could be made pretty usable with just a few quality of life changes.
A few questions:
1. Are GameMaker extensions supposed to load? I tried loading a project that has an extension, and it didn't show up in the resource tree.
2. Often, the '|' doesn't appear at all in code editors, any idea on the cause of this?

And some suggestions:
1. Allow editing macros/constants the same way we edit scripts. Just open a text editor where you can write "CONS value". This is how GMEdit does it and works wonderfully. I really recommend you guys check it, makes editing bigger GM projects much more bearable.
2. Any chance we gonna get live reloading of resources modified outside of LateralGM?  :ohdear:

Thanks for the update.
Title: Re: New LateralGM Stability Releases
Post by: Goombert on April 25, 2019, 02:11:54 am
Quote
1. Are GameMaker extensions supposed to load? I tried loading a project that has an extension, and it didn't show up in the resource tree.
We never had time to finish them honestly. Nobody has had enough interest in the IDE/resource extensions to make it a priority. Anybody is welcome to pick up this task if you are a Java coder/want to contribute to LateralGM. However, getting them into ENIGMA will be even harder because there's no communication interface yet and it will be a binary compatibility break to add them (but not to add them to the protos, hence one of the reasons the new interface is protocol buffer based).

Quote
2. Often, the '|' doesn't appear at all in code editors, any idea on the cause of this?
This is known and happens to me testing on different platforms. We use a custom JoshEdit (by Josh) code editing component in LateralGM since 1.8.2. I tried to improve this in the upstream JoshEdit project, but it still exists mostly under OpenJDK. So I'd mainly just ask if you were running under OpenJDK when this happened. I have less problems with it doing this under Oracle JDK.
https://github.com/JoshDreamland/JoshEdit/issues/51

Quote
1. Allow editing macros/constants the same way we edit scripts. Just open a text editor where you can write "CONS value". This is how GMEdit does it and works wonderfully. I really recommend you guys check it, makes editing bigger GM projects much more bearable.
That's actually already our plan, to support macros like GMS. We likely won't change LateralGM though since it's just a free GM editor. We're building our own IDE, RGM, where we're more likely to have it done this way.

Quote
2. Any chance we gonna get live reloading of resources modified outside of LateralGM?
Possibly, but I want to see LGM become even more stable first. It all depends on whether we have time to do it. But I have accepted an issue requesting it on GitHub. It's honestly not that much work to get it done.
https://github.com/IsmAvatar/LateralGM/issues/341
Title: Re: New LateralGM Stability Releases
Post by: egofree on April 25, 2019, 10:51:29 am
Thanks Robert. I didn't follow the project for a very long time, but if i remember correctly the main stability problem with LateralGM was to load and run an existing project. Is it still the same ?
Title: Re: New LateralGM Stability Releases
Post by: Goombert on April 25, 2019, 04:49:59 pm
Short answer: no, it's not the same and it has improved because of the ENIGMA project having continuous integration testing and just a lot of work by me to hammer out some of the old issues. LGM has also improved because of this and other releases, but I can't say how much more it will improve. The main focus should be the new IDE. LGM is a great project, but it will always be a GM IDE and put GM before ENIGMA. Also, we've gone over many of the reasons to have a C++ IDE and we've already built much of the infrastructure for it. I'm not sure if you've tried any of the release executables on RadialGM?
https://github.com/enigma-dev/RadialGM/releases

However, you're still better off with starting new projects in ENIGMA rather than bringing existing ones, in most cases. That will remain true until we expand the code coverage to cover enough of the GM API.
Title: Re: New LateralGM Stability Releases
Post by: Darkstar2 on April 25, 2019, 10:57:16 pm
I can testify that the stability of LGM has greatly improved, whether this is due to the enigma core updates, I don't know as they are unrelated to the stability issues of  LGM's enigma PLUGIN.  LGM is rock solid and stable - the stability issues concern the enigma plugin.  Since updating to Win10 and using a current and updated version of JAVA there are far fewer of those crashes, I can worker longer on my projects, saving, running multiple times without the crash - they STILL occur, but I can work longer before they show up so I am very much happy with that, mind you I've been working mostly on non games, so I dunno if working on a game in LGM with lot of loaded resources with cause more frequent crashing or not I have not compared.

The only thing that bugs me (no pun intended) is this dreaded backspace bug (Robert knows what I am talking about) this is unrelated to LGM, and I have yet to understand what causes it, there is no specific way to reproduce it, so it is very hard to debug.
Title: Re: New LateralGM Stability Releases
Post by: Goombert on April 26, 2019, 02:34:42 am
Darkstar2 raises and alludes to a lot of good points here I didn't really think about the other day. I would credit some of the improved stability to Java itself, although I still hate Java. Also, I would credit some more of the improved stability to us. We have merged the new templates JDI which handles newer string better (which was one place people were getting crashes before). I've been making less binary compatibility breaking changes to ENIGMA and the plugin because I've grown hyper aware and conscientious of when I am making that happen. We've switched JDI to only look at ENIGMA user, preventing ambiguous resolution of functions and symbols (which also makes syntax checking/parsing/preprocessing faster). I've also been more careful writing engine code by creating separate implementation headers for internal stuff that never gets exposed to the user. All of these are contributing factors to the perceived stability at the current time.

Also, you know I would definitely fix the backspace issue if I could reproduce it. I haven't tried again or looked deeper though because I am also busy trying to prioritize core architectural changes, like supporting GLES. I don't want to sound cocky, but backspace is a small issue that novice contributors could maybe fix and I feel like ENIGMA benefits more by me frying bigger fish. That said, I love being helpful so maybe I'll try looking for it on my own. And again, yes I could clearly fix it in a pinch if you could demonstrably reproduce it to me.
Title: Re: New LateralGM Stability Releases
Post by: Darkstar2 on April 26, 2019, 10:55:21 am

Also, you know I would definitely fix the backspace issue if I could reproduce it. I haven't tried again or looked deeper though because I am also busy trying to prioritize core architectural changes, like supporting GLES. I don't want to sound cocky, but backspace is a small issue that novice contributors could maybe fix and I feel like ENIGMA benefits more by me frying bigger fish. That said, I love being helpful so maybe I'll try looking for it on my own. And again, yes I could clearly fix it in a pinch if you could demonstrably reproduce it to me.

Right, I agree that it is not a critical priority, hoping people don't use backspace much :P But I do not necessarily agree that any novice can fix it or that you can fix it in a "pinch".  I have spent a considerable amount of time to fix the issue or find exactly what reproduces it, at an advanced level, unfortunately there is not one thing that reproduces it, it is an edge case scenario, even compiling a blank project now causes it - initially when I found it in one of my projects, I tried removing modules gradually to isolate the case - eventually it worked, BUT here is the tricky part, it was NOT due to the removed module, so I suspect something very deep is at play, perhaps how memory is allocated, freed, I dunno, but why backspace ?  I also determined it had nothing to do with keyboard events or anything, then we discussed compiler, the backspace issue does not exist when RUNNING in LGM, but only in COMPILE mode,  I went through every possible compiler options by manually tweaking and optimization settings and arguments, same problem.  What I do know is that it is NOT system dependent as another person also experienced this issue.

I guess another way would be to compile / test  going back in reverse order each enigma update, until the problem vanishes, so we can isolate the problematic update, that would probably be time consuming :D
I also suspect that there is no ONE cause that triggers it, this is what makes it a very complicated issue.
Initially I thought it was due to strings or specific code as I was able to have it go away when modifying code a certain way, but then I noticed even on compiling a blank project it exists..  I have personally tried to fix it, I went through all possible combination of ENIGMA settings, in LGM and also disabling of all non essential plugins.  Also it is impossible to debug this effectively as this bug does not exist through run mode, only compile mode, without the debug symbols :D


Title: Re: New LateralGM Stability Releases
Post by: Goombert on April 26, 2019, 07:47:32 pm
Quote from: Darkstar2
isolate the problematic update, that would probably be time consuming
There is a faster way, it's called git bisect. You do a binary search backwards. Find some really far back commit that does not reproduce it. Continue on with a commit in between now and that far away commit. Keep going until you can no longer reproduce it.
https://git-scm.com/docs/git-bisect
Title: Re: New LateralGM Stability Releases
Post by: time-killer-games on April 26, 2019, 11:05:24 pm
i bet you fucked the spider in his thorax and his abdomen at the same time with your Siamese dick hole
Title: Re: New LateralGM Stability Releases
Post by: Dragonite on April 28, 2019, 03:12:36 pm
We never had time to finish them honestly. Nobody has had enough interest in the IDE/resource extensions to make it a priority. Anybody is welcome to pick up this task if you are a Java coder/want to contribute to LateralGM. However, getting them into ENIGMA will be even harder because there's no communication interface yet and it will be a binary compatibility break to add them (but not to add them to the protos, hence one of the reasons the new interface is protocol buffer based).
Any chance for GM extensions that only use GML? They are essentially scripts.
This is known and happens to me testing on different platforms. We use a custom JoshEdit (by Josh) code editing component in LateralGM since 1.8.2. I tried to improve this in the upstream JoshEdit project, but it still exists mostly under OpenJDK. So I'd mainly just ask if you were running under OpenJDK when this happened. I have less problems with it doing this under Oracle JDK.
https://github.com/JoshDreamland/JoshEdit/issues/51
Yes, I was using OpenJDK.
That's actually already our plan, to support macros like GMS. We likely won't change LateralGM though since it's just a free GM editor. We're building our own IDE, RGM, where we're more likely to have it done this way.
I see. Just to make it clear, constants are hold in the .gmx project file in GMS1. GMEdit parses it and show a code editor, and put the values in their correct places when you save it.

2. Any chance we gonna get live reloading of resources modified outside of LateralGM?
Possibly, but I want to see LGM become even more stable first. It all depends on whether we have time to do it. But I have accepted an issue requesting it on GitHub. It's honestly not that much work to get it done.
https://github.com/IsmAvatar/LateralGM/issues/341
Cool, hopefully someone picks this up.
Title: Re: New LateralGM Stability Releases
Post by: Goombert on April 29, 2019, 03:55:13 am
Quote from: Dragonite
Any chance for GM extensions that only use GML? They are essentially scripts.
Yes, those already work. In fact, you may consider asking forum user time-killer-games as he makes extensive use of DLLs. The only thing is nobody has added the [snip]external_*[/snip] functions for any platform except Windows I think. It's actually sort of easy to do, and definitely easier than adding the IDE ones since it's a necessary prerequisite to that anyway. Finally, I should mention that DLLs using strings seemed to have regressed just within the past year and we haven't gotten it resolved yet.
https://github.com/enigma-dev/enigma-dev/issues/1511

If I happen upon the time to do it I was going to add the [snip]external_*[/snip] functions to SDL and then make a CI test so they can't be broken again. However, I am waiting for us to finish the var rewrite before I do that since variant pointer overloading may have caused the DLL string regression.

Quote from: Dragonite
Yes, I was using OpenJDK.
Figures, yeah maybe try Oracle JDK? I can see about looking into it at some point but not right now. The OpenJDK Swing is pretty unusable because it's so buggy, so we've largely avoided bothering with it.

Quote from: Dragonite
I see. Just to make it clear, constants are hold in the .gmx project file in GMS1. GMEdit parses it and show a code editor, and put the values in their correct places when you save it.
Understood.