FYI, recently Microsoft has made it more difficult for developers to support old (pre Windows 10) versions of Windows.
Arasan has for a long time supported Windows versions back to WIndows XP. To do this with the Microsoft build tools, you need to install and select the 141_xp toolchain, which is present by default in Visual Studio 2017 and still selectable in Visual Studio 2022, but removed in Visual Studio 2026. Microsoft has removed older versions of Visual Studio Community from their downloads page (only the paid subscription versions are available). However, the software is still hosted and with some digging it is possible to find a download link.
Arasan also uses MFC for its GUI, which is quite old technology and no longer being actively maintained by Microsoft, but it is still available. It also uses the CHM helpfile format. Microsoft has removed support from this from their build tools, and as with Visual Studio, there is no longer an easily obtainable download link for the HTML Help compiler. The modern way to build GUI executables on Windows is to build them as Windows Apps, but that framework only supports Windows 10+ (you could also use something like Qt, but that's quite heavyweight and has licensing requirements you might not like).
It's pretty clear all of this is to make running older Windows versions more painful for end users, and to push developers into not supporting them. I can actually understand this from a business perspective, and, speaking technically, you really should be on a supported version, because otherwise you are not getting security updates, and that's leaving you open to hacks. But the reality is, many users, especially outside the US, do not update their OS version, and some can't because their old hardware is not adequate to run Windows 10+.
According to their docs, Cygwin runs on Windows 8.1 and above. I am not clear what version(s) the standard compliers and libraries will support, for executables built on that platform. I don't use it, because I have run into a GCC issue regarding AVX2 alignment requirements not being supported by the Windows ABI (href="https://gcc.gnu.org/bugzilla/show ... i?id=54412). I am properly aligning the data structures, but gcc (and clang) can still generate code that segfaults due to alignment errors.
Supporting older Windows versions
Moderator: Ras
-
jdart
- Posts: 4433
- Joined: Fri Mar 10, 2006 5:23 am
- Location: http://www.arasanchess.org
-
mar
- Posts: 2685
- Joined: Fri Nov 26, 2010 2:00 pm
- Location: Czech Republic
- Full name: Martin Sedlak
Re: Supporting older Windows versions
well, this is what Apple is doing all the time - pushing devs into not supporting old OSes and force people to keep buying new hardware
as for Windows, with VS2022 you should still be able to support Win7+ if I'm not mistaken? I'm lucky enough to have vs2022 installed.
I believe it's possible to still find the link to 2022 community with some effort
XP isn't officially supported and 141_xp toolchain is a no-go because 2017 lacks support for modern C++ versions
(might be interesting to build the final binary with a different, external (mingw/clang) to see how far one can get)
oh - interesting remark about the avx2/abi problems on older win versions
I can't say for sure because I can't test, the oldest I have is Win10 laptop...
that being said HighDPI support on anything pre-Win10 is rather fragile, for GUIs that can be problematic.
the way I go is try to load dlls and look for specific WinAPI functions and use them only if present
as for Qt, well... I think it became a super-bloat, it even wanted me to register (!!!) to be able to even download it.
most recent Qt apps go with LGPL and ship with insanely big libraries, like HCE ships with almost 100megs worth of third party dlls,
that's insane. there are other C++ GUI frameworks, but I only have tried wxWidgets in the past,
which seemed to resemble the atrocity called MFC and it was unpleasant to work with as far as I remember.
maybe things have improved since
another modern way is to bundle chromium (=browser) and call it a "desktop app" and do the frontend in typescript. that feels even uglier,
but the UI can look great.
so in the end I decided to write my own C++ GUI framework from scratch. 3.5 months in I have a single 2mb executable that can run
simple eng-eng games, but I had some core parts of the framework ready before that (like multispan rasterizer, ttf loader and low level core functionality)
cross-platform is something to work on in the future, but doable.
overall I'm quite happy how it turned out. 100% from scratch, zero third party (except for pyrrhic for syzygy probing - I'd love to replace it with Ronald's new probing code, but sadly it won't compile with msvc due to microsoft's lack of modern C support)
so nothing to worry about regarding licenses.
one really only needs a tiny fraction of functionality to start building things
literally everything can be done using a couple of basic auto-sized layout types, no need for "form designers" or even meta-compilers,
just plain C++
now I can already hear some people lecturing me that "you're not supposed to reinvent the wheel" - the mantra of incompetents
a custom wheel is easily a much better fit - of course assuming you know what you're doing and you how to do it in the first place
as for Windows, with VS2022 you should still be able to support Win7+ if I'm not mistaken? I'm lucky enough to have vs2022 installed.
I believe it's possible to still find the link to 2022 community with some effort
XP isn't officially supported and 141_xp toolchain is a no-go because 2017 lacks support for modern C++ versions
(might be interesting to build the final binary with a different, external (mingw/clang) to see how far one can get)
oh - interesting remark about the avx2/abi problems on older win versions
I can't say for sure because I can't test, the oldest I have is Win10 laptop...
that being said HighDPI support on anything pre-Win10 is rather fragile, for GUIs that can be problematic.
the way I go is try to load dlls and look for specific WinAPI functions and use them only if present
as for Qt, well... I think it became a super-bloat, it even wanted me to register (!!!) to be able to even download it.
most recent Qt apps go with LGPL and ship with insanely big libraries, like HCE ships with almost 100megs worth of third party dlls,
that's insane. there are other C++ GUI frameworks, but I only have tried wxWidgets in the past,
which seemed to resemble the atrocity called MFC and it was unpleasant to work with as far as I remember.
maybe things have improved since
another modern way is to bundle chromium (=browser) and call it a "desktop app" and do the frontend in typescript. that feels even uglier,
but the UI can look great.
so in the end I decided to write my own C++ GUI framework from scratch. 3.5 months in I have a single 2mb executable that can run
simple eng-eng games, but I had some core parts of the framework ready before that (like multispan rasterizer, ttf loader and low level core functionality)
cross-platform is something to work on in the future, but doable.
overall I'm quite happy how it turned out. 100% from scratch, zero third party (except for pyrrhic for syzygy probing - I'd love to replace it with Ronald's new probing code, but sadly it won't compile with msvc due to microsoft's lack of modern C support)
so nothing to worry about regarding licenses.
one really only needs a tiny fraction of functionality to start building things
literally everything can be done using a couple of basic auto-sized layout types, no need for "form designers" or even meta-compilers,
just plain C++
now I can already hear some people lecturing me that "you're not supposed to reinvent the wheel" - the mantra of incompetents
a custom wheel is easily a much better fit - of course assuming you know what you're doing and you how to do it in the first place
-
jdart
- Posts: 4433
- Joined: Fri Mar 10, 2006 5:23 am
- Location: http://www.arasanchess.org
Re: Supporting older Windows versions
I currently still build with Visual Studio 2022, which allows installing and selecting the 141_xp toolset, even though it is deprecated. Visual Studio 2022 supports C++ versions up to C++20. So it's working with older Windows versions still, but Microsoft has made setting up a new dev environment like this more difficult.
-
Modern Times
- Posts: 3842
- Joined: Thu Jun 07, 2012 11:02 pm
Re: Supporting older Windows versions
I think it is perfectly reasonable and sensible to have Windows 10 as a minimum requirement for your engine.
-
flok
- Posts: 618
- Joined: Tue Jul 03, 2018 10:19 am
- Full name: Folkert van Heusden
Re: Supporting older Windows versions
because...?Modern Times wrote: ↑Fri Apr 17, 2026 7:59 am I think it is perfectly reasonable and sensible to have Windows 10 as a minimum requirement for your engine.
-
abulmo2
- Posts: 492
- Joined: Fri Dec 16, 2016 11:04 am
- Location: France
- Full name: Richard Delorme
Re: Supporting older Windows versions
According to steam: OS usage in march 2026:flok wrote: ↑Fri Apr 17, 2026 12:01 pmbecause...?Modern Times wrote: ↑Fri Apr 17, 2026 7:59 am I think it is perfectly reasonable and sensible to have Windows 10 as a minimum requirement for your engine.
Code: Select all
Windows 92.33%
Windows 11 64 bit 66.85%
Windows 10 64 bit 25.36%
Windows 7 64 bit 0.08%
Code: Select all
Date 2026-03
Win11 67.14
Win10 31.27
Win7 1.18
Win8 0.15
Win8.1 0.12
WinXP 0.11
WinVista 0.02
--
Richard
Richard Delorme
-
Ajedrecista
- Posts: 2222
- Joined: Wed Jul 13, 2011 9:04 pm
- Location: Madrid, Spain.
Re: Supporting older Windows versions.
Hello Richard:
Looking to myself, I had been using Windows XP 32-bit on an almost daily basis until December, 2020. I still have got that PC for some backups and I switch it on once or twice a year. I think that I have not used XP in this year to date, but probably (and proudly) did in 2025! Back in the day, I was very thankful when some chess engines were compiled for old dinosaurs like me.

Regards from Spain.
Ajedrecista.
I have a word to say on this: in fact, I saw a PC or workstation running on Windows NT (probably Windows NT 4.0) around the end of 2012 or the beginning of 2013, which was dedicated to run a programme of ultrasonic testing. I do not remember the exact piece of software.abulmo2 wrote: ↑Fri Apr 17, 2026 1:23 pmAccording to steam: OS usage in march 2026:According to Statcounter:Code: Select all
Windows 92.33% Windows 11 64-bit 66.85% Windows 10 64-bit 25.36% Windows 7 64-bit 0.08%So, basically almost nobody is still using old Windows, particularly among gamers. I won't be surprise if old versions still in use are mostly present on computers dedicated to special tasks like controlling a scientific apparatus, not as general purpose computers.Code: Select all
Date 2026-03 Win11 67.14 Win10 31.27 Win7 1.18 Win8 0.15 Win8.1 0.12 WinXP 0.11 WinVista 0.02
--
Richard
Looking to myself, I had been using Windows XP 32-bit on an almost daily basis until December, 2020. I still have got that PC for some backups and I switch it on once or twice a year. I think that I have not used XP in this year to date, but probably (and proudly) did in 2025! Back in the day, I was very thankful when some chess engines were compiled for old dinosaurs like me.
Astérix and Obélix wrote:The year is 50 BC. Gaul is entirely occupied by the Romans. Well, not entirely... One small village of indomitable Gauls still holds out against the invaders. And life is not easy for the Roman legionaries who garrison the fortified camps of Babaorum, Aquarium, Laudanum and Compendium...

Regards from Spain.
Ajedrecista.