Join GitHub today
GitHub is home to over 31 million developers working together to host and review code, manage projects, and build software together.
Sign upAdd changelog for 1.13.0 #37600
Conversation
This comment has been minimized.
This comment has been minimized.
brson
added
the
beta-nominated
label
Nov 5, 2016
This comment has been minimized.
This comment has been minimized.
|
For the reasoning behind improvement to compile times, the compile-time optimizations are the most likely causes. I don't believe any other PRs intentionally optimized the compiler (at least majorly). If you or @steveklabnik want to note it, I know that there are at least a few more places that I know of where we may be able to make some potentially large gains in terms of memory usage at least, and possibly performance too. Edit: By "note it" I mean in the blog post that someone (@steveklabnik?) writes up. |
This comment has been minimized.
This comment has been minimized.
|
This release includes builds for several new platforms, the standard library, compiler, and cargo:
The builds have a deficiency though. I don't see "rust" packages for them on beta, so they can't be installed easily, either by "rust" tarball or by It may not be worth mentioning them yet if they are hard to install. |
brson
referenced this pull request
Nov 5, 2016
Merged
Package powerpc, mips, and s390x for combined distribution #136
bluss
reviewed
Nov 5, 2016
| * [Optimize the parser's last token handling][36527] | ||
| * [Only instantiate #[inline] functions in codegen units referencing | ||
| them][36524]. This leads to big improvements in rare cases, including the | ||
| common winapi crate. |
This comment has been minimized.
This comment has been minimized.
bluss
Nov 5, 2016
•
Contributor
Depending on how big, but significant improvements are not rare. Many libraries compile a lot faster.
This comment has been minimized.
This comment has been minimized.
alexcrichton
Nov 6, 2016
Member
Hm I just compiled the winapi crate on stable/beta/nightly and it took 30s on stable, 25s on beta, and 25s on nightly. We may not want to claim too much of a perf improvement here?
This comment has been minimized.
This comment has been minimized.
retep998
Nov 6, 2016
Member
winapi 0.2 did not have every single function marked as inline, unlike winapi 0.3 which does.
This comment has been minimized.
This comment has been minimized.
brson
Nov 7, 2016
Author
Contributor
It looks like winapi 0.3 isn't out yet, so I better change this to not claim anything about it.
This comment has been minimized.
This comment has been minimized.
Yes, usually @brson writes the release notes and then I write the draft of the blog post. |
steveklabnik
reviewed
Nov 5, 2016
| * [Add --all-features flag to cargo][cargo/3038] | ||
| * [Reject path-based dependencies in `cargo package`][cargo/3060] | ||
| * [Don't parse the home directory more than once][cargo/3078] | ||
| * [Don't try to generate Gargo.lock on empty workspaces][cargo/3092] |
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
|
Can we repro the perf improvements by hand rather than using the perf.rust-lang.org? We had some problems last time trying to repro them. |
This comment has been minimized.
This comment has been minimized.
|
@jonathandturner At least for the |
This comment has been minimized.
This comment has been minimized.
|
The |
This comment has been minimized.
This comment has been minimized.
|
|
This comment has been minimized.
This comment has been minimized.
|
One of the major improvements to compile time was the futures-rs-test-all test case which is basically exactly what #35761 targeted. Compiling the current test locally goes from 5.2s on stable to 4.7 on beta, but note that the test in the futures-rs repo is likely no longer exactly what's on the benchmark suite (I think I broke it up as it took too long to compile). Compiling the entire test suite of futures-rs takes 9.3s on stable and 9.2s on beta. We... may not want to claim 40% perf improvements? |
alexcrichton
added
the
beta-accepted
label
Nov 6, 2016
This comment has been minimized.
This comment has been minimized.
|
Hm so testing again, I wonder, is perf.rust-lang.org doing |
This comment has been minimized.
This comment has been minimized.
|
25% in release mode sounds good. Can we check a few more packages just to be sure? (I'd do it but I'm traveling today) Jonathan On Sun, Nov 6, 2016 at 12:30 PM -0500, "Alex Crichton" notifications@github.com wrote: Hm so testing again, I wonder, is perf.rust-lang.org doing --release? The numbers I just gave for futures were in debug mode, but compiling the entire test suite in release mode takes 22.7s on stable and 16.9s on beta, a 25% improvement. Maybe that's what's being measured? — |
This comment has been minimized.
This comment has been minimized.
From what I can tell, it's not. |
This comment has been minimized.
This comment has been minimized.
|
Whoa ok scratch that I was accidentally using nightly when I thought I was using stable ok, current numbers I'm getting are:
So it actually looks kind bad in some cases. While we universally improved stable -> beta we ended up regressing almost universally beta -> nightly. |
This comment has been minimized.
This comment has been minimized.
|
Compilers I used were:
|
This comment has been minimized.
This comment has been minimized.
|
For winapi 0.3 where every single function is inline.
This is a 37% reduction in time, which is pretty close to 40%. |
This comment has been minimized.
This comment has been minimized.
|
My impression was that the inline PR had a huge impact on build times of various libraries. Trying a relatively small library I get this now:
That's basically reducing the build time by 50%. For the curious, the timing on current nightly is
|
This comment has been minimized.
This comment has been minimized.
Can confirm that the above is true for MIPSel and MIPS64el, as |
This comment has been minimized.
This comment has been minimized.
|
Yeah, looks good - hyper-0.5.0: 57.25s (stable) vs 36.93s (beta) Definitely some improvement there. |
This comment has been minimized.
This comment has been minimized.
|
@alexcrichton - did you file issues on the perf regressions? |
This comment has been minimized.
This comment has been minimized.
Oh yes! Thanks for pointing that out. Also attributes on statements: #36995 |
brson
force-pushed the
brson:relnotes-1.13
branch
from
a8a012f
to
a4e8e07
Nov 7, 2016
This comment has been minimized.
This comment has been minimized.
|
Updated to add |
This comment has been minimized.
This comment has been minimized.
|
I'm going to port this to beta now. |
brson
force-pushed the
brson:relnotes-1.13
branch
from
a4e8e07
to
6a5682e
Nov 7, 2016
brson
force-pushed the
brson:relnotes-1.13
branch
from
6a5682e
to
0f817a0
Nov 7, 2016
brson
removed
the
beta-nominated
label
Nov 8, 2016
This comment has been minimized.
This comment has been minimized.
|
@Mark-Simulacrum would either |
This comment has been minimized.
This comment has been minimized.
|
I'd guess that winapi would be non-trivial to add since (AFAIK) it compiles next to nothing on *nix platforms, which is what the perf server is. Adding ndarray should be relatively trivial--let me know if you'd like that to happen, and I'll try and get it done soon. |
This comment has been minimized.
This comment has been minimized.
|
@Mark-Simulacrum Cross compilation of winapi is trivially easy because it's just an rlib so you don't even need a linker or system libraries. Just libcore compiled for a windows target is enough. Don't forget to pass |
This comment has been minimized.
This comment has been minimized.
|
please don't use ndarray for that. Maybe I can propose some application of it to use instead (i.e. where the ndarray operations are actually instantiated and used). |
Razican
reviewed
Nov 9, 2016
| * [Stabilize the `?` operator][36995]. `?` is a simple way to propagate | ||
| errors, like the `try!` macro, described in [RFC 0243]. | ||
| * [Stabilize macros in type position][36014]. Described in [RFC 873]. | ||
| * [Stabilize attributes on statements][36995]. Described in [RFC 0016]. |
This comment has been minimized.
This comment has been minimized.
Razican
Nov 9, 2016
Contributor
Is this issue number correct? it has the same ID as the Stabilize the ? operator, and redirects to the same PR.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
rust-highfive
assigned
steveklabnik
Nov 9, 2016
This comment has been minimized.
This comment has been minimized.
|
I'm a bit confused how the ? operator is already hitting stable, if it just got stabilized 4 weeks ago? Isn't it supposed to be in beta first? Seems like it just skipped a cycle? Also the code suggests that it should be in 1.14 instead: https://github.com/rust-lang/rust/blob/master/src/libsyntax/feature_gate.rs#L357 // `expr?`
(accepted, question_mark, "1.14.0", Some(31436)), |
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
|
Another new feature in 1.13 that I can't see in the changelog: This simplifies ad-hoc type based dispatch on stable (as used by ndarray to call f32- and f64-specific linear algebra functions). |
This comment has been minimized.
This comment has been minimized.
mrageh
commented
Nov 10, 2016
|
Hey Folks any ideas on when 1.13 will be stable? |
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
|
@brson is this just waiting for an r+? Given that we just shipped 1.13.0 seems like no, but just wanted to make sure :) |
This comment has been minimized.
This comment has been minimized.
|
Yeah this needs an r+. |
This comment has been minimized.
This comment has been minimized.
|
@bors: r+ Ok! |
This comment has been minimized.
This comment has been minimized.
|
|
brson commentedNov 5, 2016
•
edited
The diagnostics PRs are excellent and some have excellent examples thanks @jonathandturner @estebank.
Here are some notes about the performance changes during the release.
Compile times are improved %40 in some cases.
This desires to be backported to beta for 1.13.
Sadly, the 1.12.1 changelog PR has not merged to master yet, and is sitting in a rollup PR.
r? @rust-lang/lang @rust-lang/compiler @rust-lang/libs @rust-lang/core