]> git.lizzy.rs Git - rust.git/log
rust.git
3 years agoadd TrustedRandomAccess specialization to vec::extend
The8472 [Thu, 1 Apr 2021 23:10:26 +0000 (01:10 +0200)]
add TrustedRandomAccess specialization to vec::extend

This should do roughly the same as the TrustedLen specialization
but result in less IR by using __iterator_get_unchecked
instead of iterator.for_each.

3 years agoAuto merge of #82780 - cjgillot:dep-stream, r=michaelwoerister
bors [Thu, 1 Apr 2021 16:29:33 +0000 (16:29 +0000)]
Auto merge of #82780 - cjgillot:dep-stream, r=michaelwoerister

Stream the dep-graph to a file instead of storing it in-memory.

This is a reimplementation of #60035.

Instead of storing the dep-graph in-memory, the nodes are encoded as they come
into the a temporary file as they come. At the end of a successful the compilation,
this file is renamed to be the persistent dep-graph, to be decoded during the next
compilation session.

This two-files scheme avoids overwriting the dep-graph on unsuccessful or crashing compilations.

The structure of the file is modified to be the sequence of `(DepNode, Fingerprint, EdgesVec)`.
The deserialization is responsible for going to the more compressed representation.
The `node_count` and `edge_count` are stored in the last 16 bytes of the file,
in order to accurately reserve capacity for the vectors.

At the end of the compilation, the encoder is flushed and dropped.
The graph is not usable after this point: any creation of a node will ICE.

I had to retrofit the debugging options, which is not really pretty.

3 years agoAuto merge of #83726 - the8472:large-trustedlen-fail-fast, r=kennytm
bors [Thu, 1 Apr 2021 07:55:00 +0000 (07:55 +0000)]
Auto merge of #83726 - the8472:large-trustedlen-fail-fast, r=kennytm

panic early when `TrustedLen` indicates a `length > usize::MAX`

Changes `TrustedLen` specializations to immediately panic when `size_hint().1 == None`.

As far as I can tell this is ~not a change~ a minimal change in observable behavior for anything except ZSTs because the fallback path would go through `extend_desugared()` which tries to `reserve(lower_bound)` which already is `usize::MAX` and that would also lead to a panic. Before it might have popped somewhere between zero and a few elements from the iterator before panicking while it now panics immediately.

Overall this should reduce codegen by eliminating the fallback paths.

While looking into the `with_capacity()` behavior I also noticed that its documentation didn't have a *Panics* section, so I added that.

3 years agoAuto merge of #83736 - JohnTitor:fix-unsafe_block_in_unsafe_fn-stabilized-version...
bors [Thu, 1 Apr 2021 05:34:54 +0000 (05:34 +0000)]
Auto merge of #83736 - JohnTitor:fix-unsafe_block_in_unsafe_fn-stabilized-version, r=jyn514

Fix the `unsafe_block_in_unsafe_fn`s stabilized version

Fixes #83735

3 years agoAuto merge of #83732 - ehuss:update-cargo, r=ehuss
bors [Thu, 1 Apr 2021 03:13:39 +0000 (03:13 +0000)]
Auto merge of #83732 - ehuss:update-cargo, r=ehuss

Update cargo

5 commits in 1e8703890f285befb5e32627ad4e0a0454dde1fb..3c44c3c4b7900b8b13c85ead25ccaa8abb7d8989
2021-03-26 16:59:39 +0000 to 2021-03-31 21:21:15 +0000
- Fix semver docs for 1.51. (rust-lang/cargo#9316)
- Add `cargo config` subcommand. (rust-lang/cargo#9302)
- Give one more example for the --featuers CLI (rust-lang/cargo#9313)
- Bump to 0.54.0, update changelog (rust-lang/cargo#9308)
- Make the URL to the tracking issue for `--out-dir` into a link (rust-lang/cargo#9309)

3 years agoFix the `unsafe_block_in_unsafe_fn`s stabilized version
Yuki Okushi [Thu, 1 Apr 2021 01:56:51 +0000 (10:56 +0900)]
Fix the `unsafe_block_in_unsafe_fn`s stabilized version

3 years agoUpdate cargo
Eric Huss [Thu, 1 Apr 2021 00:45:03 +0000 (17:45 -0700)]
Update cargo

3 years agoAuto merge of #83731 - Dylan-DPC:rollup-v2z3gkt, r=Dylan-DPC
bors [Thu, 1 Apr 2021 00:42:50 +0000 (00:42 +0000)]
Auto merge of #83731 - Dylan-DPC:rollup-v2z3gkt, r=Dylan-DPC

Rollup of 5 pull requests

Successful merges:

 - #83015 (Add regression tests for #79825 and #81555)
 - #83699 (Add a regression test for issue-68830)
 - #83700 (Fix documentation of conversion from String to OsString)
 - #83711 (Clarify `--print target-list` is a rustc's option)
 - #83712 (Update LLVM with another wasm simd fix)

Failed merges:

r? `@ghost`
`@rustbot` modify labels: rollup

3 years agoRollup merge of #83712 - alexcrichton:more-wasm-simd-llvm-updates, r=nikic
Dylan DPC [Thu, 1 Apr 2021 00:41:48 +0000 (02:41 +0200)]
Rollup merge of #83712 - alexcrichton:more-wasm-simd-llvm-updates, r=nikic

Update LLVM with another wasm simd fix

Just a small bug fix for opcode numberings, not too major.

3 years agoRollup merge of #83711 - JohnTitor:more-friendly-unknown-target-error, r=davidtwco
Dylan DPC [Thu, 1 Apr 2021 00:41:47 +0000 (02:41 +0200)]
Rollup merge of #83711 - JohnTitor:more-friendly-unknown-target-error, r=davidtwco

Clarify `--print target-list` is a rustc's option

Fixes #68238

3 years agoRollup merge of #83700 - steffahn:string_to_pathbuf_conversion_documentation, r=JohnTitor
Dylan DPC [Thu, 1 Apr 2021 00:41:46 +0000 (02:41 +0200)]
Rollup merge of #83700 - steffahn:string_to_pathbuf_conversion_documentation, r=JohnTitor

Fix documentation of conversion from String to OsString

From [this question on URLO](https://users.rust-lang.org/t/does-converting-a-string-into-a-pathbuf-allocate-new-buffer/57678), I noticed that the documentation of `From<String> for OsString` incorrectly claims to be copying data.

````@rustbot```` modify labels: T-doc, T-libs

3 years agoRollup merge of #83699 - JohnTitor:issue-68830, r=Dylan-DPC
Dylan DPC [Thu, 1 Apr 2021 00:41:45 +0000 (02:41 +0200)]
Rollup merge of #83699 - JohnTitor:issue-68830, r=Dylan-DPC

Add a regression test for issue-68830

Closes #68830

3 years agoRollup merge of #83015 - hyd-dev:test-79825-81555, r=Aaron1011
Dylan DPC [Thu, 1 Apr 2021 00:41:44 +0000 (02:41 +0200)]
Rollup merge of #83015 - hyd-dev:test-79825-81555, r=Aaron1011

Add regression tests for #79825 and #81555

Closes #79825.
Closes #81555.

`@rustbot` label A-proc-macros T-compiler

3 years agopanic early when TrustedLen indicates a length > usize::MAX
The8472 [Wed, 31 Mar 2021 21:09:28 +0000 (23:09 +0200)]
panic early when TrustedLen indicates a length > usize::MAX

3 years agoAuto merge of #76814 - jackh726:binder-refactor, r=nikomatsakis
bors [Wed, 31 Mar 2021 18:06:06 +0000 (18:06 +0000)]
Auto merge of #76814 - jackh726:binder-refactor, r=nikomatsakis

Refactor `Binder` to track bound vars

c.c. `@rust-lang/wg-traits`

This is super early (and might just get closed at some point), but want to get at least an initial idea of the perf impact.

r? `@ghost`

3 years agoUpdate LLVM with another wasm simd fix
Alex Crichton [Wed, 31 Mar 2021 17:24:41 +0000 (10:24 -0700)]
Update LLVM with another wasm simd fix

Just a small bug fix for opcode numberings, not too major.

3 years agoClarify `--print target-list` is a rustc's option
JohnTitor [Wed, 31 Mar 2021 16:59:50 +0000 (01:59 +0900)]
Clarify `--print target-list` is a rustc's option

3 years agoEnable debugging the dep-graph without debug-assertions.
Camille GILLOT [Wed, 31 Mar 2021 15:12:03 +0000 (17:12 +0200)]
Enable debugging the dep-graph without debug-assertions.

It may also be useful in these cases,
and some CI configurations test without debug assertions.

3 years agoCleanups and comments
Jack Huey [Fri, 26 Mar 2021 21:40:15 +0000 (17:40 -0400)]
Cleanups and comments

3 years agoFix tests and AstConv -> dyn AstConv
Jack Huey [Thu, 25 Mar 2021 16:15:45 +0000 (12:15 -0400)]
Fix tests and AstConv -> dyn AstConv

3 years agoFmt and test revert
Jack Huey [Fri, 12 Mar 2021 02:49:41 +0000 (21:49 -0500)]
Fmt and test revert

3 years agoFix new problem from rebase and a little cleanup
Jack Huey [Fri, 12 Mar 2021 02:08:49 +0000 (21:08 -0500)]
Fix new problem from rebase and a little cleanup

3 years agoAdd var to BoundRegion. Add query to get bound vars for applicable items.
Jack Huey [Mon, 26 Oct 2020 18:18:31 +0000 (14:18 -0400)]
Add var to BoundRegion. Add query to get bound vars for applicable items.

3 years agoMake late and late_anon regions track the bound var position
Jack Huey [Sun, 15 Nov 2020 22:06:58 +0000 (17:06 -0500)]
Make late and late_anon regions track the bound var position

3 years agoRevert explicit lifetimes
Jack Huey [Thu, 17 Dec 2020 00:14:21 +0000 (19:14 -0500)]
Revert explicit lifetimes

3 years agoTrack bound vars
Jack Huey [Tue, 6 Oct 2020 00:41:46 +0000 (20:41 -0400)]
Track bound vars

3 years agoAdd tcx lifetime to Binder
Jack Huey [Mon, 5 Oct 2020 20:51:33 +0000 (16:51 -0400)]
Add tcx lifetime to Binder

3 years agocount bound vars
Jack Huey [Tue, 2 Jun 2020 21:10:22 +0000 (17:10 -0400)]
count bound vars

3 years agoApply suggestions from code review
Frank Steffahn [Wed, 31 Mar 2021 14:08:20 +0000 (16:08 +0200)]
Apply suggestions from code review

More links, one more occurrence of “a OsString”

Co-authored-by: Yuki Okushi <huyuumi.dev@gmail.com>
3 years agoAdd u32 for bound variables to Binder
Jack Huey [Mon, 1 Jun 2020 23:23:23 +0000 (19:23 -0400)]
Add u32 for bound variables to Binder

3 years agoSome rebinds and dummys
Jack Huey [Thu, 7 Jan 2021 05:41:55 +0000 (00:41 -0500)]
Some rebinds and dummys

3 years agoAdd a few missing links, fix a typo
Frank Steffahn [Wed, 31 Mar 2021 10:24:37 +0000 (12:24 +0200)]
Add a few missing links, fix a typo

3 years agoFix documentation of conversion from String to OsString
Frank Steffahn [Wed, 31 Mar 2021 10:11:24 +0000 (12:11 +0200)]
Fix documentation of conversion from String to OsString

3 years agoAdd a regression test for issue-68830
JohnTitor [Wed, 31 Mar 2021 09:48:28 +0000 (18:48 +0900)]
Add a regression test for issue-68830

3 years agoAuto merge of #83684 - cjgillot:csp, r=petrochenkov
bors [Wed, 31 Mar 2021 08:34:40 +0000 (08:34 +0000)]
Auto merge of #83684 - cjgillot:csp, r=petrochenkov

Remove hir::CrateItem.

The crate span is exactly the crate module's inner span. There is no need to store it twice.

3 years agoAuto merge of #83681 - jyn514:blanket-impls-tweaks, r=Aaron1011
bors [Wed, 31 Mar 2021 05:47:22 +0000 (05:47 +0000)]
Auto merge of #83681 - jyn514:blanket-impls-tweaks, r=Aaron1011

rustdoc: Only look at blanket impls in `get_blanket_impls`

The idea here is that all the work in https://github.com/rust-lang/rust/blob/16156fb2787f745e57504197bd7fe38b69c6cbea/compiler/rustc_middle/src/ty/trait_def.rs#L172-L186 doesn't matter for `get_blanket_impls` - Rustdoc will already pick up on those blocks when it documents the item.

3 years agoAuto merge of #83666 - Amanieu:instrprof-order, r=tmandry
bors [Wed, 31 Mar 2021 03:20:33 +0000 (03:20 +0000)]
Auto merge of #83666 - Amanieu:instrprof-order, r=tmandry

Run LLVM coverage instrumentation passes before optimization passes

This matches the behavior of Clang and allows us to remove several
hacks which were needed to ensure functions weren't optimized away
before reaching the instrumentation pass.

Fixes #83429

cc `@richkadel`

r? `@tmandry`

3 years agoAuto merge of #83692 - Dylan-DPC:rollup-2a2m3jy, r=Dylan-DPC
bors [Tue, 30 Mar 2021 23:47:51 +0000 (23:47 +0000)]
Auto merge of #83692 - Dylan-DPC:rollup-2a2m3jy, r=Dylan-DPC

Rollup of 6 pull requests

Successful merges:

 - #80720 (Make documentation of which items the prelude exports more readable.)
 - #83654 (Do not emit a suggestion that causes the E0632 error)
 - #83671 (Add a regression test for issue-75801)
 - #83678 (Fix Self keyword doc URL conflict on case insensitive file systems (until definitely fixed on rustdoc))
 - #83680 (Update for loop desugaring docs)
 - #83683 (bootstrap: don't complain about linkcheck if it is excluded)

Failed merges:

r? `@ghost`
`@rustbot` modify labels: rollup

3 years agoRollup merge of #83683 - tblah:riscv64linux_links, r=Mark-Simulacrum
Dylan DPC [Tue, 30 Mar 2021 23:14:50 +0000 (01:14 +0200)]
Rollup merge of #83683 - tblah:riscv64linux_links, r=Mark-Simulacrum

bootstrap: don't complain about linkcheck if it is excluded

We don't need to complain to the user about linkcheck having different
hosts and targets when it is already excluded.

Resolves #83661

3 years agoRollup merge of #83680 - ibraheemdev:patch-2, r=Dylan-DPC
Dylan DPC [Tue, 30 Mar 2021 23:14:49 +0000 (01:14 +0200)]
Rollup merge of #83680 - ibraheemdev:patch-2, r=Dylan-DPC

Update for loop desugaring docs

It looks like the documentation for `for` loops was not updated to match the new de-sugaring process.

3 years agoRollup merge of #83678 - GuillaumeGomez:hack-Self-keyword-conflict, r=jyn514
Dylan DPC [Tue, 30 Mar 2021 23:14:48 +0000 (01:14 +0200)]
Rollup merge of #83678 - GuillaumeGomez:hack-Self-keyword-conflict, r=jyn514

Fix Self keyword doc URL conflict on case insensitive file systems (until definitely fixed on rustdoc)

This is just a hack to allow rustup to work on macOS and windows again to distribute std documentation (hopefully once https://github.com/rust-lang/rfcs/pull/3097 or an equivalent is merged).

Fixes https://github.com/rust-lang/rust/issues/80504. Prevents https://github.com/rust-lang/rust/issues/83154 and https://github.com/rust-lang/rustup/issues/2694 in future releases.

cc ``@kinnison``
r? ``@jyn514``

3 years agoRollup merge of #83671 - JohnTitor:issue-75801-test, r=Dylan-DPC
Dylan DPC [Tue, 30 Mar 2021 23:14:47 +0000 (01:14 +0200)]
Rollup merge of #83671 - JohnTitor:issue-75801-test, r=Dylan-DPC

Add a regression test for issue-75801

Closes #75801
r? ``@Aaron1011``

3 years agoRollup merge of #83654 - JohnTitor:issue-83606, r=estebank
Dylan DPC [Tue, 30 Mar 2021 23:14:46 +0000 (01:14 +0200)]
Rollup merge of #83654 - JohnTitor:issue-83606, r=estebank

Do not emit a suggestion that causes the E0632 error

Fixes #83606

3 years agoRollup merge of #80720 - steffahn:prettify_prelude_imports, r=camelid,jyn514
Dylan DPC [Tue, 30 Mar 2021 23:14:40 +0000 (01:14 +0200)]
Rollup merge of #80720 - steffahn:prettify_prelude_imports, r=camelid,jyn514

Make documentation of which items the prelude exports more readable.

I recently figured out that rustdoc allows link inside of inline code blocks as long as they’re delimited with `<code> </code>` instead of `` ` ` ``. I think this applies nicely in the listing of prelude exports [in the docs](https://doc.rust-lang.org/std/prelude/index.html). There, currently unformatted `::` and `{ , }` is used in order to mimick import syntax while attatching links to individual identifiers.

## Rendered Comparison
### Currently (light)
![Screenshot_20210105_155801](https://user-images.githubusercontent.com/3986214/103661510-1a87be80-4f6f-11eb-8360-1dfb23f732e8.png)

### After this PR (light)
![Screenshot_20210105_155811](https://user-images.githubusercontent.com/3986214/103661533-1f4c7280-4f6f-11eb-89d4-874793937824.png)

### Currently (dark)
![Screenshot_20210105_155824](https://user-images.githubusercontent.com/3986214/103661571-2a9f9e00-4f6f-11eb-95f9-e291b5570b41.png)

### After this PR (dark)
![Screenshot_20210105_155836](https://user-images.githubusercontent.com/3986214/103661592-2ffce880-4f6f-11eb-977a-82afcb07d331.png)

### Currently (ayu)
![Screenshot_20210105_155917](https://user-images.githubusercontent.com/3986214/103661619-39865080-4f6f-11eb-9ca1-9045a107cddd.png)

### After this PR (ayu)
![Screenshot_20210105_155923](https://user-images.githubusercontent.com/3986214/103661652-3db26e00-4f6f-11eb-82b7-378e38f0c41f.png)

_Edit:_ I just noticed, the “current” screenshots are from stable, so there are a few more differences in the pictures than the ones from just this PR.

3 years agoFix fulldeps tests.
Camille GILLOT [Tue, 30 Mar 2021 21:51:15 +0000 (23:51 +0200)]
Fix fulldeps tests.

3 years agoAuto merge of #83652 - xu-cheng:ipv4-octal, r=sfackler
bors [Tue, 30 Mar 2021 19:34:23 +0000 (19:34 +0000)]
Auto merge of #83652 - xu-cheng:ipv4-octal, r=sfackler

Disallow octal format in Ipv4 string

In its original specification, leading zero in Ipv4 string is interpreted
as octal literals. So a IP address 0127.0.0.1 actually means 87.0.0.1.

This confusion can lead to many security vulnerabilities. Therefore, in
[IETF RFC 6943], it suggests to disallow octal/hexadecimal format in Ipv4
string all together.

Existing implementation already disallows hexadecimal numbers. This commit
makes Parser reject octal numbers.

Fixes #83648.

[IETF RFC 6943]: https://tools.ietf.org/html/rfc6943#section-3.1.1

3 years agoRemove hir::CrateItem.
Camille GILLOT [Tue, 30 Mar 2021 18:31:06 +0000 (20:31 +0200)]
Remove hir::CrateItem.

3 years agobootstrap: don't complain about linkcheck if it is excluded
Tom Eccles [Tue, 30 Mar 2021 17:36:53 +0000 (18:36 +0100)]
bootstrap: don't complain about linkcheck if it is excluded

We don't need to complain to the user about linkcheck having different
hosts and targets when it is already excluded. This can be achieved by
moving the check to when the step is run instead of in should_run.

3 years agoAuto merge of #83639 - osa1:issue83638, r=estebank
bors [Tue, 30 Mar 2021 17:07:19 +0000 (17:07 +0000)]
Auto merge of #83639 - osa1:issue83638, r=estebank

Replace tabs in err messages before rendering

This is done in other call sites, but was missing in one place.

Fixes #83638

3 years agoOnly look at blanket impls in `get_blanket_impls`
Joshua Nelson [Tue, 30 Mar 2021 16:28:33 +0000 (12:28 -0400)]
Only look at blanket impls in `get_blanket_impls`

3 years agoAlso profile finishing the encoding.
Camille GILLOT [Tue, 23 Mar 2021 12:19:42 +0000 (13:19 +0100)]
Also profile finishing the encoding.

3 years agoAdjust profiling.
Camille GILLOT [Thu, 18 Mar 2021 18:38:50 +0000 (19:38 +0100)]
Adjust profiling.

3 years agoAddress review.
Camille GILLOT [Thu, 18 Mar 2021 18:26:08 +0000 (19:26 +0100)]
Address review.

3 years agoAdd documentation.
Camille GILLOT [Wed, 17 Mar 2021 18:23:17 +0000 (19:23 +0100)]
Add documentation.

3 years agoSimplify tracking the encoder state.
Camille GILLOT [Tue, 16 Mar 2021 19:52:28 +0000 (20:52 +0100)]
Simplify tracking the encoder state.

3 years agoRemove the parallel version.
Camille GILLOT [Tue, 16 Mar 2021 18:32:00 +0000 (19:32 +0100)]
Remove the parallel version.

3 years agoFix parallel compiler.
Camille GILLOT [Sat, 6 Mar 2021 14:58:32 +0000 (15:58 +0100)]
Fix parallel compiler.

3 years agoFix tests.
Camille GILLOT [Sat, 6 Mar 2021 12:55:20 +0000 (13:55 +0100)]
Fix tests.

Avoid invoking queries inside `check_paths`, since we are holding a lock
to the reconstructed graph.

3 years agoDo not allocate in decoder.
Camille GILLOT [Sat, 6 Mar 2021 10:17:56 +0000 (11:17 +0100)]
Do not allocate in decoder.

3 years agoStream the dep-graph to a file.
Camille GILLOT [Tue, 2 Mar 2021 21:38:49 +0000 (22:38 +0100)]
Stream the dep-graph to a file.

3 years agoupdate for loop desugaring docs
Ibraheem Ahmed [Tue, 30 Mar 2021 16:03:58 +0000 (12:03 -0400)]
update for loop desugaring docs

3 years agoFix Self keyword doc URL conflict on case insensitive file systems
Guillaume Gomez [Tue, 30 Mar 2021 14:13:11 +0000 (16:13 +0200)]
Fix Self keyword doc URL conflict on case insensitive file systems

3 years agoAuto merge of #83170 - joshtriplett:spawn-cleanup, r=kennytm
bors [Tue, 30 Mar 2021 14:26:01 +0000 (14:26 +0000)]
Auto merge of #83170 - joshtriplett:spawn-cleanup, r=kennytm

Simplify Command::spawn (no semantic change)

This minimizes the size of an unsafe block, and allows outdenting some
complex code.

3 years agoAuto merge of #83674 - Dylan-DPC:rollup-bcuc1hl, r=Dylan-DPC
bors [Tue, 30 Mar 2021 11:44:36 +0000 (11:44 +0000)]
Auto merge of #83674 - Dylan-DPC:rollup-bcuc1hl, r=Dylan-DPC

Rollup of 7 pull requests

Successful merges:

 - #83568 (update comment at MaybeUninit::uninit_array)
 - #83571 (Constantify some slice methods)
 - #83579 (Improve pointer arithmetic docs)
 - #83645 (Wrap non-pre code blocks)
 - #83656 (Add a regression test for issue-82865)
 - #83662 (Update books)
 - #83667 (Suggest box/pin/arc ing receiver on method calls)

Failed merges:

r? `@ghost`
`@rustbot` modify labels: rollup

3 years agoRollup merge of #83667 - estebank:cool-bears-hot-tip, r=lcnr
Dylan DPC [Tue, 30 Mar 2021 09:34:30 +0000 (11:34 +0200)]
Rollup merge of #83667 - estebank:cool-bears-hot-tip, r=lcnr

Suggest box/pin/arc ing receiver on method calls

_Extracted from https://fasterthanli.me/articles/pin-and-suffering_

3 years agoRollup merge of #83662 - ehuss:update-books, r=ehuss
Dylan DPC [Tue, 30 Mar 2021 09:34:29 +0000 (11:34 +0200)]
Rollup merge of #83662 - ehuss:update-books, r=ehuss

Update books

## reference

4 commits in d10a0af8dca25d9d548ca6a369fd66ad06acb3c9..fd97729e2d82f8b08d68a31c9bfdf0c37a7fd542
2021-03-21 11:14:06 -0700 to 2021-03-28 14:29:19 -0700
- Editorial cleanup on expressions (part 1) (rust-lang-nursery/reference#967)
- Update type casts section (rust-lang-nursery/reference#961)
- Add missing "?" notion (rust-lang-nursery/reference#989)
- Fix typo (rust-lang-nursery/reference#988)

## book

8 commits in fc2f690fc16592abbead2360cfc0a42f5df78052..b54090a99ec7c4b46a5203a9c927fdbc311bb1f5
2021-03-05 14:03:22 -0500 to 2021-03-24 11:21:46 -0500
- correct the signature of the `deref` method (rust-lang/book#2658)
- Clarify the immutability of a reference (rust-lang/book#2646)
- Tweak wording around Windows representation of enter
- Ch. 02 note - Enter results in CRLF on Windows (rust-lang/book#2648)
- Added an example of slicing result (rust-lang/book#2649)
- Fix word wrapping, mention dictionary.txt is also in the ci dir
- README: note that spellcheck.sh is in ci directory (rust-lang/book#2652)
- Change someurl.com to example.org (rust-lang/book#2655)

## rust-by-example

12 commits in eead22c6c030fa4f3a167d1798658c341199e2ae..29d91f591c90dd18fdca6d23f1a9caf9c139d0d7
2021-03-04 16:26:43 -0300 to 2021-03-23 09:03:39 -0300
- Unwrap some drinks. (rust-lang/rust-by-example#1431)
- doc(testcase_linked_list): add a little extra note about pattern (rust-lang/rust-by-example#1408)
- Update function name in comment (rust-lang/rust-by-example#1413)
- Fixes minor typo in src/types/cast.md (rust-lang/rust-by-example#1414)
- Add destructuring example to generics new type (rust-lang/rust-by-example#1416)
- update struct.md (rust-lang/rust-by-example#1419)
- fix name from rectangle to Rectangle (rust-lang/rust-by-example#1420)
- Typo "incures" in code comment (rust-lang/rust-by-example#1422)
- Changed impl to use Self::Item (rust-lang/rust-by-example#1425)
- Fix code highlighting in some places (rust-lang/rust-by-example#1427)
- Update multi_bounds.md (rust-lang/rust-by-example#1428)
- Reformulated text for redability (rust-lang/rust-by-example#1429)

## rustc-dev-guide

3 commits in 67ebd4b55dba44edfc351621cef6e5e758169c55..0687daac28939c476df51778f5a1d1aff1a3fddf
2021-03-11 13:36:25 -0800 to 2021-03-28 13:33:56 -0400
- Add notes about nightly rustc version for the rustc-driver examples
- Update rustc-driver-*.rs examples (rust-lang/rustc-dev-guide#1095)
- Fix rust compiler meeting info (rust-lang/rustc-dev-guide#1087)

## embedded-book

1 commits in f61685755fad7d3b88b4645adfbf461d500563a2..d3f2ace94d51610cf3e3c265705bb8416d37f8e4
2021-03-08 01:06:44 +0000 to 2021-03-17 07:53:09 +0000
- Add binary attribute to .jpeg files, closes rust-embedded/book#287  (rust-embedded/book#288)

3 years agoRollup merge of #83656 - JohnTitor:resolve-test, r=petrochenkov
Dylan DPC [Tue, 30 Mar 2021 09:34:28 +0000 (11:34 +0200)]
Rollup merge of #83656 - JohnTitor:resolve-test, r=petrochenkov

Add a regression test for issue-82865

Closes #82865
r? `@petrochenkov`

3 years agoRollup merge of #83645 - pickfire:patch-3, r=GuillaumeGomez
Dylan DPC [Tue, 30 Mar 2021 09:34:27 +0000 (11:34 +0200)]
Rollup merge of #83645 - pickfire:patch-3, r=GuillaumeGomez

Wrap non-pre code blocks

Fix #83550 regression

```
$ cargo new --lib whitespace && cd whitespace && echo '//! `"   foo   "`' > src/lib.rs && cargo doc --open
```

Before

![](https://user-images.githubusercontent.com/89623/112713498-c0dfc200-8ed5-11eb-8c57-efdf26372e74.png)

After

![](https://user-images.githubusercontent.com/89623/112713538-f08eca00-8ed5-11eb-8a98-675179f60ae2.png)

r? ``@GuillaumeGomez``
cc ``@mgeisler``

3 years agoRollup merge of #83579 - RalfJung:ptr-arithmetic, r=dtolnay
Dylan DPC [Tue, 30 Mar 2021 09:34:26 +0000 (11:34 +0200)]
Rollup merge of #83579 - RalfJung:ptr-arithmetic, r=dtolnay

Improve pointer arithmetic docs

* Add slightly more detailed definition of "allocated object" to the module docs, and link it from everywhere.
* Clarify the "remains attached" wording a bit (at least I hope this is clearer).
* Remove the sentence about using integer arithmetic; this seems to confuse people even if it is technically correct.

As usual, the edit needs to be done in a dozen places to remain consistent, I hope I got them all.

3 years agoRollup merge of #83571 - a1phyr:feature_const_slice_first_last, r=dtolnay
Dylan DPC [Tue, 30 Mar 2021 09:34:25 +0000 (11:34 +0200)]
Rollup merge of #83571 - a1phyr:feature_const_slice_first_last, r=dtolnay

Constantify some slice methods

Tracking issue: #83570

This PR constantifies the following functions under feature `const_slice_first_last`:
- `slice::first`
- `slice::split_first`
- `slice::last`
- `slice::split_last`

Blocking on `#![feature(const_mut_refs)]`:
- `slice::first_mut`
- `slice::split_first_mut`
- `slice::last_mut`
- `slice::split_last_mut`

3 years agoRollup merge of #83568 - RalfJung:uninit_array, r=dtolnay
Dylan DPC [Tue, 30 Mar 2021 09:34:23 +0000 (11:34 +0200)]
Rollup merge of #83568 - RalfJung:uninit_array, r=dtolnay

update comment at MaybeUninit::uninit_array

https://github.com/rust-lang/rust/issues/49147 is closed; this now instead needs inline const expressions (#76001).

3 years agoAuto merge of #83458 - saethlin:improve-vec-benches, r=dtolnay
bors [Tue, 30 Mar 2021 09:03:29 +0000 (09:03 +0000)]
Auto merge of #83458 - saethlin:improve-vec-benches, r=dtolnay

Clean up Vec's benchmarks

The Vec benchmarks need a lot of love. I sort of noticed this in https://github.com/rust-lang/rust/pull/83357 but the overall situation is much less awesome than I thought at the time. The first commit just removes a lot of asserts and does a touch of other cleanup.

A number of these benchmarks are poorly-named. For example, `bench_map_fast` is not in fact fast, `bench_rev_1` and `bench_rev_2` are vague, `bench_in_place_zip_iter_mut` doesn't call `zip`, `bench_in_place*` don't do anything in-place... Should I fix these, or is there tooling that depend on the names not changing?

I've also noticed that `bench_rev_1` and `bench_rev_2` are remarkably fragile. It looks like poking other code in `Vec` can cause the codegen of this benchmark to switch to a version that has almost exactly half its current throughput and I have absolutely no idea why.

Here's the fast version:
```asm
  0.69 │110:   movdqu -0x20(%rbx,%rdx,4),%xmm0
  1.76 │       movdqu -0x10(%rbx,%rdx,4),%xmm1
  0.71 │       pshufd $0x1b,%xmm1,%xmm1
  0.60 │       pshufd $0x1b,%xmm0,%xmm0
  3.68 │       movdqu %xmm1,-0x30(%rcx)
 14.36 │       movdqu %xmm0,-0x20(%rcx)
 13.88 │       movdqu -0x40(%rbx,%rdx,4),%xmm0
  6.64 │       movdqu -0x30(%rbx,%rdx,4),%xmm1
  0.76 │       pshufd $0x1b,%xmm1,%xmm1
  0.77 │       pshufd $0x1b,%xmm0,%xmm0
  1.87 │       movdqu %xmm1,-0x10(%rcx)
 13.01 │       movdqu %xmm0,(%rcx)
 38.81 │       add    $0x40,%rcx
  0.92 │       add    $0xfffffffffffffff0,%rdx
  1.22 │     ↑ jne    110
```
And the slow one:
```asm
  0.42 │9a880:   movdqa     %xmm2,%xmm1
  4.03 │9a884:   movq       -0x8(%rbx,%rsi,4),%xmm4
  8.49 │9a88a:   pshufd     $0xe1,%xmm4,%xmm4
  2.58 │9a88f:   movq       -0x10(%rbx,%rsi,4),%xmm5
  7.02 │9a895:   pshufd     $0xe1,%xmm5,%xmm5
  4.79 │9a89a:   punpcklqdq %xmm5,%xmm4
  5.77 │9a89e:   movdqu     %xmm4,-0x18(%rdx)
 15.74 │9a8a3:   movq       -0x18(%rbx,%rsi,4),%xmm4
  3.91 │9a8a9:   pshufd     $0xe1,%xmm4,%xmm4
  5.04 │9a8ae:   movq       -0x20(%rbx,%rsi,4),%xmm5
  5.29 │9a8b4:   pshufd     $0xe1,%xmm5,%xmm5
  4.60 │9a8b9:   punpcklqdq %xmm5,%xmm4
  9.81 │9a8bd:   movdqu     %xmm4,-0x8(%rdx)
 11.05 │9a8c2:   paddq      %xmm3,%xmm0
  0.86 │9a8c6:   paddq      %xmm3,%xmm2
  5.89 │9a8ca:   add        $0x20,%rdx
  0.12 │9a8ce:   add        $0xfffffffffffffff8,%rsi
  1.16 │9a8d2:   add        $0x2,%rdi
  2.96 │9a8d6: → jne        9a880 <<alloc::vec::Vec<T,A> as core::iter::traits::collect::Extend<&T>>::extend+0xd0>
```

3 years agoAdd a regression test for issue-75801
JohnTitor [Tue, 30 Mar 2021 08:02:23 +0000 (17:02 +0900)]
Add a regression test for issue-75801

3 years agoAuto merge of #83649 - bjorn3:dedup_providers, r=petrochenkov
bors [Tue, 30 Mar 2021 06:22:29 +0000 (06:22 +0000)]
Auto merge of #83649 - bjorn3:dedup_providers, r=petrochenkov

Don't duplicate the extern providers once for each crate

This should give a small perf improvement for small crates by avoiding a memcpy of a pretty big struct for each loaded crate. In addition would be useful for replacing the sequential `CrateNum` everywhere with the hash based `StableCrateId` introduced in #81635, which would allow avoiding remapping of `CrateNum`'s when loading crate metadata. While this PR is not strictly needed for that, it is necessary to prevent a performance loss due to it.

I think this duplication was done in https://github.com/rust-lang/rust/pull/40008 (which introduced the query system) to make it possible to compile multiple crates in a single session in the future. I think this is unlikely to be implemented any time soon. In addition this PR can easily be reverted if necessary to implement this.

3 years agoApply review feedback
Amanieu d'Antras [Tue, 30 Mar 2021 06:03:41 +0000 (07:03 +0100)]
Apply review feedback

3 years agoAuto merge of #83357 - saethlin:vec-reserve-inlining, r=dtolnay
bors [Tue, 30 Mar 2021 03:41:14 +0000 (03:41 +0000)]
Auto merge of #83357 - saethlin:vec-reserve-inlining, r=dtolnay

Reduce the impact of Vec::reserve calls that do not cause any allocation

I think a lot of callers expect `Vec::reserve` to be nearly free when no resizing is required, but unfortunately that isn't the case. LLVM makes remarkably poor inlining choices (along the path from `Vec::reserve` to `RawVec::grow_amortized`), so depending on the surrounding context you either get a huge blob of `RawVec`'s resizing logic inlined into some seemingly-unrelated function, or not enough inlining happens and/or the actual check in `needs_to_grow` ends up behind a function call. My goal is to make the codegen for `Vec::reserve` match the mental that callers seem to have: It's reliably just a `sub cmp ja` if there is already sufficient capacity.

This patch has the following impact on the serde_json benchmarks: https://github.com/serde-rs/json-benchmark/tree/ca3efde8a5b75ff59271539b67452911860248c7 run with `cargo +stage1 run --release -- -n 1024`

Before:
```
                                DOM                  STRUCT
======= serde_json ======= parse|stringify ===== parse|stringify ====
data/canada.json         340 MB/s   490 MB/s   630 MB/s   370 MB/s
data/citm_catalog.json   460 MB/s   540 MB/s  1010 MB/s   550 MB/s
data/twitter.json        330 MB/s   840 MB/s   640 MB/s   630 MB/s

======= json-rust ======== parse|stringify ===== parse|stringify ====
data/canada.json         580 MB/s   990 MB/s
data/citm_catalog.json   720 MB/s   660 MB/s
data/twitter.json        570 MB/s   960 MB/s
```

After:
```
                                DOM                  STRUCT
======= serde_json ======= parse|stringify ===== parse|stringify ====
data/canada.json         330 MB/s   510 MB/s   610 MB/s   380 MB/s
data/citm_catalog.json   450 MB/s   640 MB/s   970 MB/s   830 MB/s
data/twitter.json        330 MB/s   880 MB/s   670 MB/s   960 MB/s

======= json-rust ======== parse|stringify ===== parse|stringify ====
data/canada.json         560 MB/s  1130 MB/s
data/citm_catalog.json   710 MB/s   880 MB/s
data/twitter.json        530 MB/s  1230 MB/s

```

That's approximately a one-third increase in throughput on two of the benchmarks, and no effect on one (The benchmark suite has sufficient jitter that I could pick a run where there are no regressions, so I'm not convinced they're meaningful here).

This also produces perf increases on the order of 3-5% in a few other microbenchmarks that I'm tracking. It might be useful to see if this has a cascading effect on inlining choices in some large codebases.

Compiling this simple program demonstrates the change in codegen that causes the perf impact:
```rust
fn main() {
    reserve(&mut Vec::new());
}

#[inline(never)]
fn reserve(v: &mut Vec<u8>) {
    v.reserve(1234);
}
```

Before:
```rust
00000000000069b0 <scratch::reserve>:
    69b0:       53                      push   %rbx
    69b1:       48 83 ec 30             sub    $0x30,%rsp
    69b5:       48 8b 47 08             mov    0x8(%rdi),%rax
    69b9:       48 8b 4f 10             mov    0x10(%rdi),%rcx
    69bd:       48 89 c2                mov    %rax,%rdx
    69c0:       48 29 ca                sub    %rcx,%rdx
    69c3:       48 81 fa d1 04 00 00    cmp    $0x4d1,%rdx
    69ca:       77 73                   ja     6a3f <scratch::reserve+0x8f>
    69cc:       48 81 c1 d2 04 00 00    add    $0x4d2,%rcx
    69d3:       72 75                   jb     6a4a <scratch::reserve+0x9a>
    69d5:       48 89 fb                mov    %rdi,%rbx
    69d8:       48 8d 14 00             lea    (%rax,%rax,1),%rdx
    69dc:       48 39 ca                cmp    %rcx,%rdx
    69df:       48 0f 47 ca             cmova  %rdx,%rcx
    69e3:       48 83 f9 08             cmp    $0x8,%rcx
    69e7:       be 08 00 00 00          mov    $0x8,%esi
    69ec:       48 0f 47 f1             cmova  %rcx,%rsi
    69f0:       48 85 c0                test   %rax,%rax
    69f3:       74 17                   je     6a0c <scratch::reserve+0x5c>
    69f5:       48 8b 0b                mov    (%rbx),%rcx
    69f8:       48 89 0c 24             mov    %rcx,(%rsp)
    69fc:       48 89 44 24 08          mov    %rax,0x8(%rsp)
    6a01:       48 c7 44 24 10 01 00    movq   $0x1,0x10(%rsp)
    6a08:       00 00
    6a0a:       eb 08                   jmp    6a14 <scratch::reserve+0x64>
    6a0c:       48 c7 04 24 00 00 00    movq   $0x0,(%rsp)
    6a13:       00
    6a14:       48 8d 7c 24 18          lea    0x18(%rsp),%rdi
    6a19:       48 89 e1                mov    %rsp,%rcx
    6a1c:       ba 01 00 00 00          mov    $0x1,%edx
    6a21:       e8 9a fe ff ff          call   68c0 <alloc::raw_vec::finish_grow>
    6a26:       48 8b 7c 24 20          mov    0x20(%rsp),%rdi
    6a2b:       48 8b 74 24 28          mov    0x28(%rsp),%rsi
    6a30:       48 83 7c 24 18 01       cmpq   $0x1,0x18(%rsp)
    6a36:       74 0d                   je     6a45 <scratch::reserve+0x95>
    6a38:       48 89 3b                mov    %rdi,(%rbx)
    6a3b:       48 89 73 08             mov    %rsi,0x8(%rbx)
    6a3f:       48 83 c4 30             add    $0x30,%rsp
    6a43:       5b                      pop    %rbx
    6a44:       c3                      ret
    6a45:       48 85 f6                test   %rsi,%rsi
    6a48:       75 08                   jne    6a52 <scratch::reserve+0xa2>
    6a4a:       ff 15 38 c4 03 00       call   *0x3c438(%rip)        # 42e88 <_GLOBAL_OFFSET_TABLE_+0x490>
    6a50:       0f 0b                   ud2
    6a52:       ff 15 f0 c4 03 00       call   *0x3c4f0(%rip)        # 42f48 <_GLOBAL_OFFSET_TABLE_+0x550>
    6a58:       0f 0b                   ud2
    6a5a:       66 0f 1f 44 00 00       nopw   0x0(%rax,%rax,1)
```

After:
```asm
0000000000006910 <scratch::reserve>:
    6910:       48 8b 47 08             mov    0x8(%rdi),%rax
    6914:       48 8b 77 10             mov    0x10(%rdi),%rsi
    6918:       48 29 f0                sub    %rsi,%rax
    691b:       48 3d d1 04 00 00       cmp    $0x4d1,%rax
    6921:       77 05                   ja     6928 <scratch::reserve+0x18>
    6923:       e9 e8 fe ff ff          jmp    6810 <alloc::raw_vec::RawVec<T,A>::reserve::do_reserve_and_handle>
    6928:       c3                      ret
    6929:       0f 1f 80 00 00 00 00    nopl   0x0(%rax)
```

3 years agoHide unnecessary reference to trait
Esteban Küber [Tue, 30 Mar 2021 02:53:48 +0000 (19:53 -0700)]
Hide unnecessary reference to trait

When the problem for a method not being found in its receiver is due to
arbitrary self-types, we don't want to mention importing or implementing
the trait, instead we suggest wrapping.

3 years agoDisallow octal format in Ipv4 string
Cheng XU [Tue, 30 Mar 2021 02:24:23 +0000 (10:24 +0800)]
Disallow octal format in Ipv4 string

In its original specification, leading zero in Ipv4 string is interpreted
as octal literals. So a IP address 0127.0.0.1 actually means 87.0.0.1.

This confusion can lead to many security vulnerabilities. Therefore, in
[IETF RFC 6943], it suggests to disallow octal/hexadecimal format in Ipv4
string all together.

Existing implementation already disallows hexadecimal numbers. This commit
makes Parser reject octal numbers.

Fixes #83648.

[IETF RFC 6943]: https://tools.ietf.org/html/rfc6943#section-3.1.1

3 years agoAuto merge of #83664 - Dylan-DPC:rollup-wx6idpd, r=Dylan-DPC
bors [Tue, 30 Mar 2021 01:16:08 +0000 (01:16 +0000)]
Auto merge of #83664 - Dylan-DPC:rollup-wx6idpd, r=Dylan-DPC

Rollup of 7 pull requests

Successful merges:

 - #82331 (alloc: Added `as_slice` method to `BinaryHeap` collection)
 - #83130 (escape_ascii take 2)
 - #83374 (unix: Fix feature(unix_socket_ancillary_data) on macos and other BSDs)
 - #83543 (Lint on unknown intra-doc link disambiguators)
 - #83636 (Add a regression test for issue-82792)
 - #83643 (Remove a FIXME resolved by #73578)
 - #83644 (:arrow_up: rust-analyzer)

Failed merges:

r? `@ghost`
`@rustbot` modify labels: rollup

3 years agoSuggest box/pin/arc ing receiver on method calls
Esteban Küber [Tue, 30 Mar 2021 01:14:44 +0000 (18:14 -0700)]
Suggest box/pin/arc ing receiver on method calls

3 years agoRun LLVM coverage instrumentation passes before optimization passes
Amanieu d'Antras [Sat, 27 Mar 2021 05:04:32 +0000 (05:04 +0000)]
Run LLVM coverage instrumentation passes before optimization passes

This matches the behavior of Clang and allows us to remove several
hacks which were needed to ensure functions weren't optimized away
before reaching the instrumentation pass.

3 years agoAdd a regression test for issue-82865
JohnTitor [Mon, 29 Mar 2021 18:31:53 +0000 (03:31 +0900)]
Add a regression test for issue-82865

3 years agoRollup merge of #83644 - lnicola:rust-analyzer-2021-03-29, r=jonas-schievink
Dylan DPC [Mon, 29 Mar 2021 22:32:25 +0000 (00:32 +0200)]
Rollup merge of #83644 - lnicola:rust-analyzer-2021-03-29, r=jonas-schievink

:arrow_up: rust-analyzer

3 years agoRollup merge of #83643 - JohnTitor:is-freeze-no-longer-uses-span, r=RalfJung
Dylan DPC [Mon, 29 Mar 2021 22:32:24 +0000 (00:32 +0200)]
Rollup merge of #83643 - JohnTitor:is-freeze-no-longer-uses-span, r=RalfJung

Remove a FIXME resolved by #73578

r? ``@RalfJung``

3 years agoRollup merge of #83636 - JohnTitor:const-generics-defualts-regg-test, r=lcnr
Dylan DPC [Mon, 29 Mar 2021 22:32:23 +0000 (00:32 +0200)]
Rollup merge of #83636 - JohnTitor:const-generics-defualts-regg-test, r=lcnr

Add a regression test for issue-82792

Closes #82792

r? ``@lcnr``

3 years agoRollup merge of #83543 - camelid:lint-unknown-disambiguator, r=jyn514
Dylan DPC [Mon, 29 Mar 2021 22:32:22 +0000 (00:32 +0200)]
Rollup merge of #83543 - camelid:lint-unknown-disambiguator, r=jyn514

Lint on unknown intra-doc link disambiguators

3 years agoRollup merge of #83374 - reyk:fix/bsd-ancillary, r=joshtriplett
Dylan DPC [Mon, 29 Mar 2021 22:32:21 +0000 (00:32 +0200)]
Rollup merge of #83374 - reyk:fix/bsd-ancillary, r=joshtriplett

unix: Fix feature(unix_socket_ancillary_data) on macos and other BSDs

This adds support for CMSG handling on macOS and fixes it on OpenBSD and possibly other BSDs.

When traversing the CMSG list, the previous code had an exception for Android where the next element after the last pointer could point to the first pointer instead of NULL.  This is actually not specific to Android: the `libc::CMSG_NXTHDR` implementation for Linux and emscripten have a special case to return NULL when the length of the previous element is zero; most other implementations simply return the previous element plus a zero offset in this case.

This MR makes the check non-optional which fixes CMSG handling and a possible endless loop on such systems; tested with file descriptor passing on OpenBSD, Linux, and macOS.

This MR additionally adds `SocketAncillary::is_empty` because clippy is right that it should be added.

This belongs to the `feature(unix_socket_ancillary_data)` tracking issue:  https://github.com/rust-lang/rust/issues/76915

r? `@joshtriplett`

3 years agoRollup merge of #83130 - clarfonthey:escape, r=m-ou-se
Dylan DPC [Mon, 29 Mar 2021 22:32:20 +0000 (00:32 +0200)]
Rollup merge of #83130 - clarfonthey:escape, r=m-ou-se

escape_ascii take 2

The previous PR, #73111 was closed for inactivity; since I've had trouble in the past reopening closed PRs, I'm just making a new one.

I'm still running the tests locally but figured I'd open the PR in the meantime. Will fix whatever errors show up so we don't have to wait again for this.

r? ``@m-ou-se``

3 years agoRollup merge of #82331 - frol:feat/std-binary-heap-as-slice, r=Amanieu
Dylan DPC [Mon, 29 Mar 2021 22:32:18 +0000 (00:32 +0200)]
Rollup merge of #82331 - frol:feat/std-binary-heap-as-slice, r=Amanieu

alloc: Added `as_slice` method to `BinaryHeap` collection

I initially asked about whether it is useful addition on https://internals.rust-lang.org/t/should-i-add-as-slice-method-to-binaryheap/13816, and it seems there were no objections, so went ahead with this PR.

> There is [`BinaryHeap::into_vec`](https://doc.rust-lang.org/std/collections/struct.BinaryHeap.html#method.into_vec), but it consumes the value. I wonder if there is API design limitation that should be taken into account. Implementation-wise, the inner buffer is just a Vec, so it is trivial to expose as_slice from it.

Please, guide me through if I need to add tests or something else.

UPD: Tracking issue #83659

3 years agoAuto merge of #82864 - jyn514:short-circuit, r=GuillaumeGomez
bors [Mon, 29 Mar 2021 22:27:16 +0000 (22:27 +0000)]
Auto merge of #82864 - jyn514:short-circuit, r=GuillaumeGomez

rustdoc: Don't enter an infer_ctxt in get_blanket_impls for impls that aren't blanket impls

Less broken version of https://github.com/rust-lang/rust/pull/82856.

get_blanket_impls is a *very* hot region of rustdoc, so even small changes like this should help. Unfortunately I don't have benchmarks for this until https://github.com/rust-lang/rustc-perf/pull/802 is merged.

3 years agoUpdate books
Eric Huss [Mon, 29 Mar 2021 20:53:10 +0000 (13:53 -0700)]
Update books

3 years agoSimplify Command::spawn (no semantic change)
Josh Triplett [Mon, 15 Mar 2021 20:35:47 +0000 (13:35 -0700)]
Simplify Command::spawn (no semantic change)

This minimizes the size of an unsafe block, and allows outdenting some
complex code.

3 years agoUpdated the tracking issue #
Vlad Frolov [Mon, 29 Mar 2021 19:44:48 +0000 (22:44 +0300)]
Updated the tracking issue #

3 years agoAuto merge of #83185 - jyn514:remove-dead-code, r=oli-obk
bors [Mon, 29 Mar 2021 19:44:27 +0000 (19:44 +0000)]
Auto merge of #83185 - jyn514:remove-dead-code, r=oli-obk

Remove (lots of) dead code

Builds on
- [ ] https://github.com/rust-lang/rust/pull/83161
- [x] https://github.com/rust-lang/rust/pull/83230
- [x] https://github.com/rust-lang/rust/pull/83197.

Found with https://github.com/est31/warnalyzer.
See https://github.com/rust-lang/rust/pull/77739 for a similar change in the past.

Dubious changes:
- Maybe some of the dead code in rustc_data_structures should be kept, in case someone wants to use it in the future?

TODO:
- [ ] check if any of the comments on the deleted code should be kept.
- [x] update the compiler documentation; right now it fails to build
- [x] finish moving `cfg(test)` changes into https://github.com/rust-lang/rust/pull/83197

cc `@est31`

3 years agoDo not emit a suggestion that causes the E0632 error
JohnTitor [Mon, 29 Mar 2021 18:00:25 +0000 (03:00 +0900)]
Do not emit a suggestion that causes the E0632 error

3 years agoRevert changes to sync data structures
Joshua Nelson [Mon, 29 Mar 2021 17:50:40 +0000 (13:50 -0400)]
Revert changes to sync data structures

There isn't currently a good reviewer for these, and I don't want to
remove things that will just be added again. I plan to make a separate
PR for these changes so the rest of the cleanup can land.

3 years agoAuto merge of #80839 - tblah:riscv64linux_links, r=Mark-Simulacrum
bors [Mon, 29 Mar 2021 16:48:45 +0000 (16:48 +0000)]
Auto merge of #80839 - tblah:riscv64linux_links, r=Mark-Simulacrum

Riscv64linux Test fixes

Get tests passing again using the riscv64gc-unknown-linux-gnu docker image.

Test with
```
src/ci/docker/run.sh riscv64gc-linux
```

## linkcheck
Linkcheck tests that interdocument links in the documentation are correct. Some interdocument links go between rustc and tools (such as rustdoc and cargo). When cross compiling, rustc is built for the host while some tools are built for the target. This goes for the documentation too. Because of this, links in the rustc documentation reffering to cargo or rustdoc documentation look broken.

This issue is worked around by disabling linkcheck for cross compilation builds.

## run-make tests

#78911 seems to happen because `--target` was not passed to `rustc`, but the target linker was specified, causing the target linker to be called with options intended for the host.

Resolves #78911

In a separate issue, `issue-36710` was trying to run a binary built for the target on the host system. This will not work for any platform using `remote-test-server`/`client` (such as riscv64). I don't know of a way of skipping those platforms specifically, so I set this test to skip only on riscv64 for now.

3 years agoDon't duplicate the extern providers once for each crate
bjorn3 [Mon, 29 Mar 2021 16:03:07 +0000 (18:03 +0200)]
Don't duplicate the extern providers once for each crate

3 years agoAuto merge of #83609 - klensy:c-str, r=m-ou-se
bors [Mon, 29 Mar 2021 14:07:32 +0000 (14:07 +0000)]
Auto merge of #83609 - klensy:c-str, r=m-ou-se

ffi::c_str removed bound checks on as_bytes, to_bytes

This removes bound checks on CString::as_bytes() and CStr::to_bytes() and adds test.

3 years agoWrap non-pre code blocks
Ivan Tham [Mon, 29 Mar 2021 13:49:58 +0000 (21:49 +0800)]
Wrap non-pre code blocks

Fix #83550 regression