Rust9x: Compile Rust code for Windows 95, NT and above

Discuss on Reddit, URLO, HN

tl;dr: see the project wiki on Github: rust9x/rust

You might remember my old post about the journey to get at least a bit of Rust code working for Windows 98 SE. Well, I'm back, this time with a more ambitious package:

Announcing Rust9x (Rust 1.61.0-beta) (link)

Blazingly fast! Y2k compliant! Works everywhere!

Over on Github you'll find a forked Rust repository containing two new targets, i586-rust9x-windows-msvc and i686-rust9x-windows-msvc, as well as all the necessary changes to support most of what the Rust standard library offers, on all* 32-bit Windows versions, including Windows 95, 98, Me, NT 3.51, NT 4.0, 2000, XP and Vista.

* NT 3.1 and 3.5 were not tested (yet).

Please have a look at the wiki for information on how to set up and use the toolchain if you so desire, and if you'd like to have a look under the hood, have a look at the commits themselves, which have some additional information about the changes, both in code and in the commit messages.

Do note that this is just a side project I've done for fun; I'll probably not keep it up to date with upstream all the time.

If you have any questions, encounter issues (there surely are lots of them left) or would like to join the project, feel free to contact me via the links in the footer, and/or create an issue in the repositories. Thanks! <3

Extremely simple file downloader using ureq and clap (link)

This is a quick toy program I've whipped up to show some actual code/crates running. It uses clap for command line parsing and ureq to do the request.

TLS is supported via rustls starting from Windows XP, as its dependency ring needs RtlGenRandom. I haven't looked into it too much, but from what I could tell, this should be the only additional API dependency, so by falling back to another way of getting randomness (probably compromising security in the process :)) this should work all the way down to Windows 95/NT 4.0 as well.

With TLS support on Windows XP SP3 (real hardware):

Without TLS support on Windows 95 B (real hardware):

Sample program (link)

Windows NT 3.51 (VM):

This one is missing the network tests as NT 3.51 and earlier never got WinSock 2 support.

Windows 95 B (real hardware):

Windows XP (real hardware):

Windows 11 (real hardware):