### High priority tasks - [ ] Either make `kind=static-nobundle` stable, or change `kind=static` to behave like `kind=static-nobundle`. - [ ] Add support for linking the debug CRT. - [ ] Handle linking in a manifest. https://github.com/rust-lang/rust/issues/11207 - [ ] Support linking to object files, and resource files. https://github.com/rust-lang/rfcs/pull/1489 - [ ] Allow rustc to emit idata sections instead of depending on import libraries. https://github.com/rust-lang/rust/issues/30027 - [ ] Mechanism for dealing with Structured Exception Handling. https://github.com/rust-lang/rust/issues/38963 - [ ] Improve handle inheritance when spawning processes. https://github.com/rust-lang/rust/issues/38227 - [ ] Make `env_clear` actually work. https://github.com/rust-lang/rust/issues/31259 - [ ] Stop messing up console handling. https://github.com/rust-lang/cargo/issues/4722 https://github.com/Stebalien/term/issues/62 ### Lower priority tasks - [ ] Improve the quality of PDB debug info. https://github.com/Microsoft/microsoft-pdb - [ ] Support inter-crate `dllimport` properly, or just get rid of the `dylib` crate type. https://github.com/rust-lang/rust/issues/27438 - [ ] Fix library creation so that libraries compiled by `cl` with `/GL` can be linked properly. Or just stop `kind=static` from bundling. https://github.com/rust-lang/rust/issues/26003 - [ ] Improve the location of metadata for DLLs. https://github.com/rust-lang/rust/issues/29511 - [ ] Removed unused import libraries in the `-msvc` distribution. https://github.com/rust-lang/rust/issues/31816 - [ ] Support the calling convention for methods, which is different than the calling convention for functions. https://github.com/rust-lang/rfcs/issues/1342 - [ ] Provide an option to choose the target NT version. - [ ] Support targeting drivers. - [ ] Support targeting store apps. - [ ] Deprecate the old makefiles. run-make is still hanging around. - [ ] Use the correct extension for msvc object files. https://github.com/rust-lang/rust/issues/37207 - [ ] Make cross compilation to Windows, or between Windows architectures easier. - [ ] Make MinGW static libraries use the correct extension. https://github.com/rust-lang/rust/issues/43749 - [ ] Make `Command` work better. https://github.com/rust-lang/rust/issues/37519 - [ ] Automatic long path handling. https://github.com/rust-lang/rust/issues/32689 - [ ] Add way to re-export C symbols. https://github.com/rust-lang/rust/issues/36342 ### Completed tasks - [x] Support linking to system static libraries. https://github.com/rust-lang/rust/pull/38426 - [x] Add support for statically linking the CRT. https://github.com/rust-lang/libc/issues/290 https://github.com/rust-lang/rfcs/pull/1684 https://github.com/rust-lang/rfcs/pull/1721 - [x] Provide an option to choose the subsystem. https://github.com/rust-lang/rfcs/pull/1665 - [x] Support FFI `dllimport` properly. https://github.com/rust-lang/rfcs/pull/1717 - [x] Variable and type information in PDB debug info. - [x] Support `dllexport`. https://github.com/rust-lang/rust/issues/7196 - [x] Emit PDB debug info on msvc. https://github.com/rust-lang/rust/issues/19533 - [x] Get rid of the dependency on `libgcc` and use native/llvm unwinding stuff. - [x] Teach `librustc_back` how to invoke `link.exe`. - [x] Add code to figure out where MSVC and the Windows SDK is installed. - [x] Upgrade the Rust build system to be able to build code using the MSVC toolchain rather than the GNU toolchain. - [x] Add code so that the Rust standard library can be built using only APIs available on XP or Vista. https://github.com/rust-lang/rust/issues/12842 - [x] Do all IO using WinAPI rather than libc, since libc is just a layer of overhead on top of WinAPI anyway. - [x] Fix the naming of static libraries. https://github.com/rust-lang/rust/issues/29508 - [x] Eliminate dependency on gcc for building compiler-rt for msvc targets. - [x] Implement unwinding https://github.com/rust-lang/rust/issues/25869 - [x] Make it easy to install multiple targets. Handled by rustup.rs. - [x] Upload Rust docs for Windows to the website, so it isn't just linux docs up there. https://github.com/rust-lang/rust/issues/24658 - [x] Provide fallback implementations to missing APIs on XP/Vista so that code will still run correctly and not panic. https://github.com/rust-lang/rust/issues/26654 - [x] Make ASLR work on mingw. https://github.com/rust-lang/rust/issues/16514 https://github.com/rust-lang/rust/issues/16593 ### Wishlist - [ ] Use `lld` for cross compilation to Windows with a new pure Rust target without any CRT bits at all. https://github.com/rust-lang/rust/issues/9367 ### Related links - [ ] Make `Command` behave better. https://github.com/rust-lang/rust/issues/37519 https://github.com/rust-lang/rust/issues/1768
High priority tasks
kind=static-nobundlestable, or changekind=staticto behave likekind=static-nobundle.env_clearactually work.env_cleardoes not work on Windows rust#31259Lower priority tasks
dllimportproperly, or just get rid of thedylibcrate type. Correctly handle dllimport on Windows rust#27438clwith/GLcan be linked properly. Or just stopkind=staticfrom bundling. MSVC: support LTCG native libraries in rlibs rust#26003-msvcdistribution.-msvcdistribution has unused import libraries rust#31816Commandwork better. Command::spawn has weird rules for finding binaries on Windows rust#37519\\?\where needed on Windows rust#32689Completed tasks
dllimportproperly. Use #[link(kind)] to fix imports from native libs on Windows #1717dllexport. Add support for DllExport on Windows rust#7196libgccand use native/llvm unwinding stuff.librustc_backhow to invokelink.exe.Wishlist
lldfor cross compilation to Windows with a new pure Rust target without any CRT bits at all. migrate to the LLVM toolchain rust#9367Related links
Commandbehave better. Command::spawn has weird rules for finding binaries on Windows rust#37519rust-lang/rust#1768