Code rot is a misnomer. Code doesn't usually change itself. What happens is some idiot wants to make things 'better' and doesn't consider how their changes might affect other software that depends on how the legacy code worked. I was spoiled. When I started as a programmer in NYC, the VP that hired me had been with the company since it's founding 20 years earlier. Some of his code continued to work since that founding despite many generations of hardware upgrades (Univac mainframes that were code compatible with IBM mainframes.)
So when I got a copy of the first Euphoria program I wrote (it's awful, but it worked then) from an online archive, because I wanted to grab some functionality I'd written in it, I expected it to run. Which it didn't of course. Dependencies had been altered. This is one of the reasons I may write my own language and IDE. First, because I can control it over the years and second, because the tools to make coding fun in my terms just don't exist (I've been waiting so long I'm now officially obsolete.) Today I found FASM has an IDE and source (windows defender wouldn't let me download it. So I bypassed it. Test compiles work.) I don't know if I'll use FASM, GAS or some other assembler (bought MASM about 30 years ago. I bought Lattice C around the same time.) I'm not an assembly programmer and the references I've found are inconsistent and full of holes, but I think that's how I must move forward. Eventually I'll write the new language in itself and having a machine language version will give me something with which to compare it.
PowerBASIC, another compiler I bought years ago, has some good reference material I'm going through. Ironically, in order to have just one language to write my code in I have to have an understanding of half a dozen others! Back in the 80s I remember asking myself, in order to do this thing in dBase, how would I do it in 6502 assembler? That worked! The 6502 was such a sweet cpu to write code for. I wrote an assembler/disassembler for it in BASIC which got me my first programming job in NYC (writing BAL on that Univac.)
Coding can be such a pain. Not figuring out algorithms (that's the fun part) but getting all the plumbing right without good references. I just know that once I've got things working user32.dll and gdi32.dll will disappear breaking my code again. That will not affect my Linux version of course. I will have only one file different between the two versions.