Could this be upstreamed to Rust proper, at least as a no_std (core+alloc only) target (given the known quirks in std support)? The requirements for the lowest level of support ("tier 3") seem like they would allow this.
For 95 you'll need to go down to VS2003, which breaks unwinding (but panic = abort works fine).
If you want unwinding on 95 you need to patch out the IsDebuggerPresent function import from the 2005 msvc runtime still, yeah.
Great work!