Minimum Windows version for Octave

We are currently targeting the Windows API of Windows NT 4.0 SP3. That
version’s lifecycle ended in January 1999 (22 years ago!). [1]

Some win32 functions we are (optionally) using are not available with that target API. To work around that and to possibly allow using these functions on Windows versions where they are available, we currently use LoadLibrary and GetProcAddress on runtime (instead of linking the respective libraries directly). That leads to less efficient and more fragile code.

Additionally, gnulib uses different (maybe more efficient?) functions depending on the target Windows version, IIUC.

It was previously reported that some of the dependencies we build with MXE Octave (Qt IIRC) no longer run on Windows XP and older.

Would it be ok to increase the Windows API version we target in Octave to Windows 7?
The support by MS for that version of Windows ended in January 2020 [2]. But it still seems to be used by a considerable share (18% as of December 2020 [3]).

The newest Windows version that we wouldn’t support any longer after that change would be Windows Vista for which the support ended in April 2017. [4]
That version seems to have a very low share in the meantime (below 0.5% according to the same statistics).

See also bug #57270 where this came up before.

[1]: Search product lifecycle (microsoft.com)
[2]: Windows 7 support ended on January 14, 2020 (microsoft.com)
[3]: Desktop Windows Version Market Share Worldwide | StatCounter Global Stats
[4]: Windows Vista support has ended (microsoft.com)

It feels to me like we should at least support operating systems that are 6 years old, and a decade would be nice. After all, for the C++ compiler we still only require C++11 features and that is a decade old now.

This would be the case for MS Windows Vista:

  • General availability: January 30, 2007; 13 years ago
  • Mainstream support ended on April 10, 2012; 8 years ago
  • Extended support ended on April 11, 2017; 3 years ago

The “extended support” is an extra paid program for specialized machines running particular legacy systems. I do not think those machines will be considered for running up-to-date Octave versions :thinking: And if yes, the owner might have some money left to pay @jwe or others to create a compatible build :innocent:

From my side, please go ahead @mmuetzel :+1:

Like @siko1056 pointed out, Windows Vista will be 14 years old next week. (Kai, it’s 2021 now! :wink: )
When comparing to a standardized dialect version of C++, we’d probably be comparing the “release” dates.

I don’t now if there is something like an “end of lifetime” for the standardized C++ language dialects. And in contrast to an OS that no longer receives security updates, using an older language standard doesn’t automatically correspond to immediate software security threads.

But still, I agree that writing “easier” code is no hard argument against potentially locking out some host systems. I guess, I’ll wait for an additional vote to tip the scale in one or the other direction.

8 years is beyond what I care about. Fine with me if we drop support for Windows Vista.

I opened a report to track this on savannah:
GNU Octave - Bugs: bug #60014, Increase minimum version of… [Savannah]

1 Like