Hello everyone,
I left Windows for good in Feb of this year. I want nothing to do with
Windows (or Microsoft) ever again. So ... I moved over to Linux, which
wasn't as easy as it sounds.
First off, there is no reliable help in the Linux community, especially
for assembly language issues. I used to program IUP for Windows using
GoAsm, and that worked very well. Then I tried to program IUP for Linux
in assembly, and that didn't go so well.
The next step was to translate all my Windows assembly code to Linux
using NASM. Did you know that NASM has no macro support for any ABI for
any OS? So either you use NASMX or you make your own. I didn't like
their NASMX solution (which doesn't appear to be supported anymore
anyways) and created my own Linux macros ... and you know what that
means? It means troubleshooting time!
I was able to get that working but the problem was that I couldn't get
my program to assemble because of so many missing dependencies. In
Windows if you are missing a dependency, it gives you a message telling
you in plain English exactly which dependency is missing. In Linux it
doesn't tell you anything except a generic message that it doesn't work.
After some trial and error, I found a very inconvenient way to determine
the dependencies, but a new problem was that although it would compile,
it wouldn't run. My programs all crashed at gtk_init.
It turned out the Internet was useless for looking up solutions to
problems (although surprisingly, DuckDuckGo was a much better help than
Google was for doing that), and the Linux forums were very hostile and
most didn't know anything about 64-bit asm programming anyways. I was
completely all by myself with this. That's when I decided I needed to
experiment with something simpler.
My first experiment for that was with NAppGUI
(https://nappgui.com/en/home/web/home.html) -- which is a really, really
good GUI framework -- but once again, I couldn't get any of my programs
to run without crashing, and Linux never gave me any clues as to why.
Because IUP and NAppGUI both linked to GTK to render their GUIs, I
decided to go bare bones and program with GTK directly. That's when I
discovered a few very subtle bugs in my macros, and a few undocumented
features in GTK (for example, gtk_init requires **argv and not *argv as
everyone else uses for its parameters).
Well now everything works as expected but since programming with GTK
directly was so much easier and just as powerful as IUP or NAppGUI, I
decided I am going to stick with GTK, especially since I have no plans
ever of supporting anything to do with the Windows monopoly anyways (but
even if I did, GTK has a version for Windows).
Therefore I am leaving IUP for good. IUP worked really well for Windows,
but it isn't all that great for Linux.
So Goodbye,
Andres
|