Skip to content

Commit b7ad0a0

Browse files
Manishearthalexcrichton
authored andcommitted
---
yaml --- r: 187598 b: refs/heads/tmp c: 5a41536 h: refs/heads/master v: v3
1 parent 0e76609 commit b7ad0a0

File tree

266 files changed

+3465
-7379
lines changed

Some content is hidden

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

266 files changed

+3465
-7379
lines changed

[refs]

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,5 +34,5 @@ refs/heads/building: 126db549b038c84269a1e4fe46f051b2c15d6970
3434
refs/heads/beta: 522d09dfecbeca1595f25ac58c6d0178bbd21d7d
3535
refs/heads/windistfix: 7608dbad651f02e837ed05eef3d74a6662a6e928
3636
refs/tags/1.0.0-alpha: e42bd6d93a1d3433c486200587f8f9e12590a4d7
37-
refs/heads/tmp: a7594f2d5b9f668b1001c9b0b6f1fdd95768c2c5
37+
refs/heads/tmp: 5a41536462af8bdf58950238c101a5ffd11267f6
3838
refs/tags/1.0.0-alpha.2: 4c705f6bc559886632d3871b04f58aab093bfa2f

branches/tmp/CONTRIBUTING.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ links to the major sections:
1414
If you have questions, please make a post on [internals.rust-lang.org][internals] or
1515
hop on [#rust-internals][pound-rust-internals].
1616

17-
As a reminder, all contributors are expected to follow our [Code of Conduct](coc).
17+
As a reminder, all contributors are expected to follow our [Code of Conduct][coc].
1818

1919
[pound-rust-internals]: http://chat.mibbit.com/?server=irc.mozilla.org&channel=%23rust-internals
2020
[internals]: http://internals.rust-lang.org

branches/tmp/README.md

Lines changed: 42 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -15,28 +15,34 @@ Read ["Installing Rust"] from [The Book].
1515
## Building from Source
1616

1717
1. Make sure you have installed the dependencies:
18-
* `g++` 4.7 or `clang++` 3.x
19-
* `python` 2.6 or later (but not 3.x)
20-
* GNU `make` 3.81 or later
21-
* `curl`
22-
* `git`
18+
19+
* `g++` 4.7 or `clang++` 3.x
20+
* `python` 2.6 or later (but not 3.x)
21+
* GNU `make` 3.81 or later
22+
* `curl`
23+
* `git`
2324

2425
2. Clone the [source] with `git`:
2526

26-
$ git clone https://github.com/rust-lang/rust.git
27-
$ cd rust
27+
```sh
28+
$ git clone https://github.com/rust-lang/rust.git
29+
$ cd rust
30+
```
2831

2932
[source]: https://github.com/rust-lang/rust
3033

3134
3. Build and install:
3235

33-
$ ./configure
34-
$ make && make install
36+
```sh
37+
$ ./configure
38+
$ make && make install
39+
```
3540

36-
> ***Note:*** You may need to use `sudo make install` if you do not normally have
37-
> permission to modify the destination directory. The install locations can
38-
> be adjusted by passing a `--prefix` argument to `configure`. Various other
39-
> options are also supported, pass `--help` for more information on them.
41+
> ***Note:*** You may need to use `sudo make install` if you do not
42+
> normally have permission to modify the destination directory. The
43+
> install locations can be adjusted by passing a `--prefix` argument
44+
> to `configure`. Various other options are also supported – pass
45+
> `--help` for more information on them.
4046

4147
When complete, `make install` will place several programs into
4248
`/usr/local/bin`: `rustc`, the Rust compiler, and `rustdoc`, the
@@ -47,27 +53,30 @@ Read ["Installing Rust"] from [The Book].
4753
4854
### Building on Windows
4955
50-
To easily build on windows we can use [MSYS2](http://msys2.github.io/):
56+
[MSYS2](http://msys2.github.io/) can be used to easily build Rust on Windows:
5157
5258
1. Grab the latest MSYS2 installer and go through the installer.
53-
2. Now from the MSYS2 terminal we want to install the mingw64 toolchain and the other
54-
tools we need.
5559
56-
```bash
57-
# choose one based on platform
58-
$ pacman -S mingw-w64-i686-toolchain
59-
$ pacman -S mingw-w64-x86_64-toolchain
60+
2. From the MSYS2 terminal, install the `mingw64` toolchain and other required
61+
tools.
62+
63+
```sh
64+
# Choose one based on platform:
65+
$ pacman -S mingw-w64-i686-toolchain
66+
$ pacman -S mingw-w64-x86_64-toolchain
67+
68+
$ pacman -S base-devel
69+
```
6070
61-
$ pacman -S base-devel
62-
```
71+
3. Run `mingw32_shell.bat` or `mingw64_shell.bat` from wherever you installed
72+
MYSY2 (i.e. `C:\msys`), depending on whether you want 32-bit or 64-bit Rust.
6373
64-
3. With that now start `mingw32_shell.bat` or `mingw64_shell.bat`
65-
from where you installed MSYS2 (i.e. `C:\msys`). Which one you
66-
choose depends on if you want 32 or 64 bit Rust.
67-
4. From there just navigate to where you have Rust's source code, configure and build it:
74+
4. Navigate to Rust's source code, configure and build it:
6875

69-
$ ./configure
70-
$ make && make install
76+
```sh
77+
$ ./configure
78+
$ make && make install
79+
```
7180

7281
## Notes
7382

@@ -92,15 +101,15 @@ There is more advice about hacking on Rust in [CONTRIBUTING.md].
92101

93102
[CONTRIBUTING.md]: https://github.com/rust-lang/rust/blob/master/CONTRIBUTING.md
94103

95-
## Getting help
104+
## Getting Help
96105

97106
The Rust community congregates in a few places:
98107

99-
* [StackOverflow] - Direct questions about using the language here.
100-
* [users.rust-lang.org] - General discussion, broader questions.
108+
* [Stack Overflow] - Direct questions about using the language.
109+
* [users.rust-lang.org] - General discussion and broader questions.
101110
* [/r/rust] - News and general discussion.
102111

103-
[StackOverflow]: http://stackoverflow.com/questions/tagged/rust
112+
[Stack Overflow]: http://stackoverflow.com/questions/tagged/rust
104113
[/r/rust]: http://reddit.com/r/rust
105114
[users.rust-lang.org]: http://users.rust-lang.org/
106115

@@ -111,7 +120,7 @@ To contribute to Rust, please see [CONTRIBUTING.md](CONTRIBUTING.md).
111120
Rust has an [IRC] culture and most real-time collaboration happens in a
112121
variety of channels on Mozilla's IRC network, irc.mozilla.org. The
113122
most popular channel is [#rust], a venue for general discussion about
114-
Rust, and a good place to ask for help,
123+
Rust, and a good place to ask for help.
115124
116125
[IRC]: https://en.wikipedia.org/wiki/Internet_Relay_Chat
117126
[#rust]: irc://irc.mozilla.org/rust

branches/tmp/RELEASES.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ Version 1.0.0-alpha.2 (February 2015)
5151
* Abstract [OS-specific string types][osstr], `std::ff::{OsString,
5252
OsStr}`, provide strings in platform-specific encodings for easier
5353
interop with system APIs. [RFC][osstr-rfc].
54-
* The `boxed::into_raw` and `Box::frow_raw` functions [convert
54+
* The `boxed::into_raw` and `Box::from_raw` functions [convert
5555
between `Box<T>` and `*mut T`][boxraw], a common pattern for
5656
creating raw pointers.
5757

branches/tmp/src/compiletest/compiletest.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -268,7 +268,7 @@ pub fn test_opts(config: &Config) -> test::TestOpts {
268268
logfile: config.logfile.clone(),
269269
run_tests: true,
270270
run_benchmarks: true,
271-
nocapture: false,
271+
nocapture: env::var("RUST_TEST_NOCAPTURE").is_ok(),
272272
color: test::AutoColor,
273273
}
274274
}

branches/tmp/src/compiletest/errors.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ pub fn load_errors(testfile: &Path) -> Vec<ExpectedError> {
5858
fn parse_expected(last_nonfollow_error: Option<uint>,
5959
line_num: uint,
6060
line: &str) -> Option<(WhichLine, ExpectedError)> {
61-
let start = match line.find_str("//~") { Some(i) => i, None => return None };
61+
let start = match line.find("//~") { Some(i) => i, None => return None };
6262
let (follow, adjusts) = if line.char_at(start + 3) == '|' {
6363
(true, 0)
6464
} else {

branches/tmp/src/compiletest/header.rs

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@
88
// option. This file may not be copied, modified, or distributed
99
// except according to those terms.
1010

11+
use std::env;
12+
1113
use common::Config;
1214
use common;
1315
use util;
@@ -125,6 +127,16 @@ pub fn load_props(testfile: &Path) -> TestProps {
125127
true
126128
});
127129

130+
for key in vec!["RUST_TEST_NOCAPTURE", "RUST_TEST_TASKS"] {
131+
match env::var(key) {
132+
Ok(val) =>
133+
if exec_env.iter().find(|&&(ref x, _)| *x == key.to_string()).is_none() {
134+
exec_env.push((key.to_string(), val))
135+
},
136+
Err(..) => {}
137+
}
138+
}
139+
128140
TestProps {
129141
error_patterns: error_patterns,
130142
compile_flags: compile_flags,
@@ -330,7 +342,7 @@ fn parse_name_directive(line: &str, directive: &str) -> bool {
330342
pub fn parse_name_value_directive(line: &str, directive: &str)
331343
-> Option<String> {
332344
let keycolon = format!("{}:", directive);
333-
match line.find_str(&keycolon) {
345+
match line.find(&keycolon) {
334346
Some(colon) => {
335347
let value = line[(colon + keycolon.len()) .. line.len()].to_string();
336348
debug!("{}: {}", directive, value);

branches/tmp/src/compiletest/runtest.rs

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,7 @@ fn run_cfail_test(config: &Config, props: &TestProps, testfile: &Path) {
8989
let proc_res = compile_test(config, props, testfile);
9090

9191
if proc_res.status.success() {
92-
fatal_proc_rec(&format!("{} test compiled successfully!", config.mode)[],
92+
fatal_proc_rec(&format!("{} test compiled successfully!", config.mode)[..],
9393
&proc_res);
9494
}
9595

@@ -398,7 +398,7 @@ fn run_debuginfo_gdb_test(config: &Config, props: &TestProps, testfile: &Path) {
398398
for line in breakpoint_lines.iter() {
399399
script_str.push_str(&format!("break {:?}:{}\n",
400400
testfile.filename_display(),
401-
*line)[]);
401+
*line)[..]);
402402
}
403403
script_str.push_str(&cmds);
404404
script_str.push_str("quit\n");
@@ -553,17 +553,17 @@ fn run_debuginfo_gdb_test(config: &Config, props: &TestProps, testfile: &Path) {
553553
script_str.push_str("set print pretty off\n");
554554

555555
// Add the pretty printer directory to GDB's source-file search path
556-
script_str.push_str(&format!("directory {}\n", rust_pp_module_abs_path)[]);
556+
script_str.push_str(&format!("directory {}\n", rust_pp_module_abs_path)[..]);
557557

558558
// Load the target executable
559559
script_str.push_str(&format!("file {}\n",
560-
exe_file.as_str().unwrap().replace("\\", "\\\\"))[]);
560+
exe_file.as_str().unwrap().replace("\\", "\\\\"))[..]);
561561

562562
// Add line breakpoints
563563
for line in &breakpoint_lines {
564564
script_str.push_str(&format!("break '{}':{}\n",
565565
testfile.filename_display(),
566-
*line)[]);
566+
*line)[..]);
567567
}
568568

569569
script_str.push_str(&cmds);
@@ -689,7 +689,7 @@ fn run_debuginfo_lldb_test(config: &Config, props: &TestProps, testfile: &Path)
689689
.unwrap()
690690
.to_string();
691691

692-
script_str.push_str(&format!("command script import {}\n", &rust_pp_module_abs_path[..])[]);
692+
script_str.push_str(&format!("command script import {}\n", &rust_pp_module_abs_path[..])[..]);
693693
script_str.push_str("type summary add --no-value ");
694694
script_str.push_str("--python-function lldb_rust_formatters.print_val ");
695695
script_str.push_str("-x \".*\" --category Rust\n");
@@ -847,7 +847,7 @@ fn check_debugger_output(debugger_run_result: &ProcRes, check_lines: &[String])
847847
check_lines.iter().map(|s| {
848848
s
849849
.trim()
850-
.split_str("[...]")
850+
.split("[...]")
851851
.map(|x| x.to_string())
852852
.collect()
853853
}).collect();
@@ -866,7 +866,7 @@ fn check_debugger_output(debugger_run_result: &ProcRes, check_lines: &[String])
866866
None
867867
}
868868
} else {
869-
rest.find_str(frag)
869+
rest.find(frag)
870870
};
871871
match found {
872872
None => {

branches/tmp/src/doc/intro.md

Lines changed: 30 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -426,39 +426,33 @@ use std::thread::Thread;
426426
fn main() {
427427
let mut numbers = vec![1, 2, 3];
428428
429-
for i in 0..3 {
430-
Thread::spawn(move || {
429+
let guards: Vec<_> = (0..3).map(|i| {
430+
Thread::scoped(move || {
431431
for j in 0..3 { numbers[j] += 1 }
432432
});
433-
}
433+
}).collect();
434434
}
435435
```
436436
437437
It gives us this error:
438438
439439
```text
440-
6:71 error: capture of moved value: `numbers`
441-
for j in 0..3 { numbers[j] += 1 }
442-
^~~~~~~
443-
7:50 note: `numbers` moved into closure environment here
444-
spawn(move || {
445-
for j in 0..3 { numbers[j] += 1 }
446-
});
447-
6:79 error: cannot assign to immutable dereference (dereference is implicit, due to indexing)
448-
for j in 0..3 { numbers[j] += 1 }
449-
^~~~~~~~~~~~~~~
440+
7:29: 9:10 error: cannot move out of captured outer variable in an `FnMut` closure
441+
7 Thread::scoped(move || {
442+
8 for j in 0..3 { numbers[j] += 1 }
443+
9 });
450444
```
451445
452-
It mentions that "numbers moved into closure environment". Because we
453-
declared the closure as a moving closure, and it referred to
454-
`numbers`, the closure will try to take ownership of the vector. But
455-
the closure itself is created in a loop, and hence we will actually
456-
create three closures, one for every iteration of the loop. This means
457-
that all three of those closures would try to own `numbers`, which is
458-
impossible -- `numbers` must have just one owner. Rust detects this
459-
and gives us the error: we claim that `numbers` has ownership, but our
460-
code tries to make three owners. This may cause a safety problem, so
461-
Rust disallows it.
446+
It mentions that "captured outer variable in an `FnMut` closure".
447+
Because we declared the closure as a moving closure, and it referred
448+
to `numbers`, the closure will try to take ownership of the
449+
vector. But the closure itself is created in a loop, and hence we will
450+
actually create three closures, one for every iteration of the
451+
loop. This means that all three of those closures would try to own
452+
`numbers`, which is impossible -- `numbers` must have just one
453+
owner. Rust detects this and gives us the error: we claim that
454+
`numbers` has ownership, but our code tries to make three owners. This
455+
may cause a safety problem, so Rust disallows it.
462456
463457
What to do here? Rust has two types that helps us: `Arc<T>` and `Mutex<T>`.
464458
*Arc* stands for "atomically reference counted". In other words, an Arc will
@@ -480,14 +474,14 @@ use std::sync::{Arc,Mutex};
480474
fn main() {
481475
let numbers = Arc::new(Mutex::new(vec![1, 2, 3]));
482476
483-
for i in 0..3 {
477+
let guards: Vec<_> = (0..3).map(|i| {
484478
let number = numbers.clone();
485-
Thread::spawn(move || {
479+
Thread::scoped(move || {
486480
let mut array = number.lock().unwrap();
487481
array[i] += 1;
488482
println!("numbers[{}] is {}", i, array[i]);
489483
});
490-
}
484+
}).collect();
491485
}
492486
```
493487
@@ -516,8 +510,10 @@ numbers[1] is 3
516510
numbers[0] is 2
517511
```
518512
519-
Each time, we get a slightly different output, because each thread works in a
520-
different order. You may not get the same output as this sample, even.
513+
Each time, we can get a slithtly different output because the threads
514+
are not quaranteed to run in any set order. If you get the same order
515+
every time it is because each of these threads are very small and
516+
complete too fast for their indeterminate behavior to surface.
521517
522518
The important part here is that the Rust compiler was able to use ownership to
523519
give us assurance _at compile time_ that we weren't doing something incorrect
@@ -539,13 +535,13 @@ safety check that makes this an error about moved values:
539535
use std::thread::Thread;
540536
541537
fn main() {
542-
let vec = vec![1, 2, 3];
543-
544-
for i in 0..3 {
545-
Thread::spawn(move || {
546-
println!("{}", vec[i]);
538+
let numbers = vec![1, 2, 3];
539+
540+
let guards: Vec<_> = (0..3).map(|i| {
541+
Thread::scoped(move || {
542+
println!("{}", numbers[i]);
547543
});
548-
}
544+
}).collect();
549545
}
550546
```
551547

0 commit comments

Comments
 (0)