# Need for support for pre-Windows 10 version 1511 re 'ANSI' codes

**URL:** <https://discourse.haskell.org/t/need-for-support-for-pre-windows-10-version-1511-re-ansi-codes/4938>\
**Category:** Learn\
**Created:** [August 17, 2022, 7:40pm UTC](https://discourse.haskell.org/t/need-for-support-for-pre-windows-10-version-1511-re-ansi-codes/4938 "2022-08-17T19:40:35Z")\
**Posts on this page:** 8\
**Page:** 1

<div class="post-metadata">

**Author:** ![mpilgrem](https://sea2.discourse-cdn.com/flex002/user_avatar/discourse.haskell.org/mpilgrem/32/2529_2.png) [@mpilgrem](https://discourse.haskell.org/u/mpilgrem)\
**Post date:** [August 17, 2022, 7:40pm UTC](https://discourse.haskell.org/t/need-for-support-for-pre-windows-10-version-1511-re-ansi-codes/4938/1 "2022-08-17T19:40:35Z")

</div>

May I canvas views here on the following topic? Windows 10 version 1511 was issued in December 2015. The native terminal software on earlier versions of Windows did not support ‘ANSI’ control sequences (the codes that produce colour etc in terminal output). This is my question:

> If future versions of a library on Hackage that you use stopped supporting users of Windows before Windows 10 version 1511 - by assuming ‘ANSI capability’ of the terminal - would you, or intended users of your software, be ‘put out’?

I am particularly interested in practical examples of where people would be inconvenienced.

---

<div class="post-metadata">

**Author:** ![Bodigrim](https://sea2.discourse-cdn.com/flex002/user_avatar/discourse.haskell.org/bodigrim/32/1457_2.png) [@Bodigrim](https://discourse.haskell.org/u/Bodigrim)\
**Post date:** [August 17, 2022, 8:49pm UTC](https://discourse.haskell.org/t/need-for-support-for-pre-windows-10-version-1511-re-ansi-codes/4938/2 "2022-08-17T20:49:28Z")

</div>

What will be the effect of the change on remaining Win 7 users? It’s probably fine to downgrade to black-and-white, but garbled output would be quite unfortunate.

---

<div class="post-metadata">

**Author:** ![mpilgrem](https://sea2.discourse-cdn.com/flex002/user_avatar/discourse.haskell.org/mpilgrem/32/2529_2.png) [@mpilgrem](https://discourse.haskell.org/u/mpilgrem)\
**Post date:** [August 17, 2022, 9:31pm UTC](https://discourse.haskell.org/t/need-for-support-for-pre-windows-10-version-1511-re-ansi-codes/4938/3 "2022-08-17T21:31:16Z")

</div>

In part, I am seeking to understand whether there are people (globally) who are (a) compiling Haskell on Windows 7 or (b) using executables built with current libraries on Windows 7. Microsoft itself stopped mainstream support of Windows 7 in January 2020 and has said it will cease all support (even for a fee) from 14 January 2023.

---

<div class="post-metadata">

**Author:** ![Bodigrim](https://sea2.discourse-cdn.com/flex002/user_avatar/discourse.haskell.org/bodigrim/32/1457_2.png) [@Bodigrim](https://discourse.haskell.org/u/Bodigrim)\
**Post date:** [August 17, 2022, 11:48pm UTC](https://discourse.haskell.org/t/need-for-support-for-pre-windows-10-version-1511-re-ansi-codes/4938/4 "2022-08-17T23:48:37Z")

</div>

I’m both (a) and (b) at the moment, and globally [12% of Windows users are on Win 7](https://gs.statcounter.com/windows-version-market-share/desktop/worldwide/). Obviously, unpaid maintainers like you cannot be hold responsible for my choice to use a legacy technology, but it would be nice if `ansi-terminal` degraded gracefully to black-and-white on old machines. E. g., `isANSITerminal` can check `getVersionEx` and just return `False` for versions earlier than Win10 1511.

---

<div class="post-metadata">

**Author:** ![f-a](https://sea2.discourse-cdn.com/flex002/user_avatar/discourse.haskell.org/f-a/32/2740_2.png) [@f-a](https://discourse.haskell.org/u/f-a)\
**Post date:** [August 18, 2022, 5:59am UTC](https://discourse.haskell.org/t/need-for-support-for-pre-windows-10-version-1511-re-ansi-codes/4938/5 "2022-08-18T05:59:53Z")

</div>

Unfortunately here you will get some kind of reliable answer for the former question but not for the latter, as we are mainly programmers here (or programmers/users, not just users). I wrote some terminal programs and games, I received feedback from people running them on Windows, I cannot say which specific Windows version.

I “MS will cease all support” implies “will cease security fixes too”, I think there is a strong point in dropping Win7 from that date. A possible solution that does not saddle maintainers is a good changelog entry plus adding a `isLegacyWin :: IO Bool` function so library users could decide to work around Win7 quirks if they so wish.

---

<div class="post-metadata">

**Author:** ![mpilgrem](https://sea2.discourse-cdn.com/flex002/user_avatar/discourse.haskell.org/mpilgrem/32/2529_2.png) [@mpilgrem](https://discourse.haskell.org/u/mpilgrem)\
**Post date:** [October 19, 2022, 7:25pm UTC](https://discourse.haskell.org/t/need-for-support-for-pre-windows-10-version-1511-re-ansi-codes/4938/6 "2022-10-19T19:25:41Z")

</div>

Thanks for the responses. Picking up on some matters raised here:

- Microsoft’s [announcement](https://www.microsoft.com/en-gb/windows/end-of-support?os=win7&r=1) about the end of free Windows 7 support by Microsoft on 14 January 2020 explains ‘your PC no longer receives security updates’;

- I understand that, unless the deadline is extended in the next three months, Edge and Chrome will drop support for Windows 7 on 15 January 2023;

- I understand Cygwin 3.5, expected late 2022/early 2023, will drop Windows 7 and, consequently, [so will MSYS2](https://www.msys2.org/docs/windows_support/);

- for my own part, I am _willing_ to maintain, it is a lack of _ability to test_ that is the issue. I no longer have access to any machine running legacy Windows. Not being able to test changes means that things can become ossified;

- however, if people like @Bodigrim are still using Haskell on, and to support, Windows 7 machines, I’ll do my best;

- for me, this is not so much about `ansi-terminal` (which emulates on legacy Windows, although the emulation is ossified) but libraries like `haskeline` which do not depend on `ansi-terminal`. The trade-off of catering only for the needs of people on legacy Windows is impairing the experience of people on modern (post-2015) Windows; and

- the `ansi-terminal` package exports `hSupportsANSIWithoutEmulation :: Handle IO (Maybe Bool)`, which does what its name suggests.

---

<div class="post-metadata">

**Author:** ![Bodigrim](https://sea2.discourse-cdn.com/flex002/user_avatar/discourse.haskell.org/bodigrim/32/1457_2.png) [@Bodigrim](https://discourse.haskell.org/u/Bodigrim)\
**Post date:** [October 19, 2022, 8:08pm UTC](https://discourse.haskell.org/t/need-for-support-for-pre-windows-10-version-1511-re-ansi-codes/4938/7 "2022-10-19T20:08:47Z")

</div>

FWIW I stopped using Win 7 recently (hooray!), so no longer has any personal interest in its support. Not sure if there are any other users in the Haskell community.

---

<div class="post-metadata">

**Author:** ![mpilgrem](https://sea2.discourse-cdn.com/flex002/user_avatar/discourse.haskell.org/mpilgrem/32/2529_2.png) [@mpilgrem](https://discourse.haskell.org/u/mpilgrem)\
**Post date:** [March 12, 2023, 12:59pm UTC](https://discourse.haskell.org/t/need-for-support-for-pre-windows-10-version-1511-re-ansi-codes/4938/8 "2023-03-12T12:59:57Z")

</div>

With paid-for support by Microsoft, support by MSYS2, and browser support (Chrome/Microsoft Edge) for Windows 7 and 8 having ended on or before 15 January 2023, I am proposing to move to an `ansi-terminal-1.0` that drops emulation for legacy Windows. See [Time for an `ansi-terminal-1.0` that drops emulation for legacy Windows? · Issue #116 · UnkindPartition/ansi-terminal · GitHub](https://github.com/UnkindPartition/ansi-terminal/issues/116). If anyone here thinks that is a bad idea, please can they post their reasoning at that repository.
