Stream: t-compiler/wg-nll

Topic: weekly meeting July 24


pnkfelix (Jul 24 2018 at 19:27, on Zulip):

hi @everyone (sending out the notification a little bit early this week)

pnkfelix (Jul 24 2018 at 19:31, on Zulip):

so niko and i looked over the list of issues for the 2018 edition preview 2

pnkfelix (Jul 24 2018 at 19:31, on Zulip):

aka "EP2"

pnkfelix (Jul 24 2018 at 19:32, on Zulip):

and I just want to say: Things are looking really good, IMO, and that's really due in a large part to the hard work that all of you have been putting in

pnkfelix (Jul 24 2018 at 19:32, on Zulip):

projects like this don't just come out of nowhere.

pnkfelix (Jul 24 2018 at 19:32, on Zulip):

(At least, not unless someone like eddyb is involved...)

pnkfelix (Jul 24 2018 at 19:34, on Zulip):

oh this is that EP2 list

pnkfelix (Jul 24 2018 at 19:34, on Zulip):

notably everything on that list is currently assigned to someone

nikomatsakis (Jul 24 2018 at 19:35, on Zulip):

seems like we're making good progress

nikomatsakis (Jul 24 2018 at 19:36, on Zulip):

one tricky bit is that I may not have too much availability next week

pnkfelix (Jul 24 2018 at 19:36, on Zulip):

so in my mind, if you are looking for things to do, there are two options: 1. you try to assist with one of the items on the EP2 list (perhaps by pinging the current assignee and asking if they need assistance with anything, like coming up with tests), or 2. you move on the RC list

pnkfelix (Jul 24 2018 at 19:36, on Zulip):

An alternative interpretation of option 1 that I just listed: Maybe look at the things assigned to Niko and see if you can convince him to delegate one of them to you. :)

lqd (Jul 24 2018 at 19:37, on Zulip):

(speaking of availability, I will myself be on vacation starting at the end of this week, for a bit more than 2 weeks)

pnkfelix (Jul 24 2018 at 19:37, on Zulip):

I too will be on vacation in august (starting august 4th. I hope to be checking in and contributing periodically but mostly asynchronously because I want to help us meet our RC target.)

nikomatsakis (Jul 24 2018 at 19:38, on Zulip):

I think we should think a bit about the "broad themes" of RC-related projects -- in particular, it seems like we may want to do a renewed focus on performance?

pnkfelix (Jul 24 2018 at 19:39, on Zulip):

I also wonder what we will be doing about polonius

nikomatsakis (Jul 24 2018 at 19:39, on Zulip):

I guess it feels like we maybe need a general "assessment"

Santiago Pastorino (Jul 24 2018 at 19:39, on Zulip):

what if we go all together on vacations? :joy:

pnkfelix (Jul 24 2018 at 19:39, on Zulip):

do we just revive that Polonius effort after the Edition is out the door?

Santiago Pastorino (Jul 24 2018 at 19:39, on Zulip):

I feel a bit envy :stuck_out_tongue_closed_eyes:

lqd (Jul 24 2018 at 19:39, on Zulip):

DPC's livenessmap PR didn't seem to impact html5ever so I was looking at it

nikomatsakis (Jul 24 2018 at 19:39, on Zulip):

in terms of the "three pillars" of "complete", "diagnostics", and "perf"

nikomatsakis (Jul 24 2018 at 19:40, on Zulip):

do we just revive that Polonius effort after the Edition is out the door?

I think so

lqd (Jul 24 2018 at 19:40, on Zulip):

(yeah let's all go on vacation together @Santiago Pastorino the whole gang)

nikomatsakis (Jul 24 2018 at 19:42, on Zulip):

as far as complete goes, it seems like the major focus was on "feedback" from the crater run -- we're not quite ready to repeat that I guess

lqd (Jul 24 2018 at 19:42, on Zulip):

(CFG compression in Polonius is virtually good to go, and then I rabbitholed sorting, layout, simd, for barely nothing)

nikomatsakis (Jul 24 2018 at 19:42, on Zulip):

diagnostics it seems like has made pretty good progress

nikomatsakis (Jul 24 2018 at 19:42, on Zulip):

it'd be good to review the .nll.stderr files perhaps

nikomatsakis (Jul 24 2018 at 19:42, on Zulip):

perf -- we made progress, but we still need more

nikomatsakis (Jul 24 2018 at 19:43, on Zulip):

those are my general impressions :)

pnkfelix (Jul 24 2018 at 19:44, on Zulip):

it'd be good to review the .nll.stderr files perhaps

see also #52663

lqd (Jul 24 2018 at 19:44, on Zulip):

the good thing is I think crater check has now been improved to something like a day, so we can also iterate on that quickly I guess, even knowing about the current unsolved ICEs and the likes. I went through them again after the implied relationships PR but it only fixed one or two of the existing errors we had.

nikomatsakis (Jul 24 2018 at 19:44, on Zulip):

interesting

nikomatsakis (Jul 24 2018 at 19:45, on Zulip):

I think that in terms of ICEs, me + @mikhail-m1 are working on the "big two" still...?

nikomatsakis (Jul 24 2018 at 19:45, on Zulip):

iirc

lqd (Jul 24 2018 at 19:46, on Zulip):

you might also have others in flight which didn't hit during the crater runs

pnkfelix (Jul 24 2018 at 19:46, on Zulip):

is there a level of perf regression that would block NLL being in EP2 ?

nikomatsakis (Jul 24 2018 at 19:46, on Zulip):

when it comes to perf, apart from the horror cases of html5ever and tuple-stress, it'd be interesting to try and characterize where we are spending our time these days

pnkfelix (Jul 24 2018 at 19:46, on Zulip):

I know we've talked about a <= 10% regression target; I've been assuming that would be the RC blocker

pnkfelix (Jul 24 2018 at 19:46, on Zulip):

but maybe I'm wrong and that's the EP2 blocker

nikomatsakis (Jul 24 2018 at 19:47, on Zulip):

I think our current perf is acceptable for EP2

nikomatsakis (Jul 24 2018 at 19:47, on Zulip):

else we should've been focusing on it harder :)

lqd (Jul 24 2018 at 19:47, on Zulip):

I'm not sure we even know how it performs apart from our benchmarks ?

nikomatsakis (Jul 24 2018 at 19:47, on Zulip):

I think what we probably ought to do is to test it on various "real world" crates -- but specifically the master
versions

nikomatsakis (Jul 24 2018 at 19:47, on Zulip):

interestingly I was pointed at some research which says that 20% slowdown is the point where people start to be able to perceive the difference

nikomatsakis (Jul 24 2018 at 19:47, on Zulip):

so 10%-15% is a pretty reasonable figure

nikomatsakis (Jul 24 2018 at 19:47, on Zulip):

not to say we shouldn't shoot for more and all =)

nikomatsakis (Jul 24 2018 at 19:48, on Zulip):

but basically we still don't have measurements for "this is the real world slowdown NLL imposes on your dependencies"

nikomatsakis (Jul 24 2018 at 19:48, on Zulip):

it seems like we should measure that

nikomatsakis (Jul 24 2018 at 19:48, on Zulip):

that could be a good issue to open I suppose...

pnkfelix (Jul 24 2018 at 19:48, on Zulip):

is it worth asking right now if anyone wants help finding something to work on?

lqd (Jul 24 2018 at 19:49, on Zulip):

I can work on checking those crates niko

nikomatsakis (Jul 24 2018 at 19:49, on Zulip):

I was just thinking that if you have a good perf setup @lqd (I lost access to mine now) maybe we can also do a bit of profiling and just try to get a sense of which "parts" of borrowck are expensive right now

pnkfelix (Jul 24 2018 at 19:49, on Zulip):

(deleted)

lqd (Jul 24 2018 at 19:49, on Zulip):

and if you have some spare cycles here and there, html5ever

nikomatsakis (Jul 24 2018 at 19:50, on Zulip):

e.g., I had some ideas for improving liveness but also the code that searches for conflicting loans

nikomatsakis (Jul 24 2018 at 19:50, on Zulip):

(which typically shows up as unroll_place being a hotspot)

nikomatsakis (Jul 24 2018 at 19:50, on Zulip):

@lqd iirc we were gonna do the same crates that feed into https://perf.rust-lang.org/dashboard.html

lqd (Jul 24 2018 at 19:51, on Zulip):

I wouldn't say "good" unfortunately (cough ubuntu on windows) but if it's more high level like timing the whole build compared to the perf.rlo versions that should work fine

lqd (Jul 24 2018 at 19:51, on Zulip):

I can fire up callgrind as well but it always seemed less interesting than your perfprofiles for sure

nikomatsakis (Jul 24 2018 at 19:51, on Zulip):

I suppose my laptop might be able to gather data but....

davidtwco (Jul 24 2018 at 19:51, on Zulip):

Ubuntu on Windows is mostly going to hit I/O performance, it's comparable to native Linux otherwise.

nikomatsakis (Jul 24 2018 at 19:52, on Zulip):

yeah, I've never been able to make good use of callgrind somehow

lqd (Jul 24 2018 at 19:53, on Zulip):

I'll do it and then we'll reconvene, but might mean someone might have to double check those results :/

nikomatsakis (Jul 24 2018 at 19:54, on Zulip):

k

nikomatsakis (Jul 24 2018 at 19:54, on Zulip):

it should give us some idea anyway

lqd (Jul 24 2018 at 19:54, on Zulip):

right; + the timing of up to date versions should be interesting as well

simulacrum (Jul 24 2018 at 19:55, on Zulip):

Feel free to throw PRs at perf adding more benchmarks too if that's what we want

davidtwco (Jul 24 2018 at 19:55, on Zulip):

As a slight aside, are the current benchmarks chosen for any specific reason or was it just popular crates at the time?

nikomatsakis (Jul 24 2018 at 19:55, on Zulip):

it does seem like it'd be good to have perf measure it

simulacrum (Jul 24 2018 at 19:55, on Zulip):

Not really chosen, no

lqd (Jul 24 2018 at 19:57, on Zulip):

a lot of those are pieces of code which happened to stress the compiler in a particular way at some point right ?

nikomatsakis (Jul 24 2018 at 19:57, on Zulip):

yes

nikomatsakis (Jul 24 2018 at 19:57, on Zulip):

it'd be nice to come up with some criteria for "popular packages" — I guess we could look at the crates.io dependency information or something

davidtwco (Jul 24 2018 at 19:58, on Zulip):

Could match playground's selection.

nikomatsakis (Jul 24 2018 at 19:59, on Zulip):

true

nikomatsakis (Jul 24 2018 at 19:59, on Zulip):

@Jake Goulding — got a list of the packages in playground? is it just the top 100 or whatever from crates.io?

lqd (Jul 24 2018 at 20:00, on Zulip):

it's an api yes

lqd (Jul 24 2018 at 20:00, on Zulip):

and jake commits something regularly I think

lqd (Jul 24 2018 at 20:00, on Zulip):

updating this list

lqd (Jul 24 2018 at 20:00, on Zulip):

I can look it up if need be (having worked a bit on the playground)

davidtwco (Jul 24 2018 at 20:01, on Zulip):

@nikomatsakis https://github.com/integer32llc/rust-playground/blob/master/compiler/base/Cargo.toml

Jake Goulding (Jul 24 2018 at 20:01, on Zulip):

https://github.com/integer32llc/rust-playground/blob/master/compiler/base/Cargo.toml

lqd (Jul 24 2018 at 20:01, on Zulip):

jinx

lqd (Jul 24 2018 at 20:01, on Zulip):

I have updated a couple crates a couple weeks back and so could make some rustc-perf PRs, but any added benchmark has quite a cost on the infra @simulacrum right ? so we'd want to limit new additions

Jake Goulding (Jul 24 2018 at 20:01, on Zulip):

It's linked to from the help page on the playground as well

simulacrum (Jul 24 2018 at 20:02, on Zulip):

Well, if it's helpful I can limit those additional benchmarks fairly easily to say one commit per day or something along those lines

lqd (Jul 24 2018 at 20:02, on Zulip):

maybe the "lightweight benchmarks" thing we mentioned

Jake Goulding (Jul 24 2018 at 20:02, on Zulip):

top ~100 most downloaded crates, their deps, and all the crates from the libs blitz

simulacrum (Jul 24 2018 at 20:02, on Zulip):

That is, if we need more benchmarks, adding them is possible. Less is easier but we can certainly do one-off only-check and what not

lqd (Jul 24 2018 at 20:03, on Zulip):

right, those might be seen as not needing every commit perf tested (maybe at least manually w/ rust-timer, in addition to daily or something) would that work for you @nikomatsakis ?

nikomatsakis (Jul 24 2018 at 20:03, on Zulip):

I agree we don't necessarily need every commit tested

Keith Yeung (Jul 24 2018 at 20:03, on Zulip):

i was about to ask what i could do nowadays, since i've got some free time now, but i see @pnkfelix already has a list of stuff we can hop onto

Keith Yeung (Jul 24 2018 at 20:04, on Zulip):

how is :frog: coming along nowadays btw?

simulacrum (Jul 24 2018 at 20:04, on Zulip):

Yes, not testing every commit for all benchmarks is quite tenable now especially with the interpolation on summary grahps

Keith Yeung (Jul 24 2018 at 20:04, on Zulip):

i don't seem to have seen much PRs on the repo

lqd (Jul 24 2018 at 20:04, on Zulip):

awesome

Jake Goulding (Jul 24 2018 at 20:04, on Zulip):

I'd :heart_eyes: if you tested total compilation time of all the playground crates (debug + release) before and after.

pnkfelix (Jul 24 2018 at 20:04, on Zulip):

yes, I'd say: for people whose availability is sporadic, I'd probably advise looking at the RC list, since that's ... well, its at least less time critical

lqd (Jul 24 2018 at 20:05, on Zulip):

@Jake Goulding lol

lqd (Jul 24 2018 at 20:05, on Zulip):

that would be awesome :)

Keith Yeung (Jul 24 2018 at 20:05, on Zulip):

i dislike being sporadic, but it is what it is

simulacrum (Jul 24 2018 at 20:06, on Zulip):

@Jake Goulding That seems feasible to do on a per-nightly basis or something like that

Jake Goulding (Jul 24 2018 at 20:06, on Zulip):

You can see about the current times in Travis — https://travis-ci.org/integer32llc/rust-playground/builds/406592134

 CHANNELS_TO_BUILD="stable"
 27 min 51 sec

 CHANNELS_TO_BUILD="beta"
 21 min 9 sec

 CHANNELS_TO_BUILD="nightly"
 24 min 24 sec
simulacrum (Jul 24 2018 at 20:07, on Zulip):

Mostly just needs someone to port them all into perf with config files and all and then probably wait a few days for me to get the per-nightly infra going

Jake Goulding (Jul 24 2018 at 20:07, on Zulip):

(and yes, that pattern between the channels is fairly consistent, I never figured out why)

davidtwco (Jul 24 2018 at 20:08, on Zulip):

@Jake Goulding is the crate downloading included in the stable time or none or all of them?

Jake Goulding (Jul 24 2018 at 20:11, on Zulip):

in all of them (if you click through to one, you can see it does about everything from scratch)

davidtwco (Jul 24 2018 at 20:11, on Zulip):

Ah, cool.

davidtwco (Jul 24 2018 at 20:12, on Zulip):

Also, wanted to say this week that @Matthew Jasper has had some great PRs and @lqd has done some great work on the perf/crater triage and keeping polonius moving!

lqd (Jul 24 2018 at 20:13, on Zulip):

@simulacrum I'm unfamiliar with the config files, is there some documentation on how to build them by any chance ? eg which cases require which json keys, the supports_stable keys and the likes ?

Jake Goulding (Jul 24 2018 at 20:13, on Zulip):

stable

Finished dev [unoptimized + debuginfo] target(s) in 7m 33.86s
Finished release [optimized] target(s) in 13m 12.20s

beta

Finished dev [unoptimized + debuginfo] target(s) in 6m 02s
Finished release [optimized] target(s) in 10m 04s

nightly

Finished dev [unoptimized + debuginfo] target(s) in 6m 07s
Finished release [optimized] target(s) in 11m 14s
Jake Goulding (Jul 24 2018 at 20:13, on Zulip):

It's all cloud workers, so not a great benchmark setup, but gut feeling over many months seems to bear it out. Never dug deep.

lqd (Jul 24 2018 at 20:15, on Zulip):

@David Wood your diagnostics/error reporting work was awesome

lqd (Jul 24 2018 at 20:15, on Zulip):

its-happening.gif

Last update: Nov 21 2019 at 14:40UTC