-
Notifications
You must be signed in to change notification settings - Fork 10
Home
Blazingly fast! Y2K compliant!
Rust9x brings most of the Rust standard library to all 32-bit Windows versions. Currently, it is based on Rust 1.61.0-beta.
Depending on how far back you'd like to go, there are lots of limitations to keep in mind. Have a read!
Please note that this is not stable software at all. Only minimal testing has been done - please feel free to file issues or PRs if you're crazy enough to test this :)
In general, any platform libraries/SDKs that has .lib
files that are compatible with the modern MSVC toolsets' linkers should be fine.
Most of the testing happened with the VC7.1 toolset (Visual C++ 2003), as that is the last version to officially support Windows 95. Way earlier in the project I've tested VC6 (Visual C++ 6.0 SP6), which also worked somewhat fine after adding unicows.lib
from a later toolset/platform SDK.
Note that panic unwinding needs at least the VC8 (Visual C++ 2005) libraries. If you know why/find a fix, please submit a PR!
As Rust follows Unicode Everywhere, a compatible unicows.lib
has to be linked in order to enable support for W
ide APIs on these systems. See the sample application on how to do this correctly - the README.md
, justfile
and the .cargo/config.toml
all have information/comments inside!
The last unicows.lib
version that supports all systems is from "Microsoft Platform SDK February 2003" (download link on Wikipedia)
Same thing as 9x/ME, but you can skip the lines regarding unicows.lib
.
A dependency-less Rust9x executable has the following minimum requirements:
- Windows 95 or Windows NT 3.1*
- * I've only tested Windows 95 and up, and NT 3.51 and up, though there should not be any static API dependencies left to prevent earlier NT versions from running. Just make sure to lower the subsystem version to
3.10
(not3.1
) if you'd like to target NT 3.1 or 3.5. - Windows 95 needs the "net" packages installed (
mpr.dll
) as the Microsoft Layer for Unicode requires this. - Make sure to link against an MSVC toolset that is compatible with your target system. If you're linking the CRT dynamically, keep in mind that you might have to provide the runtime DLLs as well.
- * I've only tested Windows 95 and up, and NT 3.51 and up, though there should not be any static API dependencies left to prevent earlier NT versions from running. Just make sure to lower the subsystem version to
- If network API is used: Windows 95 with WinSock 2 update or Windows NT 4.0 (Microsoft never released WS2 for 3.51 or earlier)
- For 9x/ME: As Rust follows Unicode Everywhere, the Microsoft Layer for Unicode runtime DLL
unicows.dll
has to be supplied alongside the executable.
While the executable and Rust standard library mostly work fine, there are some APIs are not available on older Windows versions - see the Limitations page for all the details.