Commit Graph

65614 Commits

Author SHA1 Message Date
Josh Stone
4a8ddac99e Use fold to implement Iterator::for_each
The benefit of using internal iteration is shown in new benchmarks:

    test iter::bench_for_each_chain_fold     ... bench:     635,110 ns/iter (+/- 5,135)
    test iter::bench_for_each_chain_loop     ... bench:   2,249,983 ns/iter (+/- 42,001)
    test iter::bench_for_each_chain_ref_fold ... bench:   2,248,061 ns/iter (+/- 51,940)
2017-06-21 13:22:27 -07:00
Ariel Ben-Yehuda
7769c9a7ec coerce fields to the expected field type
Fully fixes #31260.

This needs a crater run.
2017-06-21 20:28:09 +03:00
Oliver Middleton
ae1dc2a6f9 rustbuild: Fix compiler docs yet again
Add support for `-Z force-unstable-if-unmarked` to rustdoc.
2017-06-21 17:59:10 +01:00
Mark Simulacrum
305f5263f9 Make rustc errors colorful.
Rustbuild passes --message-format=json to Cargo to learn about the
dependencies for a given build, which then makes Cargo steal the
stderr/stdout for the compiler process, leading to non colorful output.
To avoid this, detection of stderr being a tty is added to rustbuild,
and an environment variable is used to communicate with the rustc shim.
2017-06-21 10:04:21 -06:00
Stepan Koltsov
f441e07feb Pass path to python from bootstrap.py to bootstrap.rs
When bootstrap is executed with python not in `$PATH`, (e. g.
`c:\Python27\python.exe x.py test`) bootstrap cannot find python
and crashes.

This commit passes path to python in `BOOTSTRAP_PYTHON` env var.
2017-06-21 19:01:24 +03:00
James Duley
7b4ff1c7b8 Update LLVM to fix unsigned multiplication overflow
check for some targets, notably ARMv6-M.
2017-06-21 16:38:36 +01:00
bors
622e7e6487 Auto merge of #42802 - frewsxcv:rollup, r=frewsxcv
Rollup of 4 pull requests

- Successful merges: #42397, #42620, #42762, #42766
- Failed merges:
2017-06-21 15:26:55 +00:00
Corey Farwell
80e14a0fe3 Rollup merge of #42766 - nrc:versions, r=nagisa
Update rls-data version

And update the RLS submod
2017-06-21 10:40:17 -04:00
Corey Farwell
30a7bfcaae Rollup merge of #42762 - jackpot51:patch-1, r=sfackler
Disable repr(simd) in mem::swap on Redox

This addresses https://github.com/rust-lang/rust/issues/42761
2017-06-21 10:40:16 -04:00
Corey Farwell
d33e2c5181 Rollup merge of #42620 - wesleywiser:compile_error, r=brson
Add compile_error!

Related to #40872
2017-06-21 10:40:15 -04:00
Corey Farwell
292fcc880f Rollup merge of #42397 - sfackler:syncsender-sync, r=alexcrichton
Implement Sync for SyncSender

r? @alexcrichton
2017-06-21 10:40:14 -04:00
Alex Crichton
201f06988f Integrate jobserver support to parallel codegen
This commit integrates the `jobserver` crate into the compiler. The crate was
previously integrated in to Cargo as part of rust-lang/cargo#4110. The purpose
here is to two-fold:

* Primarily the compiler can cooperate with Cargo on parallelism. When you run
  `cargo build -j4` then this'll make sure that the entire build process between
  Cargo/rustc won't use more than 4 cores, whereas today you'd get 4 rustc
  instances which may all try to spawn lots of threads.

* Secondarily rustc/Cargo can now integrate with a foreign GNU `make` jobserver.
  This means that if you call cargo/rustc from `make` or another
  jobserver-compatible implementation it'll use foreign parallelism settings
  instead of creating new ones locally.

As the number of parallel codegen instances in the compiler continues to grow
over time with the advent of incremental compilation it's expected that this'll
become more of a problem, so this is intended to nip concurrent concerns in the
bud by having all the tools to cooperate!

Note that while rustc has support for itself creating a jobserver it's far more
likely that rustc will always use the jobserver configured by Cargo. Cargo today
will now set a jobserver unconditionally for rustc to use.
2017-06-21 07:16:43 -07:00
Leonardo Yvens
6e628bee95 Impl Clone for DefaultHasher 2017-06-21 10:47:29 -03:00
Ariel Ben-Yehuda
3ac976861d avoid translating roots with predicates that do not hold
Fixes #37725.
2017-06-21 16:16:19 +03:00
Stepan Koltsov
275f9a04af Better Debug for Args and ArgsOs
Display actual args instead of two dots.
2017-06-21 15:40:45 +03:00
bors
39220a9d9f Auto merge of #42751 - arielb1:fast-representable, r=eddyb
Memoize types in `is_representable` to avoid exponential worst-case

I could have made representability a cached query, but that would have
been added complexity for not much benefit - outside of the exponential
worst-case, this pass is fast enough already.

Fixes #42747.

r? @eddyb
2017-06-21 12:28:48 +00:00
bors
03198da2ad Auto merge of #42750 - arielb1:unwind-stack, r=eddyb
Update LLVM to pick StackColoring improvement

Fixes #40883.

r? @eddyb
2017-06-21 10:06:13 +00:00
bors
37a991abc0 Auto merge of #42664 - alexcrichton:moar-crates, r=eddyb
Remove in-tree flate/getopts crates

Remove `src/libflate` in favor of `flate2` on crates.io and `src/libgetopts` in favor of `getopts` on crates.io. The replacements have slightly different APIs and the usage in the compiler has been updated to reflect this.

This uncovered an unfortunate limitation of the compiler today to deal with linking everything correctly, and the workaround can be found documented in `src/librustc/Cargo.toml`.
2017-06-21 06:27:36 +00:00
bors
6ccfe68076 Auto merge of #42002 - sfackler:trusted-read, r=alexcrichton
Add a Read::initializer method

This is an API that allows types to indicate that they can be passed
buffers of uninitialized memory which can improve performance.

cc @SimonSapin

r? @alexcrichton
2017-06-21 04:14:46 +00:00
Steven Fackler
ecbb896b9e Add Read::initializer.
This is an API that allows types to indicate that they can be passed
buffers of uninitialized memory which can improve performance.
2017-06-20 20:26:22 -07:00
Oliver Middleton
0d885efe16 Update version numbers for From impls 2017-06-21 01:18:19 +01:00
Clar Charr
5a97036b69 Convert Intos to Froms. 2017-06-21 01:18:18 +01:00
bors
bb143890a4 Auto merge of #42076 - alex-ozdemir:master, r=nrc
Clearer Error Message for Duplicate Definition

Clearer use of the error message and span labels to communicate duplication definitions/imports.

fixes #42061
2017-06-21 00:06:02 +00:00
Mark Simulacrum
4caa0b020f Fixes bootstrapping with custom cargo/rustc.
config.mk is now always read when parsing the configuration to prevent
this from reoccurring in the future, hopefully.
2017-06-20 18:05:34 -06:00
Zack M. Davis
43b9cb3c1d add extended information for E0562; impl Trait can only be a return type 2017-06-20 16:36:20 -07:00
Ian Douglas Scott
9f91a4df83
Redox: Use create() instead of open() when setting env variable 2017-06-20 16:04:38 -07:00
Josh Stone
b4038977a3 Add Iterator::for_each
This works like a `for` loop in functional style, applying a closure to
every item in the `Iterator`.  It doesn't allow `break`/`continue` like
a `for` loop, nor any other control flow outside the closure, but it may
be a more legible style for tying up the end of a long iterator chain.

This was tried before in #14911, but nobody made the case for using it
with longer iterators.  There was also `Iterator::advance` at that time
which was more capable than `for_each`, but that no longer exists.

The `itertools` crate has `Itertools::foreach` with the same behavior,
but thankfully the names won't collide.  The `rayon` crate also has a
`ParallelIterator::for_each` where simple `for` loops aren't possible.

> I really wish we had `for_each` on seq iterators. Having to use a
> dummy operation is annoying.  - [@nikomatsakis][1]

[1]: https://github.com/nikomatsakis/rayon/pull/367#issuecomment-308455185
2017-06-20 15:25:51 -07:00
bors
445077963c Auto merge of #42780 - frewsxcv:rollup, r=frewsxcv
Rollup of 6 pull requests

- Successful merges: #42271, #42717, #42728, #42749, #42756, #42772
- Failed merges:
2017-06-20 21:08:28 +00:00
Corey Farwell
58425ef71d Rollup merge of #42772 - MaloJaffre:libc, r=alexcrichton
Update libc to 0.2.24

Fixes  #42427.
2017-06-20 16:28:32 -04:00
Corey Farwell
f9edbcccc5 Rollup merge of #42756 - sanxiyn:name-for-must-use, r=estebank
Show type name for unused_must_use lint

Fix #42688.
2017-06-20 16:28:31 -04:00
Corey Farwell
d3e116a945 Rollup merge of #42749 - frewsxcv:frewsxcxv/doc-examples, r=QuietMisdreavus
Additions/improvements for doc examples.

None
2017-06-20 16:28:30 -04:00
Corey Farwell
d92edacf8e Rollup merge of #42728 - jseyfried:fix_resolve_perf, r=nrc
resolve: fix perf bug

Fixes #42544.
r? @nrc
2017-06-20 16:28:27 -04:00
Corey Farwell
dbe16e067f Rollup merge of #42717 - ollie27:into_to_from2, r=sfackler
Convert `Into<Box<[T]>> for Vec<T>` into `From<Vec<T>> for Box<[T]>`

As the `collections` crate has been merged into `alloc` in #42648 this impl is now possible. This is the final part of #42129 missing from #42227.
2017-06-20 16:28:26 -04:00
Corey Farwell
4c43bc32b7 Rollup merge of #42271 - tinaun:charfromstr, r=alexcrichton
add `FromStr` Impl for `char`

fixes #24939.

is it possible to use pub(restricted) instead of using a stability attribute for the internal error representation? is it needed at all?
2017-06-20 16:28:25 -04:00
Alex Crichton
5c3d0e6de3 Switch to the crates.io getopts crate
This commit deletes the in-tree `getopts` crate in favor of the crates.io-based
`getopts` crate. The main difference here is with a new builder-style API, but
otherwise everything else remains relatively standard.
2017-06-20 12:43:12 -07:00
Ariel Ben-Yehuda
0b93798959 mark calls in the unwind path as !noinline
The unwind path is always cold, so that should not have bad performance
implications.  This avoids catastrophic exponential inlining, and also
decreases the size of librustc.so by 1.5% (OTOH, the size of `libstd.so`
increased by 0.5% for some reason).

Fixes #41696.
2017-06-20 22:02:49 +03:00
Corey Farwell
58bbe1d68c Add a couple doc additional examples for env::join_paths. 2017-06-20 13:49:42 -04:00
Corey Farwell
93abc2f877 Add doc example for CString::from_raw. 2017-06-20 13:49:42 -04:00
Corey Farwell
d3c26fe7e3 Add doc example for FromBytesWithNulError. 2017-06-20 13:49:42 -04:00
Corey Farwell
4797d8446c Add doc example for NulError. 2017-06-20 13:49:42 -04:00
Corey Farwell
e52d2f2ad0 Add doc example for CStr::to_str. 2017-06-20 13:49:42 -04:00
Corey Farwell
0962394b84 Add doc example for CString::as_c_str. 2017-06-20 13:49:42 -04:00
Corey Farwell
65793b30d3 Add doc example for Box<CStr>::into_c_string. 2017-06-20 13:49:27 -04:00
Corey Farwell
db97145150 Add doc example for CString::into_boxed_c_str. 2017-06-20 13:49:27 -04:00
Corey Farwell
82ba871c70 Add doc example for CStr::to_string_lossy. 2017-06-20 13:49:27 -04:00
Corey Farwell
5d71e8cd7e Add error scenario doc examples for CStr::from_bytes_with_nul. 2017-06-20 13:49:27 -04:00
Corey Farwell
7f687f8602 Add doc example for CStr::to_bytes_with_nul. 2017-06-20 13:49:27 -04:00
Corey Farwell
0fad2e038a Add doc example for CStr::to_bytes. 2017-06-20 13:49:10 -04:00
Alex Crichton
a4024c58e1 Remove the in-tree flate crate
A long time coming this commit removes the `flate` crate in favor of the
`flate2` crate on crates.io. The functionality in `flate2` originally flowered
out of `flate` itself and is additionally the namesake for the crate. This will
leave a gap in the naming (there's not `flate` crate), which will likely cause a
particle collapse of some form somewhere.
2017-06-20 07:11:29 -07:00
bors
29bce6e220 Auto merge of #42716 - alexbool:cstr-inlines, r=BurntSushi
Mark smaller CStr and CString functions as #[inline]
2017-06-20 13:25:21 +00:00