Rust's target tiers, while historically not as enforced as they are today, have requirements attached to them that each target has to fulfill; demoting a target or removing support isn't done for fun, but because of what the reality reflects. In Windows 7's case, support from the Tier 1 Windows target was not so much removed as it was acknowledged that the support guaranteees just didn't exist - host tools had long been dead with LLVM having removed support for running on Windows 7, and tier 1 support wasn't guaranteed without any CI to test it on. Thus support was removed, and very soon contributors popped up to maintain the win7 target which is tier 3 and accurately reflects the support gurantees of that target.
(Not a jab at your situation btw, and I wish I could offer you a solution beyond the win7 target - but as it's essentially the preexisting Windows 7 support extracted into a target that matched its reality, it works quite well in practice)
even in this case, maintenance burden is still real. supporting the old target often prevents you from using features/tools that make maintenance easier
InstallShield is....massive crapware and actually generated 16 bit installers way way after anyone was using 16bit PCs. Nobody notices until, I think it was W8 or W10 dropped support for running 16bit executables (something about dropping the subsystem that supported them.
https://devblogs.microsoft.com/oldnewthing/20131031-00/?p=27...
Windows actually has some special cased support for (at least some of) the problematic 16 bit InstallShield installers to run a 32 bit version instead on AMD64.
Nope, that would be Windows 11! There is a 32-bit version of Windows 10.
If anything, I quite like the way Rust handles it with target tiers and easy switching between targets, because it's an honest approach about how well a target is supported. Having a win7 target that is tier 3 is a reflection of the support it has, and much better than stringing it along in the main Windows target that promises tested support when there isn't even a Windows 7 CI to test on.
I’ve myself compiled Nim on Windows 7, Windows XP, and Haiku, and have run simple Nim programs on the C64 and GameBoy Advance.
I'm not aware of any working LLVM solution? All I know is that LLVM supports MC680x0 as a backend, can spit out 68k-but-non-amiga-objects and some brave souls have trying to use vlink or mold to produce Amiga executables. Have you seen any working LLVM-based Amiga (680x0 in hunk format) cross-compilers in the wild?
Never used Nim before so I might be doing something wrong though.
I wish retro Amiga had Rust support. I've briefly skimmed what would be necessary to do, based on the rust-mos (Rust for commodore-64 fork), but I'm too weak in LLVM internals to actually do it.
With Nim on weird targets you usually want:
- OS target = any
- Memory Management = ARC
- malloc instead of default Nim allocator
- turn off signal handler (if not POSIX)
- disable threads (most of the time)
Then look at how C is compiled and copy all compiler+linker flags to your Nim configuration. Here's an absolute minimal `config.nims` I used to compile Nim for C64 with LLVM-MOS[1] toolchain:
import std/strutils
--cc:clang
--clang.exe:"mos-c64-clang"
--os:any
--cpu:avr
--mm:arc
--threads:off
--define:usemalloc
--define:noSignalHandler
let args = [
"-isystem $PWD/../mos-platform/c64/include",
"-I$PWD/../mos-platform/c64/asminc",
"-L$PWD/../mos-platform/c64/lib",
"-mlto-zp=110",
"-D__C64__",
"-isystem $PWD/../mos-platform/commodore/include",
"-I$PWD/../mos-platform/commodore/asminc",
"-L$PWD/../mos-platform/commodore/lib",
"-D__CBM__",
"-isystem $PWD/../mos-platform/common/include",
"-I$PWD/../mos-platform/common/asminc",
"-L$PWD/../mos-platform/common/lib",
"--target=mos",
"-flto",
"-Os",
].join(" ")
switch("passC", args)
switch("passL", args)
Nim side was easy, because I have already compiled Nim to WASM at that point and the flags are similar. Hard part was figuring out the C compiler flags: e.g. cmake structure and why compiler complains about missing symbols, when they're not missing (answer: include/lib order is very important).I know uh FreePascal targets everything including the Gameboy. But then Pascal isn't super modern or sexy unfortunately.
The vendor stopped supporting it (they technically still did, but would dodge replacing parts, etc.) so I eventually fixed some minor issues for her which turned out to just be software related.
A key thing is that the machine was not network attached.
If you try and switch out the host computer to something newer, the software may or may not work, but you will definitely fail your audits for changing software without the vendor's approval.
For their part, the vendor supports you buying the new version of their device for a few million quid and it now runs via USB attached to a Windows 10 computer running their proprietary software.
If that country happens to be Germany, it's to combat tax fraud.
The current governing coalition has come to an agreement that electronic cash registers will be mandatory starting in 2027, but that law hasn't been passed yet.
That can be the case, but there's also a lot of instance where it's not a matter of not wanting to invest, but that being stuck on an older system is the only option until a larger component also goes EOL or dies and cannot be repaired.
I see this all the time in manufacturing. User control interfaces that run on Windows XP or 2k. Machine is still great, can still get parts & repair it, but the software has long ago since stopped being supported. The manufacturer isn't going to spend 6 figures to replace a machine that hasn't fully depreciated yet.
In these instances, you just air gap it off and you're fine.
People need to upgrade. I'm surprised any machine running Vista could even use the modern web.
Somewhere out there is a Windows 98 machine controlling an industrial machine that will out live early posters on HN.
Of course those in the planned obsolescence mindset would fight hard against it, because then it would be harder for us to take the good without the bad.
Without sarcasm, it is entirely reasonable that when the OS is EOL by the 1st party, software support for it by 3rd party also ends soon after that.
Bugs and vulnerabilities are always being found, with fewer and fewer people in the pool that might even theoretically want to pay for fixing them.
Also, hardware does deteriorate, and the story is the same for adding software support for whatever is currently available in hardware.
none which haven't been there from the beginning
My last job used Java 8 exclusively and it was indeed a miserable experience, but I am contemplating using modern java for my next project.
Other than that, I think we’re all waiting for Josh Bloch to put out Effective Java 4th edition.
The main benefits of the post-8 world that I would look into learning are: pattern matching and destructuring, sealed (sum) types, records, and switch expressions.
In the library/framework space I think learning about quarkus, microprofile, and jakarta data would be valuable. It’s looking like that’s the future of Java on the server.
Less important things to learn about would probably be runtime changes like virtual threads, ZGC, or the AOT cache stuff coming out of project Leyden. Long term things to keep an eye on are value classes if we ever get them.
Defining better OS is almost as complicated as defining better philosophy. Somebody is leftist, somebody is rightist you know what I mean. When you see what's better usually you can not unseen it.
For me Woedows 7 can give:
1. years of uptime (still with regular browsing! and with using S-states!);
2. native support of god-like NTFS, all my personal backups has it;
3. better support on laptops, for example just try to ditch the UnneededD (Devuan) and you are going to say buy-buy to predictabrle S-states, stable USB performance when using multiple devices and who knows what else;
4. the best battery time among all the market;
5. some old hardware like ATI videocard can not be run on modern kernell, also some old hardware like my digital oscilloscope, my friend's digital syntheiser - all of that makes me not just use but love he Bill Gate's crap. You don't even tied to any version of your appreciated Debian.
6. A lot of industry-best software at least requires me to have Wine. Foobar as the best audio player, STDU as the best book reader, Viktoria as the best HDD tester etc. I have a terabyte of music, hundreds gigs of books and dozens of external disk drives, consuming all of that is my typical non-work activity.
7. I also still use it for my daily job which involves using Internets. No viruces gotten, no unexpected behaviour observed, just working.
You can have Linux and waste your time, and then stuff updates and Linux breaks. You can have MacOS and lock yourself into a padded Mac themed cell, for five years, then you have to upgrade or stuff will stop working (I'm on Intel Mac, less and less stuff works each day).
---
As for your question.
Short: Blame capitalism and its current setup.
Long: MSFT needs to beat the inflation; otherwise, it's falling behind. And because Windows is no longer growing, you can't really do anything other than rent extraction. It's reached saturation point, which means that money needs to be extracted in some other ways - via ads, via upselling (buy an Xbox 365 subscription), via selling data, etc.