Commit graph

1762 commits

Author SHA1 Message Date
Mark Rousskov
2a663555dd Remove licenses 2018-12-25 21:08:33 -07:00
kennytm
07f5dbc490
Revert "Rollup merge of #56944 - alexcrichton:less-thin2, r=michaelwoerister"
This reverts commit f1051b574c, reversing
changes made to 833e0b3b8a.
2018-12-25 13:25:57 +08:00
bors
ad781a065a Auto merge of #56836 - alexcrichton:std-backtrace-sys, r=Mark-Simulacrum
std: Use backtrace-sys from crates.io

This commit switches the standard library to using the `backtrace-sys`
crate from crates.io instead of duplicating the logic here in the Rust
repositor with the `backtrace-sys`'s crate's logic.

Eventually this will hopefully be a good step towards using the
`backtrace` crate directly from crates.io itself, but we're not quite
there yet! Hopefully this is a small incremental first step we can take.
2018-12-24 23:28:04 +00:00
Matthias Krüger
49eb1e5419 x.py: fixup 6130fc884b
./x.py used to automatically check out the right commit when a submodule was outdated and ./x.py build was run
and submodules handling was enabled in config.toml (submodules = true).

But it threw an error:
[...]
failed to run: git submodule -q sync --progress src/tools/clippy

The commit removes the --progress from git submodule call.

Fixes #57080
2018-12-24 20:23:00 +01:00
Alex Crichton
8d500572fa std: Use backtrace-sys from crates.io
This commit switches the standard library to using the `backtrace-sys`
crate from crates.io instead of duplicating the logic here in the Rust
repositor with the `backtrace-sys`'s crate's logic.

Eventually this will hopefully be a good step towards using the
`backtrace` crate directly from crates.io itself, but we're not quite
there yet! Hopefully this is a small incremental first step we can take.
2018-12-24 08:32:57 -08:00
Mazdak Farrokhzad
f1051b574c
Rollup merge of #56944 - alexcrichton:less-thin2, r=michaelwoerister
bootstrap: Link LLVM as a dylib with ThinLTO

When building a distributed compiler on Linux where we use ThinLTO to
create the LLVM shared object this commit switches the compiler to
dynamically linking that LLVM artifact instead of statically linking to
LLVM. The primary goal here is to reduce CI compile times, avoiding two+
ThinLTO builds of all of LLVM. By linking dynamically to LLVM we'll
reuse the one ThinLTO step done by LLVM's build itself.

Lots of discussion about this change can be found [here] and down. A
perf run will show whether this is worth it or not!

[here]: https://github.com/rust-lang/rust/pull/53245#issuecomment-417015334
2018-12-24 13:29:28 +01:00
kennytm
660eca64af
Rollup merge of #56933 - clarcharr:xpy_progress, r=Mark-Simulacrum
Add --progress to git submodule commands in x.py

This is a relatively new flag, but it means that git will indicate the progress of the update as it would with regular clones. This is especially helpful as some of the submodules are really big and it's difficult to tell if it's hanging or still updating.
2018-12-23 02:11:54 +08:00
Pietro Albini
8ee2147182
Rollup merge of #56947 - hsivonen:neon, r=alexcrichton
Add targets thumbv7neon-linux-androideabi and thumbv7neon-unknown-linux-gnueabihf

These two targets enable both thumb-mode and NEON for ARMv7 CPUs.

This another attempt at #49902, which cannot be reopened. Between that PR and this one, some subrepos with C code whose build systems were failing went away.
2018-12-19 11:47:20 +01:00
Alex Crichton
bd18a9295c bootstrap: Link LLVM as a dylib with ThinLTO
When building a distributed compiler on Linux where we use ThinLTO to
create the LLVM shared object this commit switches the compiler to
dynamically linking that LLVM artifact instead of statically linking to
LLVM. The primary goal here is to reduce CI compile times, avoiding two+
ThinLTO builds of all of LLVM. By linking dynamically to LLVM we'll
reuse the one ThinLTO step done by LLVM's build itself.

Lots of discussion about this change can be found [here] and down. A
perf run will show whether this is worth it or not!

[here]: https://github.com/rust-lang/rust/pull/53245#issuecomment-417015334
2018-12-17 21:13:32 -08:00
Clar Fon
6130fc884b Add --progress to git submodule commands 2018-12-17 17:19:22 -05:00
bors
63f8e6e12b Auto merge of #56642 - nikic:llvm-6, r=alexcrichton
Bump minimum required LLVM version to 6.0

Based on the discussion in #55842, while the overall position of Rust wrt LLVM continues to be contentious, there does seem to be a consensus that there is no need for continued support of LLVM 5. This PR bumps our version requirement to LLVM 6.0 and makes Travis run against that.

I hope that this is going to unblock #52694. If I understand correctly, while this issue still exists in LLVM 6, Ubuntu has backported the relevant patch.

r? @alexcrichton
2018-12-17 04:18:14 +00:00
bors
748d354af3 Auto merge of #56600 - ljedrz:fix_edition, r=Mark-Simulacrum
bootstrap: fix edition

A byproduct of work on https://github.com/rust-lang/rust/pull/56595; done with `cargo fix --edition`.
2018-12-15 23:50:47 +00:00
Pietro Albini
1f0a73039b
Rollup merge of #56792 - phansch:add_compiletest_testsuite, r=alexcrichton
Bootstrap: Add testsuite for compiletest tool

This adds a test suite for compiletest so that the tester is tested, too.

The (currently) single unit test of the compiletest tool was never executed
on CI. At least I couldn't find any references of it in the logs.

The compiletest tests can then also be executed with:

    ./x.py test src/tools/compiletest --stage 0

cc #47606
2018-12-15 10:17:40 +01:00
Philipp Hansch
c435357bc9
Bootstrap: Add testsuite for compiletest tool
The (currently) single unit test of the compiletest tool was never
executed on CI. At least I couldn't find any references of it in the
logs. This adds a test suite for compiletest so that our tester is
tested, too.

The compiletest tests can then also be executed with:

    ./x.py test src/tools/compiletest
2018-12-14 21:42:49 +01:00
Alex Crichton
c811915eaf std: Activate compiler_builtins mem feature for no_std targets
This was an accidental regression from #56092, but for `no_std` targets
being built and distributed we want to be sure to activate the
compiler-builtins `mem` feature which demangles important memory-related
intrinsics.
2018-12-14 09:05:31 -08:00
bors
664ede88fa Auto merge of #56536 - alexcrichton:update-master, r=Mark-Simulacrum
Bump to 1.33.0

* Update bootstrap compiler
* Update version to 1.33.0
* Remove some `#[cfg(stage0)]` annotations
2018-12-14 06:52:19 +00:00
Henri Sivonen
0fbe382f0f Add targets thumbv7neon-linux-androideabi and thumbv7neon-unknown-linux-gnueabihf
These two targets enable both thumb-mode and NEON for ARMv7 CPUs.
2018-12-13 19:21:27 +02:00
bors
ced7cc5c65 Auto merge of #56090 - nnethercote:filesearch, r=eddyb
Overhaul `FileSearch` and `SearchPaths`

`FileSearch::search()` traverses one or more directories. For each
directory it generates a `Vec<PathBuf>` containing one element per file
in that directory.

In some benchmarks this occurs enough that the allocations done for the
`PathBuf`s are significant, and in practice a small number of
directories are being traversed over and over again. For example, when
compiling the `tokio-webpush-simple` benchmark, two directories are
traversed 58 times each. Each of these directories have more than 100
files.

We can do all the necessary traversals up front, when `Session` is created,
and get the `Vec<PathBuf>`s then.

This reduces instruction counts on several benchmarks by 1--5%.

r? @alexcrichton

CC @eddyb, @michaelwoerister, @nikomatsakis
2018-12-13 03:35:15 +00:00
Alex Crichton
cf47a19305 Bump to 1.33.0
* Update bootstrap compiler
* Update version to 1.33.0
* Remove some `#[cfg(stage0)]` annotations

Actually updating the version number is blocked on updating Cargo
2018-12-12 08:09:26 -08:00
Nicholas Nethercote
209240dc26 Remove some env vars for rustdoc invocations.
In an attempt to avoid "thread '<unnamed>' panicked at 'failed to
acquire jobserver token: Bad file descriptor" errors.
2018-12-12 16:30:06 +11:00
Alex Crichton
4c21a3bc2a std: Depend directly on crates.io crates
Ever since we added a Cargo-based build system for the compiler the
standard library has always been a little special, it's never been able
to depend on crates.io crates for runtime dependencies. This has been a
result of various limitations, namely that Cargo doesn't understand that
crates from crates.io depend on libcore, so Cargo tries to build crates
before libcore is finished.

I had an idea this afternoon, however, which lifts the strategy
from #52919 to directly depend on crates.io crates from the standard
library. After all is said and done this removes a whopping three
submodules that we need to manage!

The basic idea here is that for any crate `std` depends on it adds an
*optional* dependency on an empty crate on crates.io, in this case named
`rustc-std-workspace-core`. This crate is overridden via `[patch]` in
this repository to point to a local crate we write, and *that* has a
`path` dependency on libcore.

Note that all `no_std` crates also depend on `compiler_builtins`, but if
we're not using submodules we can publish `compiler_builtins` to
crates.io and all crates can depend on it anyway! The basic strategy
then looks like:

* The standard library (or some transitive dep) decides to depend on a
  crate `foo`.
* The standard library adds

  ```toml
  [dependencies]
  foo = { version = "0.1", features = ['rustc-dep-of-std'] }
  ```
* The crate `foo` has an optional dependency on `rustc-std-workspace-core`
* The crate `foo` has an optional dependency on `compiler_builtins`
* The crate `foo` has a feature `rustc-dep-of-std` which activates these
  crates and any other necessary infrastructure in the crate.

A sample commit for `dlmalloc` [turns out to be quite simple][commit].
After that all `no_std` crates should largely build "as is" and still be
publishable on crates.io! Notably they should be able to continue to use
stable Rust if necessary, since the `rename-dependency` feature of Cargo
is soon stabilizing.

As a proof of concept, this commit removes the `dlmalloc`,
`libcompiler_builtins`, and `libc` submodules from this repository. Long
thorns in our side these are now gone for good and we can directly
depend on crates.io! It's hoped that in the long term we can bring in
other crates as necessary, but for now this is largely intended to
simply make it easier to manage these crates and remove submodules.

This should be a transparent non-breaking change for all users, but one
possible stickler is that this almost for sure breaks out-of-tree
`std`-building tools like `xargo` and `cargo-xbuild`. I think it should
be relatively easy to get them working, however, as all that's needed is
an entry in the `[patch]` section used to build the standard library.
Hopefully we can work with these tools to solve this problem!

[commit]: 28ee12db81
2018-12-11 21:08:22 -08:00
ljedrz
a5a3da541b bootstrap: fix edition 2018-12-10 13:59:28 +01:00
Vadim Petrochenkov
654cd09453 Remove compile-fail-fulldeps test suite 2018-12-09 19:56:30 +03:00
Nikita Popov
706e67b0a0 Bump minimum required LLVM version to 6.0 2018-12-09 12:05:40 +01:00
bors
059e6a6f57 Auto merge of #56578 - alexreg:cosmetic-1, r=alexreg
Various minor/cosmetic improvements to code

r? @Centril 😄
2018-12-08 03:50:16 +00:00
Alexander Regueiro
ee89c088b0 Various minor/cosmetic improvements to code 2018-12-07 23:53:34 +00:00
Andy Russell
2f6226518b
use top level fs functions where appropriate
This commit replaces many usages of `File::open` and reading or writing
with `fs::read_to_string`, `fs::read` and `fs::write`. This reduces code
complexity, and will improve performance for most reads, since the
functions allocate the buffer to be the size of the file.

I believe that this commit will not impact behavior in any way, so some
matches will check the error kind in case the file was not valid UTF-8.
Some of these cases may not actually care about the error.
2018-12-07 12:54:11 -05:00
Jethro Beekman
4a3505682e Add x86_64-fortanix-unknown-sgx target to libstd and dependencies
The files src/libstd/sys/sgx/*.rs are mostly copied/adapted from
the wasm target.

This also updates the dlmalloc submodule to the very latest version.
2018-12-07 11:26:50 +05:30
Pietro Albini
0be8537e23
Rollup merge of #56441 - ollie27:rustbuild_compiler_docs, r=alexcrichton
rustbuild: Fix issues with compiler docs

* Create output directories for crates beforehand so rustdoc uses relative links (fixes #56107)
* Readd rustc_codegen_ssa (fixes #56196)
* Don't build out of tree dependencies for rustdoc like we don't for rustc
2018-12-06 07:48:55 +01:00
Steve Klabnik
6b0ac4987a build the edition guide
and update it so that links are correct
2018-12-04 17:06:16 -05:00
kennytm
ca98bce303
Rollup merge of #56419 - mark-i-m:remove-try, r=Centril
Remove some uses of try!
2018-12-03 18:07:15 +08:00
Oliver Middleton
3b705a0ece rustbuild: Fix issues with compiler docs
* Create output directories for crates beforehand so rustdoc uses relative links
* Readd rustc_codegen_ssa
* Don't build out of tree dependencies for rustdoc like we don't for rustc
2018-12-02 17:00:21 +00:00
Mark Mansi
e7e96921c2 remove some uses of try! 2018-12-01 15:48:55 -06:00
Alex Crichton
8ee62bb239 ci: Only run compare-mode tests on one builder
The run-pass test suite currently takes 30 minutes on Windows, and
that appears to be roughly split between two 15 minute runs of the test
suite: one without NLL and one with NLL. In discussion on Discord the
platform coverage of the NLL compare mode may not necessarily be worth
it, so this commit removes the NLL compare mode from tests by default,
and then reenables it on only one builder.
2018-11-30 14:31:04 -08:00
Steve Klabnik
934871aa79 Add the edition guide to doc.rust-lang.org 2018-11-30 09:36:49 -05:00
Eduard-Mihai Burtescu
3a04d448f9 bootstrap: provide host rust_test_helpers to compiletest, not just target. 2018-11-30 06:21:18 +02:00
Eduard-Mihai Burtescu
eb2c71cdf2 bootstrap: don't use libraries from MUSL_ROOT on non-musl targets. 2018-11-30 06:15:20 +02:00
Eduard-Mihai Burtescu
15c77caf59 bootstrap: ensure that libproc_macro is available on the host for tests even when cross-compiling. 2018-11-30 06:15:20 +02:00
Eduard-Mihai Burtescu
fcca22cb40 tests: move all proc_macro tests from -fulldeps. 2018-11-30 06:15:20 +02:00
Guillaume Gomez
8ca3cb90b3
Rollup merge of #55391 - matthiaskrgr:bootstrap_cleanup, r=TimNN
bootstrap: clean up a few clippy findings

remove useless format!()s
remove redundant field names in a few struct initializations
pass slice instead of a vector to a function
use is_empty() instead of comparisons to .len()

No functional change intended.
2018-11-29 13:10:27 +01:00
Eduard-Mihai Burtescu
e281446261 Try to make top-level Cargo.toml work without __CARGO_TEST_ROOT. 2018-11-25 23:13:58 +02:00
Eduard-Mihai Burtescu
7c166f54b2 Move Cargo.{toml,lock} to the repository root directory. 2018-11-22 12:10:04 +02:00
bors
0b9f19dff1 Auto merge of #56134 - oli-obk:clippy_documentation, r=nrc
Forward rust version number to tools

Clippy uses it to identify the correct documentation to point to

cc @Manishearth @nrc

sibling PR in clippy: https://github.com/rust-lang-nursery/rust-clippy/pull/3442
2018-11-21 20:26:15 +00:00
Oliver Scherer
33efce1c2f Forward rust version number to tools
Clippy uses it to identify the correct documentation to point to
2018-11-21 14:53:10 +01:00
Steve Klabnik
0579ef0166 fix rustbuild to build all the books 2018-11-20 21:25:48 -05:00
Pietro Albini
3aeac24048
Rollup merge of #55867 - RalfJung:dont-panic, r=Mark-Simulacrum
do not panic just because cargo failed

Currently, a rustc ICE during bootstrap shows *two* backtraces with `RUST_BACKTRACE`. Fix that by making bootstrap just exit when cargo fails. This matches what we do [when building a tool fails](https://github.com/rust-lang/rust/blob/master/src/bootstrap/tool.rs#L189) and [when other stuff (not called through `stream_cargo`, like `cargo test`) fails](https://github.com/rust-lang/rust/blob/master/src/build_helper/lib.rs#L43).

Fixes https://github.com/rust-lang/rust/issues/53379
2018-11-18 23:24:38 +01:00
kennytm
5ccc76fe5c
Rollup merge of #55870 - waywardmonkeys:typo-fixes, r=wesleywiser
Fix typos.
2018-11-13 19:20:44 +08:00
Dan Robertson
c211238180
Fix TLS errors when downloading stage0 2018-11-12 02:35:44 +00:00
Alex Crichton
cc7590341a std: Delete the alloc_system crate
This commit deletes the `alloc_system` crate from the standard
distribution. This unstable crate is no longer needed in the modern
stable global allocator world, but rather its functionality is folded
directly into the standard library. The standard library was already the
only stable location to access this crate, and as a result this should
not affect any stable code.
2018-11-11 09:22:28 -08:00
Bruce Mitchener
a62af858e0 Fix typos. 2018-11-11 20:52:36 +07:00