-
-
Notifications
You must be signed in to change notification settings - Fork 2.6k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Minimum Supported Windows Version #7242
Comments
Just for information purposes, here's where Windows 7 stopped working: #5993 (comment) |
If that's all it takes, it should be done. Since Windows 7 is not supported yet, it's not urgent though. |
This is the kind of thing I mean by "non invasive". Even without explicit support, non invasive patches to widen support are welcome. They won't be tested by the CI though and will be maintained on best effort, but without mandatory testing. |
Is Windows 7 support going to be added back? |
Our customers tend to keep using their base 24x7 systems longer than Microsoft EOLs. They expect us to keep their systems running with our latest enhancements. Supporting an older windows platform gives some sort of trust the end solution will work on new platforms under certain conditions. It also keeps Multiplatform developer's VM's small/�fast. In our case we try to ship as much as possible 32-bit versions of our solutions to keep compatibility with working 32-bit third-party components as well. Already created a small utility using zig 0.9 dev under windows 7 64-bit and Apple M1. Thanks again for the zig language, I really think you will succeed in a better C! Looking forward to keep using it ! |
Hello, |
I am able to build the latest master branch on Windows 7 using Option 2 here: https://github.com/ziglang/zig/wiki/Building-Zig-on-Windows |
Despite Windows 7 not being officially supported by zig, I thought it would continue to work there. So I saw no issue with zig 0.8.0 and 0.8.1 failing to run with GetSystemTimePreciseAsFileTime error, as 0.9.0-dev was working fine, yet I see the same GetSystemTimePreciseAsFileTime error on officially released 0.9.0, so I'm somewhat worried. I thought that if 0.9.0-dev was working, then final release will do so too. Strangely, zig 0.10.0-dev.2+ea913846c does not exhibit this issue and works fine AFAICT on Windows 7. (Tested on Windows 7 Pro SP1 64-bit.) Are release and dev builds vastly different? We all understand that W7 is past its EOL time, but there are still hosts running it. Even if W7 remains not officially supported, Windows builds (including release ones) working in W7 would be beneficial for zig adoption. |
Update: I'm updated from Operating System from |
@akdev21 Which zig version do you use exactly? From https://ziglang.org/download/ or built on your own? Release or dev (from master)? I tested zig 0.8.1, zig 0.9.0-dev (.1622+71388b980), zig 0.9.0, and zig 0.10.0-dev (.2+ea913846c, .36+6fdf7ce0a) from ziglang.org on two Windows 7 Pro SP1 64-bit hosts (laptop with PL version of W7, desktop with EN version of W7). @marler8997 Are you maybe aware what makes the different behavior between release and dev builds? |
As far as I'm aware there's no difference between a release build and a dev build other than that they are builds of different revisions. If the release build fails, my guess is that revision from which 0.9.0 is built uses that function, whereas the other revisions didn't. Try checking out each revision and grepping the std directory for |
Just here to +1 for restoring Win7 support, even in 2023, if still feasible. (First-time user here trying the latest build -- but failing on Probably no need to campaign, but: ZIG is exactly the kind of friendly, minimalist, low-dep. tool that's a perfect match for devs like myself using other frugal, robust, self-containing, long-lived tools like e.g. legacy Win7 nodes (for multiple reasons, of which minimizing infrastructure burden (complexity, cost etc.) and "change flux" are just two examples). Thanks a lot! PS: I saw somewhere that |
As far as I can tell |
Moving the discussion at #20511 (comment) here. Please check that comment thread for prior context.
But you just provided evidence of said users existing, so what's the problem? 🙂 The problem with not requiring some evidence of Zig users on a platform, such as this, is that we can then justify adding support for any OS version that has ever been produced. As a 'fun' anecdote here, my partner's employer has her logging her work hours in a DOS program. 😅 But I don't think that's a good enough reason for Zig to support DOS.
I think the likelihood of Zig code ever being deployed to these, even if Zig supported XP, is approximately zero. If they can't be bothered to upgrade their OS, there's no reason to think they can be bothered to migrate to a completely different language and/or development toolchain.
Wikipedia claims that under 0.6% of Windows PCs globally are running XP. So while "53.5% of Windows PCs in Armenia run XP" sounds like a lot, in the grand scheme of things, it really isn't. My bet would be that, like quite a few other countries, a lot of Armenians have moved to smartphones, and the number you're seeing here is just ancient PCs on their last legs. https://gs.statcounter.com/windows-version-market-share/desktop/worldwide/#yearly-2009-2024 |
Fair point on the need for demonstrating the existence of Zig users on platforms and ATMs, public displays.
Yes, it isn't, but it does highlight the regional difference, especially in countries that may not be able to upgrade to a newer Windows version, be it for hardware reasons or other.
Good guess, but that isn't supported by any data. Statcounter places the percentage of website visits (including smartphones) through Windows in Armenia at 71%, and 80% of those visits used Windows XP: https://gs.statcounter.com/os-market-share/all/armenia |
Do we have any idea how they define "website visit" in this context? That term seems a bit nebulous; I can think of multiple valid interpretations that would all likely give very different results. ("Market share" is by no means perfect either, but I would think it's a lot less ambiguous, since all you really need to do is fingerprint a visitor and determine their OS.) In any case, supposing I take that statistic at face value, this percentage is just a portion of the aforementioned global 0.6%. When I look at it through that lens, it's still just not very convincing. We're talking about a closed-source OS that is no longer developed nor serviced by its creator (who would much prefer if people stopped using it), and is almost certainly full of security holes. It would take active effort by the Zig team and contributors to keep support for that OS working during other development. It would require constantly thinking about whether new functionality added to the standard library can be made to work on that OS. It would require dedicating time to bug reports from users of that OS. And all that would have to be done while having no CI coverage, because I don't think there's any version of reality where the ZSF runs publicly accessible CI on an OS that insecure - and that's ignoring the funds required, and whether all the software needed for Zig CI can even run on that OS anymore (I'd bet money that the answer is no without even checking). Supporting old systems is never as simple as "just retain some code paths for it". On top of all that, we're still probably quite a few years from Zig 1.0. We don't even know if that global 0.6% would run Zig software today if they could, let alone by the time we hit 1.0. It's not as if I have zero sympathy with folks who are unable to upgrade because of factors outside their control (e.g. a poor economy), but at some point we have to acknowledge that we can't solve all the world's ills, and our time would be better spent doing the good that we can. |
@alexrp commented 3 days ago:
Now that was offensive. Why upgrade the OS if it perfectly suits the user's setup / limited resources? And then it discriminates the @reactos project which targets NT 5.2 architecture.
I don't see it that way. I liked summary from @andrewrk written on Dec 1, 2020:
PS. When I read "best effort" an addendum "from what is left" immediately occurs to me which then means "worst effort" (more and more with every day of my life). And that's fine. Small effort is expected and appreciated. :) |
Knowingly running an outdated, insecure, and closed-source operating system with a massive attack surface is irresponsible. It's also unreasonable to expect FOSS ecosystems to continue to support it a decade after even the corporation that created it has ceased their extended support for it. I also don't think "limited resources" has anything to do with the specific example of public displays. You can't claim to have limited resources and then run a whole Windows operating system for something that simple. The math don't math here.
There has been nothing religious about the style of argumentation used by anyone in this discussion so far.
ReactOS aims to support NT 6+ APIs with an NT 5 kernel; it isn't frozen in time on NT 5.2. Also, ReactOS is an active, open source project with ongoing development. It does not suffer from the same security or stagnation concerns. I think ReactOS support is entirely reasonable.
That comment was made in the context of Windows 7 support, 4 years ago. Seems like a stretch to extrapolate that to Windows XP support today; I would like clarification from Andrew that that's actually what he meant. |
This is true if you're connecting to the internet through an old browser. Not true if network-facing code is limited to a secure subset, or in my case, if the device never connects to the internet. I have an old Windows 7 machine for my live music performance that never connects to the internet (I learned my lesson after an automatic update broke USB). I transfer files manually via USB and I keep an old version of Zig to compile my Zig code on the device. This is a self-contained system that I consider "finished" aside from any new Zig programs I might want to write for it in the future. It will never be updated and will run with it's current OS until the hardware fails or I do :) That being said I don't expect Zig to support Windows 7 moving forward. I think support for older versions of Windows and other less-popular platforms can/should be maintained by the community. I think the best things Zig can do is help direct/guide people to those community spaces that would maintain these things and also keep these use cases in mind to help make it easy to plug in and integrate support for these kinds of system. |
Contributions to handle OS versions below the minimum supported version are welcome, provided that they are non-invasive: minimal impact on the maintenance cost of the standard library, and no impact on the runtime properties of compiled code that has the OS minimum version set to exclude the old versions. The Windows 8.1 page size check thing seems fine to me. Why would you depend on a new API to learn the page size anyway, that should be a super old API. Please don't accuse each other of being offensive or irresponsible, it's off topic. |
Would you say that 4e5068c actually went too far then? For example, while fallbacks for lack of |
This comment was marked as off-topic.
This comment was marked as off-topic.
Here's my nickel to add to the justification box: the ability to build applications with a guarantee of launching (not running! - this is a programmer's headache) on older systems would be a killer feature and a serious claim to the status of a language that competes directly with C in this regard (Rust? what Rust? 🤭). The point here is not about supporting outdated systems (although being able to write an application compatible with the entire Windows line would also be cool), but about ensuring that the system requirements of the application shall not increase with the compiler version. Because this is regression, not progress. Now it is effectively impossible for customers to write system applications with long-term support even as a special paid option, because each new version of the compiler may simply force a further choice: either the client's desires or language improvements. That being said, it would be great to have a non-monolithic standard library in Zig, where each imported system function would specify the minimum target system version that is suitable for it to be used. The ability to specify a minimum required system version during compilation, resulting in errors if a function from a newer one was accidentally used, would solve the compatibility problem completely and would not require any additional investment. If I'm not the only one who likes this idea, then I suppose this issue could be dedicated to it. Keep in mind that Windows 10 will reach end-of-life in October 2025, and that's Not Fun (at all). |
Today I realized that
zig build
no longer works on Windows 7. The standard library is now using features that were not introduced until Windows 8. Microsoft has officially dropped Windows 7 support earlier this year (2020), however, according to some "googling", Windows 7 appears to hold a desktop share of 18%. Because of issues with Windows 10, many users continue to use this older version of the OS. I propose that because of it's apparent high market share, Zig continues to officially support Windows 7.Windows 7 market share has been steadily declining over the years. Windows 10 finally overtook it around the beginning of 2018. Based on these numbers, Windows 7 will probably drop it's usage into the single digits sometime in 2022. Based on these estimates, extending support until 2022 could be a reasonable cut-off date.
The text was updated successfully, but these errors were encountered: