Skip to content

nalgebra and differential-dataflow regressed #42003

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
Zoxc opened this issue May 15, 2017 · 21 comments
Closed

nalgebra and differential-dataflow regressed #42003

Zoxc opened this issue May 15, 2017 · 21 comments
Labels
P-high High priority regression-from-stable-to-nightly Performance or correctness regression from stable to nightly. T-compiler Relevant to the compiler team, which will review and decide on the PR/issue.

Comments

@Zoxc
Copy link
Contributor

Zoxc commented May 15, 2017

nalgebra v0.10.1 and differential-dataflow v0.0.3 works on 5aaa606, but are broken on 9f15631.

UPDATE: nalgebra fixed, different-dataflow not yet.

@est31
Copy link
Member

est31 commented May 15, 2017

broken in which way? do you have an error message or ICE you can share with us?

@Zoxc
Copy link
Contributor Author

Zoxc commented May 15, 2017

nalgebra:

   Compiling nalgebra v0.10.1
error[E0391]: unsupported cyclic reference between types/traits detected
   --> C:\Users\John\.cargo\registry\src\github.1485827954.workers.dev-1ecc6299db9ec823\nalgebra-0.10.1\src\structs\dmatrix.rs:148:5
    |
148 |     mij:   [N; 2 * 2],
    |     ^^^^^^^^^^^^^^^^^ cyclic reference
    |
note: the cycle begins when processing `structs::dmatrix::DMatrix2::mij`...
   --> C:\Users\John\.cargo\registry\src\github.1485827954.workers.dev-1ecc6299db9ec823\nalgebra-0.10.1\src\structs\dmatrix.rs:148:5
    |
148 |     mij:   [N; 2 * 2],
    |     ^^^^^^^^^^^^^^^^^
note: ...which then requires const-evaluating `structs::dmatrix::DMatrix2::{{initializer}}`...
   --> C:\Users\John\.cargo\registry\src\github.1485827954.workers.dev-1ecc6299db9ec823\nalgebra-0.10.1\src\structs\dmatrix.rs:148:16
    |
148 |     mij:   [N; 2 * 2],
    |                ^^^^^
note: ...which then requires processing `structs::dmatrix::DMatrix2::{{initializer}}`...
   --> C:\Users\John\.cargo\registry\src\github.1485827954.workers.dev-1ecc6299db9ec823\nalgebra-0.10.1\src\structs\dmatrix.rs:148:16
    |
148 |     mij:   [N; 2 * 2],
    |                ^^^^^
note: ...which then requires coherence checking all impls of trait `std::ops::Mul`...
note: ...which then requires processing `structs::dmatrix::DMatrix`...
   --> C:\Users\John\.cargo\registry\src\github.1485827954.workers.dev-1ecc6299db9ec823\nalgebra-0.10.1\src\structs\dmatrix.rs:20:1
    |
20  | / pub struct DMatrix<N> {
21  | |     nrows: usize,
22  | |     ncols: usize,
23  | |     mij:   Vec<N>
24  | | }
    | |_^
note: ...which then requires computing the variances for items in this crate...
    = note: ...which then again requires processing `structs::dmatrix::DMatrix2::mij`, completing the cycle.

differential-dataflow:

   Compiling differential-dataflow v0.0.3
error: no associated item named `new` found for type `timely_sort::Sorter<_>` in the current scope
   --> C:\Users\John\.cargo\registry\src\github.1485827954.workers.dev-1ecc6299db9ec823\differential-dataflow-0.0.3\src\operators\arrange.rs:122:26
    |
122 |         let mut sorter = LSBRadixSorter::new();
    |                          ^^^^^^^^^^^^^^^^^^^
    |
    = help: items from traits can only be used if the trait is in scope; the following trait is implemented but not in scope, perhaps add a `use` for it:
    = help: candidate #1: `use timely_sort::RadixSorterBase;`

error: no associated item named `new` found for type `timely_sort::Sorter<_>` in the current scope
   --> C:\Users\John\.cargo\registry\src\github.1485827954.workers.dev-1ecc6299db9ec823\differential-dataflow-0.0.3\src\operators\arrange.rs:222:26
    |
222 |         let mut sorter = LSBRadixSorter::new();
    |                          ^^^^^^^^^^^^^^^^^^^
    |
    = help: items from traits can only be used if the trait is in scope; the following trait is implemented but not in scope, perhaps add a `use` for it:
    = help: candidate #1: `use timely_sort::RadixSorterBase;`

error: no associated item named `new` found for type `timely_sort::Sorter<_>` in the current scope
   --> C:\Users\John\.cargo\registry\src\github.1485827954.workers.dev-1ecc6299db9ec823\differential-dataflow-0.0.3\src\operators\consolidate.rs:110:70
    |
110 |                 let entry = inputs.entry_or_insert(index.time(), || (LSBRadixSorter::new(), 0, default_threshold));
    |                                                                      ^^^^^^^^^^^^^^^^^^^
    |
    = help: items from traits can only be used if the trait is in scope; the following trait is implemented but not in scope, perhaps add a `use` for it:
    = help: candidate #1: `use timely_sort::RadixSorterBase;`

@TimNN
Copy link
Contributor

TimNN commented May 15, 2017

Looks like a duplicate of #41936, hopefully fixed by #41937 once it lands.

@frewsxcv
Copy link
Member

frewsxcv commented Jun 4, 2017

Is this fixed now?

@Zoxc
Copy link
Contributor Author

Zoxc commented Jun 4, 2017

I think nalgebra is fixed now. It may not compile with RUST_LOG=rustc_typeck::check::regionck due to that failing with rustc_serialize.

@nikomatsakis
Copy link
Contributor

What about differential-dataflow ?

Note that compiling with RUST_LOG is not really a supported workflow, though the current setup is generating a lot of cycle errors in those cases and needs to be fixed.

@Zoxc
Copy link
Contributor Author

Zoxc commented Jun 6, 2017

nalgebra compiles on rustc 1.19.0-nightly (d015610db 2017-06-05), differential-dataflow gives the same error.

@nikomatsakis nikomatsakis added regression-from-stable-to-nightly Performance or correctness regression from stable to nightly. I-nominated T-compiler Relevant to the compiler team, which will review and decide on the PR/issue. labels Jun 7, 2017
@nikomatsakis
Copy link
Contributor

OK. Regression. Nominating.

@nikomatsakis
Copy link
Contributor

cc @rust-lang/compiler -- regression, anybody have any ideas?

@eddyb
Copy link
Member

eddyb commented Jun 7, 2017

differential-dataflow is a completely different error, and a much more serious one. Either traits-in-scope is broken or there's an inherent method that's not found.

@est31
Copy link
Member

est31 commented Jun 8, 2017

I've tried to bisect the regression, but all I could find was rust compiler versions where the compilation failed.

  • rust 1.11 stable fails compilation
  • rust 1.16 stable fails compilation
  • rust 1.17 stable fails compilation
  • commit 4465f22 fails compilation, including all commits bisect-rust tested down to 927c55d where uploading on each merge started.

Therefore, @Zoxc can you please point to a rustc version where compilation works?

@Zoxc
Copy link
Contributor Author

Zoxc commented Jun 8, 2017

It did work on a crater run on top of 5aaa606. That looks pretty close to 1.16 stable though.

@Zoxc
Copy link
Contributor Author

Zoxc commented Jun 8, 2017

Version 0.0.3 was published on crates.io Jun 7, 2016, so it should probably work on rust 1.9.

@est31
Copy link
Member

est31 commented Jun 8, 2017

Still fails compilation on 1.9: http://paste.ubuntu.com/24804993/
And on 1.8 as well.

@Zoxc
Copy link
Contributor Author

Zoxc commented Jun 8, 2017

I built 5aaa606 locally and it doesn't work there either :/

@nikomatsakis
Copy link
Contributor

A bit surprising that we've not seen this in cargobomb runs or other things. I'm inclined to believe that was a bug in that release of differential-dataflow -- but hard to say without closer investigation
.
cc @frankmcsherry -- any thoughts? we're looking at a (potential, unverified) regression in v0.0.3 of differential-dataflow (I see you're up to 0.1.0 now)

@nikomatsakis
Copy link
Contributor

triage: P-high

I'm marking this P-high, but mostly because I want to try and confirm if there has been a regression here or not (hence no assignee)

@rust-highfive rust-highfive added the P-high High priority label Jun 8, 2017
@frankmcsherry
Copy link
Contributor

When PartialOrd was ret-conned to mean "the same as Ord, if Ord exists" all correctness for 0.0.3 went out the window. The behavior of sorting changed for types where partial_cmp was not identical to cmp, and I'm sure that there was fall-out.

@nikomatsakis
Copy link
Contributor

@frankmcsherry hmm, ok. This is a compilation error though.

@frankmcsherry
Copy link
Contributor

Ah, sorry. The reason I haven't been tracking it is for that reason. The reason there is a compile error above is because the timely_sort crate had a breaking change. It got fixed in master, but can't fix 0.0.3.

@nikomatsakis
Copy link
Contributor

@frankmcsherry thanks! :) I'm going to close this bug then.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
P-high High priority regression-from-stable-to-nightly Performance or correctness regression from stable to nightly. T-compiler Relevant to the compiler team, which will review and decide on the PR/issue.
Projects
None yet
Development

No branches or pull requests

8 participants