Skip to content

nalgebra and differential-dataflow regressed #42003

Closed

Description

@Zoxc

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.

Activity

  1. est31 commented on May 15, 2017

    @est31
    Member

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

  2. Zoxc commented on May 15, 2017

    @Zoxc
    ContributorAuthor

    nalgebra:

       Compiling nalgebra v0.10.1
    error[E0391]: unsupported cyclic reference between types/traits detected
       --> C:\Users\John\.cargo\registry\src\github.life-white.uk-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.life-white.uk-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.life-white.uk-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.life-white.uk-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.life-white.uk-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.life-white.uk-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.life-white.uk-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.life-white.uk-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;`
    
  3. TimNN commented on May 15, 2017

    @TimNN
    Contributor

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

  4. frewsxcv commented on Jun 4, 2017

    @frewsxcv
    Contributor

    Is this fixed now?

  5. Zoxc commented on Jun 4, 2017

    @Zoxc
    ContributorAuthor

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

  6. nikomatsakis commented on Jun 5, 2017

    @nikomatsakis
    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.

  7. Zoxc commented on Jun 6, 2017

    @Zoxc
    ContributorAuthor

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

  8. added
    T-compilerRelevant to the compiler team, which will review and decide on the PR/issue.
    on Jun 7, 2017
  9. nikomatsakis commented on Jun 7, 2017

    @nikomatsakis
    Contributor

    OK. Regression. Nominating.

  10. nikomatsakis commented on Jun 7, 2017

    @nikomatsakis
    Contributor

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

  11. eddyb commented on Jun 7, 2017

    @eddyb
    Contributor

    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.

  12. est31 commented on Jun 8, 2017

    @est31
    Member

    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?

  13. Zoxc commented on Jun 8, 2017

    @Zoxc
    ContributorAuthor

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

  14. Zoxc commented on Jun 8, 2017

    @Zoxc
    ContributorAuthor

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

  15. est31 commented on Jun 8, 2017

    @est31
    Member

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

  16. Zoxc commented on Jun 8, 2017

    @Zoxc
    ContributorAuthor

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

  17. nikomatsakis commented on Jun 8, 2017

    @nikomatsakis
    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)

  18. nikomatsakis commented on Jun 8, 2017

    @nikomatsakis
    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)

  19. frankmcsherry commented on Jun 8, 2017

    @frankmcsherry
    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.

  20. nikomatsakis commented on Jun 8, 2017

    @nikomatsakis
    Contributor

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

  21. frankmcsherry commented on Jun 8, 2017

    @frankmcsherry
    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.

  22. nikomatsakis commented on Jun 8, 2017

    @nikomatsakis
    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

Metadata

Metadata

Assignees

No one assigned

    Labels

    P-highHigh priorityT-compilerRelevant to the compiler team, which will review and decide on the PR/issue.regression-from-stable-to-nightlyPerformance or correctness regression from stable to nightly.

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions