39 comments

  • vbezhenar 5 hours ago

    I wish more languages support old platforms. I'm working in a company and a lot of our customers are running Windows 7 and 8, few of them running Vista. I have to use ancient versions of development tools to target those. For example stuck on Java 8 for eternity. It's PITA.

    • Fulgen 2 hours ago

      The problem is, as usual, that some people want that support, but nobody is actually interested in helping out with that support - and that doesn't only include people willing to help out with the code, it includes things like CI. Just how the riscv targets won't be able to reach tier 1 without GH or someone else offering CI support.

      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)

      • duskdozer an hour ago

        I do wonder how much support is removed because of genuine maintenance or compatibility burden, because I've encountered enough examples where it was done solely because some target was deemed "too old" arbitrarily, even if it would still work without any modifications.

        • s1mplicissimus 31 minutes ago

          > even if it would still work without any modifications

          even in this case, maintenance burden is still real. supporting the old target often prevents you from using features/tools that make maintenance easier

    • archargelod 3 hours ago

      Languages that compile to C (e.g. Nim) are great on older systems. If a system has a working C compiler (or cross-compiler), there’s a good chance that it’ll just work.

      I’ve myself compiled Nim on Windows 7, Windows XP, and Haiku, and have run simple Nim programs on the C64 and GameBoy Advance.

    • asimovDev 4 hours ago

      seeing Windows 8 called old really did some psychic damage to me. If it's not a secret, what kind of customers do you have? Is it some industrial stuff as usual?

      • 1718627440 an hour ago

        Isn't Windows 8 even the same major version/generation of the OS, as the current versions?

      • vbezhenar 3 hours ago

        Medicine. I'm living in third world country and probably they don't have enough money to upgrade often, they just install something and work with it for many years. Works for them, I guess, I often see computers with 2-4 GB RAM and some ancient Celeron.

        • dijit 3 hours ago

          Not to be glib, but medical equipment in the first world is the same.

    • david_wpg 3 hours ago

      Use Temurin Java 8 JDK/JRE. It's designed to be 1:1 compatible with Oracle Java.

    • vips7L 4 hours ago

      I’m a huge Java fan, modern versions are amazing, but being stuck on 8 is the only time I’d recommend just using Kotlin or Scala and compiling to v8 byte code. 8 is just a miserable experience.

      • tapete2 3 hours ago

        Do you happen to know some good learning resources (books, etc.) for modern Java versions?

        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.

    • grishka 3 hours ago

      The way some language runtimes have dropped support for Windows 7 feels outright malicious.

      • krior 3 hours ago

        Malicious? Thats a heavy accusation.

      • Ygg2 44 minutes ago

        Malicious? It's almost 20 years old (it will be in 2029).

    • userbinator 4 hours ago

      It's not hard to do either, especially on Windows where backwards-compatibility is almost completely guaranteed.

      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.

      • carstenhag 2 hours ago

        I really hate my bakery, the buns are only edible for some days, after that, they grow mold!

        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.

        • duskdozer an hour ago

          I think it's more like your gen1 wi-fi enabled Philips screwdriver stops working because it's EOL as opposed to because nobody uses Philps screws anymore. Sometimes it's the latter, but not always.

    • BiteCode_dev 2 hours ago

      The question is how much are people willing to pay for this trouble. Usually industries that stick to very old system did so because they didn't want to invest resources in the migration.

  • sanxiyn 5 hours ago

    An interesting bit of history: for a long time Rust maintained first party support for Windows XP, after other parts of ecosystem generally gave up. This was because Firefox needed it.

    https://github.com/rust-lang/compiler-team/issues/378 (major change proposal to drop Windows XP support) notes this history and links to other relevant pages.

  • arka2147483647 an hour ago

    For someone who is not a rust programmer, but would like to keep up to date, can somebody tell me what "Tier 4" is. And why must it be quoted?

    • chiffaa an hour ago

      Rust has 3 "platform support" tiers (effectively - guaranteed to work, guaranteed to build, supposed to work). However, these are (obviously) defined only for some of the target triples. This project defines "Tier-4" (which is normally not a thing) unstable support for Windows Vista-and-prior

    • the8472 an hour ago

      tiers 1-3 are policies[0] for in-tree targets, so by saying tier 4 they mean one implemented in a fork. Though that kind of skips over targets that can get away with just a custom target spec[1] and not modifying the source.

      [0] https://doc.rust-lang.org/beta/rustc/target-tier-policy.html [1] https://doc.rust-lang.org/rustc/targets/custom.html

    • rwaksmunski an hour ago

      Tier 3 is max official

  • zozbot234 2 hours ago

    This target might become more viable in the future as Stable Rust adds options to rebuild libstd with custom features as part of building a project.

  • self_awareness 3 hours ago

    And unofficial "Tier 5" Rust Target is... for Commodore-64:

    https://github.com/mrk-its/rust-mos

    It works, and builds binaries that are ready to be executed by Vice emulator.

  • fithisux 4 hours ago

    I think this is valueable for efforts like Reactos.

  • umanwizard 5 hours ago

    The idea of running Rust code on Windows 95 is very funny to me. Two completely different universes colliding.

  • NooneAtAll3 4 hours ago

    considering the all-insistence of rust on using internet for all the libraries, this doesn't seem like a good idea...

    • sanxiyn 4 hours ago

      With cargo --offline, Rust has better than average support for offline build.

    • gspr 3 hours ago

      What insistence? I do 99% of my Rust development with this ~/.cargo/config.toml:

        [net]
        offline = true
        
        [source]
        
        [source.crates-io]
        replace-with = "debian"
        
        [source.debian]
        directory = "/usr/share/cargo/registry"
      
      Works great.
    • josephg 4 hours ago

      What do you mean? Cargo downloads packages from the internet by default programs do exactly what they’re programmed to do. No more and no less.

      Just because you’re targeting windows xp doesn’t mean you need to run windows xp to do development.