Skip to content

Commit 48ba7cf

Browse files
author
Ali Clark
committed
---
yaml --- r: 274287 b: refs/heads/stable c: 2cbffd5 h: refs/heads/master i: 274285: 9bcb3c3 274283: eeef864 274279: a90367f 274271: dbce758
1 parent 733a947 commit 48ba7cf

File tree

278 files changed

+3780
-3994
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

278 files changed

+3780
-3994
lines changed

[refs]

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ refs/heads/tmp: e06d2ad9fcd5027bcaac5b08fc9aa39a49d0ecd3
2929
refs/tags/1.0.0-alpha.2: 4c705f6bc559886632d3871b04f58aab093bfa2f
3030
refs/tags/homu-tmp: c0221c8897db309a79990367476177b1230bb264
3131
refs/tags/1.0.0-beta: 8cbb92b53468ee2b0c2d3eeb8567005953d40828
32-
refs/heads/stable: b694d1b1d11b5fa41f5a019b1251124a133d031d
32+
refs/heads/stable: 2cbffd5642c83b02d206110c483d5d83aed51c54
3333
refs/tags/1.0.0: 55bd4f8ff2b323f317ae89e254ce87162d52a375
3434
refs/tags/1.1.0: bc3c16f09287e5545c1d3f76b7abd54f2eca868b
3535
refs/tags/1.2.0: f557861f822c34f07270347b94b5280de20a597e

branches/stable/COPYRIGHT

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ terms.
77
Longer version:
88

99
The Rust Project is copyright 2016, The Rust Project
10-
Developers.
10+
Developers (given in the file AUTHORS.txt).
1111

1212
Licensed under the Apache License, Version 2.0
1313
<LICENSE-APACHE or

branches/stable/Makefile.in

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -220,12 +220,19 @@ endif
220220
# The test suite
221221
ifneq ($(strip $(findstring check,$(MAKECMDGOALS)) \
222222
$(findstring test,$(MAKECMDGOALS)) \
223+
$(findstring perf,$(MAKECMDGOALS)) \
223224
$(findstring tidy,$(MAKECMDGOALS))),)
224225
CFG_INFO := $(info cfg: including test rules)
225226
include $(CFG_SRC_DIR)mk/tests.mk
226227
include $(CFG_SRC_DIR)mk/grammar.mk
227228
endif
228229

230+
# Performance and benchmarking
231+
ifneq ($(findstring perf,$(MAKECMDGOALS)),)
232+
CFG_INFO := $(info cfg: including perf rules)
233+
include $(CFG_SRC_DIR)mk/perf.mk
234+
endif
235+
229236
# Copy all the distributables to another directory for binary install
230237
ifneq ($(strip $(findstring prepare,$(MAKECMDGOALS)) \
231238
$(findstring dist,$(MAKECMDGOALS)) \

branches/stable/configure

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1051,7 +1051,7 @@ then
10511051
esac
10521052
else
10531053
case $CFG_CLANG_VERSION in
1054-
(3.2* | 3.3* | 3.4* | 3.5* | 3.6* | 3.7* | 3.8* | 3.9*)
1054+
(3.2* | 3.3* | 3.4* | 3.5* | 3.6* | 3.7* | 3.8*)
10551055
step_msg "found ok version of CLANG: $CFG_CLANG_VERSION"
10561056
;;
10571057
(*)
@@ -1361,22 +1361,16 @@ for h in $CFG_HOST
13611361
do
13621362
for t in $CFG_TARGET
13631363
do
1364-
# host bin dir stage0
1365-
make_dir $h/stage0/bin
1366-
13671364
# host lib dir stage0
13681365
make_dir $h/stage0/lib
13691366

1370-
# host test dir stage0
1371-
make_dir $h/stage0/test
1372-
13731367
# target bin dir stage0
13741368
make_dir $h/stage0/lib/rustlib/$t/bin
13751369

13761370
# target lib dir stage0
13771371
make_dir $h/stage0/lib/rustlib/$t/lib
13781372

1379-
for i in 1 2 3
1373+
for i in 0 1 2 3
13801374
do
13811375
# host bin dir
13821376
make_dir $h/stage$i/bin

branches/stable/mk/crates.mk

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -102,7 +102,7 @@ DEPS_rustc_front := std syntax log serialize
102102
DEPS_rustc_lint := rustc log syntax
103103
DEPS_rustc_llvm := native:rustllvm libc std rustc_bitflags
104104
DEPS_rustc_metadata := rustc rustc_front syntax rbml
105-
DEPS_rustc_passes := syntax rustc core rustc_front
105+
DEPS_rustc_passes := syntax rustc core
106106
DEPS_rustc_mir := rustc rustc_front syntax
107107
DEPS_rustc_resolve := arena rustc rustc_front log syntax
108108
DEPS_rustc_platform_intrinsics := rustc rustc_llvm

branches/stable/mk/main.mk

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
######################################################################
1414

1515
# The version number
16-
CFG_RELEASE_NUM=1.8.0
16+
CFG_RELEASE_NUM=1.7.0
1717

1818
# An optional number to put after the label, e.g. '.2' -> '-beta.2'
1919
# NB Make sure it starts with a dot to conform to semver pre-release
@@ -522,6 +522,14 @@ STAGE$(1)_T_$(2)_H_$(3) := \
522522
$$(CFG_RUSTC_FLAGS) $$(EXTRAFLAGS_STAGE$(1)) --target=$(2)) \
523523
$$(RUSTC_FLAGS_$(2))
524524

525+
PERF_STAGE$(1)_T_$(2)_H_$(3) := \
526+
$$(Q)$$(call CFG_RUN_TARG_$(3),$(1), \
527+
$$(CFG_PERF_TOOL) \
528+
$$(HBIN$(1)_H_$(3))/rustc$$(X_$(3)) \
529+
--cfg $$(CFGFLAG$(1)_T_$(2)_H_$(3)) \
530+
$$(CFG_RUSTC_FLAGS) $$(EXTRAFLAGS_STAGE$(1)) --target=$(2)) \
531+
$$(RUSTC_FLAGS_$(2))
532+
525533
endef
526534

527535
$(foreach build,$(CFG_HOST), \

branches/stable/mk/perf.mk

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
# Copyright 2012 The Rust Project Developers. See the COPYRIGHT
2+
# file at the top-level directory of this distribution and at
3+
# http://rust-lang.org/COPYRIGHT.
4+
#
5+
# Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
6+
# http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
7+
# <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
8+
# option. This file may not be copied, modified, or distributed
9+
# except according to those terms.
10+
11+
12+
ifdef CFG_PERF_TOOL
13+
rustc-perf$(X): $(CFG_BUILD)/stage2/bin/rustc$(X_$(CFG_BUILD))
14+
@$(call E, perf compile: $@)
15+
$(PERF_STAGE2_T_$(CFG_BUILD)_H_$(CFG_BUILD)) \
16+
-o $@ $(COMPILER_CRATE) >rustc-perf.err 2>&1
17+
$(Q)rm -f $(LIBRUSTC_GLOB)
18+
else
19+
rustc-perf$(X): $(CFG_BUILD)/stage2/bin/rustc$(X_$(CFG_BUILD))
20+
$(Q)touch $@
21+
endif
22+
23+
perf: check-stage2-perf rustc-perf$(X_$(CFG_BUILD))
24+
$(Q)find $(CFG_BUILD)/test/perf -name \*.err | xargs cat
25+
$(Q)cat rustc-perf.err

branches/stable/mk/platform.mk

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,23 @@ define DEF_GOOD_VALGRIND
7777
endef
7878
$(foreach t,$(CFG_TARGET),$(eval $(call DEF_GOOD_VALGRIND,$(t))))
7979

80+
ifneq ($(findstring linux,$(CFG_OSTYPE)),)
81+
ifdef CFG_PERF
82+
ifneq ($(CFG_PERF_WITH_LOGFD),)
83+
CFG_PERF_TOOL := $(CFG_PERF) stat -r 3 --log-fd 2
84+
else
85+
CFG_PERF_TOOL := $(CFG_PERF) stat -r 3
86+
endif
87+
else
88+
ifdef CFG_VALGRIND
89+
CFG_PERF_TOOL := \
90+
$(CFG_VALGRIND) --tool=cachegrind --cache-sim=yes --branch-sim=yes
91+
else
92+
CFG_PERF_TOOL := /usr/bin/time --verbose
93+
endif
94+
endif
95+
endif
96+
8097
AR := ar
8198

8299
define SET_FROM_CFG

branches/stable/mk/target.mk

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,14 @@ export CFG_COMPILER_HOST_TRIPLE
1717
export CFG_DEFAULT_LINKER
1818
export CFG_DEFAULT_AR
1919

20+
# The standard libraries should be held up to a higher standard than any old
21+
# code, make sure that these common warnings are denied by default. These can
22+
# be overridden during development temporarily. For stage0, we allow warnings
23+
# which may be bugs in stage0 (should be fixed in stage1+)
24+
RUST_LIB_FLAGS_ST0 += -W warnings
25+
RUST_LIB_FLAGS_ST1 += -D warnings
26+
RUST_LIB_FLAGS_ST2 += -D warnings
27+
2028
# Macro that generates the full list of dependencies for a crate at a particular
2129
# stage/target/host tuple.
2230
#

branches/stable/mk/tests.mk

Lines changed: 25 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,11 @@ ifdef CFG_VALGRIND
5050
CTEST_RUNTOOL = --runtool "$(CFG_VALGRIND)"
5151
endif
5252

53+
# Arguments to the perf tests
54+
ifdef CFG_PERF_TOOL
55+
CTEST_PERF_RUNTOOL = --runtool "$(CFG_PERF_TOOL)"
56+
endif
57+
5358
CTEST_TESTARGS := $(TESTARGS)
5459

5560
# --bench is only relevant for crate tests, not for the compile tests
@@ -65,6 +70,12 @@ endif
6570
# This prevents tests from failing with some locales (fixes #17423).
6671
export LC_ALL=C
6772

73+
# If we're running perf then set this environment variable
74+
# to put the benchmarks into 'hard mode'
75+
ifeq ($(MAKECMDGOALS),perf)
76+
export RUST_BENCH=1
77+
endif
78+
6879
TEST_LOG_FILE=tmp/check-stage$(1)-T-$(2)-H-$(3)-$(4).log
6980
TEST_OK_FILE=tmp/check-stage$(1)-T-$(2)-H-$(3)-$(4).ok
7081

@@ -475,6 +486,10 @@ CODEGEN_RS := $(wildcard $(S)src/test/codegen/*.rs)
475486
CODEGEN_CC := $(wildcard $(S)src/test/codegen/*.cc)
476487
RUSTDOCCK_RS := $(wildcard $(S)src/test/rustdoc/*.rs)
477488

489+
# perf tests are the same as bench tests only they run under
490+
# a performance monitor.
491+
PERF_RS := $(wildcard $(S)src/test/bench/*.rs)
492+
478493
RPASS_TESTS := $(RPASS_RS)
479494
RPASS_VALGRIND_TESTS := $(RPASS_VALGRIND_RS)
480495
RPASS_FULL_TESTS := $(RPASS_FULL_RS)
@@ -484,6 +499,7 @@ RFAIL_TESTS := $(RFAIL_RS)
484499
CFAIL_TESTS := $(CFAIL_RS)
485500
PFAIL_TESTS := $(PFAIL_RS)
486501
BENCH_TESTS := $(BENCH_RS)
502+
PERF_TESTS := $(PERF_RS)
487503
PRETTY_TESTS := $(PRETTY_RS)
488504
DEBUGINFO_GDB_TESTS := $(DEBUGINFO_GDB_RS)
489505
DEBUGINFO_LLDB_TESTS := $(DEBUGINFO_LLDB_RS)
@@ -535,6 +551,11 @@ CTEST_BUILD_BASE_bench = bench
535551
CTEST_MODE_bench = run-pass
536552
CTEST_RUNTOOL_bench = $(CTEST_RUNTOOL)
537553

554+
CTEST_SRC_BASE_perf = bench
555+
CTEST_BUILD_BASE_perf = perf
556+
CTEST_MODE_perf = run-pass
557+
CTEST_RUNTOOL_perf = $(CTEST_PERF_RUNTOOL)
558+
538559
CTEST_SRC_BASE_debuginfo-gdb = debuginfo
539560
CTEST_BUILD_BASE_debuginfo-gdb = debuginfo-gdb
540561
CTEST_MODE_debuginfo-gdb = debuginfo-gdb
@@ -604,7 +625,7 @@ TEST_SREQ$(1)_T_$(2)_H_$(3) = \
604625
$$(HBIN$(1)_H_$(3))/compiletest$$(X_$(3)) \
605626
$$(SREQ$(1)_T_$(2)_H_$(3))
606627

607-
# Rules for the cfail/rfail/rpass/bench test runner
628+
# Rules for the cfail/rfail/rpass/bench/perf test runner
608629

609630
# The tests select when to use debug configuration on their own;
610631
# remove directive, if present, from CFG_RUSTC_FLAGS (issue #7898).
@@ -668,6 +689,7 @@ CTEST_DEPS_rfail_$(1)-T-$(2)-H-$(3) = $$(RFAIL_TESTS)
668689
CTEST_DEPS_cfail_$(1)-T-$(2)-H-$(3) = $$(CFAIL_TESTS)
669690
CTEST_DEPS_pfail_$(1)-T-$(2)-H-$(3) = $$(PFAIL_TESTS)
670691
CTEST_DEPS_bench_$(1)-T-$(2)-H-$(3) = $$(BENCH_TESTS)
692+
CTEST_DEPS_perf_$(1)-T-$(2)-H-$(3) = $$(PERF_TESTS)
671693
CTEST_DEPS_debuginfo-gdb_$(1)-T-$(2)-H-$(3) = $$(DEBUGINFO_GDB_TESTS)
672694
CTEST_DEPS_debuginfo-lldb_$(1)-T-$(2)-H-$(3) = $$(DEBUGINFO_LLDB_TESTS) \
673695
$(S)src/etc/lldb_batchmode.py \
@@ -739,7 +761,7 @@ endif
739761
endef
740762

741763
CTEST_NAMES = rpass rpass-valgrind rpass-full rfail-full cfail-full rfail cfail pfail \
742-
bench debuginfo-gdb debuginfo-lldb codegen rustdocck
764+
bench perf debuginfo-gdb debuginfo-lldb codegen rustdocck
743765

744766
$(foreach host,$(CFG_HOST), \
745767
$(eval $(foreach target,$(CFG_TARGET), \
@@ -912,6 +934,7 @@ TEST_GROUPS = \
912934
cfail \
913935
pfail \
914936
bench \
937+
perf \
915938
rmake \
916939
rustdocck \
917940
debuginfo-gdb \

branches/stable/src/doc/book/bibliography.md

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,4 +80,3 @@ Language](http://www.cs.indiana.edu/~eholk/papers/hips2013.pdf). Early GPU work
8080
Rust](http://munksgaard.me/papers/laumann-munksgaard-larsen.pdf). Philip
8181
Munksgaard's master's thesis. Research for Servo.
8282
* [Ownership is Theft: Experiences Building an Embedded OS in Rust - Amit Levy, et. al.](http://amitlevy.com/papers/tock-plos2015.pdf)
83-
* [You can't spell trust without Rust](https://raw.githubusercontent.com/Gankro/thesis/master/thesis.pdf). Alexis Beingessner's master's thesis.

branches/stable/src/doc/book/error-handling.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1512,7 +1512,7 @@ and [`rustc-serialize`](https://crates.io/crates/rustc-serialize) crates.
15121512

15131513
We're not going to spend a lot of time on setting up a project with
15141514
Cargo because it is already covered well in [the Cargo
1515-
section](getting-started.html#hello-cargo) and [Cargo's documentation][14].
1515+
section](../book/hello-cargo.html) and [Cargo's documentation][14].
15161516

15171517
To get started from scratch, run `cargo new --bin city-pop` and make sure your
15181518
`Cargo.toml` looks something like this:

branches/stable/src/doc/book/getting-started.md

Lines changed: 7 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,7 @@ If we're on Linux or a Mac, all we need to do is open a terminal and type this:
111111
$ curl -sSf https://static.rust-lang.org/rustup.sh | sh
112112
```
113113

114-
This will download a script, and start the installation. If it all goes well,
114+
This will download a script, and stat the installation. If it all goes well,
115115
you’ll see this appear:
116116

117117
```text
@@ -167,10 +167,6 @@ variable. If it isn't, run the installer again, select "Change" on the "Change,
167167
repair, or remove installation" page and ensure "Add to PATH" is installed on
168168
the local hard drive.
169169

170-
Rust does not do its own linking, and so you’ll need to have a linker
171-
installed. Doing so will depend on your specific system, consult its
172-
documentation for more details.
173-
174170
If not, there are a number of places where we can get help. The easiest is
175171
[the #rust IRC channel on irc.mozilla.org][irc], which we can access through
176172
[Mibbit][mibbit]. Click that link, and we'll be chatting with other Rustaceans
@@ -515,17 +511,15 @@ programming languages. For complex projects composed of multiple crates, it’s
515511
much easier to let Cargo coordinate the build. Using Cargo, you can run `cargo
516512
build`, and it should work the right way.
517513

518-
### Building for Release
514+
## Building for Release
519515

520-
When your project is ready for release, you can use `cargo build
516+
When your project is finally ready for release, you can use `cargo build
521517
--release` to compile your project with optimizations. These optimizations make
522518
your Rust code run faster, but turning them on makes your program take longer
523519
to compile. This is why there are two different profiles, one for development,
524520
and one for building the final program you’ll give to a user.
525521

526-
### What Is That `Cargo.lock`?
527-
528-
Running `cargo build` also causes Cargo to create a new file called
522+
Running this command also causes Cargo to create a new file called
529523
*Cargo.lock*, which looks like this:
530524

531525
```toml
@@ -608,11 +602,11 @@ This chapter covered the basics that will serve you well through the rest of
608602
this book, and the rest of your time with Rust. Now that you’ve got the tools
609603
down, we'll cover more about the Rust language itself.
610604

611-
You have two options: Dive into a project with ‘[Tutorial: Guessing Game][guessinggame]’, or
605+
You have two options: Dive into a project with ‘[Learn Rust][learnrust]’, or
612606
start from the bottom and work your way up with ‘[Syntax and
613607
Semantics][syntax]’. More experienced systems programmers will probably prefer
614-
Tutorial: Guessing Game’, while those from dynamic backgrounds may enjoy either. Different
608+
Learn Rust’, while those from dynamic backgrounds may enjoy either. Different
615609
people learn differently! Choose whatever’s right for you.
616610

617-
[guessinggame]: guessing-game.html
611+
[learnrust]: learn-rust.html
618612
[syntax]: syntax-and-semantics.html

branches/stable/src/doc/book/guessing-game.md

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -908,7 +908,6 @@ let guess: u32 = match guess.trim().parse() {
908908
```
909909
910910
This is how you generally move from ‘crash on error’ to ‘actually handle the
911-
error’, by switching from `expect()` to a `match` statement. The `Result`
912911
returned by `parse()` is an `enum` like `Ordering`, but in this case, each
913912
variant has some data associated with it: `Ok` is a success, and `Err` is a
914913
failure. Each contains more information: the successfully parsed integer, or an
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
% Learn Rust
2+
3+
Welcome! This chapter has a few tutorials that teach you Rust through building
4+
projects. You’ll get a high-level overview, but we’ll skim over the details.
5+
6+
If you’d prefer a more ‘from the ground up’-style experience, check
7+
out [Syntax and Semantics][ss].
8+
9+
[ss]: syntax-and-semantics.html

branches/stable/src/doc/book/loops.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -195,7 +195,7 @@ for x in 0..10 {
195195
You may also encounter situations where you have nested loops and need to
196196
specify which one your `break` or `continue` statement is for. Like most
197197
other languages, by default a `break` or `continue` will apply to innermost
198-
loop. In a situation where you would like to `break` or `continue` for one
198+
loop. In a situation where you would like to a `break` or `continue` for one
199199
of the outer loops, you can use labels to specify which loop the `break` or
200200
`continue` statement applies to. This will only print when both `x` and `y` are
201201
odd:

branches/stable/src/doc/book/no-stdlib.md

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -77,11 +77,10 @@ The compiler currently makes a few assumptions about symbols which are available
7777
in the executable to call. Normally these functions are provided by the standard
7878
library, but without it you must define your own.
7979

80-
The first of these two functions, `eh_personality`, is used by the failure
81-
mechanisms of the compiler. This is often mapped to GCC's personality function
82-
(see the [libstd implementation][unwind] for more information), but crates
83-
which do not trigger a panic can be assured that this function is never
84-
called. The second function, `panic_fmt`, is also used by the failure
85-
mechanisms of the compiler.
86-
87-
[unwind]: https://github.com/rust-lang/rust/blob/master/src/libstd/sys/common/unwind/gcc.rs
80+
The first of these two functions, `eh_personality`, is used by the
81+
failure mechanisms of the compiler. This is often mapped to GCC's
82+
personality function (see the
83+
[libstd implementation](../std/rt/unwind/index.html) for more
84+
information), but crates which do not trigger a panic can be assured
85+
that this function is never called. The second function, `panic_fmt`, is
86+
also used by the failure mechanisms of the compiler.

branches/stable/src/doc/book/primitive-types.md

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -164,9 +164,6 @@ copying. For example, you might want to reference only one line of a file read
164164
into memory. By nature, a slice is not created directly, but from an existing
165165
variable binding. Slices have a defined length, can be mutable or immutable.
166166

167-
Internally, slices are represented as a pointer to the beginning of the data
168-
and a length.
169-
170167
## Slicing syntax
171168

172169
You can use a combo of `&` and `[]` to create a slice from various things. The

0 commit comments

Comments
 (0)