06-24-2025, 03:34 AM
(06-23-2025, 09:26 PM)madscijr Wrote: Thanks.To answer your specific question - it wouldn't really work the way you're picturing. The real problem is the runtime (libqb), not the compiler. Even if you could compile QB64PE 4.x using QB64 1.5, that theoretical version of QB64PE 4.X would still produce programs that won't run on XP because they would be built against the new runtime. To get XP support you have to use an older runtime, which means using an older version of QB64.
Any idea what kinds of things would stop working by trying to compile QB64PE 4.x on XP using QB64 1.5?
As for a specific version it broke, there were some pretty significant threading issues that I fixed in QB64PE and some of the APIs used to address them don't exist on XP. It looks like that work was done in v3.5.0, so below that _might_ work on XP by chance, above that every compiled program calls the missing APIs so they won't work at all (including the IDE).
It is theoretically possible to implement those APIs only using functionality on XP, so if you did that you may find programs mostly work (if you avoid using certain commands/functionality anyway). It's also entirely possible we now call other missing APIs and you'd still be stuck, we don't keep a close eye on that anymore since XP support was dropped. We also switched to llvm-mingw and I'm not sure if that works on Windows XP, you can't do anything without that and can't easily switch it back.
So TL;DR, the farther you get from 3.5.0, the messier it will be, even below 3.5.0 there's certain stuff that doesn't work. It's not really practical, but if you wanted to give it an effort the threading changes in 3.5.0 would be the starting point, google implementing 'condition variables' in Windows XP and make the required changes to the runtime
Though I'll clarify that we have no plans to add back Windows XP even if you managed to get something working, and it will just get broken further in the future.

