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

lint: convert incoherent_fundamental_impls into hard error #49799

Open
wants to merge 1 commit into
base: master
from

Conversation

Projects
None yet
@hdhoang
Contributor

hdhoang commented Apr 9, 2018

implement #46205

r? @nikomatsakis

@rust-highfive

This comment has been minimized.

Collaborator

rust-highfive commented Apr 9, 2018

Thanks for the pull request, and welcome! The Rust team is excited to review your changes, and you should hear from @nikomatsakis (or someone else) soon.

If any changes to this PR are deemed necessary, please add them as extra commits. This ensures that the reviewer can see what has changed since they last reviewed the code. Due to the way GitHub handles out-of-date commits, this should also make it reasonably obvious what issues have or haven't been addressed. Large or tricky changes may require several passes of review and changes.

Please see the contribution instructions for more information.

@nikomatsakis

This comment has been minimized.

Contributor

nikomatsakis commented Apr 10, 2018

This looks great, thanks!

@nikomatsakis

This comment has been minimized.

Contributor

nikomatsakis commented Apr 10, 2018

@bors try

cc @rust-lang/infra -- gonna want a check-only crater run of this

@bors

This comment has been minimized.

Contributor

bors commented Apr 10, 2018

⌛️ Trying commit 70a2d80 with merge ecb60b3...

bors added a commit that referenced this pull request Apr 10, 2018

Auto merge of #49799 - hdhoang:46205_deny_incoherent_fundamental_impl…
…s, r=<try>

lint: convert incoherent_fundamental_impls into hard error

implement #46205

r? @nikomatsakis
@bors

This comment has been minimized.

Contributor

bors commented Apr 10, 2018

💥 Test timed out

@kennytm

This comment has been minimized.

Member

kennytm commented Apr 10, 2018

@bors try- r- retry clean

The try build is successful.

@Mark-Simulacrum

This comment has been minimized.

Member

Mark-Simulacrum commented Apr 14, 2018

Crater has been started in check-only mode, though we're testing a beta improved version of Crater so this could turn out to take up to 5-6 days with restarts.

@Mark-Simulacrum

This comment has been minimized.

Member

Mark-Simulacrum commented Apr 20, 2018

Crater results are at: http://cargobomb-reports.s3.amazonaws.com/pr-49799/index.html. 'Blacklisted' crates (spurious failures etc) can be found here. If you see any spurious failures not on the list, please make a PR against that file.

(interested observers: Crater is a tool for testing the impact of changes on the crates.io ecosystem. You can find out more at the repo if you're curious)

@hdhoang

This comment has been minimized.

Contributor

hdhoang commented Apr 21, 2018

I'm collecting the primary failures. Meanwhile lru-disk-cache 0.2.0 with the fix is on crates.io, and that fix links to this comment with several of the primaries mentioned: #46192 (comment)

Known issues

New

Spurious failure/success

  • rspotify: 300s timeout
  • verilog: toolchain 1 had read-only filesystem
@nikomatsakis

This comment has been minimized.

Contributor

nikomatsakis commented Apr 23, 2018

@hdhoang awesome, great follow-up! I was away last week, so let me take a look.

@nikomatsakis

This comment has been minimized.

Contributor

nikomatsakis commented Apr 25, 2018

@hdhoang The 'known issues' were reported in the original issue or something like that?

As for nalgebra and pin-api, cc @sebcrozet and @withoutboats, seems like these crates are relying on a bug (INCOHERENT_FUNDAMENTAL_IMPLS) that we would like to remove support for. Have you any idea how to fix those errors? (I've not looked closely)

@nikomatsakis

This comment has been minimized.

Contributor

nikomatsakis commented Apr 26, 2018

OK, so, I would like to close this forwards compatibility lint, converting it into a hard error. However, I'm not psyched about breaking 131 crates. @hdhoang or @rust-lang/release, is there an easy way to understand which root crates are responsible for each failure? I'd like to see if there are a few places where we can push hard on getting a fix published in order to mitigate the impact.

@kennytm kennytm added the T-release label Apr 26, 2018

@pietroalbini

This comment has been minimized.

Member

pietroalbini commented Apr 26, 2018

@nikomatsakis yes, there are 131 regressions. The "easiest" thing to do is to go and check all of them manually, but I see why you don't want to do that :P

Unfortunately, there is no way at the moment to automatically do that (as far as I know). I can try writing a small tool to build a dependency graph and check where the regressed crates are when I go home though.

@hdhoang

This comment has been minimized.

Contributor

hdhoang commented Apr 26, 2018

the known issues were discovered in #46192 by its crater run, with elaboration by @arielb1 here #46192 (comment)

all but bow already have fixes, either in later versions or an unmerged branch. A large swath is from glib or rusqlite, so we need the graph and then pinging the maintainers whose dependencies pull in those.

nalgebra is the root for a bunch of regressions though, and has no fix yet.

I looked at the first error from each regression txt to determine the root primary, but that wouldn't be enough enough to build an effective dep-graph to get the eco system upgraded though.

chyyran added a commit to chyyran/seiri that referenced this pull request Oct 28, 2018

chyyran added a commit to chyyran/seiri that referenced this pull request Oct 30, 2018

chyyran added a commit to chyyran/seiri that referenced this pull request Oct 30, 2018

@nikomatsakis

This comment has been minimized.

Contributor

nikomatsakis commented Oct 31, 2018

I wonder if we should take another stab here. I see a lot of merged PRs in the list. =)

@hdhoang

This comment has been minimized.

Contributor

hdhoang commented Nov 3, 2018

We could always allow the maintainers more time to publish new version on crates.io, since much of the failure list comes from the registry. I would like to propose valeriansaliou/constellation#5 as the milestone to trigger the next run. The fix chain is rusqlite -> trust-dns-server (just released) -> constellation.

nalgebra@0.14 compatibility shim was a nice swoop to fix a lot of crates, but I'm not sure crater will override an old/unshimmed version specified in Cargo.lock. cc @pietroalbini

AIUI, #50390 (deny-by-default) has been released to the stable channel in 1.28 (3 months ago), but it doesn't trigger in dependencies' code (as with all lints), so the crates haven't upgraded aggressively out of this incompatibility.

@nikomatsakis

This comment has been minimized.

Contributor

nikomatsakis commented Nov 12, 2018

@hdhoang sounds good

@pietroalbini

This comment has been minimized.

Member

pietroalbini commented Nov 13, 2018

nalgebra@0.14 compatibility shim was a nice swoop to fix a lot of crates, but I'm not sure crater will override an old/unshimmed version specified in Cargo.lock. cc @pietroalbini

Nope.

@nikomatsakis

This comment has been minimized.

Contributor

nikomatsakis commented Nov 14, 2018

What we could do is to issue a "patch release" for older versions of nalgebra, if there aren't too many.

@bors

This comment has been minimized.

Contributor

bors commented Dec 7, 2018

☔️ The latest upstream changes (presumably #56502) made this pull request unmergeable. Please resolve the merge conflicts.

@hdhoang hdhoang force-pushed the hdhoang:46205_deny_incoherent_fundamental_impls branch from 56744b0 to 4e05dae Dec 8, 2018

@bors

This comment has been minimized.

Contributor

bors commented Dec 8, 2018

☔️ The latest upstream changes (presumably #56578) made this pull request unmergeable. Please resolve the merge conflicts.

lint: convert incoherent_fundamental_impls into hard error
Also remove it from lint listings.

@hdhoang hdhoang force-pushed the hdhoang:46205_deny_incoherent_fundamental_impls branch from 4e05dae to a0d3300 Dec 8, 2018

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment