Help test out ThinLTO!

@alexcrichton Will do.

Here are the results for rust-belt, a Piston game, on macOS (with cargo cleans in between).

Specs: Macbook Pro i7-4980HQ (4 core / 8 thread) CPU @ 2.80GHz with SSD

$ time cargo +nightly build --release
real	1m37.498s
user	5m45.737s
sys	0m15.276s

$ RUSTFLAGS="-C codegen-units=16 -Z thinlto" time cargo +nightly build --release
99.09 real       527.33 user        17.32 sys

If I’m reading that correctly, the compile time slowed down about 1% when ThinLTO was enabled.

panopticon which has pretty horrible compile times:

RUSTFLAGS='-C codegen-units=16 -Z thinlto' cargo +nightly build --release
Finished release [optimized] target(s) in 408.28 secs
Finished release [optimized] target(s) in 344.5 secs

cargo +nightly build --release
Finished release [optimized] target(s) in 599.45 secs

cargo bench
running 2 tests
test disassemble_static_amd64_elf_new ... bench: 5,211,118,293 ns/iter (+/- 109,697,682)
test disassemble_static_amd64_elf_old ... bench: 16,908,245,920 ns/iter (+/- 613,322,513)

RUSTFLAGS='-C codegen-units=16 -Z thinlto' cargo +nightly bench
running 2 tests
test disassemble_static_amd64_elf_new ... bench: 2,973,503,415 ns/iter (+/- 218,444,217)
test disassemble_static_amd64_elf_old ... bench: 6,114,065,079 ns/iter (+/- 521,222,947)

I’d be amazed if the bench was that affected; i will try on more realistic thing i have some numbers and report back difference; otherwise, looks like really great work, congrats! can’t wait till this is in stable :slight_smile:

Is there a little to win by using more threads? I see that even if we have 16 codegen units, the default number of threads are still used (for example 8 threads with 4 cores times 2 for HT).

What I can see there are some small gains in bumping the number of threads from for example 8 to 16 for me, −4-5% compile time with a release build and thinlto.

Right now there’s no programmatic way to specify “use this many threads”, but rather you control this by creating a jobserver with more tokens available. For example you can emulate this with cargo build -j30 (allow up to 30 threads) or invoke rustc from a Makefile and then use make -j30

Just tested servo build from scratch. Rustc 2017-10-13-alt (default for servo master at that time)

RUSTFLAGS='-C codegen-units=16 -Z thinlto' ./mach build --release
Finished release [optimized] target(s) in 448.72 secs

./mach build --release
Finished release [optimized] target(s) in 1082.6 secs

Don’t really know how to test the performance in deterministic way, but quick internal profiling showed no major difference for few sites I’ve checked. Great work!

The setup: Ryzen 7 1700 @ 3.5GHz + mid level SATA SSD.

5 Likes

Thanks again everyone for helping to fill out the data points here! I’ve opened a tracking issue for turning this on by default.

1 Like

When I try to build rustfmt-nightly on Windows, I see the following errors:

$ RUSTFLAGS='-C codegen-units=16 -Z thinlto' cargo install -f rustfmt-nightly
...
error: linking with `link.exe` failed: exit code: 1120
  |
  = note: "C:\\Program Files (x86)\\Microsoft Visual Studio 14.0\\VC\\bin\\amd64\\link.exe" "/NOLOGO" "/NXCOMPAT" "/LIBPATH:C:\\Users\\kraaimx\\.rustup\\toolchains\\nightly-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib" "C:\\Users\\kraaimx\\AppData\\Local\\Temp\\cargo-install.beHFxoQpmU4p\\release\\deps\\rustfmt_format_diff-665ff9c52abd2b17.rustfmt_format_diff0-410b502370b6420c192b8d5aff46dc00-exe.rs.rust-cgu.o" "C:\\Users\\kraaimx\\AppData\\Local\\Temp\\cargo-install.beHFxoQpmU4p\\release\\deps\\rustfmt_format_diff-665ff9c52abd2b17.rustfmt_format_diff1-410b502370b6420c192b8d5aff46dc00-exe.rs.rust-cgu.o" "C:\\Users\\kraaimx\\AppData\\Local\\Temp\\cargo-install.beHFxoQpmU4p\\release\\deps\\rustfmt_format_diff-665ff9c52abd2b17.rustfmt_format_diff10-410b502370b6420c192b8d5aff46dc00-exe.rs.rust-cgu.o" "C:\\Users\\kraaimx\\AppData\\Local\\Temp\\cargo-install.beHFxoQpmU4p\\release\\deps\\rustfmt_format_diff-665ff9c52abd2b17.rustfmt_format_diff11-410b502370b6420c192b8d5aff46dc00-exe.rs.rust-cgu.o" "C:\\Users\\kraaimx\\AppData\\Local\\Temp\\cargo-install.beHFxoQpmU4p\\release\\deps\\rustfmt_format_diff-665ff9c52abd2b17.rustfmt_format_diff12-410b502370b6420c192b8d5aff46dc00-exe.rs.rust-cgu.o" "C:\\Users\\kraaimx\\AppData\\Local\\Temp\\cargo-install.beHFxoQpmU4p\\release\\deps\\rustfmt_format_diff-665ff9c52abd2b17.rustfmt_format_diff13-410b502370b6420c192b8d5aff46dc00-exe.rs.rust-cgu.o" "C:\\Users\\kraaimx\\AppData\\Local\\Temp\\cargo-install.beHFxoQpmU4p\\release\\deps\\rustfmt_format_diff-665ff9c52abd2b17.rustfmt_format_diff14-410b502370b6420c192b8d5aff46dc00-exe.rs.rust-cgu.o" "C:\\Users\\kraaimx\\AppData\\Local\\Temp\\cargo-install.beHFxoQpmU4p\\release\\deps\\rustfmt_format_diff-665ff9c52abd2b17.rustfmt_format_diff15-410b502370b6420c192b8d5aff46dc00-exe.rs.rust-cgu.o" "C:\\Users\\kraaimx\\AppData\\Local\\Temp\\cargo-install.beHFxoQpmU4p\\release\\deps\\rustfmt_format_diff-665ff9c52abd2b17.rustfmt_format_diff2-410b502370b6420c192b8d5aff46dc00-exe.rs.rust-cgu.o" "C:\\Users\\kraaimx\\AppData\\Local\\Temp\\cargo-install.beHFxoQpmU4p\\release\\deps\\rustfmt_format_diff-665ff9c52abd2b17.rustfmt_format_diff3-410b502370b6420c192b8d5aff46dc00-exe.rs.rust-cgu.o" "C:\\Users\\kraaimx\\AppData\\Local\\Temp\\cargo-install.beHFxoQpmU4p\\release\\deps\\rustfmt_format_diff-665ff9c52abd2b17.rustfmt_format_diff4-410b502370b6420c192b8d5aff46dc00-exe.rs.rust-cgu.o" "C:\\Users\\kraaimx\\AppData\\Local\\Temp\\cargo-install.beHFxoQpmU4p\\release\\deps\\rustfmt_format_diff-665ff9c52abd2b17.rustfmt_format_diff5-410b502370b6420c192b8d5aff46dc00-exe.rs.rust-cgu.o" "C:\\Users\\kraaimx\\AppData\\Local\\Temp\\cargo-install.beHFxoQpmU4p\\release\\deps\\rustfmt_format_diff-665ff9c52abd2b17.rustfmt_format_diff6-410b502370b6420c192b8d5aff46dc00-exe.rs.rust-cgu.o" "C:\\Users\\kraaimx\\AppData\\Local\\Temp\\cargo-install.beHFxoQpmU4p\\release\\deps\\rustfmt_format_diff-665ff9c52abd2b17.rustfmt_format_diff7-410b502370b6420c192b8d5aff46dc00-exe.rs.rust-cgu.o" "C:\\Users\\kraaimx\\AppData\\Local\\Temp\\cargo-install.beHFxoQpmU4p\\release\\deps\\rustfmt_format_diff-665ff9c52abd2b17.rustfmt_format_diff8-410b502370b6420c192b8d5aff46dc00-exe.rs.rust-cgu.o" "C:\\Users\\kraaimx\\AppData\\Local\\Temp\\cargo-install.beHFxoQpmU4p\\release\\deps\\rustfmt_format_diff-665ff9c52abd2b17.rustfmt_format_diff9-410b502370b6420c192b8d5aff46dc00-exe.rs.rust-cgu.o" "/OUT:C:\\Users\\kraaimx\\AppData\\Local\\Temp\\cargo-install.beHFxoQpmU4p\\release\\deps\\rustfmt_format_diff-665ff9c52abd2b17.exe" "C:\\Users\\kraaimx\\AppData\\Local\\Temp\\cargo-install.beHFxoQpmU4p\\release\\deps\\rustfmt_format_diff-665ff9c52abd2b17.crate.allocator.rust-cgu.o" "/OPT:REF,ICF" "/DEBUG" "/NATVIS:C:\\Users\\kraaimx\\.rustup\\toolchains\\nightly-x86_64-pc-windows-msvc\\lib\\rustlib\\etc\\liballoc.natvis" "/NATVIS:C:\\Users\\kraaimx\\.rustup\\toolchains\\nightly-x86_64-pc-windows-msvc\\lib\\rustlib\\etc\\libcore.natvis" "/LIBPATH:C:\\Users\\kraaimx\\AppData\\Local\\Temp\\cargo-install.beHFxoQpmU4p\\release\\deps" "/LIBPATH:C:\\Users\\kraaimx\\.rustup\\toolchains\\nightly-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib" "C:\\Users\\kraaimx\\AppData\\Local\\Temp\\cargo-install.beHFxoQpmU4p\\release\\deps\\libserde_json-d6f13a424f690f05.rlib" "C:\\Users\\kraaimx\\AppData\\Local\\Temp\\cargo-install.beHFxoQpmU4p\\release\\deps\\libserde-03d2ab45d68301b0.rlib" "C:\\Users\\kraaimx\\AppData\\Local\\Temp\\cargo-install.beHFxoQpmU4p\\release\\deps\\libitoa-16ad17ea6e0a3e37.rlib" "C:\\Users\\kraaimx\\AppData\\Local\\Temp\\cargo-install.beHFxoQpmU4p\\release\\deps\\libenv_logger-23c12dd3db32e711.rlib" "C:\\Users\\kraaimx\\AppData\\Local\\Temp\\cargo-install.beHFxoQpmU4p\\release\\deps\\libregex-ce6eadb488da3be8.rlib" "C:\\Users\\kraaimx\\AppData\\Local\\Temp\\cargo-install.beHFxoQpmU4p\\release\\deps\\libutf8_ranges-81e13c39fa54ce55.rlib" "C:\\Users\\kraaimx\\AppData\\Local\\Temp\\cargo-install.beHFxoQpmU4p\\release\\deps\\libregex_syntax-d3ab202bb495a5a1.rlib" "C:\\Users\\kraaimx\\AppData\\Local\\Temp\\cargo-install.beHFxoQpmU4p\\release\\deps\\liblog-20bcf03dbfcee5bf.rlib" "C:\\Users\\kraaimx\\AppData\\Local\\Temp\\cargo-install.beHFxoQpmU4p\\release\\deps\\libaho_corasick-e63dd82e33ac83b9.rlib" "C:\\Users\\kraaimx\\AppData\\Local\\Temp\\cargo-install.beHFxoQpmU4p\\release\\deps\\libmemchr-f6f3d279a203349a.rlib" "C:\\Users\\kraaimx\\AppData\\Local\\Temp\\cargo-install.beHFxoQpmU4p\\release\\deps\\liblibc-ce7a7bbd7d5f44b2.rlib" "C:\\Users\\kraaimx\\AppData\\Local\\Temp\\cargo-install.beHFxoQpmU4p\\release\\deps\\libthread_local-95b9fe4362a15185.rlib" "C:\\Users\\kraaimx\\AppData\\Local\\Temp\\cargo-install.beHFxoQpmU4p\\release\\deps\\libunreachable-40635ee7b0f61d7d.rlib" "C:\\Users\\kraaimx\\AppData\\Local\\Temp\\cargo-install.beHFxoQpmU4p\\release\\deps\\libvoid-8549fb255bea2a3e.rlib" "C:\\Users\\kraaimx\\AppData\\Local\\Temp\\cargo-install.beHFxoQpmU4p\\release\\deps\\liblazy_static-3dc9379afa34801c.rlib" "C:\\Users\\kraaimx\\AppData\\Local\\Temp\\cargo-install.beHFxoQpmU4p\\release\\deps\\libgetopts-66c55bee9b5e6780.rlib" "C:\\Users\\kraaimx\\AppData\\Local\\Temp\\cargo-install.beHFxoQpmU4p\\release\\deps\\libnum_traits-4af6d1b6ec560609.rlib" "C:\\Users\\kraaimx\\AppData\\Local\\Temp\\cargo-install.beHFxoQpmU4p\\release\\deps\\libdtoa-3a57a19f7b214c97.rlib" "C:\\Users\\kraaimx\\.rustup\\toolchains\\nightly-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib\\libstd-2c973d468aa52913.rlib" "C:\\Users\\kraaimx\\.rustup\\toolchains\\nightly-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib\\libpanic_unwind-10dcb2bb73715353.rlib" "C:\\Users\\kraaimx\\.rustup\\toolchains\\nightly-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib\\libunwind-eac2a22c7ef68dc5.rlib" "C:\\Users\\kraaimx\\.rustup\\toolchains\\nightly-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib\\liblibc-6232007b55cca9f2.rlib" "C:\\Users\\kraaimx\\.rustup\\toolchains\\nightly-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib\\liballoc_system-968b8d6a8dcae5d4.rlib" "C:\\Users\\kraaimx\\.rustup\\toolchains\\nightly-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib\\liballoc-bba7ff6cfd33a952.rlib" "C:\\Users\\kraaimx\\.rustup\\toolchains\\nightly-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib\\libstd_unicode-6001d57e726caccd.rlib" "C:\\Users\\kraaimx\\.rustup\\toolchains\\nightly-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib\\librand-d98f06e2ac3721a9.rlib" "C:\\Users\\kraaimx\\.rustup\\toolchains\\nightly-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib\\libcore-15daeee4c05dda88.rlib" "C:\\Users\\kraaimx\\.rustup\\toolchains\\nightly-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib\\libcompiler_builtins-b02255a955089c1d.rlib" "advapi32.lib" "ws2_32.lib" "userenv.lib" "shell32.lib" "msvcrt.lib"
  = note: rustfmt_format_diff-665ff9c52abd2b17.rustfmt_format_diff15-410b502370b6420c192b8d5aff46dc00-exe.rs.rust-cgu.o : warning LNK4217: locally defined symbol _ZN10serde_json3ser6ESCAPE17hd6d5ef11338f308cE imported in function _ZN10serde_json3ser18format_escaped_str17hb1034a28c073c1d6E
          rustfmt_format_diff-665ff9c52abd2b17.rustfmt_format_diff15-410b502370b6420c192b8d5aff46dc00-exe.rs.rust-cgu.o : warning LNK4217: locally defined symbol _ZN10serde_json3ser9Formatter17write_char_escape10HEX_DIGITS17h9cc0dbf313088c5eE imported in function _ZN10serde_json3ser18format_escaped_str17hb1034a28c073c1d6E
          rustfmt_format_diff-665ff9c52abd2b17.rustfmt_format_diff6-410b502370b6420c192b8d5aff46dc00-exe.rs.rust-cgu.o : warning LNK4217: locally defined symbol _ZN3log20MAX_LOG_LEVEL_FILTER17h8aa4231d11f7c522E imported in function _ZN19rustfmt_format_diff4main17h4d7cea4d59181420E.llvm.9E2C9F95
          libenv_logger-23c12dd3db32e711.rlib(env_logger-23c12dd3db32e711.env_logger15-16b1a33c5508df059c2c23f55e5a374c.rs.rust-cgu.o) : warning LNK4217: locally defined symbol _ZN3log5STATE17h059fe72b70e84735E imported in function _ZN3log10set_logger17h7e86a88f68a8315bE
          libenv_logger-23c12dd3db32e711.rlib(env_logger-23c12dd3db32e711.env_logger15-16b1a33c5508df059c2c23f55e5a374c.rs.rust-cgu.o) : warning LNK4217: locally defined symbol _ZN3log6LOGGER17h186482a5b90c86f2E imported in function _ZN3log10set_logger17h7e86a88f68a8315bE
          libserde_json-d6f13a424f690f05.rlib(serde_json-d6f13a424f690f05.serde_json6-cc0a6a5e7790be5e30949fa3ed0fdce1.rs.rust-cgu.o) : error LNK2019: unresolved external symbol __imp__ZN4dtoa18CACHED_POWERS_F_6417h94f2f8d3bb7c5bceE referenced in function _ZN38_$LT$f64$u20$as$u20$dtoa..Floating$GT$5write17h86f0f1a7c2bfbad6E
          libserde_json-d6f13a424f690f05.rlib(serde_json-d6f13a424f690f05.serde_json6-cc0a6a5e7790be5e30949fa3ed0fdce1.rs.rust-cgu.o) : error LNK2019: unresolved external symbol __imp__ZN4dtoa18CACHED_POWERS_E_6417h987f9d329de16228E referenced in function _ZN38_$LT$f64$u20$as$u20$dtoa..Floating$GT$5write17h86f0f1a7c2bfbad6E
          libserde_json-d6f13a424f690f05.rlib(serde_json-d6f13a424f690f05.serde_json6-cc0a6a5e7790be5e30949fa3ed0fdce1.rs.rust-cgu.o) : error LNK2019: unresolved external symbol __imp__ZN38_$LT$f64$u20$as$u20$dtoa..Floating$GT$5write9digit_gen5POW1017hb4f7235eab3f1b8cE referenced in function _ZN38_$LT$f64$u20$as$u20$dtoa..Floating$GT$5write17h86f0f1a7c2bfbad6E
          libserde_json-d6f13a424f690f05.rlib(serde_json-d6f13a424f690f05.serde_json6-cc0a6a5e7790be5e30949fa3ed0fdce1.rs.rust-cgu.o) : error LNK2019: unresolved external symbol __imp__ZN4dtoa14DEC_DIGITS_LUT17h158d7d1c239d4220E referenced in function _ZN38_$LT$f64$u20$as$u20$dtoa..Floating$GT$5write17h86f0f1a7c2bfbad6E
          C:\Users\kraaimx\AppData\Local\Temp\cargo-install.beHFxoQpmU4p\release\deps\rustfmt_format_diff-665ff9c52abd2b17.exe : fatal error LNK1120: 4 unresolved externals


error: aborting due to previous error

error: Could not compile `rustfmt-nightly`.
warning: build failed, waiting for other jobs to finish...
error: linking with `link.exe` failed: exit code: 1120
  |
  = note: "C:\\Program Files (x86)\\Microsoft Visual Studio 14.0\\VC\\bin\\amd64\\link.exe" "/NOLOGO" "/NXCOMPAT" "/LIBPATH:C:\\Users\\kraaimx\\.rustup\\toolchains\\nightly-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib" "C:\\Users\\kraaimx\\AppData\\Local\\Temp\\cargo-install.beHFxoQpmU4p\\release\\deps\\cargo_fmt-8c2152180c5063ae.cargo_fmt0-4e57794fabe8fdbb8127420435be5acc-exe.rs.rust-cgu.o" "C:\\Users\\kraaimx\\AppData\\Local\\Temp\\cargo-install.beHFxoQpmU4p\\release\\deps\\cargo_fmt-8c2152180c5063ae.cargo_fmt1-4e57794fabe8fdbb8127420435be5acc-exe.rs.rust-cgu.o" "C:\\Users\\kraaimx\\AppData\\Local\\Temp\\cargo-install.beHFxoQpmU4p\\release\\deps\\cargo_fmt-8c2152180c5063ae.cargo_fmt10-4e57794fabe8fdbb8127420435be5acc-exe.rs.rust-cgu.o" "C:\\Users\\kraaimx\\AppData\\Local\\Temp\\cargo-install.beHFxoQpmU4p\\release\\deps\\cargo_fmt-8c2152180c5063ae.cargo_fmt11-4e57794fabe8fdbb8127420435be5acc-exe.rs.rust-cgu.o" "C:\\Users\\kraaimx\\AppData\\Local\\Temp\\cargo-install.beHFxoQpmU4p\\release\\deps\\cargo_fmt-8c2152180c5063ae.cargo_fmt12-4e57794fabe8fdbb8127420435be5acc-exe.rs.rust-cgu.o" "C:\\Users\\kraaimx\\AppData\\Local\\Temp\\cargo-install.beHFxoQpmU4p\\release\\deps\\cargo_fmt-8c2152180c5063ae.cargo_fmt13-4e57794fabe8fdbb8127420435be5acc-exe.rs.rust-cgu.o" "C:\\Users\\kraaimx\\AppData\\Local\\Temp\\cargo-install.beHFxoQpmU4p\\release\\deps\\cargo_fmt-8c2152180c5063ae.cargo_fmt14-4e57794fabe8fdbb8127420435be5acc-exe.rs.rust-cgu.o" "C:\\Users\\kraaimx\\AppData\\Local\\Temp\\cargo-install.beHFxoQpmU4p\\release\\deps\\cargo_fmt-8c2152180c5063ae.cargo_fmt15-4e57794fabe8fdbb8127420435be5acc-exe.rs.rust-cgu.o" "C:\\Users\\kraaimx\\AppData\\Local\\Temp\\cargo-install.beHFxoQpmU4p\\release\\deps\\cargo_fmt-8c2152180c5063ae.cargo_fmt2-4e57794fabe8fdbb8127420435be5acc-exe.rs.rust-cgu.o" "C:\\Users\\kraaimx\\AppData\\Local\\Temp\\cargo-install.beHFxoQpmU4p\\release\\deps\\cargo_fmt-8c2152180c5063ae.cargo_fmt3-4e57794fabe8fdbb8127420435be5acc-exe.rs.rust-cgu.o" "C:\\Users\\kraaimx\\AppData\\Local\\Temp\\cargo-install.beHFxoQpmU4p\\release\\deps\\cargo_fmt-8c2152180c5063ae.cargo_fmt4-4e57794fabe8fdbb8127420435be5acc-exe.rs.rust-cgu.o" "C:\\Users\\kraaimx\\AppData\\Local\\Temp\\cargo-install.beHFxoQpmU4p\\release\\deps\\cargo_fmt-8c2152180c5063ae.cargo_fmt5-4e57794fabe8fdbb8127420435be5acc-exe.rs.rust-cgu.o" "C:\\Users\\kraaimx\\AppData\\Local\\Temp\\cargo-install.beHFxoQpmU4p\\release\\deps\\cargo_fmt-8c2152180c5063ae.cargo_fmt6-4e57794fabe8fdbb8127420435be5acc-exe.rs.rust-cgu.o" "C:\\Users\\kraaimx\\AppData\\Local\\Temp\\cargo-install.beHFxoQpmU4p\\release\\deps\\cargo_fmt-8c2152180c5063ae.cargo_fmt7-4e57794fabe8fdbb8127420435be5acc-exe.rs.rust-cgu.o" "C:\\Users\\kraaimx\\AppData\\Local\\Temp\\cargo-install.beHFxoQpmU4p\\release\\deps\\cargo_fmt-8c2152180c5063ae.cargo_fmt8-4e57794fabe8fdbb8127420435be5acc-exe.rs.rust-cgu.o" "C:\\Users\\kraaimx\\AppData\\Local\\Temp\\cargo-install.beHFxoQpmU4p\\release\\deps\\cargo_fmt-8c2152180c5063ae.cargo_fmt9-4e57794fabe8fdbb8127420435be5acc-exe.rs.rust-cgu.o" "/OUT:C:\\Users\\kraaimx\\AppData\\Local\\Temp\\cargo-install.beHFxoQpmU4p\\release\\deps\\cargo_fmt-8c2152180c5063ae.exe" "C:\\Users\\kraaimx\\AppData\\Local\\Temp\\cargo-install.beHFxoQpmU4p\\release\\deps\\cargo_fmt-8c2152180c5063ae.crate.allocator.rust-cgu.o" "/OPT:REF,ICF" "/DEBUG" "/NATVIS:C:\\Users\\kraaimx\\.rustup\\toolchains\\nightly-x86_64-pc-windows-msvc\\lib\\rustlib\\etc\\liballoc.natvis" "/NATVIS:C:\\Users\\kraaimx\\.rustup\\toolchains\\nightly-x86_64-pc-windows-msvc\\lib\\rustlib\\etc\\libcore.natvis" "/LIBPATH:C:\\Users\\kraaimx\\AppData\\Local\\Temp\\cargo-install.beHFxoQpmU4p\\release\\deps" "/LIBPATH:C:\\Users\\kraaimx\\.rustup\\toolchains\\nightly-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib" "C:\\Users\\kraaimx\\AppData\\Local\\Temp\\cargo-install.beHFxoQpmU4p\\release\\deps\\libserde_json-d6f13a424f690f05.rlib" "C:\\Users\\kraaimx\\AppData\\Local\\Temp\\cargo-install.beHFxoQpmU4p\\release\\deps\\libitoa-16ad17ea6e0a3e37.rlib" "C:\\Users\\kraaimx\\AppData\\Local\\Temp\\cargo-install.beHFxoQpmU4p\\release\\deps\\libnum_traits-4af6d1b6ec560609.rlib" "C:\\Users\\kraaimx\\AppData\\Local\\Temp\\cargo-install.beHFxoQpmU4p\\release\\deps\\libdtoa-3a57a19f7b214c97.rlib" "C:\\Users\\kraaimx\\AppData\\Local\\Temp\\cargo-install.beHFxoQpmU4p\\release\\deps\\libgetopts-66c55bee9b5e6780.rlib" "C:\\Users\\kraaimx\\AppData\\Local\\Temp\\cargo-install.beHFxoQpmU4p\\release\\deps\\libserde-03d2ab45d68301b0.rlib" "C:\\Users\\kraaimx\\.rustup\\toolchains\\nightly-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib\\libstd-2c973d468aa52913.rlib" "C:\\Users\\kraaimx\\.rustup\\toolchains\\nightly-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib\\libpanic_unwind-10dcb2bb73715353.rlib" "C:\\Users\\kraaimx\\.rustup\\toolchains\\nightly-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib\\libunwind-eac2a22c7ef68dc5.rlib" "C:\\Users\\kraaimx\\.rustup\\toolchains\\nightly-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib\\liblibc-6232007b55cca9f2.rlib" "C:\\Users\\kraaimx\\.rustup\\toolchains\\nightly-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib\\liballoc_system-968b8d6a8dcae5d4.rlib" "C:\\Users\\kraaimx\\.rustup\\toolchains\\nightly-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib\\liballoc-bba7ff6cfd33a952.rlib" "C:\\Users\\kraaimx\\.rustup\\toolchains\\nightly-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib\\libstd_unicode-6001d57e726caccd.rlib" "C:\\Users\\kraaimx\\.rustup\\toolchains\\nightly-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib\\librand-d98f06e2ac3721a9.rlib" "C:\\Users\\kraaimx\\.rustup\\toolchains\\nightly-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib\\libcore-15daeee4c05dda88.rlib" "C:\\Users\\kraaimx\\.rustup\\toolchains\\nightly-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib\\libcompiler_builtins-b02255a955089c1d.rlib" "advapi32.lib" "ws2_32.lib" "userenv.lib" "shell32.lib" "msvcrt.lib"
  = note: cargo_fmt-8c2152180c5063ae.cargo_fmt7-4e57794fabe8fdbb8127420435be5acc-exe.rs.rust-cgu.o : warning LNK4217: locally defined symbol _ZN10serde_json2de5POW1017h25bee10826a4ad32E imported in function _ZN46_$LT$serde_json..de..Deserializer$LT$R$GT$$GT$13parse_decimal17h9e61526d5f212480E.llvm.136005A1
          libserde_json-d6f13a424f690f05.rlib(serde_json-d6f13a424f690f05.serde_json6-cc0a6a5e7790be5e30949fa3ed0fdce1.rs.rust-cgu.o) : error LNK2019: unresolved external symbol __imp__ZN4dtoa18CACHED_POWERS_F_6417h94f2f8d3bb7c5bceE referenced in function _ZN38_$LT$f64$u20$as$u20$dtoa..Floating$GT$5write17h86f0f1a7c2bfbad6E
          libserde_json-d6f13a424f690f05.rlib(serde_json-d6f13a424f690f05.serde_json6-cc0a6a5e7790be5e30949fa3ed0fdce1.rs.rust-cgu.o) : error LNK2019: unresolved external symbol __imp__ZN4dtoa18CACHED_POWERS_E_6417h987f9d329de16228E referenced in function _ZN38_$LT$f64$u20$as$u20$dtoa..Floating$GT$5write17h86f0f1a7c2bfbad6E
          libserde_json-d6f13a424f690f05.rlib(serde_json-d6f13a424f690f05.serde_json6-cc0a6a5e7790be5e30949fa3ed0fdce1.rs.rust-cgu.o) : error LNK2019: unresolved external symbol __imp__ZN38_$LT$f64$u20$as$u20$dtoa..Floating$GT$5write9digit_gen5POW1017hb4f7235eab3f1b8cE referenced in function _ZN38_$LT$f64$u20$as$u20$dtoa..Floating$GT$5write17h86f0f1a7c2bfbad6E
          libserde_json-d6f13a424f690f05.rlib(serde_json-d6f13a424f690f05.serde_json6-cc0a6a5e7790be5e30949fa3ed0fdce1.rs.rust-cgu.o) : error LNK2019: unresolved external symbol __imp__ZN4dtoa14DEC_DIGITS_LUT17h158d7d1c239d4220E referenced in function _ZN38_$LT$f64$u20$as$u20$dtoa..Floating$GT$5write17h86f0f1a7c2bfbad6E
          C:\Users\kraaimx\AppData\Local\Temp\cargo-install.beHFxoQpmU4p\release\deps\cargo_fmt-8c2152180c5063ae.exe : fatal error LNK1120: 4 unresolved externals


error: aborting due to previous error

error: Could not compile `rustfmt-nightly`.
warning: build failed, waiting for other jobs to finish...
error: linking with `link.exe` failed: exit code: 1120
  |
  = note: "C:\\Program Files (x86)\\Microsoft Visual Studio 14.0\\VC\\bin\\amd64\\link.exe" "/NOLOGO" "/NXCOMPAT" "/LIBPATH:C:\\Users\\kraaimx\\.rustup\\toolchains\\nightly-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib" "C:\\Users\\kraaimx\\AppData\\Local\\Temp\\cargo-install.beHFxoQpmU4p\\release\\deps\\rustfmt-f7f5457ac0f64c8c.rustfmt0-a5aa070d5664bee92c763b3600cb3c50-exe.rs.rust-cgu.o" "C:\\Users\\kraaimx\\AppData\\Local\\Temp\\cargo-install.beHFxoQpmU4p\\release\\deps\\rustfmt-f7f5457ac0f64c8c.rustfmt1-a5aa070d5664bee92c763b3600cb3c50-exe.rs.rust-cgu.o" "C:\\Users\\kraaimx\\AppData\\Local\\Temp\\cargo-install.beHFxoQpmU4p\\release\\deps\\rustfmt-f7f5457ac0f64c8c.rustfmt10-a5aa070d5664bee92c763b3600cb3c50-exe.rs.rust-cgu.o" "C:\\Users\\kraaimx\\AppData\\Local\\Temp\\cargo-install.beHFxoQpmU4p\\release\\deps\\rustfmt-f7f5457ac0f64c8c.rustfmt11-a5aa070d5664bee92c763b3600cb3c50-exe.rs.rust-cgu.o" "C:\\Users\\kraaimx\\AppData\\Local\\Temp\\cargo-install.beHFxoQpmU4p\\release\\deps\\rustfmt-f7f5457ac0f64c8c.rustfmt12-a5aa070d5664bee92c763b3600cb3c50-exe.rs.rust-cgu.o" "C:\\Users\\kraaimx\\AppData\\Local\\Temp\\cargo-install.beHFxoQpmU4p\\release\\deps\\rustfmt-f7f5457ac0f64c8c.rustfmt13-a5aa070d5664bee92c763b3600cb3c50-exe.rs.rust-cgu.o" "C:\\Users\\kraaimx\\AppData\\Local\\Temp\\cargo-install.beHFxoQpmU4p\\release\\deps\\rustfmt-f7f5457ac0f64c8c.rustfmt14-a5aa070d5664bee92c763b3600cb3c50-exe.rs.rust-cgu.o" "C:\\Users\\kraaimx\\AppData\\Local\\Temp\\cargo-install.beHFxoQpmU4p\\release\\deps\\rustfmt-f7f5457ac0f64c8c.rustfmt15-a5aa070d5664bee92c763b3600cb3c50-exe.rs.rust-cgu.o" "C:\\Users\\kraaimx\\AppData\\Local\\Temp\\cargo-install.beHFxoQpmU4p\\release\\deps\\rustfmt-f7f5457ac0f64c8c.rustfmt2-a5aa070d5664bee92c763b3600cb3c50-exe.rs.rust-cgu.o" "C:\\Users\\kraaimx\\AppData\\Local\\Temp\\cargo-install.beHFxoQpmU4p\\release\\deps\\rustfmt-f7f5457ac0f64c8c.rustfmt3-a5aa070d5664bee92c763b3600cb3c50-exe.rs.rust-cgu.o" "C:\\Users\\kraaimx\\AppData\\Local\\Temp\\cargo-install.beHFxoQpmU4p\\release\\deps\\rustfmt-f7f5457ac0f64c8c.rustfmt4-a5aa070d5664bee92c763b3600cb3c50-exe.rs.rust-cgu.o" "C:\\Users\\kraaimx\\AppData\\Local\\Temp\\cargo-install.beHFxoQpmU4p\\release\\deps\\rustfmt-f7f5457ac0f64c8c.rustfmt5-a5aa070d5664bee92c763b3600cb3c50-exe.rs.rust-cgu.o" "C:\\Users\\kraaimx\\AppData\\Local\\Temp\\cargo-install.beHFxoQpmU4p\\release\\deps\\rustfmt-f7f5457ac0f64c8c.rustfmt6-a5aa070d5664bee92c763b3600cb3c50-exe.rs.rust-cgu.o" "C:\\Users\\kraaimx\\AppData\\Local\\Temp\\cargo-install.beHFxoQpmU4p\\release\\deps\\rustfmt-f7f5457ac0f64c8c.rustfmt7-a5aa070d5664bee92c763b3600cb3c50-exe.rs.rust-cgu.o" "C:\\Users\\kraaimx\\AppData\\Local\\Temp\\cargo-install.beHFxoQpmU4p\\release\\deps\\rustfmt-f7f5457ac0f64c8c.rustfmt8-a5aa070d5664bee92c763b3600cb3c50-exe.rs.rust-cgu.o" "C:\\Users\\kraaimx\\AppData\\Local\\Temp\\cargo-install.beHFxoQpmU4p\\release\\deps\\rustfmt-f7f5457ac0f64c8c.rustfmt9-a5aa070d5664bee92c763b3600cb3c50-exe.rs.rust-cgu.o" "/OUT:C:\\Users\\kraaimx\\AppData\\Local\\Temp\\cargo-install.beHFxoQpmU4p\\release\\deps\\rustfmt-f7f5457ac0f64c8c.exe" "C:\\Users\\kraaimx\\AppData\\Local\\Temp\\cargo-install.beHFxoQpmU4p\\release\\deps\\rustfmt-f7f5457ac0f64c8c.crate.allocator.rust-cgu.o" "/OPT:REF,ICF" "/DEBUG" "/NATVIS:C:\\Users\\kraaimx\\.rustup\\toolchains\\nightly-x86_64-pc-windows-msvc\\lib\\rustlib\\etc\\liballoc.natvis" "/NATVIS:C:\\Users\\kraaimx\\.rustup\\toolchains\\nightly-x86_64-pc-windows-msvc\\lib\\rustlib\\etc\\libcore.natvis" "/LIBPATH:C:\\Users\\kraaimx\\AppData\\Local\\Temp\\cargo-install.beHFxoQpmU4p\\release\\deps" "/LIBPATH:C:\\Users\\kraaimx\\.rustup\\toolchains\\nightly-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib" "C:\\Users\\kraaimx\\AppData\\Local\\Temp\\cargo-install.beHFxoQpmU4p\\release\\deps\\librustfmt_nightly-67d32400cba0513b.rlib" "C:\\Users\\kraaimx\\AppData\\Local\\Temp\\cargo-install.beHFxoQpmU4p\\release\\deps\\libserde_json-d6f13a424f690f05.rlib" "C:\\Users\\kraaimx\\AppData\\Local\\Temp\\cargo-install.beHFxoQpmU4p\\release\\deps\\libdtoa-3a57a19f7b214c97.rlib" "C:\\Users\\kraaimx\\AppData\\Local\\Temp\\cargo-install.beHFxoQpmU4p\\release\\deps\\libtoml-f877a58d4d247e71.rlib" "C:\\Users\\kraaimx\\AppData\\Local\\Temp\\cargo-install.beHFxoQpmU4p\\release\\deps\\libenv_logger-23c12dd3db32e711.rlib" "C:\\Users\\kraaimx\\AppData\\Local\\Temp\\cargo-install.beHFxoQpmU4p\\release\\deps\\libgetopts-66c55bee9b5e6780.rlib" "C:\\Users\\kraaimx\\AppData\\Local\\Temp\\cargo-install.beHFxoQpmU4p\\release\\deps\\libserde-03d2ab45d68301b0.rlib" "C:\\Users\\kraaimx\\AppData\\Local\\Temp\\cargo-install.beHFxoQpmU4p\\release\\deps\\libitoa-16ad17ea6e0a3e37.rlib" "/LIBPATH:C:\\Users\\kraaimx\\.rustup\\toolchains\\nightly-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib" "syntax-c5577fbbbe64eddd.dll.lib" "/LIBPATH:C:\\Users\\kraaimx\\.rustup\\toolchains\\nightly-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib" "rustc_errors-29dbb0dd56737fc9.dll.lib" "/LIBPATH:C:\\Users\\kraaimx\\.rustup\\toolchains\\nightly-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib" "syntax_pos-68d5026e02f80631.dll.lib" "/LIBPATH:C:\\Users\\kraaimx\\.rustup\\toolchains\\nightly-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib" "rustc_data_structures-f7691feca31f508f.dll.lib" "/LIBPATH:C:\\Users\\kraaimx\\.rustup\\toolchains\\nightly-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib" "term-e5ba86d60fc9aad9.dll.lib" "/LIBPATH:C:\\Users\\kraaimx\\.rustup\\toolchains\\nightly-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib" "rustc_cratesio_shim-1b1bfb7ced22f2fe.dll.lib" "C:\\Users\\kraaimx\\AppData\\Local\\Temp\\cargo-install.beHFxoQpmU4p\\release\\deps\\libterm-94e2930cde346c71.rlib" "C:\\Users\\kraaimx\\AppData\\Local\\Temp\\cargo-install.beHFxoQpmU4p\\release\\deps\\libkernel32-05c0bc9ab7f4a69f.rlib" "C:\\Users\\kraaimx\\AppData\\Local\\Temp\\cargo-install.beHFxoQpmU4p\\release\\deps\\libunicode_segmentation-6393e6a650316b47.rlib" "C:\\Users\\kraaimx\\AppData\\Local\\Temp\\cargo-install.beHFxoQpmU4p\\release\\deps\\libregex-ce6eadb488da3be8.rlib" "C:\\Users\\kraaimx\\AppData\\Local\\Temp\\cargo-install.beHFxoQpmU4p\\release\\deps\\libregex_syntax-d3ab202bb495a5a1.rlib" "C:\\Users\\kraaimx\\AppData\\Local\\Temp\\cargo-install.beHFxoQpmU4p\\release\\deps\\libthread_local-95b9fe4362a15185.rlib" "C:\\Users\\kraaimx\\AppData\\Local\\Temp\\cargo-install.beHFxoQpmU4p\\release\\deps\\liblazy_static-3dc9379afa34801c.rlib" "C:\\Users\\kraaimx\\AppData\\Local\\Temp\\cargo-install.beHFxoQpmU4p\\release\\deps\\libunreachable-40635ee7b0f61d7d.rlib" "C:\\Users\\kraaimx\\AppData\\Local\\Temp\\cargo-install.beHFxoQpmU4p\\release\\deps\\libaho_corasick-e63dd82e33ac83b9.rlib" "C:\\Users\\kraaimx\\AppData\\Local\\Temp\\cargo-install.beHFxoQpmU4p\\release\\deps\\libmemchr-f6f3d279a203349a.rlib" "C:\\Users\\kraaimx\\AppData\\Local\\Temp\\cargo-install.beHFxoQpmU4p\\release\\deps\\liblibc-ce7a7bbd7d5f44b2.rlib" "C:\\Users\\kraaimx\\AppData\\Local\\Temp\\cargo-install.beHFxoQpmU4p\\release\\deps\\libvoid-8549fb255bea2a3e.rlib" "C:\\Users\\kraaimx\\AppData\\Local\\Temp\\cargo-install.beHFxoQpmU4p\\release\\deps\\libutf8_ranges-81e13c39fa54ce55.rlib" "C:\\Users\\kraaimx\\AppData\\Local\\Temp\\cargo-install.beHFxoQpmU4p\\release\\deps\\libdiff-1c86bfc43bfa625c.rlib" "/LIBPATH:C:\\Users\\kraaimx\\.rustup\\toolchains\\nightly-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib" "serialize-445d9c52b5c212f1.dll.lib" "C:\\Users\\kraaimx\\AppData\\Local\\Temp\\cargo-install.beHFxoQpmU4p\\release\\deps\\libnum_traits-4af6d1b6ec560609.rlib" "C:\\Users\\kraaimx\\AppData\\Local\\Temp\\cargo-install.beHFxoQpmU4p\\release\\deps\\libstrings-da4391a987376d31.rlib" "C:\\Users\\kraaimx\\AppData\\Local\\Temp\\cargo-install.beHFxoQpmU4p\\release\\deps\\liblog-20bcf03dbfcee5bf.rlib" "C:\\Users\\kraaimx\\AppData\\Local\\Temp\\cargo-install.beHFxoQpmU4p\\release\\deps\\libwinapi-18047b7b8f2b0fc3.rlib" "/LIBPATH:C:\\Users\\kraaimx\\.rustup\\toolchains\\nightly-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib" "std-2c973d468aa52913.dll.lib" "C:\\Users\\kraaimx\\.rustup\\toolchains\\nightly-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib\\libcompiler_builtins-b02255a955089c1d.rlib" "kernel32.lib" "kernel32.lib" "advapi32.lib" "ws2_32.lib" "userenv.lib" "shell32.lib" "msvcrt.lib"
  = note: librustfmt_nightly-67d32400cba0513b.rlib(rustfmt_nightly-67d32400cba0513b.rustfmt_nightly11-1dfba6e9b973b649af1fd954268fc2dc.rs.rust-cgu.o) : warning LNK4217: locally defined symbol _ZN10serde_json2de5POW1017h25bee10826a4ad32E imported in function _ZN46_$LT$serde_json..de..Deserializer$LT$R$GT$$GT$13parse_decimal17h70670a329a504ab2E.llvm.A65392A6
          librustfmt_nightly-67d32400cba0513b.rlib(rustfmt_nightly-67d32400cba0513b.rustfmt_nightly5-1dfba6e9b973b649af1fd954268fc2dc.rs.rust-cgu.o) : warning LNK4217: locally defined symbol _ZN3log20MAX_LOG_LEVEL_FILTER17h8aa4231d11f7c522E imported in function _ZN15rustfmt_nightly12format_lines17hdba8479c954e802fE
          librustfmt_nightly-67d32400cba0513b.rlib(rustfmt_nightly-67d32400cba0513b.rustfmt_nightly8-1dfba6e9b973b649af1fd954268fc2dc.rs.rust-cgu.o) : warning LNK4217: locally defined symbol _ZN3log20MAX_LOG_LEVEL_FILTER17h8aa4231d11f7c522E imported in function _ZN15rustfmt_nightly5items18rewrite_type_alias17h0777ef5031d0346bE
          librustfmt_nightly-67d32400cba0513b.rlib(rustfmt_nightly-67d32400cba0513b.rustfmt_nightly9-1dfba6e9b973b649af1fd954268fc2dc.rs.rust-cgu.o) : warning LNK4049: locally defined symbol _ZN3log20MAX_LOG_LEVEL_FILTER17h8aa4231d11f7c522E imported
          librustfmt_nightly-67d32400cba0513b.rlib(rustfmt_nightly-67d32400cba0513b.rustfmt_nightly4-1dfba6e9b973b649af1fd954268fc2dc.rs.rust-cgu.o) : warning LNK4049: locally defined symbol _ZN3log20MAX_LOG_LEVEL_FILTER17h8aa4231d11f7c522E imported
          libenv_logger-23c12dd3db32e711.rlib(env_logger-23c12dd3db32e711.env_logger15-16b1a33c5508df059c2c23f55e5a374c.rs.rust-cgu.o) : warning LNK4217: locally defined symbol _ZN3log5STATE17h059fe72b70e84735E imported in function _ZN3log10set_logger17h7e86a88f68a8315bE
          libenv_logger-23c12dd3db32e711.rlib(env_logger-23c12dd3db32e711.env_logger15-16b1a33c5508df059c2c23f55e5a374c.rs.rust-cgu.o) : warning LNK4217: locally defined symbol _ZN3log6LOGGER17h186482a5b90c86f2E imported in function _ZN3log10set_logger17h7e86a88f68a8315bE
          libserde_json-d6f13a424f690f05.rlib(serde_json-d6f13a424f690f05.serde_json6-cc0a6a5e7790be5e30949fa3ed0fdce1.rs.rust-cgu.o) : error LNK2019: unresolved external symbol __imp__ZN4dtoa18CACHED_POWERS_F_6417h94f2f8d3bb7c5bceE referenced in function _ZN38_$LT$f64$u20$as$u20$dtoa..Floating$GT$5write17h86f0f1a7c2bfbad6E
          libserde_json-d6f13a424f690f05.rlib(serde_json-d6f13a424f690f05.serde_json6-cc0a6a5e7790be5e30949fa3ed0fdce1.rs.rust-cgu.o) : error LNK2019: unresolved external symbol __imp__ZN4dtoa18CACHED_POWERS_E_6417h987f9d329de16228E referenced in function _ZN38_$LT$f64$u20$as$u20$dtoa..Floating$GT$5write17h86f0f1a7c2bfbad6E
          libserde_json-d6f13a424f690f05.rlib(serde_json-d6f13a424f690f05.serde_json6-cc0a6a5e7790be5e30949fa3ed0fdce1.rs.rust-cgu.o) : error LNK2019: unresolved external symbol __imp__ZN38_$LT$f64$u20$as$u20$dtoa..Floating$GT$5write9digit_gen5POW1017hb4f7235eab3f1b8cE referenced in function _ZN38_$LT$f64$u20$as$u20$dtoa..Floating$GT$5write17h86f0f1a7c2bfbad6E
          libserde_json-d6f13a424f690f05.rlib(serde_json-d6f13a424f690f05.serde_json6-cc0a6a5e7790be5e30949fa3ed0fdce1.rs.rust-cgu.o) : error LNK2019: unresolved external symbol __imp__ZN4dtoa14DEC_DIGITS_LUT17h158d7d1c239d4220E referenced in function _ZN38_$LT$f64$u20$as$u20$dtoa..Floating$GT$5write17h86f0f1a7c2bfbad6E
          C:\Users\kraaimx\AppData\Local\Temp\cargo-install.beHFxoQpmU4p\release\deps\rustfmt-f7f5457ac0f64c8c.exe : fatal error LNK1120: 4 unresolved externals


error: aborting due to previous error

error: failed to compile `rustfmt-nightly v0.2.9`, intermediate artifacts can be found at `C:\Users\kraaimx\AppData\Local\Temp\cargo-install.beHFxoQpmU4p`

Caused by:
  Could not compile `rustfmt-nightly`.

To learn more, run the command again with --verbose.

I haven’t seen similar errors when not using ThinLTO.

Thanks for the report! I’ve filed an upstream bug report

I’ve posted a summary of all results in this thread so far to the tracking issue, the results look quite promising!

Compile times for an internal project

without flags

    Finished release [optimized + debuginfo] target(s) in 430.8 secs

with codegen-unit=16, thinlto

    Finished release [optimized + debuginfo] target(s) in 141.93 secs

It seems that there’s no significant performance regression.

@alexcrichton I’m happy to report that on the latest nightly, rust-belt builds on Windows 10 successfully with ThinLTO without any explosions :fire:.

nightly-x86_64-pc-windows-msvc updated - rustc 1.22.0-nightly (4750c1ec0 2017-10-19)

Normal

cargo +nightly build --release
Finished release [optimized] target(s) in 160.18 secs

ThinLTO

RUSTFLAGS='-C codegen-units=16 -Z thinlto'

cargo +nightly build --release
Finished release [optimized] target(s) in 154.72 secs

So that’s actually a speed-up of about 4% for this single data point.

Many moons have passed during which time we’ve fixed lots of bugs and fleshed out more and more pieces. I’m happy to say though that ThinLTO and multiple codegen units are now turned on by default in release mode! When coupled with the fact that multiple codegen units are enabled in debug mode we now have parallel codegen enabled by default in rustc for all modes!

As always if you encounter any bugs please file an issue, otherwise I hope we can all start cashing in on those average 2x faster compiles!

9 Likes

This topic was automatically closed 90 days after the last reply. New replies are no longer allowed.