]> git.lizzy.rs Git - rust.git/log
rust.git
5 years agoAuto merge of #55646 - GuillaumeGomez:rollup, r=GuillaumeGomez
bors [Sat, 3 Nov 2018 14:51:05 +0000 (14:51 +0000)]
Auto merge of #55646 - GuillaumeGomez:rollup, r=GuillaumeGomez

Rollup of 5 pull requests

Successful merges:

 - #54162 (Hide default impls items)
 - #55555 (Make `-Z ls` list the actual filename of external dependencies)
 - #55567 (add test for deriving Debug on uninhabited enum)
 - #55568 (test that rustdoc doesn't overflow on a big enum)
 - #55598 (publish-toolstate: ping maintainers when a tool builds again)

Failed merges:

r? @ghost

5 years agoRollup merge of #55598 - nrc:tool-bot, r=kennytm
Guillaume Gomez [Sat, 3 Nov 2018 12:40:39 +0000 (13:40 +0100)]
Rollup merge of #55598 - nrc:tool-bot, r=kennytm

publish-toolstate: ping maintainers when a tool builds again

And add @Xanewok as an RLS maintainer

r? @kennytm

Motivation is that I see when the RLS gets broken, but have to poll the website to see when it is fixed, I'd prefer to get pinged.

5 years agoRollup merge of #55568 - durka:rustdoc-big-enum, r=nikomatsakis
Guillaume Gomez [Sat, 3 Nov 2018 12:40:37 +0000 (13:40 +0100)]
Rollup merge of #55568 - durka:rustdoc-big-enum, r=nikomatsakis

test that rustdoc doesn't overflow on a big enum

Adds a test to close #25295. The test case depended on `enum_primitive` so I just basically pulled its source into an auxiliary file, is that the right way to do it?

5 years agoRollup merge of #55567 - durka:derive-debug-uninhabited, r=nikomatsakis
Guillaume Gomez [Sat, 3 Nov 2018 12:40:35 +0000 (13:40 +0100)]
Rollup merge of #55567 - durka:derive-debug-uninhabited, r=nikomatsakis

add test for deriving Debug on uninhabited enum

Adds a test to close #38885.

5 years agoRollup merge of #55555 - aidanhs:aphs-better-z-ls, r=alexcrichton
Guillaume Gomez [Sat, 3 Nov 2018 12:40:34 +0000 (13:40 +0100)]
Rollup merge of #55555 - aidanhs:aphs-better-z-ls, r=alexcrichton

Make `-Z ls` list the actual filename of external dependencies

The hash is pointless for external consumers - extra_filename is the thing that actually gets used, per https://github.com/rust-lang/rust/blob/ca2639e/src/librustc_metadata/locator.rs#L312-L313

5 years agoRollup merge of #54162 - GuillaumeGomez:hide-default-impls-items, r=QuietMisdreavus
Guillaume Gomez [Sat, 3 Nov 2018 12:40:32 +0000 (13:40 +0100)]
Rollup merge of #54162 - GuillaumeGomez:hide-default-impls-items, r=QuietMisdreavus

Hide default impls items

Follow up of #51885.
Fixes #54025.

cc @Mark-Simulacrum

r? @QuietMisdreavus

And screenshots of course:

<img width="1440" alt="screen shot 2018-09-12 at 23 30 35" src="https://user-images.githubusercontent.com/3050060/45454424-1ff8d500-b6e4-11e8-9257-030322495d58.png">

<img width="1440" alt="screen shot 2018-09-12 at 23 30 42" src="https://user-images.githubusercontent.com/3050060/45454431-2424f280-b6e4-11e8-8d65-db0d85ac18f0.png">

5 years agoAuto merge of #55330 - scalexm:bound-ty, r=nikomatsakis
bors [Sat, 3 Nov 2018 12:11:23 +0000 (12:11 +0000)]
Auto merge of #55330 - scalexm:bound-ty, r=nikomatsakis

Add support for bound types

This PR may have some slight performance impacts, I don't know how hot is the code I touched.

Also, this breaks clippy and miri.

r? @nikomatsakis

5 years agoSubstitute binders directly
scalexm [Thu, 25 Oct 2018 14:01:10 +0000 (16:01 +0200)]
Substitute binders directly

5 years agoRename `as_bound_var` to `assert_bound_var`
scalexm [Thu, 25 Oct 2018 13:40:06 +0000 (15:40 +0200)]
Rename `as_bound_var` to `assert_bound_var`

5 years agoFix doc comment
scalexm [Thu, 25 Oct 2018 12:13:24 +0000 (14:13 +0200)]
Fix doc comment

5 years agoExtend `ty::fold::RegionReplacer` to `ty::fold::BoundVarReplacer`
scalexm [Wed, 24 Oct 2018 21:41:40 +0000 (23:41 +0200)]
Extend `ty::fold::RegionReplacer` to `ty::fold::BoundVarReplacer`
Use the new `BoundVarReplacer` to perform canonical substitutions.

5 years agoRename `Binder::no_late_bound_regions` to `Binder::no_bound_vars`
scalexm [Wed, 24 Oct 2018 20:30:34 +0000 (22:30 +0200)]
Rename `Binder::no_late_bound_regions` to `Binder::no_bound_vars`

5 years agoRemove `ReCanonical` in favor of `ReLateBound`
scalexm [Wed, 24 Oct 2018 08:29:42 +0000 (10:29 +0200)]
Remove `ReCanonical` in favor of `ReLateBound`

5 years agoAdjust bound tys indices in canonicalization
scalexm [Tue, 23 Oct 2018 17:47:53 +0000 (19:47 +0200)]
Adjust bound tys indices in canonicalization

5 years agoRename `BoundTy` field `level` -> `index`
scalexm [Tue, 23 Oct 2018 14:28:53 +0000 (16:28 +0200)]
Rename `BoundTy` field `level` -> `index`

5 years agoRename `BoundTyIndex` to `BoundVar`
scalexm [Tue, 23 Oct 2018 11:42:23 +0000 (13:42 +0200)]
Rename `BoundTyIndex` to `BoundVar`

5 years agoShift both late bound regions and bound types
scalexm [Mon, 22 Oct 2018 20:38:51 +0000 (22:38 +0200)]
Shift both late bound regions and bound types

5 years agoMove `BoundTy` to `ty::TyKind`
scalexm [Mon, 22 Oct 2018 18:37:56 +0000 (20:37 +0200)]
Move `BoundTy` to `ty::TyKind`

5 years agoAuto merge of #55238 - alexcrichton:rm-jemalloc, r=estebank
bors [Sat, 3 Nov 2018 09:33:10 +0000 (09:33 +0000)]
Auto merge of #55238 - alexcrichton:rm-jemalloc, r=estebank

Remove the `alloc_jemalloc` crate

This commit removes the `alloc_jemalloc` crate from the standard library and all related configuration. We will no longer be shipping this unstable crate. Rationale for this is provided on https://github.com/rust-lang/rust/issues/36963 and the many linked issues, but I can inline rationale here if desired!

We currently rely on jemalloc for increased perf in the Rust compiler, however. [This perf run shows](https://perf.rust-lang.org/compare.html?start=74ff7dcb1388e60a613cd6050bcd372a3cc4998b&end=7e7928dc0340d79b404e93f0c79eb4b946c1d669&stat=wall-time) that if we switch to glibc 2.23's allocator that it's slower than jemalloc across many benchmarks. [This perf run, however](https://perf.rust-lang.org/compare.html?start=22cc2ae8057d14e980b7c784e1eb2eee26b59e7d&end=10c95ccfa7a7adc12f4e608621ca29f9b98eed29), shows that if we use `jemalloc-sys` from crates.io then rustc actually gets faster across all benchmarks! (presumably because it has a more recent version of jemalloc than our submodule).

As a result, it's expected that this doesn't regress any code (as it's just removing an unstable crate) and it should actually improve rustc performance because it updates jemalloc.

Closes #36963

5 years agoAuto merge of #55363 - pietroalbini:update-cargo-vendor, r=Mark-Simulacrum
bors [Sat, 3 Nov 2018 06:50:19 +0000 (06:50 +0000)]
Auto merge of #55363 - pietroalbini:update-cargo-vendor, r=Mark-Simulacrum

Bump cargo-vendor version

Currently we pin `cargo-vendor` to 0.1.4, which doesn't set the `User-Agent` HTTP header. crates.io is going to require that header in the near future, so this PR bumps the pinned version of the crate to the latest one (which correctly sets the header).

r? @Mark-Simulacrum
cc @sgrif

5 years agoAuto merge of #54383 - mikeyhew:custom-receivers-object-safety, r=nikomatsakis
bors [Sat, 3 Nov 2018 02:37:29 +0000 (02:37 +0000)]
Auto merge of #54383 - mikeyhew:custom-receivers-object-safety, r=nikomatsakis

Take 2: Implement object-safety and dynamic dispatch for arbitrary_self_types

This replaces #50173. Over the months that that PR was open, we made a lot of changes to the way this was going to be implemented, and the long, meandering comment thread and commit history would have been confusing to people reading it in the future. So I decided to package everything up with new, straighforward commits and open a new PR.

Here are the main points. Please read the commit messages for details.

- To simplify codegen, we only support receivers that have the ABI of a pointer. That means they are builtin pointer types, or newtypes thereof.
- We introduce a new trait: `DispatchFromDyn<T>`, similar to `CoerceUnsized<T>`. `DispatchFromDyn` has extra requirements that `CoerceUnsized` does not: when you implement `DispatchFromDyn` for a struct, there cannot be any extra fields besides the field being coerced and `PhantomData` fields. This ensures that the struct's ABI is the same as a pointer.
- For a method's receiver (e.g. `self: Rc<Self>`) to be object-safe, it needs to have the following property:
    - let `DynReceiver` be the receiver when `Self = dyn Trait`
    - let `ConcreteReceiver` be the receiver when `Self = T`, where `T` is some unknown `Sized` type that implements `Trait`, and is the erased type of the trait object.
    - `ConcreteReceiver` must implement `DispatchFromDyn<DynReceiver>`

In the case of `Rc<Self>`, this requires `Rc<T>: DispatchFromDyn<Rc<dyn Trait>>`

These rules are explained more thoroughly in the doc comment on `receiver_is_dispatchable` in object_safety.rs.

r? @nikomatsakis and @eddyb

cc @arielb1 @cramertj @withoutboats

Special thanks to @nikomatsakis for getting me un-stuck when implementing the object-safety checks, and @eddyb for helping with the codegen parts.

EDIT 2018-11-01: updated because CoerceSized has been replaced with DispatchFromDyn

5 years agoDon't show associated const items by default
Guillaume Gomez [Thu, 1 Nov 2018 22:57:17 +0000 (23:57 +0100)]
Don't show associated const items by default

5 years agoAuto merge of #55087 - levex:e0669-improve-span, r=nagisa
bors [Fri, 2 Nov 2018 18:28:51 +0000 (18:28 +0000)]
Auto merge of #55087 - levex:e0669-improve-span, r=nagisa

rustc: improve E0669 span

E0669 refers to an operand that cannot be coerced into a single LLVM
value, unfortunately right now this uses the Span for the entire inline
assembly statement, which is less than ideal.

This commit preserves the Span from HIR, which lets us emit the error
using the Span for the operand itself in MIR.

r? @nagisa
cc/ @parched

5 years agoAuto merge of #54543 - GuillaumeGomez:top-level-index, r=QuietMisdreavus
bors [Fri, 2 Nov 2018 15:39:25 +0000 (15:39 +0000)]
Auto merge of #54543 - GuillaumeGomez:top-level-index, r=QuietMisdreavus

Add index page argument

@Mark-Simulacrum: I might need some help from you: in bootstrap, I want to add an argument (a new flag added into `rustdoc`) in order to generate the current index directly when `rustdoc` is documenting the `std` lib. However, my change in `bootstrap` didn't do it and I assume it must be moved inside the `Std` struct. But there, I don't see how to pass it to `rustdoc` through `cargo`. Did I miss anything?

r? @QuietMisdreavus

5 years agorustc: Wait for all codegen threads to exit
Alex Crichton [Wed, 31 Oct 2018 18:32:27 +0000 (11:32 -0700)]
rustc: Wait for all codegen threads to exit

This commit updates rustc to wait for all codegen threads to exit before
allowing the main thread to exit. This is a stab in the dark to fix the
mysterious segfaults appearing on #55238, and hopefully we'll see
whether this actually fixes things in practice...

5 years agoUse `jemalloc-sys` on Linux and OSX compilers
Alex Crichton [Sun, 21 Oct 2018 02:15:06 +0000 (19:15 -0700)]
Use `jemalloc-sys` on Linux and OSX compilers

This commit adds opt-in support to the compiler to link to `jemalloc` in
the compiler. When activated the compiler will depend on `jemalloc-sys`,
instruct jemalloc to unprefix its symbols, and then link to it. The
feature is activated by default on Linux/OSX compilers for x86_64/i686
platforms, and it's not enabled anywhere else for now. We may be able to
opt-in other platforms in the future! Also note that the opt-in only
happens on CI, it's otherwise unconditionally turned off by default.

Closes #36963

5 years agoRemove all jemalloc-related content
Alex Crichton [Sun, 21 Oct 2018 02:04:42 +0000 (19:04 -0700)]
Remove all jemalloc-related content

This commit removes all jemalloc related submodules, configuration, etc,
from the bootstrap, from the standard library, and from the compiler.
This will be followed up with a change to use jemalloc specifically as
part of rustc on blessed platforms.

5 years agoAuto merge of #55316 - RalfJung:retagging, r=oli-obk
bors [Fri, 2 Nov 2018 12:45:03 +0000 (12:45 +0000)]
Auto merge of #55316 - RalfJung:retagging, r=oli-obk

Add Retagging statements

This adds a `Retag` statement kind to MIR, used to perform the retagging operation from [Stacked Borrows](https://www.ralfj.de/blog/2018/08/07/stacked-borrows.html). It also kills the old `Validate` statements that I added last year.

NOTE: This includes https://github.com/rust-lang/rust/pull/55270. Only [these commits are new](https://github.com/RalfJung/rust/compare/stacked-borrows-ng...RalfJung:retagging).

5 years agoAuto merge of #54718 - froydnj:aarch64-ci, r=alexcrichton
bors [Fri, 2 Nov 2018 09:46:11 +0000 (09:46 +0000)]
Auto merge of #54718 - froydnj:aarch64-ci, r=alexcrichton

add an appveyor config for aarch64-pc-windows-msvc

This is purely a cargo-cult of things to solicit feedback from humans and/or automation failures.  Not sure that the build artifacts would get packaged properly to start providing nightly tarballs for `libstd`, but this is at least a start.

Fixes #53864.

5 years agoAuto merge of #54043 - fintelia:raw_entry, r=alexcrichton
bors [Fri, 2 Nov 2018 07:04:07 +0000 (07:04 +0000)]
Auto merge of #54043 - fintelia:raw_entry, r=alexcrichton

Add raw_entry API to HashMap

This is a continuation of #50821.

5 years agoAuto merge of #55359 - alex:command-exec-uaf, r=alexcrichton
bors [Fri, 2 Nov 2018 04:20:36 +0000 (04:20 +0000)]
Auto merge of #55359 - alex:command-exec-uaf, r=alexcrichton

Fixes #46775 -- don't mutate the process's environment in Command::exec

Instead, pass the environment to execvpe, so the kernel can apply it directly to the new process. This avoids a use-after-free in the case where exec'ing the new process fails for any reason, as well as a race condition if there are other threads alive during the exec.

Fixes #46775

5 years agoadd test for deriving Debug on uninhabited enum
Alex Burka [Thu, 1 Nov 2018 02:57:37 +0000 (02:57 +0000)]
add test for deriving Debug on uninhabited enum

5 years agoAuto merge of #55305 - nikomatsakis:universes-refactor-3, r=scalexm
bors [Fri, 2 Nov 2018 01:19:17 +0000 (01:19 +0000)]
Auto merge of #55305 - nikomatsakis:universes-refactor-3, r=scalexm

universes refactor 3

Some more refactorings from my universe branch. These are getting a bit more "invasive" -- they start to plumb the universe information through the canonicalization process. As of yet though I don't **believe** this branch changes our behavior in any notable way, though I'm marking the branch as `WIP` to give myself a chance to verify this.

r? @scalexm

5 years agoMove doc_alias doc
Guillaume Gomez [Thu, 1 Nov 2018 23:04:56 +0000 (00:04 +0100)]
Move doc_alias doc

5 years agoAdd test for index-page
Guillaume Gomez [Sat, 20 Oct 2018 23:13:33 +0000 (01:13 +0200)]
Add test for index-page

5 years agoAdd documentation for index-page features
Guillaume Gomez [Sat, 13 Oct 2018 12:42:33 +0000 (14:42 +0200)]
Add documentation for index-page features

5 years agoAdd comments explaining how codegen works for `dyn Trait` methods
Michael Hewson [Thu, 1 Nov 2018 22:28:52 +0000 (18:28 -0400)]
Add comments explaining how codegen works for `dyn Trait` methods

5 years agoAuto merge of #55595 - Manishearth:clippyup, r=oli-obk
bors [Thu, 1 Nov 2018 22:18:16 +0000 (22:18 +0000)]
Auto merge of #55595 - Manishearth:clippyup, r=oli-obk

Update clippy

r? @kennytm @oli-obk

5 years agoAdd a check for reprs that could change the ABI
Michael Hewson [Fri, 26 Oct 2018 05:09:33 +0000 (01:09 -0400)]
Add a check for reprs that could change the ABI

disallow `#[repr(C)] and `#[repr(packed)]` on structs implementing DispatchFromDyn because they will change the ABI from Scalar/ScalarPair to Aggregrate, resulting in an ICE during object-safety checks or codegen

5 years agoRemove this check for object-safety during selection of trait object candidates
Michael Hewson [Wed, 17 Oct 2018 22:54:13 +0000 (18:54 -0400)]
Remove this check for object-safety during selection of trait object candidates

I don't really understand what it's for, but see the comment here:
https://github.com/rust-lang/rust/pull/50173#discussion_r204222336

where arielb1 said

> Does this check do anything these days? I think `$0: Trait` is always considered ambiguous

and nikomatsakis agreed we may be able to get rid of it

5 years agoadd `U: Trait` to the param env during DispatchFromDyn check
Michael Hewson [Fri, 12 Oct 2018 04:12:56 +0000 (00:12 -0400)]
add `U: Trait` to the param env during DispatchFromDyn check
also updated the doc on `receiver_is_dispatchable` to reflect current state of the implementation

5 years agoPut backticks around field names, types and paths in error messages
Michael Hewson [Tue, 9 Oct 2018 05:13:07 +0000 (01:13 -0400)]
Put backticks around field names, types and paths in error messages

Added to `DispatchFromDyn` and `CoerceUnsized` error messages

5 years agoAdd layout sanity checks in object safety
Michael Hewson [Tue, 9 Oct 2018 00:40:57 +0000 (20:40 -0400)]
Add layout sanity checks in object safety

If object-safety checks succeed for a receiver type, make sure the
receiver’s abi is
a) a Scalar, when Self = ()
b) a ScalarPair, when Self = dyn Trait

5 years agoReplace UncoeribleReceiver error message with UndispatchableReceiver
Michael Hewson [Tue, 9 Oct 2018 00:37:58 +0000 (20:37 -0400)]
Replace UncoeribleReceiver error message with UndispatchableReceiver

5 years agofix error-index test
Michael Hewson [Fri, 5 Oct 2018 20:35:42 +0000 (16:35 -0400)]
fix error-index test

5 years agoupdate DispatchFromDyn doctest
Michael Hewson [Fri, 5 Oct 2018 06:09:06 +0000 (02:09 -0400)]
update DispatchFromDyn doctest

5 years agoReplace CoerceSized trait with DispatchFromDyn
Michael Hewson [Thu, 4 Oct 2018 03:40:21 +0000 (23:40 -0400)]
Replace CoerceSized trait with DispatchFromDyn

Rename `CoerceSized` to `DispatchFromDyn`, and reverse the direction so that, for example, you write

```
impl<T: Unsize<U>, U> DispatchFromDyn<*const U> for *const T {}
```

instead of

```
impl<T: Unsize<U>, U> DispatchFromDyn<*const T> for *const U {}
```

this way the trait is really just a subset of `CoerceUnsized`.

The checks in object_safety.rs are updated for the new trait, and some documentation and method names in there are updated for the new trait name — e.g. `receiver_is_coercible` is now called `receiver_is_dispatchable`. Since the trait now works in the opposite direction, some code had to updated here for that too.

I did not update the error messages for invalid `CoerceSized` (now `DispatchFromDyn`) implementations, except to find/replace `CoerceSized` with `DispatchFromDyn`. Will ask for suggestions in the PR thread.

5 years agofix docs on trait
Michael Hewson [Fri, 21 Sep 2018 06:16:29 +0000 (02:16 -0400)]
fix docs on  trait
tests were failing because I didn't wrap code snippets like  in backticks. fixed that now, so hopefully tests will pass on travis

5 years agoAdd new tests and update existing for object-safe custom receivers
Michael Hewson [Thu, 20 Sep 2018 07:28:57 +0000 (03:28 -0400)]
Add new tests and update existing for object-safe custom receivers

5 years agoupdate tests that have changed output
Michael Hewson [Thu, 20 Sep 2018 07:21:29 +0000 (03:21 -0400)]
update tests that have changed output

 I’m not sure why these tests have different output now, but they do.
In all cases, the error message that is missing looks like this: “the
trait bound `dyn Trait: Trait` is not satisfied”

My guess is that the error message is going away because object-safety
now involves trait solving, and these extra error messages are no
longer leaking out.

5 years agoAdd CoerceSized impls throughout libstd
Michael Hewson [Thu, 20 Sep 2018 07:18:00 +0000 (03:18 -0400)]
Add CoerceSized impls throughout libstd

This will make receiver types like `Rc<Self>` and `Pin<&mut Self>`
object-safe.

5 years agoImplement object-safety for arbitrary_self_types: part 2
Michael Hewson [Thu, 20 Sep 2018 07:16:10 +0000 (03:16 -0400)]
Implement object-safety for arbitrary_self_types: part 2

For now, all of the receivers that we care about are just a newtyped
pointer — i.e. `Box<Self>`, `Rc<Self>`, `Pin<Box<Self>>`, `Pin<&mut
Self>`. This is much simpler to implement in codeine than the more
general case, because the ABI is the same as a pointer. So we add some
checks in typeck/coherence/builtin.rs to make sure that implementors of
CoerceSized are just newtyped pointers. In this commit, we also
implement the codegen bits.

5 years agoImplement the object-safety checks for arbitrary_self_types: part 1
Michael Hewson [Thu, 20 Sep 2018 07:12:00 +0000 (03:12 -0400)]
Implement the object-safety checks for arbitrary_self_types: part 1

For a trait method to be considered object-safe, the receiver type must
satisfy certain properties: first, we need to be able to get the vtable
to so we can look up the method, and second, we need to convert the
receiver from the version where `Self=dyn Trait`, to the version where
`Self=T`, `T` being some unknown, `Sized` type that implements `Trait`.

To check that the receiver satisfies those properties, we use the
following query:

forall (U) {
if (Self: Unsize<U>) {
Receiver[Self => U]: CoerceSized<Receiver>
}
}

where `Receiver` is the receiver type of the method (e.g. `Rc<Self>`),
and `Receiver[Self => U]` is the receiver type where `Self = U`, e.g.
`Rc<U>`.

forall queries like this aren’t implemented in the trait system yet, so
for now we are using a bit of a hack — see the code for explanation.

5 years agoAdd CoerceSized trait and lang item
Michael Hewson [Thu, 20 Sep 2018 07:04:08 +0000 (03:04 -0400)]
Add CoerceSized trait and lang item

This trait is more-or-less the reverse of CoerceUnsized, and will be
used for object-safety checks. Receiver types like `Rc` will have to
implement `CoerceSized` so that methods that use `Rc<Self>` as the
receiver will be considered object-safe.

5 years agomove some code around to avoid query cycles
Michael Hewson [Thu, 20 Sep 2018 06:56:10 +0000 (02:56 -0400)]
move some code around to avoid query cycles

5 years agoMake all object-safety methods require a global TyCtxt
Michael Hewson [Mon, 2 Jul 2018 22:30:59 +0000 (18:30 -0400)]
Make all object-safety methods require a global TyCtxt

5 years agopublish-toolstate: ping maintainers when a tool builds again
Nick Cameron [Thu, 1 Nov 2018 21:38:05 +0000 (10:38 +1300)]
publish-toolstate: ping maintainers when a tool builds again

And add @Xanewok as an RLS maintainer

5 years agoUpdate clippy
Manish Goregaokar [Thu, 1 Nov 2018 20:58:07 +0000 (13:58 -0700)]
Update clippy

5 years agoAuto merge of #55579 - pietroalbini:rollup, r=kennytm
bors [Thu, 1 Nov 2018 16:06:15 +0000 (16:06 +0000)]
Auto merge of #55579 - pietroalbini:rollup, r=kennytm

Rollup of 13 pull requests

Successful merges:

 - #55280 (Add libproc_macro to rust-src distribution)
 - #55469 (Regression tests for issue #54477.)
 - #55504 (Use vec![x; n] instead of iter::repeat(x).take(n).collect())
 - #55522 (use String::from() instead of format!() macro to construct Strings.)
 - #55536 (Pass suggestions as impl Iterator instead of Vec)
 - #55542 (syntax: improve a few allocations)
 - #55558 (Tweak `MatcherPos::matches`)
 - #55561 (Fix double_check tests on big-endian targets)
 - #55573 (Make sure the `aws` executable is in $PATH on macOS)
 - #55574 (Use `SmallVec` within `MoveData`.)
 - #55575 (Fix invalid_const_promotion test on some archs)
 - #55578 (Made doc example of `impl Default for …` use `-> Self` instead of explicit self type)
 - #55582 (Remove unused import copy from publish_toolstate.py)

5 years agoRollup merge of #55578 - regexident:fix/self, r=frewsxcv
kennytm [Thu, 1 Nov 2018 14:56:36 +0000 (22:56 +0800)]
Rollup merge of #55578 - regexident:fix/self, r=frewsxcv

Made doc example of `impl Default for …` use `-> Self` instead of explicit self type

There is no need to state the explicit type of `self`.

5 years agoRollup merge of #55561 - smaeul:test-fixes, r=alexcrichton
kennytm [Thu, 1 Nov 2018 14:56:12 +0000 (22:56 +0800)]
Rollup merge of #55561 - smaeul:test-fixes, r=alexcrichton

Fix double_check tests on big-endian targets

Since the enums get optimized down to 1 byte long, the bits set in the `usize` member don't align with the `enum` values on big-endian machines. Avoid this issue by shrinking the integer member to the
same size as the enums.

5 years agoRollup merge of #55582 - yamaguchi1024:publish_toolstate, r=alexcrichton
kennytm [Thu, 1 Nov 2018 14:55:49 +0000 (22:55 +0800)]
Rollup merge of #55582 - yamaguchi1024:publish_toolstate, r=alexcrichton

Remove unused import copy from publish_toolstate.py

5 years agoRollup merge of #55573 - kennytm:macos-aws, r=alexcrichton
kennytm [Thu, 1 Nov 2018 14:54:16 +0000 (22:54 +0800)]
Rollup merge of #55573 - kennytm:macos-aws, r=alexcrichton

Make sure the `aws` executable is in $PATH on macOS

Fixes #55571

5 years agoRollup merge of #55575 - parched:trap, r=RalfJung
Pietro Albini [Thu, 1 Nov 2018 10:55:32 +0000 (11:55 +0100)]
Rollup merge of #55575 - parched:trap, r=RalfJung

Fix invalid_const_promotion test on some archs

On at least AArch64 `llvm.trap` raises SIGTRAP.

r? @RalfJung

5 years agoRollup merge of #55574 - nnethercote:gather_move-SmallVec, r=michaelwoerister
Pietro Albini [Thu, 1 Nov 2018 10:55:30 +0000 (11:55 +0100)]
Rollup merge of #55574 - nnethercote:gather_move-SmallVec, r=michaelwoerister

Use `SmallVec` within `MoveData`.

This reduces allocation counts significantly in a few benchmarks, reducing instruction counts by up to 2%.

5 years agoRollup merge of #55558 - nnethercote:tweak-MatcherPos-matches, r=petrochenkov
Pietro Albini [Thu, 1 Nov 2018 10:55:29 +0000 (11:55 +0100)]
Rollup merge of #55558 - nnethercote:tweak-MatcherPos-matches, r=petrochenkov

Tweak `MatcherPos::matches`

These changes reduce instruction counts on `sentry-cli-check` incremental builds by up to 2%.

5 years agoRollup merge of #55542 - ljedrz:syntax_alloc_improvements, r=kennytm
Pietro Albini [Thu, 1 Nov 2018 10:55:28 +0000 (11:55 +0100)]
Rollup merge of #55542 - ljedrz:syntax_alloc_improvements, r=kennytm

syntax: improve a few allocations

Add 2 `reserve`s and a `with_capacity` where the final vector size is known.

5 years agoRollup merge of #55536 - ljedrz:don't_collect_suggestions, r=davidtwco
Pietro Albini [Thu, 1 Nov 2018 10:55:26 +0000 (11:55 +0100)]
Rollup merge of #55536 - ljedrz:don't_collect_suggestions, r=davidtwco

Pass suggestions as impl Iterator instead of Vec

This avoids some allocations when throwing errors, making failing faster ^^.

5 years agoRollup merge of #55522 - matthiaskrgr:no_format, r=zackmdavis
Pietro Albini [Thu, 1 Nov 2018 10:55:25 +0000 (11:55 +0100)]
Rollup merge of #55522 - matthiaskrgr:no_format, r=zackmdavis

use String::from() instead of format!() macro to construct Strings.

5 years agoRemove unused import copy from publish_toolstate.py
Yuka Takahashi [Thu, 1 Nov 2018 13:52:00 +0000 (14:52 +0100)]
Remove unused import copy from publish_toolstate.py

5 years agoFixes #46775 -- don't mutate the process's environment in Command::exec
Alex Gaynor [Thu, 25 Oct 2018 19:44:32 +0000 (19:44 +0000)]
Fixes #46775 -- don't mutate the process's environment in Command::exec

Instead, pass the environment to execvpe, so the kernel can apply it directly to the new process. This avoids a use-after-free in the case where exec'ing the new process fails for any reason, as well as a race condition if there are other threads alive during the exec.

5 years agoRollup merge of #55504 - ljedrz:simpler_repeated_elements, r=oli-obk
Pietro Albini [Thu, 1 Nov 2018 10:55:22 +0000 (11:55 +0100)]
Rollup merge of #55504 - ljedrz:simpler_repeated_elements, r=oli-obk

Use vec![x; n] instead of iter::repeat(x).take(n).collect()

It's shorter and possibly easier to optimize.

5 years agoRollup merge of #55469 - pnkfelix:issue-54477-regression-tests, r=nikomatsakis
Pietro Albini [Thu, 1 Nov 2018 10:55:20 +0000 (11:55 +0100)]
Rollup merge of #55469 - pnkfelix:issue-54477-regression-tests, r=nikomatsakis

Regression tests for issue #54477.

At some point someone may want to revisit PR #53564

it would be really good to have regression tests for #54477 before that happens. :)

5 years agoRollup merge of #55280 - vlad20012:add-libproc_macro-to-src-disrt, r=Mark-Simulacrum
Pietro Albini [Thu, 1 Nov 2018 10:55:19 +0000 (11:55 +0100)]
Rollup merge of #55280 - vlad20012:add-libproc_macro-to-src-disrt, r=Mark-Simulacrum

Add libproc_macro to rust-src distribution

Fixes #55279

5 years agoMade doc example of `impl Default for …` use `-> Self` instead of explicit self type
Vincent Esche [Thu, 1 Nov 2018 10:52:44 +0000 (11:52 +0100)]
Made doc example of `impl Default for …` use `-> Self` instead of explicit self type

5 years agoUse `SmallVec` within `MoveData`.
Nicholas Nethercote [Thu, 1 Nov 2018 04:34:36 +0000 (15:34 +1100)]
Use `SmallVec` within `MoveData`.

This reduces allocation counts significantly in a few benchmarks,
reducing instruction counts by up to 2%.

5 years agoMake sure the installed `awscli` is found on macOS.
kennytm [Thu, 1 Nov 2018 07:30:30 +0000 (15:30 +0800)]
Make sure the installed `awscli` is found on macOS.

5 years agoAuto merge of #55548 - alexcrichton:bump, r=Mark-Simulacrum
bors [Thu, 1 Nov 2018 06:26:28 +0000 (06:26 +0000)]
Auto merge of #55548 - alexcrichton:bump, r=Mark-Simulacrum

Bump nightly to 1.32.0

* Also update the bootstrap compiler
* Update cargo to 1.32.0
* Clean out stage0 annotations

5 years agotest that rustdoc doesn't overflow on a big enum
Alex Burka [Thu, 1 Nov 2018 02:58:29 +0000 (02:58 +0000)]
test that rustdoc doesn't overflow on a big enum

5 years agoAuto merge of #55521 - nrc:rls-fix, r=petrochenkov
bors [Thu, 1 Nov 2018 02:41:00 +0000 (02:41 +0000)]
Auto merge of #55521 - nrc:rls-fix, r=petrochenkov

save-analysis: bug fix and optimisation.

The first commit fixes a bug in name resolution and save-analysis (introduced in #54145) and removes an unused parameter. This fixes the RLS tests, which are currently blocking distribution of the RLS. The second commit removes macro uses from save-analysis data, since these are never used, they just take up space.

r? @petrochenkov

5 years agoFix double_check tests on big-endian targets
Samuel Holland [Sun, 16 Sep 2018 18:27:56 +0000 (18:27 +0000)]
Fix double_check tests on big-endian targets

Since the enums get optimized down to 1 byte long, the bits
set in the usize member don't align with the enums on big-endian
machines. Avoid this issue by shrinking the integer member to the
same size as the enums.

5 years agoMake `-Z ls` list the actual filename of external dependencies
Aidan Hobson Sayers [Wed, 31 Oct 2018 23:10:36 +0000 (23:10 +0000)]
Make `-Z ls` list the actual filename of external dependencies

5 years agoFix invalid_const_promotion test on some archs
James Duley [Wed, 31 Oct 2018 22:59:53 +0000 (22:59 +0000)]
Fix invalid_const_promotion test on some archs

On at least AArch64 `llvm.trap` raises SIGTRAP.

5 years agoUse `SmallVec` for the inner vectors in `MatcherPos::matches`.
Nicholas Nethercote [Wed, 31 Oct 2018 21:41:57 +0000 (08:41 +1100)]
Use `SmallVec` for the inner vectors in `MatcherPos::matches`.

This avoids some allocations.

5 years agoShare empty `Vec`s more within `MatcherPos::matches`.
Nicholas Nethercote [Wed, 31 Oct 2018 18:35:20 +0000 (05:35 +1100)]
Share empty `Vec`s more within `MatcherPos::matches`.

`create_matches` creates a `Vec<Rc<Vec<NamedMatch>>>`. Even though all the
inner `Vec`s are empty, each one is created separately.

This commit changes `create_matches` so it instead creates one empty inner
`Vec`, and shares it.

The commit also changes `MatcherPos::matches` to a boxed slice, because its
length doesn't change.

5 years agoA couple suggested edits
Jonathan Behrens [Wed, 31 Oct 2018 19:15:20 +0000 (15:15 -0400)]
A couple suggested edits

5 years agoBump nightly to 1.32.0
Alex Crichton [Wed, 31 Oct 2018 18:53:17 +0000 (11:53 -0700)]
Bump nightly to 1.32.0

* Also update the bootstrap compiler
* Update cargo to 1.32.0
* Clean out stage0 annotations

5 years agokill old-style-lub warnings
Niko Matsakis [Mon, 15 Oct 2018 15:55:20 +0000 (11:55 -0400)]
kill old-style-lub warnings

5 years agofix bug in NLL error reporting
Niko Matsakis [Wed, 31 Oct 2018 16:10:49 +0000 (12:10 -0400)]
fix bug in NLL error reporting

Account for incompatible universes and higher-ranked subtyping.

5 years agosyntax: improve a few allocations
ljedrz [Wed, 31 Oct 2018 15:58:51 +0000 (16:58 +0100)]
syntax: improve a few allocations

5 years agobootstrap: bump cargo-vendor version to 0.1.19
Pietro Albini [Thu, 25 Oct 2018 21:32:10 +0000 (23:32 +0200)]
bootstrap: bump cargo-vendor version to 0.1.19

5 years agoAuto merge of #54806 - parched:park, r=RalfJung
bors [Wed, 31 Oct 2018 13:52:00 +0000 (13:52 +0000)]
Auto merge of #54806 - parched:park, r=RalfJung

thread::unpark: Avoid notifying with mutex locked.

This means when the other thread wakes it can continue right away
instead of having to wait for the mutex.

Also add some comments explaining why the mutex needs to be locked in
the first place.

This is a follow up to https://github.com/rust-lang/rust/pull/54174
I did some tests with relacy [here](https://gist.github.com/parched/b7fb88c97755a81e5cb9f9048a15f7fb) (This PR is InnerV2). If anyone can think of some other test case worth adding let me know.

r? @RalfJung

5 years agoPass suggestions as impl Iterator instead of Vec
ljedrz [Mon, 15 Oct 2018 11:16:05 +0000 (13:16 +0200)]
Pass suggestions as impl Iterator instead of Vec

5 years agoswitch to LLVM 7.0 as the host compiler
Nathan Froyd [Tue, 30 Oct 2018 20:54:34 +0000 (16:54 -0400)]
switch to LLVM 7.0 as the host compiler

This version ought to work better with MSVC 15.9 preview headers.

5 years agoadd an appveyor config for aarch64-pc-windows-msvc
Nathan Froyd [Mon, 1 Oct 2018 14:20:12 +0000 (10:20 -0400)]
add an appveyor config for aarch64-pc-windows-msvc

Fixes #53864.

5 years agoAuto merge of #55304 - alexcrichton:update-credentials, r=kennytm
bors [Wed, 31 Oct 2018 06:42:24 +0000 (06:42 +0000)]
Auto merge of #55304 - alexcrichton:update-credentials, r=kennytm

ci: Move global credentials to web configuration

This commit moves a number of our encrypted credentials stored in
configuration files in this repository to env vars on the web UI. This
will hopefully make it easier to rotate credentials in the future as
well as quickly change them if the need arises. (quicker than landing a
PR that is).

This also updates the travis deployment process to always use the `aws`
command line tool which we're already installing on Linux and should
enable us to avoid all `dpl` gem issues as well as have greater control
over what's going where.

5 years agosave analysis: don't dump macro refs
Nick Cameron [Tue, 30 Oct 2018 22:56:11 +0000 (11:56 +1300)]
save analysis: don't dump macro refs

5 years agoAuto merge of #54004 - tromey:enum-debuginfo, r=tromey
bors [Tue, 30 Oct 2018 23:36:10 +0000 (23:36 +0000)]
Auto merge of #54004 - tromey:enum-debuginfo, r=tromey

Fix DWARF generation for enums

The DWARF generated for Rust enums was always somewhat unusual.
Rather than using DWARF constructs directly, it would emit magic field
names like "RUST$ENCODED$ENUM$0$Name" and "RUST$ENUM$DISR".  Since
PR #45225, though, even this has not worked -- the ad hoc scheme was
not updated to handle the wider variety of niche-filling layout
optimizations now available.

This patch changes the generated DWARF to use the standard tags meant
for this purpose; namely, DW_TAG_variant and DW_TAG_variant_part.

The patch to implement this went in to LLVM 7.  In order to work with
older versions of LLVM, and because LLVM doesn't do anything here for
PDB, the existing code is kept as a fallback mode.

Support for this DWARF is in the Rust lldb and in gdb 8.2.

Closes #32920
Closes #32924
Closes #52762
Closes #53153

5 years agouse String::from() instead of format!() macro to construct Strings.
Matthias Krüger [Tue, 30 Oct 2018 23:10:10 +0000 (00:10 +0100)]
use String::from() instead of format!() macro to construct Strings.

5 years agothread::unpark: Avoid notifying with mutex locked.
James Duley [Fri, 21 Sep 2018 14:13:39 +0000 (14:13 +0000)]
thread::unpark: Avoid notifying with mutex locked.

This means when the other thread wakes it can continue right away
instead of having to wait for the mutex.

Also add some comments explaining why the mutex needs to be locked in
the first place.