profile
viewpoint
Mark Rousskov Mark-Simulacrum Rust core and infra team member; Release team lead.

Mark-Simulacrum/bisect-rust 20

Bisects rust-lang/rust by pull request, downloading the built artifacts

Mark-Simulacrum/attractifier 3

Attractifier generates attractive JavaScript code from ugly JavaScript code.

Mark-Simulacrum/advent-of-code 1

Advent of Code solutions in Rust

Centril/crater-cat-errors 0

A quick hackily made program to aggregate all the errors in a crater run and which crates have them

Mark-Simulacrum/adjective-adjective-animal 0

Suitably random and reasonably unique human readable (and fairly adorable) ids, ala GiphyCat

Mark-Simulacrum/advent-of-code-2015 0

Each day of the 2015 Advent of Code. http://adventofcode.com/

Mark-Simulacrum/amd-bits 0

AMD loader built on top of bit-loader

Mark-Simulacrum/amd-resolver 0

Resolve AMD module names to File objects

push eventrust-lang/rustc-pr-tracking

stats updater

commit sha b2ed2ebc93de5aa0a075439e99d99a19653db32d

Automatic stats update

view details

push time in 11 hours

pull request commentrust-lang/team

removed jakevossen5 from clenup crew

Thanks for your help!

jakevossen5

comment created time in 14 hours

push eventrust-lang/team

Jake Vossen

commit sha a85fc93a14d2f7b19ebac02f63dda2c73567ed87

removed jakevossen5 from clenup crew (#342)

view details

push time in 14 hours

PR merged rust-lang/team

removed jakevossen5 from clenup crew

I want to continue contributing, but the emails from this have been a bit too much but I don't want to disable GitHub emails. Thanks!

+0 -5

0 comment

2 changed files

jakevossen5

pr closed time in 14 hours

pull request commentrust-lang/rust

move leak-check to during coherence, candidate eval

@craterbot run mode=check-only start=master#7f940ef5d91b53e889f111f27e00849f2f5ae4a2 end=try#e2aab98dd8975a0990f9fbb79b3ea4b40559a184

nikomatsakis

comment created time in 14 hours

pull request commentrust-lang/rust

Update compiler_builtins to 0.1.29

cc @Amanieu @bors r+

tmiasko

comment created time in 15 hours

pull request commentrust-lang/rust

Add Extend::{extend_one,extend_reserve}

I agree that they feel a bit out of place, although they do relatively naturally coincide with extending IMO.

I don't think separate traits make a lot of sense, unfortunately, because we lack specialization (and aren't getting it anytime soon I imagine in flexible enough form). You really want to be able to call e.g. push and have that fallback to just extending if there's no separate push implementation defined.

I would, though, be fine saying that these are internal methods not currently on a (clear) path to stabilization (and perhaps marking them as doc(hidden)).

cuviper

comment created time in 15 hours

pull request commentrust-lang/rust

Print environment variables accessed by rustc as special comments into depinfo files

IIRC last I looked, writing OsStrings anywhere is pretty much "very hard." I don't mind having a separate file, but it seems like at that point it may make sense to hash the values -- and just not support non-UTF-8 (or even ASCII) keys. I don't think I've ever come across a non-UTF-8 name for an environment variable, so it seems like leaving them out of scope wouldn't be the end of the world.

petrochenkov

comment created time in 15 hours

Pull request review commentrust-lang/rust

Add Extend::{extend_one,extend_reserve}

 where     fn extend<T: IntoIterator<Item = (&'a K, &'a V)>>(&mut self, iter: T) {         self.base.extend(iter)     }++    #[inline]+    fn extend_one(&mut self, (&k, &v): (&'a K, &'a V)) {+        self.base.insert(k, v);+    }++    #[inline]+    fn extend_reserve(&mut self, additional: usize) {+        // self.base.extend_reserve(additional);

nit: stray comment?

cuviper

comment created time in 15 hours

pull request commentrust-lang/rust

Add Extend::{extend_one,extend_reserve}

Okay, I haven't found the time to do the investigation myself I wanted to, but this seems like a good change regardless. Given the amount of code using extend (and zip etc) which is affected by this, I would like to @bors try @rust-timer queue though just to make sure we're not unduly generating more LLVM IR or something like that causing compile times to increase.

Also, can someone on @rust-lang/libs sign off on adding these APIs (unstable for now)? Presuming we get a go-ahead can you file a tracking issue, @cuviper and update the attributes?

trait Extend {
    /// Extends a collection with exactly one element.
    #[unstable(feature = "extend_one", issue = "none")]
    fn extend_one(&mut self, item: A) {
        self.extend(Some(item));
    }

    /// Reserves capacity in a collection for the given number of additional elements.
    ///
    /// The default implementation does nothing.
    #[unstable(feature = "extend_one", issue = "none")]
    fn extend_reserve(&mut self, _additional: usize) {}
}
cuviper

comment created time in 15 hours

pull request commentrust-lang/rust

Update transitive dependencies to remove some deps

@bors r+

JohnTitor

comment created time in 17 hours

pull request commentrust-lang/rustc-dev-guide

Update lint declaration example

Seems fine to me though without the context as to what upstream changes caused this I can't be sure the new code is good. Someone from clippy can likely give better guidance than I.

But r=me on the changes presuming they compile.

JohnTitor

comment created time in 18 hours

push eventrust-lang/thanks

Deploy from CI

commit sha 0e5ba7141f6b62e42177aaad8e3f694400d85b29

Deploy 51e5cb914339a2ddc919409572950e6f364c8739 to gh-pages

view details

push time in a day

Pull request review commentrust-lang/rustc-perf

Add performance triage instructions and an initial triage log entry.

+# Rust Compiler Performance Triage++## Roster++- Tuesday morning (Melbourne time): njn++## Instructions++We regularly triage of the performance effects of merged PRs.++Steps:+- Check the most recent triage log entry. Look for responses in PRs, and follow+  up on any promised actions. (I.e. nag people!)+- Start a new triage log entry.+- Look through the [`instructions:u` graphs](https://perf.rust-lang.org) for+  each benchmark, looking for significant changes (regressions or improvements)+  in the period since the last triage.+  - Click and drag a region of a graph to zoom in on it. This is useful when+    data points are close together.+  - Click on a data point to open the "compare" page for that merge.+  - Click on the "compare" link at the top of the measurements on that page to+    open the page of commits in the merge.+- Easy cases: there is only a single PR in the merge.+  - Add a comment to the PR pointing to the "compare" page (unless someone else+    has already done that).+  - In the case of a regression, ask the author for a response. If it's a big+    regression, consider requesting a backout. It may be worth looking through+    the comments to see if any perf CI runs were done, and whether the+    regression was expected.+  - Add an entry to the triage log. Include useful details, especially promises+    of follow-up action from authors.+- Difficult cases: the merge was a rollup of multiple PRs.+  - Look through the PRs and try to determine which was the cause. Often you+    can easily tell that one or more PRs could not have caused the change, e.g.+    because they made trivial changes, documentation-only changes, etc.+  - If you can't narrow it down to a single PR, in the rollup PR ask all the+    authors who might be responsible.+  - Once you have narrowed it down to a single PR, treat it like an easy case,+    above.+  - You might want to remind the author to use "@bors rollup=never" for PRs+    that are likely to affect performance.+- Repeat with the [`max-rss`+  graphs](https://perf.rust-lang.org/?start=&end=&absolute=true&stat=max-rss).+  These measurements are much noisier than `instructions:u`, so only larger+  changes will be clear.++The #wg-compiler-performance channel on Discord is a good place to ask+questions.

aside: maybe would make sense to move to Zulip in the interest of making it easier to loop in (most?) compiler people.

nnethercote

comment created time in a day

Pull request review commentrust-lang/rustc-perf

Add performance triage instructions and an initial triage log entry.

+# Rust Compiler Performance Triage++## Roster++- Tuesday morning (Melbourne time): njn++## Instructions++We regularly triage of the performance effects of merged PRs.
We regularly triage the performance effects of merged PRs.
nnethercote

comment created time in a day

Pull request review commentrust-lang/rustc-perf

Add performance triage instructions and an initial triage log entry.

+# 2020 Triage Logs++These are in reverse chronological order.++## 2020-05-26 - njn

Maybe would be good to note "since" on the first one? (i.e. give a range)

I guess for future ones it won't really matter since it'll be implicit from the previous one.

nnethercote

comment created time in a day

issue commentrust-lang/rust

Linker error for LLVM-10-rust-1.45.0-nightly when building compiler plugins

Yes, this is expected fallout from a recent change. Please let me know if it's causing serious problems though, it's plausible we can find an alternative way of achieving the goals of the PR that broke this. The rustc-dev component which you need for this isn't shipped on stable so this isn't a stable-to-nightly regression.

jdm

comment created time in a day

push eventrust-lang/rustc-pr-tracking

stats updater

commit sha 6c60f4c3bbb23e47ef604cbfef2c6b7a8544b4fc

Automatic stats update

view details

push time in a day

pull request commentrust-lang/rust-clippy

Update contributing section about syncing Clippy

r? @phansch

It's alive!

flip1995

comment created time in 2 days

pull request commentrust-lang/rust-clippy

Update contributing section about syncing Clippy

r? @Mark-Simulacrum

flip1995

comment created time in 2 days

pull request commentrust-lang/rust-clippy

Update contributing section about syncing Clippy

r? @oli-obk

Testing out highfive...

flip1995

comment created time in 2 days

MemberEvent

pull request commentrust-lang/highfive

Add config file for Clippy

CI on master should auto-deploy this.

flip1995

comment created time in 2 days

push eventrust-lang/highfive

flip1995

commit sha c0792bc1b3118095b97a121e3dba62a1bc62df59

Add config file for Clippy

view details

Mark Rousskov

commit sha 4966ceffefe8eba2756c84e7dc17d5cca9fa431f

Merge pull request #262 from flip1995/clippy Add config file for Clippy

view details

push time in 2 days

PR merged rust-lang/highfive

Add config file for Clippy

Clippy PR queue got pretty long recently and we hope that by assigning someone to each PR we can handle the workload better.

@Manishearth @matthiaskrgr @phansch @yaahc I added you to the reviewers list. If you don't want to get assigned automatically, let me know and I can remove you again.

@rust-lang/clippy If someone else from the Clippy team wants to get assigned to PRs for review, also let me know and I'll add you to the list.

+11 -0

3 comments

1 changed file

flip1995

pr closed time in 2 days

pull request commentrust-lang/rust

Remove dangling COPYRIGHT references

@bors r+ rollup

Thanks, sorry -- missed the update notification.

tamird

comment created time in 2 days

pull request commentrust-lang/rust

Enable `glacier` command via triagebot

@bors r+ rollup

JohnTitor

comment created time in 2 days

pull request commentrust-lang/rust

perf: Revert accidental inclusion of a part of #69218

Note that I'm not sure we'll rebuild the compiler for you, so you may need to x.py clean and rebuild.

Also, debuginfo level of 1 should be sufficient I suspect and significantly lighter on disk usage - I've personally seen IIRC tens of gigabytes of space savings.

Marwes

comment created time in 2 days

Pull request review commentrust-lang/blog.rust-lang.org

Blog post on new inline assembly syntax

+---+layout: post+title: "New inline assembly syntax available in nightly"+author: Josh Triplett+description: "Rust has a new inline assembly syntax in nightly, please test"+team: the language team <https://www.rust-lang.org/governance/teams/lang>+---++In the course of optimization, OS or embedded development, or other kinds of+low-level programming, you may sometimes need to write native assembly code for+the processor you're running on. "Inline assembly" provides a simple way to+integrate some assembly instructions into a Rust program, feeding Rust+expressions in as input registers, and getting output directly into Rust+variables. We've introduced a new syntax for inline assembly in nightly Rust,+and we're seeking feedback on it; we believe this new syntax has a path to+stabilization in the future.++Nightly Rust has had a syntax for "inline assembly" (`asm!`) for a long time;+however, this syntax just exposed a very raw version of LLVM's assembly+construct, with no safeguards to help developers use it. Getting any detail of+this syntax even slightly wrong tended to produce an Internal Compiler Error+(ICE) rather than the kind of friendly error message you've come to expect from+rustc. This syntax also had little to no hope of being supported on any+non-LLVM backend. As a result of these limitations, the `asm!` syntax was+highly unlikely to ever graduate from nightly to stable Rust, despite it being+one of the most requested features.++In an effort to improve `asm!` and bring it to more users, [Amanieu+d'Antras](https://github.com/Amanieu) designed and implemented a new,+friendlier syntax for `asm!`. This syntax has had a long road:+- The proposal first started as a [pre-RFC on+  internals](https://internals.rust-lang.org/t/pre-rfc-2-inline-assembly/11310).+- Inline assembly became the language team's first [project+  group](https://github.com/rust-lang/rfcs/blob/master/text/2836-project-asm.md),+  and iteratively designed RFCs in [the project group+  repository](https://github.com/rust-lang/project-inline-asm/).+- [RFC 2873](https://github.com/rust-lang/rfcs/pull/2873) (still under+  discussion) provides a specification for the syntax and its interaction with+  the Rust language.+- We [renamed the existing `asm!` to+  `llvm_asm!`](https://github.com/rust-lang/rust/pull/68404), so that people+  currently using inline assembly on nightly can continue to use the existing+  syntax for now. (We plan to remove this syntax eventually, given its fragile+  ICE-happy nature, but while evaluating the new syntax we want the old syntax+  available for comparison and alternatives.)+- [PR 69171](https://github.com/rust-lang/rust/pull/69171) (also by Amanieu)+  implemented the new `asm!` syntax in nightly.++Here's an example of using the new inline assembly syntax, to print a message+to standard output using a direct [`write`+syscall](https://man7.org/linux/man-pages/man2/write.2.html) on x86-64 Linux:++```rust+#![feature(asm)]++fn main() {+    let buf = "Hello from asm!\n";+    let ret: i32;+    unsafe {+        asm!(+            "syscall",+            in("rax") 1, // syscall number+            in("rdi") 1, // fd+            in("rsi") buf.as_ptr(),+            in("rdx") buf.len(),+            out("rcx") _, // clobbered by syscalls+            out("r11") _, // clobbered by syscalls+            lateout("rax") ret,+        );+    }+    println!("write returned: {}", ret);+}+```++(You can [try this example on the+playground](https://play.rust-lang.org/?version=nightly&mode=release&edition=2018&gist=e983a5f5cffa51f4320f1176465d3a56).)++The example above specifies the exact inputs, outputs, and clobbers required by+the Linux syscall calling convention. You can also provide inputs and outputs+via arbitrary registers, and the compiler will select appropriate registers for+you. The following example uses [bit manipulation+instructions](https://en.wikipedia.org/wiki/Bit_Manipulation_Instruction_Sets)+to compute the bit numbers of all set bits in a value, and stores them in a+slice of memory:++```rust+#![feature(asm)]++fn main() {+    let mut bits = [0u8; 64];+    for value in 0..=1024u64 {+        let popcnt;+        unsafe {+            asm!("+                popcnt {popcnt}, {v}+                2:+                blsi rax, {v}+                jz 1f+                xor {v}, rax+                tzcnt rax, rax+                stosb+                jmp 2b+                1:+                ",+                v = inout(reg) value => _,+                popcnt = out(reg) popcnt,+                out("rax") _, // scratch+                inout("rdi") bits.as_mut_ptr() => _,+            );+        }+        println!("bits of {}: {:?}", value, &bits[0..popcnt]);+    }+}+```++(You can [try this example on the+playground](https://play.rust-lang.org/?version=nightly&mode=release&edition=2018&gist=38874735e48aa20289f23f5a3cbeae0c).+Note that this code serves to demonstrate inline assembly, not to demonstrate+an efficient implementation of any particular algorithm.)++Notice that `value` and `popcnt` have registers selected for them, while+`bits.as_mut_ptr()` must go in the `rdi` register for use with the `stosb`+instruction.++For full details on the new `asm!` syntax, see [RFC+2873](https://github.com/Amanieu/rfcs/blob/inline-asm/text/0000-inline-asm.md).+Please try it out, and [report any bugs via the rust issue+tracker](https://github.com/rust-lang/rust/issues/) with the tag `F-asm`.  You+can also [report your experiences on the tracking+issue](https://github.com/rust-lang/rust/issues/72016).

Should we perhaps instead direct to an internals or Zulip thread? I expect that the tracking issue is otherwise likely to relatively quickly get lots of comments, and "protecting" it seems worthwhile.

joshtriplett

comment created time in 2 days

issue closedrust-lang/rust

Can't link to rustc_driver with latest nightly

I tried this code:

#![feature(rustc_private)]
extern crate rustc_driver;
fn main() {}

I expected to see this happen: Compiles fine.

Instead, this happened:

error: linking with `cc` failed: exit code: 1
  |
  = note: "cc" "-Wl,--as-needed" "-Wl,-z,noexecstack" "-m64" "-L" "/home/bjorn/.rustup/toolchains/nightly-2020-05-25-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib" "rust_out.rust_out.7rcbfp3g-cgu.0.rcgu.o" "rust_out.rust_out.7rcbfp3g-cgu.1.rcgu.o" "rust_out.rust_out.7rcbfp3g-cgu.2.rcgu.o" "rust_out.rust_out.7rcbfp3g-cgu.3.rcgu.o" "rust_out.rust_out.7rcbfp3g-cgu.4.rcgu.o" "-o" "rust_out" "-Wl,--gc-sections" "-pie" "-Wl,-zrelro" "-Wl,-znow" "-nodefaultlibs" "-L" "/home/bjorn/.rustup/toolchains/nightly-2020-05-25-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib" "-L" "/home/bjorn/.rustup/toolchains/nightly-2020-05-25-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib" "-lrustc_driver-fefef43299f39010" "-Wl,--start-group" "-L" "/home/bjorn/.rustup/toolchains/nightly-2020-05-25-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib" "-lstd-265ff16c7b6b86f9" "-Wl,--end-group" "-Wl,-Bstatic" "/home/bjorn/.rustup/toolchains/nightly-2020-05-25-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libcompiler_builtins-a1755b3e88842f5d.rlib" "-Wl,-Bdynamic" "-lLLVM-10-rust-1.45.0-nightly" "-lutil" "-ldl" "-lutil" "-ldl" "-lrt" "-lpthread" "-lgcc_s" "-lc" "-lm" "-lrt" "-lpthread" "-lutil" "-ldl" "-lutil"
  = note: /usr/bin/ld: cannot find -lLLVM-10-rust-1.45.0-nightly
          collect2: error: ld returned 1 exit status

Meta

rustc --version --verbose:

rustc 1.45.0-nightly (46e85b432 2020-05-24)
binary: rustc
commit-hash: 46e85b4328fe18492894093c1092dfe509df4370
commit-date: 2020-05-24
host: x86_64-unknown-linux-gnu
release: 1.45.0-nightly
LLVM version: 10.0

closed time in 2 days

bjorn3

issue commentrust-lang/rust

Can't link to rustc_driver with latest nightly

Yes, closing as expected breakage. If llvm-tools-preview doesn't work for you, we can reopen.

The dependency is implicit, i.e. you need to manage it yourself, as rustup doesn't currently support dependencies.

bjorn3

comment created time in 2 days

push eventrust-lang/rustc-pr-tracking

stats updater

commit sha b97b3e1bac4ba8ecf3c01363a981d5a55ca25a56

Automatic stats update

view details

push time in 2 days

IssuesEvent

issue commentrust-lang/rust

Missed optimization: extra branch with slicing and integer overflow checks

Actually, that was probably premature. We should add a codegen test.

alex

comment created time in 3 days

issue closedrust-lang/rust

Missed optimization: extra branch with slicing and integer overflow checks

Godbolt: https://rust.godbolt.org/z/PXY1lr

Basically the issue is that you compute s.position + n, check that it doesn't overflow, and then you verify that s.position + n is greater than s.position, which it of course always is, since you checked for an overflow! This is probably an LLVM optimization bug, but I'm starting here :-)

Command line arguments: -C opt-level=3 -C debug-assertions

Source:


pub struct S1<'a> {
    data: &'a [u8],
    position: usize,
}

pub fn f1<'a>(s: &'a mut S1, n: usize) -> &'a [u8] {
    let d = &s.data[s.position..s.position+n];
    s.position += n;
    return d;
}

ASM:

example::f1:
        push    rax
        mov     rax, qword ptr [rdi + 16]
        add     rsi, rax
        jb      .LBB0_4
        mov     rdx, rsi
        sub     rdx, rax
        jb      .LBB0_5
        mov     rcx, qword ptr [rdi + 8]
        cmp     rcx, rsi
        jb      .LBB0_6
        add     rax, qword ptr [rdi]
        mov     qword ptr [rdi + 16], rsi
        pop     rcx
        ret
.LBB0_4:
        lea     rdi, [rip + .L__unnamed_1]
        call    qword ptr [rip + _ZN4core9panicking5panic17h8f422ca74d186618E@GOTPCREL]
        ud2
.LBB0_5:
        mov     rdi, rax
        call    qword ptr [rip + _ZN4core5slice22slice_index_order_fail17h7ab7c9c6113ae4b8E@GOTPCREL]
        ud2
.LBB0_6:
        mov     rdi, rsi
        mov     rsi, rcx
        call    qword ptr [rip + _ZN4core5slice20slice_index_len_fail17h3a0f2c4c66447e54E@GOTPCREL]
        ud2

str.0:
        .ascii  "/tmp/compiler-explorer-compiler119124-62-359u5j.hrbs4/example.rs"

str.1:
        .ascii  "attempt to add with overflow"

.L__unnamed_1:
        .quad   str.1
        .quad   28
        .quad   str.0
        .quad   64
        .long   8
        .long   33

closed time in 3 days

alex

pull request commentrust-lang/rust

mir: adjust conditional in recursion limit check

It seems reasonable to add a struct somewhere with check and increment methods that would store recursion limits and be used throughout the compiler, to hopefully prevent this from happening again.

davidtwco

comment created time in 3 days

push eventrust-lang/thanks

Deploy from CI

commit sha e776f8761117e7822df07d9acb60c036fcda4d78

Deploy 51e5cb914339a2ddc919409572950e6f364c8739 to gh-pages

view details

push time in 3 days

pull request commentrust-lang/rust

bootstrap: propagate test-args to miri and clippy test suites

r=me

If you have some time, any chance you can quickly try and check the other test steps are doing this? If not I'd appreciate an issue. Thanks!

RalfJung

comment created time in 3 days

push eventrust-lang/rustc-pr-tracking

stats updater

commit sha ee194eb88afc829ed2be2e6f42d6884d4216f5fc

Automatic stats update

view details

push time in 3 days

PR closed rust-lang/rust

Convert posix scripts to bash I-nominated S-waiting-on-review T-infra

This addresses #31036

Additional PRs for this issue are in their respective repos:

  • rust-lang/stdarch#853
  • rust-lang/miri#1395
  • rust-lang/rust-installer#102

Files not converted are:

  • src/tools/clippy/util/dev (This is deprecated)
  • src/tools/rust-installer/test/image1/bin/program
  • src/tools/rust-installer/test/image1/bin/program2
  • src/tools/rust-installer/test/image1/bin/oldprogram
  • src/tools/rust-installer/test/image1/bin/cargo

All except the first are single-lined files that hold just #!/bin/sh

+14 -14

9 comments

14 changed files

Daniel-Worrall

pr closed time in 4 days

pull request commentrust-lang/rust

Convert posix scripts to bash

We discussed this at the last infrastructure team meeting and felt that there was not currently bandwidth in the team to properly evaluate this change. Specifically, we want to do a survey of various platforms to determine the best shell (if there is one) to use. It was also brought up that we would generally accept fixes to our shell code if there are minor changes that would make it compatible with a wider variety of shells, but that changing the shebang is unlikely to be helpful -- in particular, it seems like finding a shebang that will actually exist and be consistent across all platforms isn't likely.

With that in mind, I'm going to go ahead and close this PR. I personally would prefer to close the issue that spawned it as well, since I don't expect us to do anything here unless there's active interest in changing things (and then having an issue open seems like it brings no benefit). But I don't know that we have consensus on that so not going to close it.

Thanks @Daniel-Worrall!

Daniel-Worrall

comment created time in 4 days

pull request commentrust-lang/rust

Issue 72408 nested closures exponential

We were having some trouble with perf yesterday/today, you can follow progress here: https://perf.rust-lang.org/status.html.

VFLashM

comment created time in 4 days

pull request commentrust-lang/rust

Print environment variables accessed by rustc as special comments into depinfo files

Report looks good to me, but I am not on the compiler team so cannot kick off FCP. @rust-lang/compiler, could someone do that?

petrochenkov

comment created time in 4 days

push eventrust-lang/triagebot

Mark Rousskov

commit sha 2593ac9f4200addaa9e048da8f69c3792ec35891

Revert "Temporarily limit rustc commits" This reverts commit 1a9cb03bd08c99bb9495b456d842fefe2f7b6ed7. It seems that this was actually an upstream issue, so revert this commit for now. We may need a fix here regardless, though.

view details

push time in 4 days

push eventrust-lang/triagebot

Mark Rousskov

commit sha 1a9cb03bd08c99bb9495b456d842fefe2f7b6ed7

Temporarily limit rustc commits We're encountering trouble returning all of the commits (~800 currently), so limit to a smaller subset.

view details

Mark Rousskov

commit sha c2f9bdebaeb4e99eb1fc650adb272c04a3a2aa87

Adjust Cargo.lock

view details

push time in 4 days

pull request commentrust-lang/rust

submodules: Update RLS and Rustfmt

It should be fine to set CFG_RELEASE for all builds as well; please leave a comment noting that rustfmt (and potentially other tools) rely on it due to rustc_attr dependencies.

Xanewok

comment created time in 4 days

push eventrust-lang/rustc-perf

Mark Rousskov

commit sha 946836265992d95e6d6d084c13b89c0210bee0a6

Create target directory This is no longer packaged with Rust due to rust-lang/rust#72000.

view details

push time in 4 days

push eventrust-lang/triagebot

Santiago Pastorino

commit sha 3e25fbe821543962568a5ef7031dd65f5e893643

Add exclude labels pattern handling (#561) This is to support not prioritizing issues tagged with `T-rustdoc`, `T-infra` and `T-release`.

view details

push time in 4 days

PR merged rust-lang/triagebot

Add exclude labels pattern handling

This is to support not prioritizing issues tagged with T-rustdoc, T-infra and T-release.

r? @Mark-Simulacrum @LeSeulArtichaut

This works together with https://github.com/rust-lang/rust/pull/72385

+28 -12

2 comments

2 changed files

spastorino

pr closed time in 4 days

push eventrust-lang/thanks

Deploy from CI

commit sha cfe6c520d9c576cf94565dcc938864638004d538

Deploy 51e5cb914339a2ddc919409572950e6f364c8739 to gh-pages

view details

push time in 4 days

push eventrust-lang/rustc-timing

Mark Rousskov

commit sha 2ba14b540e2753311ae28d4b996614a9472951f8

Revert "de6060b09d23d8c50afe88354358aa056c27ad9f - success" This reverts commit 802856eed7e677177efa1dc71d101e0eb3e293d3.

view details

push time in 4 days

push eventrust-lang/rustc-pr-tracking

stats updater

commit sha 025b1a6889f70c2b160454d24b1fac0e7a400ee7

Automatic stats update

view details

push time in 4 days

push eventrust-lang/wg-async-foundations

Deploy from CI

commit sha c496d00605a757251c56f11efb7d461bd4bd1cd2

Deploy a1bc4d858e1d2c4a18b0540f7a6231ae837439f4 to gh-pages

view details

push time in 5 days

push eventrust-lang/simpleinfra

Mark Rousskov

commit sha b12a26982b6150cd554900731a5c2dbf8e475a7d

Add a mount point

view details

push time in 5 days

push eventrust-lang/simpleinfra

Mark Rousskov

commit sha 72bb0aecb669632fef5022060fd94729328900c4

rustc-perf on ECS

view details

push time in 5 days

push eventrust-lang/triagebot

Mark Rousskov

commit sha 8172548b81b5c39bb8445582653ec50cda98f32d

Do not issue query to get GH username This is a temporary fix for the GitHub API problems we're having currently.

view details

push time in 5 days

push eventrust-lang/rustc-perf

Mark Rousskov

commit sha e0e6d1a8864536848b0643ce4de3613c99a180a7

Use NonNull for arena-backed strings

view details

Mark Rousskov

commit sha 6dcca40167e392613ca47c57c76d2ae9a2f8619f

Add some impls for database types

view details

Mark Rousskov

commit sha 10b55e42baa2649a1e4204aa62858326671e7f2c

Implement rocksdb backend ingestion from JSON

view details

Mark Rousskov

commit sha 4464fac459eee1929c00a07eb161ba2245126cc2

Load process stat points from rocksdb

view details

Mark Rousskov

commit sha c7d27a46e2f0c307d1eb90009483ae4e142b07b5

Use database for self-profile queries

view details

Mark Rousskov

commit sha 54794d2d1b824371224277dbbd50cf42c01e980e

Don't explicitly store last_date

view details

Mark Rousskov

commit sha 97fff20ca4206af456c55c8da4625360bfa66cd0

Don't separately store errors in memory

view details

Mark Rousskov

commit sha fcc928d43fe4f5879987456e5f7b11007d217166

Remove stats_list from separate storage

view details

Mark Rousskov

commit sha b3011a731538d1f4d81283a6c9c291e7ea604cf1

Pull commit list from database

view details

Mark Rousskov

commit sha 9cb13c5eaf98e16c96f83570240d5c95062972e5

Stop storing and using all_paths Split instead into querying the underlying series as appropriate from the index.

view details

Mark Rousskov

commit sha 9df9e532984bcefdd8015b640d1caf9f62ab1a83

Stop loading commit data

view details

Mark Rousskov

commit sha 15458867cb17c8c701154d4e75b807257218dab0

Stop loading artifact data

view details

Mark Rousskov

commit sha bf84e5a18d346f0b9baaa665e575a2809987fba6

Warn users if they attempt to use rustc-timing as a database

view details

Mark Rousskov

commit sha 2ef8bc76e80dd284fa1cb60aebc7510800cee986

Ingest new commits on push

view details

Mark Rousskov

commit sha 1ae686911a2bfc785f21de1f02d56aa9816da000

Add Dockerfile

view details

Mark Rousskov

commit sha 2524d48a2993542311c2839e352a56f397aff923

Auto-deploy on merge

view details

push time in 5 days

PR opened rust-lang/rustc-perf

Deploy to ECS automatically

This isn't yet fully working.

+1329 -767

0 comment

20 changed files

pr created time in 5 days

create barnchrust-lang/rustc-perf

branch : deploy

created branch time in 5 days

delete branch rust-lang/rustc-perf

delete branch : databases

delete time in 5 days

push eventrust-lang/rustc-perf

Mark Rousskov

commit sha e0e6d1a8864536848b0643ce4de3613c99a180a7

Use NonNull for arena-backed strings

view details

Mark Rousskov

commit sha 6dcca40167e392613ca47c57c76d2ae9a2f8619f

Add some impls for database types

view details

Mark Rousskov

commit sha 10b55e42baa2649a1e4204aa62858326671e7f2c

Implement rocksdb backend ingestion from JSON

view details

Mark Rousskov

commit sha 4464fac459eee1929c00a07eb161ba2245126cc2

Load process stat points from rocksdb

view details

Mark Rousskov

commit sha c7d27a46e2f0c307d1eb90009483ae4e142b07b5

Use database for self-profile queries

view details

Mark Rousskov

commit sha 54794d2d1b824371224277dbbd50cf42c01e980e

Don't explicitly store last_date

view details

Mark Rousskov

commit sha 97fff20ca4206af456c55c8da4625360bfa66cd0

Don't separately store errors in memory

view details

Mark Rousskov

commit sha fcc928d43fe4f5879987456e5f7b11007d217166

Remove stats_list from separate storage

view details

Mark Rousskov

commit sha b3011a731538d1f4d81283a6c9c291e7ea604cf1

Pull commit list from database

view details

Mark Rousskov

commit sha 9cb13c5eaf98e16c96f83570240d5c95062972e5

Stop storing and using all_paths Split instead into querying the underlying series as appropriate from the index.

view details

Mark Rousskov

commit sha 9df9e532984bcefdd8015b640d1caf9f62ab1a83

Stop loading commit data

view details

Mark Rousskov

commit sha 15458867cb17c8c701154d4e75b807257218dab0

Stop loading artifact data

view details

Mark Rousskov

commit sha bf84e5a18d346f0b9baaa665e575a2809987fba6

Warn users if they attempt to use rustc-timing as a database

view details

Mark Rousskov

commit sha 2ef8bc76e80dd284fa1cb60aebc7510800cee986

Ingest new commits on push

view details

push time in 5 days

PR merged rust-lang/rustc-perf

Use a database for site backend

This refactors the site to no longer hold any of our data in-memory, instead always falling back on a database read to query data. We use rocksdb for this purpose; it seems to work well (and has built-in compression which is nice), though the Rust bindings are sometimes a bit lacking unfortunately.

Alone, this PR doesn't give us much -- but, as I want to start adding more statistics and perhaps more interesting things than just "a number" (e.g. memory usage sampled at 50 Hz or something) the old strategy of storing in JSON (and loading on site startup) is going to work less well I think overtime. This PR does not change that the "durable" data storage is still JSON; the database is not required to be persistent, it can be freely removed and re-generated from the JSON. This may change in the future.

To upgrade:

Please run the ingestion script pointing at a different directory, like so:

find rustc-timing/times/ -type f | xargs ./target/release/ingest database

And optionally follow up by shrinking the database:

./target/release/compact database

You can run the ingestion script repeatedly over all the files, or you can run it on just some newly collected data.

The ingestion script must not be run in parallel with the site (it should error).

r? @nnethercote -- but I just want to get your take on the overall approach and give you a heads up, no need to actually review code :)

+1252 -767

3 comments

17 changed files

Mark-Simulacrum

pr closed time in 5 days

PR opened rust-lang/simpleinfra

rustc-perf on ECS

But since I've already applied going to merge with CI passing.

cc @pietroalbini

+198 -5

0 comment

7 changed files

pr created time in 5 days

create barnchrust-lang/simpleinfra

branch : rustc-perf

created branch time in 5 days

pull request commentrust-lang/rust

[beta] Rollup backports

r? @Mark-Simulacrum

@bors r+ rollup=never

Elinvynia

comment created time in 5 days

pull request commentrust-lang/triagebot

Add exclude labels pattern handling

Going to hold off on landing this for a bit -- we ideally want to merge simultaneously with the rust-lang/rust merge.

spastorino

comment created time in 5 days

pull request commentrust-lang/rust

Add some teams to prioritization exclude_labels

@bors r+ rollup

spastorino

comment created time in 5 days

issue commentrust-lang/glacier

Automatically add a testcase via a comment

We should test it out first :)

hellow554

comment created time in 5 days

pull request commentrust-lang/rust

SocketAddr and friends now correctly pad its content

@bors r+

Approving in that case, I believe the code is correct.

Lucretiel

comment created time in 5 days

push eventrust-lang/triagebot

Elinvynia

commit sha fcbcc52cc13456970dfbc519294825ddf405d17f

Add `glacier` command to track ICEs (#526)

view details

push time in 5 days

PR merged rust-lang/triagebot

Add `glacier` command to track ICEs

This is building on the work done in https://github.com/rust-lang/triagebot/pull/234, huge props to @hellow554 for the initial effort!

I have no idea how to run the bot, but the tests I added pass.

+315 -0

2 comments

8 changed files

Elinvynia

pr closed time in 5 days

pull request commentrust-lang/rust

Add flag to open docs: x.py doc --open

@bors r+

Thanks!

dtolnay

comment created time in 5 days

Pull request review commentrust-lang/triagebot

Add `glacier` command to track ICEs

+//! Allows team members to directly create a glacier PR with the code provided.++use crate::{+    config::GlacierConfig,+    github::Event,+    handlers::{Context, Handler},+};++use futures::future::{BoxFuture, FutureExt};+use parser::command::glacier::GlacierCommand;+use parser::command::{Command, Input};+use octocrab::params::repos::Reference;+use octocrab::models::Object;++pub(super) struct GlacierHandler;++impl Handler for GlacierHandler {+    type Input = GlacierCommand;+    type Config = GlacierConfig;++    fn parse_input(+        &self,+        ctx: &Context,+        event: &Event,+        _: Option<&GlacierConfig>,+    ) -> Result<Option<Self::Input>, String> {+        let body = if let Some(b) = event.comment_body() {+            b+        } else {+            // not interested in other events+            return Ok(None);+        };++        match event {+            Event::IssueComment(_) => (),+            _ => {return Ok(None);}+        };++        let mut input = Input::new(&body, &ctx.username);+        match input.parse_command() {+            Command::Glacier(Ok(command)) => Ok(Some(command)),+            Command::Glacier(Err(err)) => {+                return Err(format!(+                    "Parsing assign command in [comment]({}) failed: {}",+                    event.html_url().expect("has html url"),+                    err+                ));+            }+            _ => Ok(None),+        }+    }++    fn handle_input<'a>(+        &self,+        ctx: &'a Context,+        _config: &'a GlacierConfig,+        event: &'a Event,+        cmd: GlacierCommand,+    ) -> BoxFuture<'a, anyhow::Result<()>> {+        handle_input(ctx, event, cmd).boxed()+    }+}++async fn handle_input(ctx: &Context, event: &Event, cmd: GlacierCommand) -> anyhow::Result<()> {+    let is_team_member = if let Err(_) | Ok(false) = event.user().is_team_member(&ctx.github).await+    {+        false+    } else {+        true+    };++    if !is_team_member {+        return Ok(())+    };++    let url = cmd.source;+    let response = ctx.github.raw().get(&format!("{}{}", url.replace("github", "githubusercontent"), "/playground.rs")).send().await?;+    let body = response.text().await?;++    let number = event.issue().unwrap().number;+    let user = event.user();++    let octocrab = &ctx.octocrab;++    let fork = octocrab.repos("rustbot", "glacier");+    let base = octocrab.repos("rust-lang", "glacier");++    let master = base.get_ref(&Reference::Branch("master".to_string())).await?.object;+    let master = if let Object::Commit { sha, ..} = master {+        sha+    } else {+        panic!()+    };++    fork.create_ref(&Reference::Branch(format!("triagebot-ice-{}", number)), master).await?;

Seems fine to leave as is for now.

Elinvynia

comment created time in 5 days

pull request commentrust-lang/rust

Allow rust-highfive to label issues it creates.

Can you also squash the commits into one? Thanks!

r=me with that done

Elinvynia

comment created time in 5 days

pull request commentrust-lang/rust

Various minor improvements to Ipv6Addr::Display

I'm going to call this blocked on the decision wrt to padding here: https://github.com/rust-lang/rust/pull/72398#issuecomment-632731888

Lucretiel

comment created time in 5 days

pull request commentrust-lang/rust

SocketAddr and friends now correctly pad its content

The implementation here looks good to me. It's unclear to me though that we want to support padding in all of the various formatting impls; @rust-lang/libs, do we have a decision on that yet? (Both in the general sense and in the specific of these two impls).

Lucretiel

comment created time in 5 days

pull request commentrust-lang/rust

Treat dependencies of proc-macro crates like normal dependencies

Hardcode exclusions for cfg and autocfg when we copy libstd artifacts into the sysroot during bootstrap. All dependency changes to libstd are carefully audited, so this shouldn't be too much of a maintence burden.

I would prefer that we not give users any errors about sysroot crates if possible, and though these two particular crates are probably quite rare to hit on accident I would prefer to add them to a hardcoded list in bootstrap.

It's also a bit unclear to me -- the PR description says this was necessary for #68941 but that has since landed. I suspect what you meant is that #68941 won't really be useful if we're not loading dependency spans? Can you update the PR description?

@bors try @rust-timer queue

Also would like to gather performance diff of this change. I would also like to make sure that @petrochenkov is okay with this, as I'm not really all that familiar with the details of our resolution/crate loading implementation.

Aaron1011

comment created time in 5 days

Pull request review commentrust-lang/rust

Treat dependencies of proc-macro crates like normal dependencies

 impl<'a> CrateLoader<'a> {         dep_kind: DepKind,     ) -> CrateNumMap {         debug!("resolving deps of external crate");-        if crate_root.is_proc_macro_crate() {-            return CrateNumMap::new();-        }++        // Note that we need to resolve deps for proc-macro crates (just like normal crates)+        // since we may need to decode `Span`s that reference the `CrateNums`+        // of transitive dependencies

There's nothing here about proc macros anymore though? I would agree with @petrochenkov that this comment seems more confusing than helpful. We should have a test that ensures this doesn't get re-added?

Aaron1011

comment created time in 5 days

pull request commentrust-lang/rust

Allow rust-highfive to label issues it creates.

@Elinvynia Could you update the sets to lists? With that done I think we can merge this in. Thanks!

Elinvynia

comment created time in 5 days

issue openedrust-lang/release-team

Transitioning to Zulip

Presuming the infrastructure team moves over to Zulip, I think it would make sense for us to do so as well. I personally find Zulip's UI makes it easier to follow conversations that are long-running; we don't have too many of those. Generally speaking I also find that compiler, libs, and lang team members are much more likely to respond to pings on Zulip, too, which would be nice for triage work.

Checkboxes:

  • [ ] @BatmanAoD
  • [ ] @cuviper
  • [ ] @Dylan-DPC
  • [ ] @Mark-Simulacrum
  • [ ] @pietroalbini
  • [ ] @sgrif
  • [ ] @jonas-schievink
  • [ ] @XAMPPRocky
  • [ ] @tmandry

I plan to go ahead with this per fcpbot when at most 2 people have not checked and ~10 days have passed since this thread is opened (presuming no concerns are raised).

created time in 5 days

issue closedrust-lang/release-team

Point Releases

I've written up a draft of the RFC here:

https://github.com/Mark-Simulacrum/rfcs/blob/point-releases/text/0000-point-releases-on-a-schedule.md

Please leave initial feedback in this issue. Eventually I guess I'll probably publish it for wider review within the community (preRFC and so forth).

closed time in 5 days

Mark-Simulacrum

Pull request review commentrust-lang/triagebot

Add `glacier` command to track ICEs

+//! Allows team members to directly create a glacier PR with the code provided.++use crate::{+    config::GlacierConfig,+    github::Event,+    handlers::{Context, Handler},+};++use futures::future::{BoxFuture, FutureExt};+use parser::command::glacier::GlacierCommand;+use parser::command::{Command, Input};+use octocrab::params::repos::Reference;+use octocrab::models::Object;++pub(super) struct GlacierHandler;++impl Handler for GlacierHandler {+    type Input = GlacierCommand;+    type Config = GlacierConfig;++    fn parse_input(+        &self,+        ctx: &Context,+        event: &Event,+        _: Option<&GlacierConfig>,+    ) -> Result<Option<Self::Input>, String> {+        let body = if let Some(b) = event.comment_body() {+            b+        } else {+            // not interested in other events+            return Ok(None);+        };++        match event {+            Event::IssueComment(_) => (),+            _ => {return Ok(None);}+        };++        let mut input = Input::new(&body, &ctx.username);+        match input.parse_command() {+            Command::Glacier(Ok(command)) => Ok(Some(command)),+            Command::Glacier(Err(err)) => {+                return Err(format!(+                    "Parsing assign command in [comment]({}) failed: {}",+                    event.html_url().expect("has html url"),+                    err+                ));+            }+            _ => Ok(None),+        }+    }++    fn handle_input<'a>(+        &self,+        ctx: &'a Context,+        _config: &'a GlacierConfig,+        event: &'a Event,+        cmd: GlacierCommand,+    ) -> BoxFuture<'a, anyhow::Result<()>> {+        handle_input(ctx, event, cmd).boxed()+    }+}++async fn handle_input(ctx: &Context, event: &Event, cmd: GlacierCommand) -> anyhow::Result<()> {+    let is_team_member = if let Err(_) | Ok(false) = event.user().is_team_member(&ctx.github).await+    {+        false+    } else {+        true+    };++    if !is_team_member {+        return Ok(())+    };++    let url = cmd.source;+    let response = ctx.github.raw().get(&format!("{}{}", url.replace("github", "githubusercontent"), "/playground.rs")).send().await?;+    let body = response.text().await?;++    let number = event.issue().unwrap().number;+    let user = event.user();++    let octocrab = &ctx.octocrab;++    let fork = octocrab.repos("rustbot", "glacier");+    let base = octocrab.repos("rust-lang", "glacier");++    let master = base.get_ref(&Reference::Branch("master".to_string())).await?.object;+    let master = if let Object::Commit { sha, ..} = master {+        sha+    } else {+        panic!()

Regardless, we should note what we actually encountered.

Elinvynia

comment created time in 5 days

Pull request review commentrust-lang/triagebot

Add `glacier` command to track ICEs

+//! Allows team members to directly create a glacier PR with the code provided.++use crate::{+    config::GlacierConfig,+    github::Event,+    handlers::{Context, Handler},+};++use futures::future::{BoxFuture, FutureExt};+use parser::command::glacier::GlacierCommand;+use parser::command::{Command, Input};+use octocrab::params::repos::Reference;+use octocrab::models::Object;++pub(super) struct GlacierHandler;++impl Handler for GlacierHandler {+    type Input = GlacierCommand;+    type Config = GlacierConfig;++    fn parse_input(+        &self,+        ctx: &Context,+        event: &Event,+        _: Option<&GlacierConfig>,+    ) -> Result<Option<Self::Input>, String> {+        let body = if let Some(b) = event.comment_body() {+            b+        } else {+            // not interested in other events+            return Ok(None);+        };++        match event {+            Event::IssueComment(_) => (),+            _ => {return Ok(None);}

We probably want to run on newly opened issues too, not just comments?

Elinvynia

comment created time in 5 days

Pull request review commentrust-lang/triagebot

Add `glacier` command to track ICEs

+//! Allows team members to directly create a glacier PR with the code provided.++use crate::{+    config::GlacierConfig,+    github::Event,+    handlers::{Context, Handler},+};++use futures::future::{BoxFuture, FutureExt};+use parser::command::glacier::GlacierCommand;+use parser::command::{Command, Input};+use octocrab::params::repos::Reference;+use octocrab::models::Object;++pub(super) struct GlacierHandler;++impl Handler for GlacierHandler {+    type Input = GlacierCommand;+    type Config = GlacierConfig;++    fn parse_input(+        &self,+        ctx: &Context,+        event: &Event,+        _: Option<&GlacierConfig>,+    ) -> Result<Option<Self::Input>, String> {+        let body = if let Some(b) = event.comment_body() {+            b+        } else {+            // not interested in other events+            return Ok(None);+        };++        match event {+            Event::IssueComment(_) => (),+            _ => {return Ok(None);}+        };++        let mut input = Input::new(&body, &ctx.username);+        match input.parse_command() {+            Command::Glacier(Ok(command)) => Ok(Some(command)),+            Command::Glacier(Err(err)) => {+                return Err(format!(+                    "Parsing assign command in [comment]({}) failed: {}",+                    event.html_url().expect("has html url"),+                    err+                ));+            }+            _ => Ok(None),+        }+    }++    fn handle_input<'a>(+        &self,+        ctx: &'a Context,+        _config: &'a GlacierConfig,+        event: &'a Event,+        cmd: GlacierCommand,+    ) -> BoxFuture<'a, anyhow::Result<()>> {+        handle_input(ctx, event, cmd).boxed()+    }+}++async fn handle_input(ctx: &Context, event: &Event, cmd: GlacierCommand) -> anyhow::Result<()> {+    let is_team_member = if let Err(_) | Ok(false) = event.user().is_team_member(&ctx.github).await+    {+        false+    } else {+        true+    };++    if !is_team_member {+        return Ok(())+    };++    let url = cmd.source;+    let response = ctx.github.raw().get(&format!("{}{}", url.replace("github", "githubusercontent"), "/playground.rs")).send().await?;+    let body = response.text().await?;++    let number = event.issue().unwrap().number;+    let user = event.user();++    let octocrab = &ctx.octocrab;++    let fork = octocrab.repos("rustbot", "glacier");+    let base = octocrab.repos("rust-lang", "glacier");++    let master = base.get_ref(&Reference::Branch("master".to_string())).await?.object;+    let master = if let Object::Commit { sha, ..} = master {+        sha+    } else {+        panic!()+    };++    fork.create_ref(&Reference::Branch(format!("triagebot-ice-{}", number)), master).await?;

Will this fail if the branch already exists? Sometimes we have multiple distinct examples for a single ICE.

Elinvynia

comment created time in 5 days

Pull request review commentrust-lang/triagebot

Add `glacier` command to track ICEs

+//! Allows team members to directly create a glacier PR with the code provided.++use crate::{+    config::GlacierConfig,+    github::Event,+    handlers::{Context, Handler},+};++use futures::future::{BoxFuture, FutureExt};+use parser::command::glacier::GlacierCommand;+use parser::command::{Command, Input};+use octocrab::params::repos::Reference;+use octocrab::models::Object;++pub(super) struct GlacierHandler;++impl Handler for GlacierHandler {+    type Input = GlacierCommand;+    type Config = GlacierConfig;++    fn parse_input(+        &self,+        ctx: &Context,+        event: &Event,+        _: Option<&GlacierConfig>,+    ) -> Result<Option<Self::Input>, String> {+        let body = if let Some(b) = event.comment_body() {+            b+        } else {+            // not interested in other events+            return Ok(None);+        };++        match event {+            Event::IssueComment(_) => (),+            _ => {return Ok(None);}+        };++        let mut input = Input::new(&body, &ctx.username);+        match input.parse_command() {+            Command::Glacier(Ok(command)) => Ok(Some(command)),+            Command::Glacier(Err(err)) => {+                return Err(format!(+                    "Parsing assign command in [comment]({}) failed: {}",+                    event.html_url().expect("has html url"),+                    err+                ));+            }+            _ => Ok(None),+        }+    }++    fn handle_input<'a>(+        &self,+        ctx: &'a Context,+        _config: &'a GlacierConfig,+        event: &'a Event,+        cmd: GlacierCommand,+    ) -> BoxFuture<'a, anyhow::Result<()>> {+        handle_input(ctx, event, cmd).boxed()+    }+}++async fn handle_input(ctx: &Context, event: &Event, cmd: GlacierCommand) -> anyhow::Result<()> {+    let is_team_member = if let Err(_) | Ok(false) = event.user().is_team_member(&ctx.github).await+    {+        false+    } else {+        true+    };++    if !is_team_member {+        return Ok(())+    };++    let url = cmd.source;+    let response = ctx.github.raw().get(&format!("{}{}", url.replace("github", "githubusercontent"), "/playground.rs")).send().await?;+    let body = response.text().await?;++    let number = event.issue().unwrap().number;+    let user = event.user();++    let octocrab = &ctx.octocrab;++    let fork = octocrab.repos("rustbot", "glacier");+    let base = octocrab.repos("rust-lang", "glacier");++    let master = base.get_ref(&Reference::Branch("master".to_string())).await?.object;+    let master = if let Object::Commit { sha, ..} = master {+        sha+    } else {+        panic!()

Please add the actual value of master here so that we can debug if it does occur.

Elinvynia

comment created time in 5 days

Pull request review commentrust-lang/triagebot

Add `glacier` command to track ICEs

+//! Allows team members to directly create a glacier PR with the code provided.++use crate::{+    config::GlacierConfig,+    github::Event,+    handlers::{Context, Handler},+};++use futures::future::{BoxFuture, FutureExt};+use parser::command::glacier::GlacierCommand;+use parser::command::{Command, Input};+use octocrab::params::repos::Reference;+use octocrab::models::Object;++pub(super) struct GlacierHandler;++impl Handler for GlacierHandler {+    type Input = GlacierCommand;+    type Config = GlacierConfig;++    fn parse_input(+        &self,+        ctx: &Context,+        event: &Event,+        _: Option<&GlacierConfig>,+    ) -> Result<Option<Self::Input>, String> {+        let body = if let Some(b) = event.comment_body() {+            b+        } else {+            // not interested in other events+            return Ok(None);+        };++        match event {+            Event::IssueComment(_) => (),+            _ => {return Ok(None);}+        };++        let mut input = Input::new(&body, &ctx.username);+        match input.parse_command() {+            Command::Glacier(Ok(command)) => Ok(Some(command)),+            Command::Glacier(Err(err)) => {+                return Err(format!(+                    "Parsing assign command in [comment]({}) failed: {}",

nit: glacier, not assign command.

Elinvynia

comment created time in 5 days

Pull request review commentrust-lang/triagebot

Add `glacier` command to track ICEs

+//! The glacier command parser.+//!+//! This adds the option to track ICEs. Do note that the gist must be from a playground link.+//!+//! The grammar is as follows:+//!+//! ```text+//! Command: `@bot glacier <code-source>`+//!+//! <code-source>:+//!   - "https://gist.github.com/.*"+//! ```++use crate::error::Error;+use crate::token::{Token, Tokenizer};+use std::fmt;++#[derive(PartialEq, Eq, Debug)]+pub struct GlacierCommand {+    pub source: String,+}++#[derive(PartialEq, Eq, Debug)]+pub enum ParseError {+    NoLink,+    InvalidLink,+}++impl std::error::Error for ParseError {}++impl fmt::Display for ParseError {+    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {+        match self {+            Self::NoLink => write!(f, "no link provided"),+            Self::InvalidLink => write!(f, "invalid link"),

Let's note here that it should be a link to a gist.

Elinvynia

comment created time in 5 days

Pull request review commentrust-lang/triagebot

Add `glacier` command to track ICEs

+//! The glacier command parser.+//!+//! This adds the option to track ICEs. Do note that the gist must be from a playground link.+//!+//! The grammar is as follows:+//!+//! ```text+//! Command: `@bot glacier <code-source>`+//!+//! <code-source>:+//!   - "https://gist.github.com/.*"+//! ```++use crate::error::Error;+use crate::token::{Token, Tokenizer};+use std::fmt;++#[derive(PartialEq, Eq, Debug)]+pub struct GlacierCommand {+    pub source: String,+}++#[derive(PartialEq, Eq, Debug)]+pub enum ParseError {+    NoLink,+    InvalidLink,+}++impl std::error::Error for ParseError {}++impl fmt::Display for ParseError {+    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {+        match self {+            Self::NoLink => write!(f, "no link provided"),

We should note the requirement for quotes around the link.

Elinvynia

comment created time in 5 days

Pull request review commentrust-lang/rust

Add flag to open docs: x.py doc --open

 book!(     RustdocBook, "src/doc/rustdoc", "rustdoc"; ); +fn open(builder: &Builder<'_>, path: impl AsRef<Path>) {+    if builder.config.dry_run || !builder.config.cmd.open() {+        return;+    }++    let path = path.as_ref();+    builder.info(&format!("Opening doc {}", path.to_string_lossy()));

nit: .display()?

dtolnay

comment created time in 5 days

Pull request review commentrust-lang/rust

Add flag to open docs: x.py doc --open

 book!(     RustdocBook, "src/doc/rustdoc", "rustdoc"; ); +fn open(builder: &Builder<'_>, path: impl AsRef<Path>) {+    if builder.config.dry_run || !builder.config.cmd.open() {+        return;+    }++    let path = path.as_ref();+    builder.info(&format!("Opening doc {}", path.to_string_lossy()));++    // ignore error+    let _ = opener::open(path);

I would have expected us to print the error here - at least on higher levels of verbosity, is there a reason we're ignoring it? I imagine it'd be useful for people who try to find out why open doesn't work for them.

dtolnay

comment created time in 5 days

pull request commentrust-lang/rust-clippy

[DNM] Also install llvm-tools on toolchain setup

This looks correct to me.

flip1995

comment created time in 5 days

pull request commentrust-lang/rust

Move the target libLLVM to llvm-tools-preview

I'm personally fine with that for now, we can revert (or expand the set of platforms) if people complain. But I'd not expect too much rustc-dev-using development outside the main targets anyway.

cuviper

comment created time in 5 days

pull request commentrust-lang/rustc-perf

Use a database for site backend

Yes, no data loss (public or local) is expected. Future planned patches may break compatibility with the current JSON data format, though; I don't expect to break compatibility with the database format so in some sense if you have interesting data locally it may make sense to move it into the database.

Cc @eddyb since you have also been collecting data recently

I'll probably merge this in and deploy it tomorrow.

Mark-Simulacrum

comment created time in 5 days

push eventrust-lang/rustc-pr-tracking

stats updater

commit sha 7141cffc09c50cfec8f6c5b97f42add6b0252ba9

Automatic stats update

view details

push time in 5 days

PR opened rust-lang/rustc-perf

Use a database for site backend

This refactors the site to no longer hold any of our data in-memory, instead always falling back on a database read to query data. We use rocksdb for this purpose; it seems to work well (and has built-in compression which is nice), though the Rust bindings are sometimes a bit lacking unfortunately.

Alone, this PR doesn't give us much -- but, as I want to start adding more statistics and perhaps more interesting things than just "a number" (e.g. memory usage sampled at 50 Hz or something) the old strategy of storing in JSON (and loading on site startup) is going to work less well I think overtime. This PR does not change that the "durable" data storage is still JSON; the database is not required to be persistent, it can be freely removed and re-generated from the JSON. This may change in the future.

To upgrade:

Please run the ingestion script pointing at a different directory, like so:

find rustc-timing/times/ -type f | xargs ./target/release/ingest database

And optionally follow up by shrinking the database:

./target/release/compact database

You can run the ingestion script repeatedly over all the files, or you can run it on just some newly collected data.

The ingestion script must not be run in parallel with the site (it should error).

r? @nnethercote -- but I just want to get your take on the overall approach and give you a heads up, no need to actually review code :)

+1252 -767

0 comment

17 changed files

pr created time in 6 days

create barnchrust-lang/rustc-perf

branch : databases

created branch time in 6 days

issue commentrust-lang/rust

Tracking Issue for constify-ing most non-trait `Duration` methods

I don't think so -- adding a new constant seems pretty orthogonal to me.

marmeladema

comment created time in 6 days

pull request commentrust-lang/rust

Move the target libLLVM to llvm-tools-preview

Ah, good call, thanks!

To be clear I suspect that neither clippy nor miri may actually depend on the libLLVM linked rustc parts, so you may get away with not installing. But should be easy to install so hopefully not a problem.

cuviper

comment created time in 6 days

pull request commentrust-lang/rust

Add target thumbv7a-uwp-windows-msvc

I am also unfortunately not the right person for this. I'm going to say r? @joshtriplett as they've done some work in the targets area. I'm inclined to just r+ per @retep998's comment, though.

bdbai

comment created time in 6 days

pull request commentrust-lang/rust

rustllvm: Fix warnings about unused function parameters

@bors r+

Looks good to me, thanks!

@ecstatic-morse The other PR (or this one) will likely need rebasing to remove the crate_types_opt support, but that shouldn't be too hard hopefully?

petrochenkov

comment created time in 6 days

more