Options for targeting Windows XP?

Ben Gamari ben at well-typed.com
Fri Mar 26 02:34:05 UTC 2021

Clinton Mead <clintonmead at gmail.com> writes:

> Thanks all for your replies. Just going through what Ben has said step by
> step:
> My sense is that if you don't need the threaded runtime system it would
>> probably be easiest to just try to make a modern GHC run on Windows XP.
> Happy to run non-threaded runtime. A good chunk of these machines will be
> single or dual core anyway.
That indeed somewhat simplifies things.

>> As Tamar suggested, it likely not easy, but also not impossible. WinIO
>> is indeed problematic, but thankfully the old MIO IO manager is still
>> around (and will be in 9.2).
> "Is still around"? As in it's in the code base and just dead code, or can I
> trigger GHC to use the old IO manager with a GHC option?
> The possible reasons for Windows XP incompatibility that I can think of
>> off the top of my head are:
>>  * Timers (we now use QueryPerformanceCounter)
> This page suggests that QueryPerformanceCounter
> <https://docs.microsoft.com/en-us/windows/win32/api/profileapi/nf-profileapi-queryperformancecounter>
> should
> run on XP. Is this incorrect?
It's supported, but there are caveats [1] that make it unreliable as a timesource.

[1] https://docs.microsoft.com/en-us/windows/win32/sysinfo/acquiring-high-resolution-time-stamps#windowsxp-and-windows2000
>>  * Big-PE support, which is very much necessary for profiled builds
> I don't really need profiled builds

Alright, then you *probably* won't be affected by PE's symbol limit.

>>  * Long file path support (mostly a build-time consideration as Haskell
>>    build systems tend to produce very long paths)
> I don't need to build on Windows XP either. I just need to run on Windows
> XP so hopefully this won't be an issue. Although if GHC was modified for
> long file path support so it could build itself with long file path support
> presumably it will affect everything else it builds also.
If you don't need to build on XP then I suspect this won't affect you.

>> There may be others, but I would start looking there. I am happy to
>> answer any questions that might arise.
> I'm guessing the way forward here might be a patch with two options:
> 1. -no-long-path-support/-long-path-support (default -long-path-support)
> 2. -winxp
> The winxp option shall:
> - Require -no-long-path-support
> - Conflicts with -threaded
> - Conflicts with profiled builds
> - Uses the old IO manager (I'm not sure if this is an option or how this is
> done).
The old IO manager is still the default, although this will likely
change in 9.2.

> What do you think (roughly speaking)?

Yes, that is essentially correct. I would probably start by trying to
run a 32-bit GHC build on Windows XP under gdb and see where
things fall over.


- Ben
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 487 bytes
Desc: not available
URL: <http://mail.haskell.org/pipermail/ghc-devs/attachments/20210325/a9f2bd6f/attachment.sig>

More information about the ghc-devs mailing list