Skip to content

Commit 24330e9

Browse files
committed
---
yaml --- r: 228153 b: refs/heads/try c: 69d340a h: refs/heads/master i: 228151: 8adcc10 v: v3
1 parent 197e38c commit 24330e9

File tree

242 files changed

+4150
-5984
lines changed

Some content is hidden

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

242 files changed

+4150
-5984
lines changed

[refs]

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
---
22
refs/heads/master: aca2057ed5fb7af3f8905b2bc01f72fa001c35c8
33
refs/heads/snap-stage3: 1af31d4974e33027a68126fa5a5a3c2c6491824f
4-
refs/heads/try: ed14593d98ce89eb52cc0354e90bec6802c9d041
4+
refs/heads/try: 69d340a40d0ca37e91731026bd5d7041a145aa34
55
refs/tags/release-0.1: 1f5c5126e96c79d22cb7862f75304136e204f105
66
refs/tags/release-0.2: c870d2dffb391e14efb05aa27898f1f6333a9596
77
refs/tags/release-0.3: b5f0d0f648d9a6153664837026ba1be43d3e2503

branches/try/CONTRIBUTING.md

Lines changed: 0 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -83,21 +83,6 @@ feature. We use the 'fork and pull' model described there.
8383

8484
Please make pull requests against the `master` branch.
8585

86-
Compiling all of `make check` can take a while. When testing your pull request,
87-
consider using one of the more specialized `make` targets to cut down on the
88-
amount of time you have to wait. You need to have built the compiler at least
89-
once before running these will work, but that’s only one full build rather than
90-
one each time.
91-
92-
$ make -j8 rustc-stage1 && make check-stage1
93-
94-
is one such example, which builds just `rustc`, and then runs the tests. If
95-
you’re adding something to the standard library, try
96-
97-
$ make -j8 check-stage1-std NO_REBUILD=1
98-
99-
This will not rebuild the compiler, but will run the tests.
100-
10186
All pull requests are reviewed by another person. We have a bot,
10287
@rust-highfive, that will automatically assign a random person to review your
10388
request.
@@ -123,10 +108,6 @@ will run all the tests on every platform we support. If it all works out,
123108

124109
[merge-queue]: http://buildbot.rust-lang.org/homu/queue/rust
125110

126-
Speaking of tests, Rust has a comprehensive test suite. More information about
127-
it can be found
128-
[here](https://github.com/rust-lang/rust-wiki-backup/blob/master/Note-testsuite.md).
129-
130111
## Writing Documentation
131112

132113
Documentation improvements are very welcome. The source of `doc.rust-lang.org`

branches/try/README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ Rust is a fast systems programming language that guarantees
44
memory safety and offers painless concurrency ([no data races]).
55
It does not employ a garbage collector and has minimal runtime overhead.
66

7-
This repo contains the code for the compiler (`rustc`), as well
7+
This repo contains the code for `rustc`, the Rust compiler, as well
88
as standard libraries, tools and documentation for Rust.
99

1010
[no data races]: http://blog.rust-lang.org/2015/04/10/Fearless-Concurrency.html
@@ -73,7 +73,7 @@ Read ["Installing Rust"] from [The Book].
7373
```
7474
7575
3. Run `mingw32_shell.bat` or `mingw64_shell.bat` from wherever you installed
76-
MSYS2 (i.e. `C:\msys`), depending on whether you want 32-bit or 64-bit Rust.
76+
MYSY2 (i.e. `C:\msys`), depending on whether you want 32-bit or 64-bit Rust.
7777
7878
4. Navigate to Rust's source code, configure and build it:
7979

branches/try/configure

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -405,10 +405,6 @@ case $CFG_OSTYPE in
405405
CFG_OSTYPE=unknown-openbsd
406406
;;
407407

408-
NetBSD)
409-
CFG_OSTYPE=unknown-netbsd
410-
;;
411-
412408
Darwin)
413409
CFG_OSTYPE=apple-darwin
414410
;;

branches/try/mk/cfg/x86_64-unknown-netbsd.mk

Lines changed: 0 additions & 22 deletions
This file was deleted.

branches/try/mk/main.mk

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -295,6 +295,7 @@ LLVM_BINDIR_$(1)=$$(shell "$$(LLVM_CONFIG_$(1))" --bindir)
295295
LLVM_INCDIR_$(1)=$$(shell "$$(LLVM_CONFIG_$(1))" --includedir)
296296
LLVM_LIBDIR_$(1)=$$(shell "$$(LLVM_CONFIG_$(1))" --libdir)
297297
LLVM_LIBDIR_RUSTFLAGS_$(1)=-L "$$(LLVM_LIBDIR_$(1))"
298+
LLVM_LIBS_$(1)=$$(shell "$$(LLVM_CONFIG_$(1))" --libs $$(LLVM_COMPONENTS))
298299
LLVM_LDFLAGS_$(1)=$$(shell "$$(LLVM_CONFIG_$(1))" --ldflags)
299300
ifeq ($$(findstring freebsd,$(1)),freebsd)
300301
# On FreeBSD, it may search wrong headers (that are for pre-installed LLVM),

branches/try/mk/target.mk

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -249,9 +249,11 @@ endef
249249

250250
$(foreach host,$(CFG_HOST), \
251251
$(foreach target,$(CFG_TARGET), \
252-
$(foreach crate,$(CRATES), \
253-
$(eval $(call SETUP_LIB_MSVC_ENV_VARS,0,$(target),$(host),$(crate))))))
252+
$(foreach stage,$(STAGES), \
253+
$(foreach crate,$(CRATES), \
254+
$(eval $(call SETUP_LIB_MSVC_ENV_VARS,$(stage),$(target),$(host),$(crate)))))))
254255
$(foreach host,$(CFG_HOST), \
255256
$(foreach target,$(CFG_TARGET), \
256-
$(foreach tool,$(TOOLS), \
257-
$(eval $(call SETUP_TOOL_MSVC_ENV_VARS,0,$(target),$(host),$(tool))))))
257+
$(foreach stage,$(STAGES), \
258+
$(foreach tool,$(TOOLS), \
259+
$(eval $(call SETUP_TOOL_MSVC_ENV_VARS,$(stage),$(target),$(host),$(tool)))))))

branches/try/src/compiletest/runtest.rs

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1126,10 +1126,16 @@ impl fmt::Display for Status {
11261126

11271127
fn compile_test(config: &Config, props: &TestProps,
11281128
testfile: &Path) -> ProcRes {
1129+
compile_test_(config, props, testfile, &[])
1130+
}
1131+
1132+
fn compile_test_(config: &Config, props: &TestProps,
1133+
testfile: &Path, extra_args: &[String]) -> ProcRes {
11291134
let aux_dir = aux_output_dir_name(config, testfile);
11301135
// FIXME (#9639): This needs to handle non-utf8 paths
1131-
let link_args = vec!("-L".to_string(),
1132-
aux_dir.to_str().unwrap().to_string());
1136+
let mut link_args = vec!("-L".to_string(),
1137+
aux_dir.to_str().unwrap().to_string());
1138+
link_args.extend(extra_args.iter().cloned());
11331139
let args = make_compile_args(config,
11341140
props,
11351141
link_args,
@@ -1138,7 +1144,7 @@ fn compile_test(config: &Config, props: &TestProps,
11381144
}
11391145

11401146
fn document(config: &Config, props: &TestProps,
1141-
testfile: &Path) -> (ProcRes, PathBuf) {
1147+
testfile: &Path, extra_args: &[String]) -> (ProcRes, PathBuf) {
11421148
let aux_dir = aux_output_dir_name(config, testfile);
11431149
let out_dir = output_base_name(config, testfile);
11441150
let _ = fs::remove_dir_all(&out_dir);
@@ -1148,6 +1154,7 @@ fn document(config: &Config, props: &TestProps,
11481154
"-o".to_string(),
11491155
out_dir.to_str().unwrap().to_string(),
11501156
testfile.to_str().unwrap().to_string()];
1157+
args.extend(extra_args.iter().cloned());
11511158
args.extend(split_maybe_args(&props.compile_flags));
11521159
let args = ProcArgs {
11531160
prog: config.rustdoc_path.to_str().unwrap().to_string(),
@@ -1710,7 +1717,7 @@ fn charset() -> &'static str {
17101717
}
17111718

17121719
fn run_rustdoc_test(config: &Config, props: &TestProps, testfile: &Path) {
1713-
let (proc_res, out_dir) = document(config, props, testfile);
1720+
let (proc_res, out_dir) = document(config, props, testfile, &[]);
17141721
if !proc_res.status.success() {
17151722
fatal_proc_rec("rustdoc failed!", &proc_res);
17161723
}

branches/try/src/compiletest/util.rs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@ const OS_TABLE: &'static [(&'static str, &'static str)] = &[
2121
("ios", "ios"),
2222
("linux", "linux"),
2323
("mingw32", "windows"),
24-
("netbsd", "netbsd"),
2524
("openbsd", "openbsd"),
2625
("win32", "windows"),
2726
("windows", "windows"),
Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,4 @@
1-
% The Rust Pointer Guide
1+
% The (old) Rust Pointer Guide
22

3-
This content has been removed, with no direct replacement. Rust only
4-
has two built-in pointer types now,
5-
[references](book/references-and-borrowing.html) and [raw
6-
pointers](book/raw-pointers.html). Older Rusts had many more pointer
7-
types, they’re gone now.
3+
This content has moved into
4+
[the Rust Programming Language book](book/pointers.html).

branches/try/src/doc/reference.md

Lines changed: 37 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -338,16 +338,12 @@ type of the literal. The integer suffix must be the name of one of the
338338
integral types: `u8`, `i8`, `u16`, `i16`, `u32`, `i32`, `u64`, `i64`,
339339
`isize`, or `usize`.
340340

341-
The type of an _unsuffixed_ integer literal is determined by type inference:
342-
343-
* If an integer type can be _uniquely_ determined from the surrounding
344-
program context, the unsuffixed integer literal has that type.
345-
346-
* If the program context underconstrains the type, it defaults to the
347-
signed 32-bit integer `i32`.
348-
349-
* If the program context overconstrains the type, it is considered a
350-
static type error.
341+
The type of an _unsuffixed_ integer literal is determined by type inference.
342+
If an integer type can be _uniquely_ determined from the surrounding program
343+
context, the unsuffixed integer literal has that type. If the program context
344+
underconstrains the type, it defaults to the signed 32-bit integer `i32`; if
345+
the program context overconstrains the type, it is considered a static type
346+
error.
351347

352348
Examples of integer literals of various forms:
353349

@@ -375,17 +371,12 @@ The suffix forcibly sets the type of the literal. There are two valid
375371
_floating-point suffixes_, `f32` and `f64` (the 32-bit and 64-bit floating point
376372
types), which explicitly determine the type of the literal.
377373

378-
The type of an _unsuffixed_ floating-point literal is determined by
379-
type inference:
380-
381-
* If a floating-point type can be _uniquely_ determined from the
382-
surrounding program context, the unsuffixed floating-point literal
383-
has that type.
384-
385-
* If the program context underconstrains the type, it defaults to `f64`.
386-
387-
* If the program context overconstrains the type, it is considered a
388-
static type error.
374+
The type of an _unsuffixed_ floating-point literal is determined by type
375+
inference. If a floating-point type can be _uniquely_ determined from the
376+
surrounding program context, the unsuffixed floating-point literal has that type.
377+
If the program context underconstrains the type, it defaults to double-precision `f64`;
378+
if the program context overconstrains the type, it is considered a static type
379+
error.
389380

390381
Examples of floating-point literals of various forms:
391382

@@ -2032,7 +2023,7 @@ The following configurations must be defined by the implementation:
20322023
as a configuration itself, like `unix` or `windows`.
20332024
* `target_os = "..."`. Operating system of the target, examples include
20342025
`"windows"`, `"macos"`, `"ios"`, `"linux"`, `"android"`, `"freebsd"`, `"dragonfly"`,
2035-
`"bitrig"` , `"openbsd"` or `"netbsd"`.
2026+
`"bitrig"` or `"openbsd"`.
20362027
* `target_pointer_width = "..."`. Target pointer width in bits. This is set
20372028
to `"32"` for targets with 32-bit pointers, and likewise set to `"64"` for
20382029
64-bit pointers.
@@ -2515,8 +2506,9 @@ Here are some examples:
25152506
#### Moved and copied types
25162507

25172508
When a [local variable](#variables) is used as an
2518-
[rvalue](#lvalues,-rvalues-and-temporaries), the variable will be copied
2519-
if its type implements `Copy`. All others are moved.
2509+
[rvalue](#lvalues,-rvalues-and-temporaries) the variable will either be moved
2510+
or copied, depending on its type. All values whose type implements `Copy` are
2511+
copied, all others are moved.
25202512

25212513
### Literal expressions
25222514

@@ -2881,6 +2873,7 @@ operand.
28812873
```
28822874
# let mut x = 0;
28832875
# let y = 0;
2876+
28842877
x = y;
28852878
```
28862879

@@ -2970,12 +2963,14 @@ move values (depending on their type) from the environment into the lambda
29702963
expression's captured environment.
29712964

29722965
In this example, we define a function `ten_times` that takes a higher-order
2973-
function argument, and we then call it with a lambda expression as an argument:
2966+
function argument, and call it with a lambda expression as an argument:
29742967

29752968
```
29762969
fn ten_times<F>(f: F) where F: Fn(i32) {
2977-
for index in 0..10 {
2978-
f(index);
2970+
let mut i = 0i32;
2971+
while i < 10 {
2972+
f(i);
2973+
i += 1;
29792974
}
29802975
}
29812976
@@ -3324,13 +3319,10 @@ An example of a tuple type and its use:
33243319

33253320
```
33263321
type Pair<'a> = (i32, &'a str);
3327-
let p: Pair<'static> = (10, "ten");
3322+
let p: Pair<'static> = (10, "hello");
33283323
let (a, b) = p;
3329-
3330-
assert_eq!(a, 10);
3331-
assert_eq!(b, "ten");
3332-
assert_eq!(p.0, 10);
3333-
assert_eq!(p.1, "ten");
3324+
assert!(b != "world");
3325+
assert!(p.0 == 10);
33343326
```
33353327

33363328
For historical reasons and convenience, the tuple type with no elements (`()`)
@@ -3340,32 +3332,27 @@ is often called ‘unit’ or ‘the unit type’.
33403332

33413333
Rust has two different types for a list of items:
33423334

3343-
* `[T; N]`, an 'array'
3344-
* `&[T]`, a 'slice'
3335+
* `[T; N]`, an 'array'.
3336+
* `&[T]`, a 'slice'.
33453337

33463338
An array has a fixed size, and can be allocated on either the stack or the
33473339
heap.
33483340

33493341
A slice is a 'view' into an array. It doesn't own the data it points
33503342
to, it borrows it.
33513343

3352-
Examples:
3344+
An example of each kind:
33533345

33543346
```{rust}
3355-
// A stack-allocated array
3356-
let array: [i32; 3] = [1, 2, 3];
3357-
3358-
// A heap-allocated array
3359-
let vector: Vec<i32> = vec![1, 2, 3];
3360-
3361-
// A slice into an array
3362-
let slice: &[i32] = &vector[..];
3347+
let vec: Vec<i32> = vec![1, 2, 3];
3348+
let arr: [i32; 3] = [1, 2, 3];
3349+
let s: &[i32] = &vec[..];
33633350
```
33643351

33653352
As you can see, the `vec!` macro allows you to create a `Vec<T>` easily. The
33663353
`vec!` macro is also part of the standard library, rather than the language.
33673354

3368-
All in-bounds elements of arrays and slices are always initialized, and access
3355+
All in-bounds elements of arrays, and slices are always initialized, and access
33693356
to an array or slice is always bounds-checked.
33703357

33713358
### Structure types
@@ -3499,7 +3486,7 @@ x = bo(5,7);
34993486

35003487
#### Function types for specific items
35013488

3502-
Internal to the compiler, there are also function types that are specific to a particular
3489+
Internally to the compiler, there are also function types that are specific to a particular
35033490
function item. In the following snippet, for example, the internal types of the functions
35043491
`foo` and `bar` are different, despite the fact that they have the same signature:
35053492

@@ -3527,14 +3514,13 @@ more of the closure traits:
35273514

35283515
* `FnMut`
35293516
: The closure can be called multiple times as mutable. A closure called as
3530-
`FnMut` can mutate values from its environment. `FnMut` inherits from
3531-
`FnOnce` (i.e. anything implementing `FnMut` also implements `FnOnce`).
3517+
`FnMut` can mutate values from its environment. `FnMut` implies
3518+
`FnOnce`.
35323519

35333520
* `Fn`
35343521
: The closure can be called multiple times through a shared reference.
35353522
A closure called as `Fn` can neither move out from nor mutate values
3536-
from its environment. `Fn` inherits from `FnMut`, which itself
3537-
inherits from `FnOnce`.
3523+
from its environment. `Fn` implies `FnMut` and `FnOnce`.
35383524

35393525

35403526
### Trait objects
@@ -3657,7 +3643,7 @@ Coercions are defined in [RFC401]. A coercion is implicit and has no syntax.
36573643
### Coercion sites
36583644

36593645
A coercion can only occur at certain coercion sites in a program; these are
3660-
typically places where the desired type is explicit or can be derived by
3646+
typically places where the desired type is explicit or can be dervied by
36613647
propagation from explicit types (without type inference). Possible coercion
36623648
sites are:
36633649

branches/try/src/doc/trpl/academic-research.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ Recommended for inspiration and a better understanding of Rust's background.
1212
* [Macros that work together](https://www.cs.utah.edu/plt/publications/jfp12-draft-fcdf.pdf)
1313
* [Traits: composable units of behavior](http://scg.unibe.ch/archive/papers/Scha03aTraits.pdf)
1414
* [Alias burying](http://www.cs.uwm.edu/faculty/boyland/papers/unique-preprint.ps) - We tried something similar and abandoned it.
15-
* [External uniqueness is unique enough](http://www.cs.uu.nl/research/techreps/UU-CS-2002-048.html)
15+
* [External uniqueness is unique enough](http://www.computingscience.nl/research/techreps/repo/CS-2002/2002-048.pdf)
1616
* [Uniqueness and Reference Immutability for Safe Parallelism](https://research.microsoft.com/pubs/170528/msr-tr-2012-79.pdf)
1717
* [Region Based Memory Management](http://www.cs.ucla.edu/~palsberg/tba/papers/tofte-talpin-iandc97.pdf)
1818

@@ -26,10 +26,10 @@ Recommended for inspiration and a better understanding of Rust's background.
2626
* [Dynamic circular work stealing deque](http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.170.1097&rep=rep1&type=pdf) - The Chase/Lev deque
2727
* [Work-first and help-first scheduling policies for async-finish task parallelism](http://www.cs.rice.edu/%7Eyguo/pubs/PID824943.pdf) - More general than fully-strict work stealing
2828
* [A Java fork/join calamity](http://www.coopsoft.com/ar/CalamityArticle.html) - critique of Java's fork/join library, particularly its application of work stealing to non-strict computation
29-
* [Scheduling techniques for concurrent systems](http://www.stanford.edu/~ouster/cgi-bin/papers/coscheduling.pdf)
29+
* [Scheduling techniques for concurrent systems](http://www.ece.rutgers.edu/%7Eparashar/Classes/ece572-papers/05/ps-ousterhout.pdf)
3030
* [Contention aware scheduling](http://www.blagodurov.net/files/a8-blagodurov.pdf)
3131
* [Balanced work stealing for time-sharing multicores](http://www.cse.ohio-state.edu/hpcs/WWW/HTML/publications/papers/TR-12-1.pdf)
32-
* [Three layer cake for shared-memory programming](http://dl.acm.org/citation.cfm?id=1953616&dl=ACM&coll=DL&CFID=524387192&CFTOKEN=44362705)
32+
* [Three layer cake](http://www.upcrc.illinois.edu/workshops/paraplop10/papers/paraplop10_submission_8.pdf)
3333
* [Non-blocking steal-half work queues](http://www.cs.bgu.ac.il/%7Ehendlerd/papers/p280-hendler.pdf)
3434
* [Reagents: expressing and composing fine-grained concurrency](http://www.mpi-sws.org/~turon/reagents.pdf)
3535
* [Algorithms for scalable synchronization of shared-memory multiprocessors](https://www.cs.rochester.edu/u/scott/papers/1991_TOCS_synch.pdf)

0 commit comments

Comments
 (0)