Skip to content

Commit 793f81e

Browse files
committed
Auto merge of #22520 - alexcrichton:rollup, r=alexcrichton
2 parents 2299235 + 58000b2 commit 793f81e

File tree

1,044 files changed

+13567
-5636
lines changed

Some content is hidden

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

1,044 files changed

+13567
-5636
lines changed

AUTHORS.txt

+116-11
Large diffs are not rendered by default.

README.md

+24-22
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,16 @@
11
# The Rust Programming Language
22

33
This is a compiler for Rust, including standard libraries, tools and
4-
documentation.
4+
documentation. Rust is a systems programming language that is fast,
5+
memory safe and multithreaded, but does not employ a garbage collector
6+
or otherwise impose significant runtime overhead.
57

68
## Quick Start
79

8-
Read ["Installing Rust"][install] from [The Book][trpl].
10+
Read ["Installing Rust"] from [The Book].
911

10-
[install]: http://doc.rust-lang.org/book/installing-rust.html
11-
[trpl]: http://doc.rust-lang.org/book/index.html
12+
["Installing Rust"]: http://doc.rust-lang.org/book/installing-rust.html
13+
[The Book]: http://doc.rust-lang.org/book/index.html
1214

1315
## Building from Source
1416

@@ -19,22 +21,14 @@ Read ["Installing Rust"][install] from [The Book][trpl].
1921
* `curl`
2022
* `git`
2123

22-
2. Download and build Rust:
23-
24-
You can either download a [tarball] or build directly from the [repo].
25-
26-
To build from the [tarball] do:
27-
28-
$ curl -O https://static.rust-lang.org/dist/rustc-nightly-src.tar.gz
29-
$ tar -xzf rustc-nightly-src.tar.gz
30-
$ cd rustc-nightly
31-
32-
Or to build from the [repo] do:
24+
2. Clone the [source] with `git`:
3325

3426
$ git clone https://github.com/rust-lang/rust.git
3527
$ cd rust
3628

37-
Now that you have Rust's source code, you can configure and build it:
29+
[source]: https://github.com/rust-lang/rust
30+
31+
3. Build and install:
3832

3933
$ ./configure
4034
$ make && make install
@@ -46,7 +40,10 @@ Read ["Installing Rust"][install] from [The Book][trpl].
4640
4741
When complete, `make install` will place several programs into
4842
`/usr/local/bin`: `rustc`, the Rust compiler, and `rustdoc`, the
49-
API-documentation tool.
43+
API-documentation tool. This install does not include [Cargo],
44+
Rust's package manager, which you may also want to build.
45+
46+
[Cargo]: https://github.com/rust-lang/cargo
5047

5148
### Building on Windows
5249

@@ -72,9 +69,6 @@ $ pacman -S base-devel
7269
$ ./configure
7370
$ make && make install
7471

75-
[repo]: https://github.com/rust-lang/rust
76-
[tarball]: https://static.rust-lang.org/dist/rustc-nightly-src.tar.gz
77-
7872
## Notes
7973

8074
Since the Rust compiler is written in Rust, it must be built by a
@@ -94,9 +88,9 @@ supported build environments that are most likely to work.
9488
Rust currently needs about 1.5 GiB of RAM to build without swapping; if it hits
9589
swap, it will take a very long time to build.
9690

97-
There is a lot more documentation in the [wiki].
91+
There is more advice about hacking on Rust in [CONTRIBUTING.md].
9892

99-
[wiki]: https://github.com/rust-lang/rust/wiki
93+
[CONTRIBUTING.md]: https://github.com/rust-lang/rust/blob/master/CONTRIBUTING.md
10094

10195
## Getting help
10296

@@ -114,6 +108,14 @@ The Rust community congregates in a few places:
114108

115109
To contribute to Rust, please see [CONTRIBUTING.md](CONTRIBUTING.md).
116110

111+
Rust has an [IRC] culture and most real-time collaboration happens in a
112+
variety of channels on Mozilla's IRC network, irc.mozilla.org. The
113+
most popular channel is [#rust], a venue for general discussion about
114+
Rust, and a good place to ask for help,
115+
116+
[IRC]: https://en.wikipedia.org/wiki/Internet_Relay_Chat
117+
[#rust]: irc://irc.mozilla.org/rust
118+
117119
## License
118120

119121
Rust is primarily distributed under the terms of both the MIT license

RELEASES.md

+99
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,102 @@
1+
Version 1.0.0-alpha.2 (February 2015)
2+
-------------------------------------
3+
4+
* ~1300 changes, numerous bugfixes
5+
6+
* Highlights
7+
8+
* The various I/O modules were [overhauled][io-rfc] to reduce
9+
unncessary abstractions and provide better interoperation with
10+
the underlying platform. The old `io` module remains temporarily
11+
at `std::old_io`.
12+
* The standard library now [partipates in feature gating][feat],
13+
so use of unstable libraries now requires a `#![feature(...)]`
14+
attribute. The impact of this change is [described on the
15+
forum][feat-forum]. [RFC][feat-rfc].
16+
17+
* Language
18+
19+
* `for` loops [now operate on the `IntoIterator` trait][into],
20+
which eliminates the need to call `.iter()`, etc. to iterate
21+
over collections. There are some new subtleties to remember
22+
though regarding what sort of iterators various types yield, in
23+
particular that `for foo in bar { }` yields values from a move
24+
iterator, destroying the original collection. [RFC][into-rfc].
25+
* Objects now have [default lifetime bounds][obj], so you don't
26+
have to write `Box<Trait+'static>` when you don't care about
27+
storing references. [RFC][obj-rfc].
28+
* In types that implement `Drop`, [lifetimes must outlive the
29+
value][drop]. This will soon make it possible to safely
30+
implement `Drop` for types where `#[unsafe_destructor]` is now
31+
required. Read the [gorgeous RFC][drop-rfc] for details.
32+
* The fully qualified <T as Trait>::X syntax lets you set the Self
33+
type for a trait method or associated type. [RFC][ufcs-rfc].
34+
* References to types that implement `Deref<U>` now [automatically
35+
coerce to references][deref] to the dereferenced type `U`,
36+
e.g. `&T where T: Deref<U>` automatically coerces to `&U`. This
37+
should eliminate many unsightly uses of `&*`, as when converting
38+
from references to vectors into references to
39+
slices. [RFC][deref-rfc].
40+
* The explicit [closure kind syntax][close] (`|&:|`, `|&mut:|`,
41+
`|:|`) is obsolete and closure kind is inferred from context.
42+
* [`Self` is a keyword][Self].
43+
44+
* Libraries
45+
46+
* The `Show` and `String` formatting traits [have been
47+
renamed][fmt] to `Debug` and `Display` to more clearly reflect
48+
their related purposes. Automatically getting a string
49+
conversion to use with `format!("{:?}", something_to_debug)` is
50+
now written `#[derive(Debug)]`.
51+
* Abstract [OS-specific string types][osstr], `std::ff::{OsString,
52+
OsStr}`, provide strings in platform-specific encodings for easier
53+
interop with system APIs. [RFC][osstr-rfc].
54+
* The `boxed::into_raw` and `Box::frow_raw` functions [convert
55+
between `Box<T>` and `*mut T`][boxraw], a common pattern for
56+
creating raw pointers.
57+
58+
* Tooling
59+
60+
* Certain long error messages of the form 'expected foo found bar'
61+
are now [split neatly across multiple
62+
lines][multiline]. Examples in the PR.
63+
* On Unix Rust can be [uninstalled][un] by running
64+
`/usr/local/lib/rustlib/uninstall.sh`.
65+
* The `#[rustc_on_unimplemented]` attribute, requiring the
66+
'on_unimplemented' feature, lets rustc [display custom error
67+
messages when a trait is expected to be implemented for a type
68+
but is not][onun].
69+
70+
* Misc
71+
72+
* Rust is tested against a [LALR grammar][lalr], which parses
73+
almost all the Rust files that rustc does.
74+
75+
[boxraw]: https://github.com/rust-lang/rust/pull/21318
76+
[close]: https://github.com/rust-lang/rust/pull/21843
77+
[deref]: https://github.com/rust-lang/rust/pull/21351
78+
[deref-rfc]: https://github.com/rust-lang/rfcs/blob/master/text/0241-deref-conversions.md
79+
[drop]: https://github.com/rust-lang/rust/pull/21972
80+
[drop-rfc]: https://github.com/rust-lang/rfcs/blob/master/text/0769-sound-generic-drop.md
81+
[feat]: https://github.com/rust-lang/rust/pull/21248
82+
[feat-forum]: http://users.rust-lang.org/t/psa-important-info-about-rustcs-new-feature-staging/82/5
83+
[feat-rfc]: https://github.com/rust-lang/rfcs/blob/master/text/0507-release-channels.md
84+
[fmt]: https://github.com/rust-lang/rust/pull/21457
85+
[into]: https://github.com/rust-lang/rust/pull/20790
86+
[into-rfc]: https://github.com/rust-lang/rfcs/blob/master/text/0235-collections-conventions.md#intoiterator-and-iterable
87+
[io-rfc]: https://github.com/rust-lang/rfcs/blob/master/text/0517-io-os-reform.md
88+
[lalr]: https://github.com/rust-lang/rust/pull/21452
89+
[multiline]: https://github.com/rust-lang/rust/pull/19870
90+
[obj]: https://github.com/rust-lang/rust/pull/22230
91+
[obj-rfc]: https://github.com/rust-lang/rfcs/blob/master/text/0599-default-object-bound.md
92+
[onun]: https://github.com/rust-lang/rust/pull/20889
93+
[osstr]: https://github.com/rust-lang/rust/pull/21488
94+
[osstr-rfc]: https://github.com/rust-lang/rfcs/blob/master/text/0517-io-os-reform.md
95+
[Self]: https://github.com/rust-lang/rust/pull/22158
96+
[ufcs]: https://github.com/rust-lang/rust/pull/21077
97+
[ufcs-rfc]: https://github.com/rust-lang/rfcs/blob/master/text/0132-ufcs.md
98+
[un]: https://github.com/rust-lang/rust/pull/22256
99+
1100
Version 1.0.0-alpha (January 2015)
2101
----------------------------------
3102

configure

+1
Original file line numberDiff line numberDiff line change
@@ -1056,6 +1056,7 @@ do
10561056
make_dir $h/test/run-pass-fulldeps
10571057
make_dir $h/test/run-fail
10581058
make_dir $h/test/compile-fail
1059+
make_dir $h/test/parse-fail
10591060
make_dir $h/test/compile-fail-fulldeps
10601061
make_dir $h/test/bench
10611062
make_dir $h/test/perf

mk/tests.mk

+13-4
Original file line numberDiff line numberDiff line change
@@ -174,12 +174,12 @@ check-notidy: cleantmptestlogs cleantestlibs all check-stage2
174174
check-lite: cleantestlibs cleantmptestlogs \
175175
$(foreach crate,$(TEST_TARGET_CRATES),check-stage2-$(crate)) \
176176
check-stage2-rpass check-stage2-rpass-valgrind \
177-
check-stage2-rfail check-stage2-cfail check-stage2-rmake
177+
check-stage2-rfail check-stage2-cfail check-stage2-pfail check-stage2-rmake
178178
$(Q)$(CFG_PYTHON) $(S)src/etc/check-summary.py tmp/*.log
179179

180180
# Only check the 'reference' tests: rpass/cfail/rfail/rmake.
181181
check-ref: cleantestlibs cleantmptestlogs check-stage2-rpass check-stage2-rpass-valgrind \
182-
check-stage2-rfail check-stage2-cfail check-stage2-rmake
182+
check-stage2-rfail check-stage2-cfail check-stage2-pfail check-stage2-rmake
183183
$(Q)$(CFG_PYTHON) $(S)src/etc/check-summary.py tmp/*.log
184184

185185
# Only check the docs.
@@ -291,6 +291,7 @@ check-stage$(1)-T-$(2)-H-$(3)-exec: \
291291
check-stage$(1)-T-$(2)-H-$(3)-rpass-exec \
292292
check-stage$(1)-T-$(2)-H-$(3)-rfail-exec \
293293
check-stage$(1)-T-$(2)-H-$(3)-cfail-exec \
294+
check-stage$(1)-T-$(2)-H-$(3)-pfail-exec \
294295
check-stage$(1)-T-$(2)-H-$(3)-rpass-valgrind-exec \
295296
check-stage$(1)-T-$(2)-H-$(3)-rpass-full-exec \
296297
check-stage$(1)-T-$(2)-H-$(3)-cfail-full-exec \
@@ -470,7 +471,8 @@ RPASS_VALGRIND_TESTS := $(RPASS_VALGRIND_RS)
470471
RPASS_FULL_TESTS := $(RPASS_FULL_RS)
471472
CFAIL_FULL_TESTS := $(CFAIL_FULL_RS)
472473
RFAIL_TESTS := $(RFAIL_RS)
473-
CFAIL_TESTS := $(CFAIL_RS) $(PFAIL_RS)
474+
CFAIL_TESTS := $(CFAIL_RS)
475+
PFAIL_TESTS := $(PFAIL_RS)
474476
BENCH_TESTS := $(BENCH_RS)
475477
PERF_TESTS := $(PERF_RS)
476478
PRETTY_TESTS := $(PRETTY_RS)
@@ -508,6 +510,11 @@ CTEST_BUILD_BASE_cfail = compile-fail
508510
CTEST_MODE_cfail = compile-fail
509511
CTEST_RUNTOOL_cfail = $(CTEST_RUNTOOL)
510512

513+
CTEST_SRC_BASE_pfail = parse-fail
514+
CTEST_BUILD_BASE_pfail = parse-fail
515+
CTEST_MODE_pfail = parse-fail
516+
CTEST_RUNTOOL_pfail = $(CTEST_RUNTOOL)
517+
511518
CTEST_SRC_BASE_bench = bench
512519
CTEST_BUILD_BASE_bench = bench
513520
CTEST_MODE_bench = run-pass
@@ -630,6 +637,7 @@ CTEST_DEPS_rpass-full_$(1)-T-$(2)-H-$(3) = $$(RPASS_FULL_TESTS) $$(CSREQ$(1)_T_$
630637
CTEST_DEPS_cfail-full_$(1)-T-$(2)-H-$(3) = $$(CFAIL_FULL_TESTS) $$(CSREQ$(1)_T_$(3)_H_$(3)) $$(SREQ$(1)_T_$(2)_H_$(3))
631638
CTEST_DEPS_rfail_$(1)-T-$(2)-H-$(3) = $$(RFAIL_TESTS)
632639
CTEST_DEPS_cfail_$(1)-T-$(2)-H-$(3) = $$(CFAIL_TESTS)
640+
CTEST_DEPS_pfail_$(1)-T-$(2)-H-$(3) = $$(PFAIL_TESTS)
633641
CTEST_DEPS_bench_$(1)-T-$(2)-H-$(3) = $$(BENCH_TESTS)
634642
CTEST_DEPS_perf_$(1)-T-$(2)-H-$(3) = $$(PERF_TESTS)
635643
CTEST_DEPS_debuginfo-gdb_$(1)-T-$(2)-H-$(3) = $$(DEBUGINFO_GDB_TESTS)
@@ -698,7 +706,7 @@ endif
698706

699707
endef
700708

701-
CTEST_NAMES = rpass rpass-valgrind rpass-full cfail-full rfail cfail bench perf debuginfo-gdb debuginfo-lldb codegen
709+
CTEST_NAMES = rpass rpass-valgrind rpass-full cfail-full rfail cfail pfail bench perf debuginfo-gdb debuginfo-lldb codegen
702710

703711
$(foreach host,$(CFG_HOST), \
704712
$(eval $(foreach target,$(CFG_TARGET), \
@@ -857,6 +865,7 @@ TEST_GROUPS = \
857865
cfail-full \
858866
rfail \
859867
cfail \
868+
pfail \
860869
bench \
861870
perf \
862871
rmake \

src/compiletest/common.rs

+3
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ use std::str::FromStr;
1515
#[derive(Clone, Copy, PartialEq, Debug)]
1616
pub enum Mode {
1717
CompileFail,
18+
ParseFail,
1819
RunFail,
1920
RunPass,
2021
RunPassValgrind,
@@ -29,6 +30,7 @@ impl FromStr for Mode {
2930
fn from_str(s: &str) -> Result<Mode, ()> {
3031
match s {
3132
"compile-fail" => Ok(CompileFail),
33+
"parse-fail" => Ok(ParseFail),
3234
"run-fail" => Ok(RunFail),
3335
"run-pass" => Ok(RunPass),
3436
"run-pass-valgrind" => Ok(RunPassValgrind),
@@ -45,6 +47,7 @@ impl fmt::Display for Mode {
4547
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
4648
fmt::Display::fmt(match *self {
4749
CompileFail => "compile-fail",
50+
ParseFail => "parse-fail",
4851
RunFail => "run-fail",
4952
RunPass => "run-pass",
5053
RunPassValgrind => "run-pass-valgrind",

src/compiletest/compiletest.rs

+2-1
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
#![feature(test)]
2222
#![feature(unicode)]
2323
#![feature(env)]
24+
#![feature(core)]
2425

2526
#![deny(warnings)]
2627

@@ -72,7 +73,7 @@ pub fn parse_config(args: Vec<String> ) -> Config {
7273
reqopt("", "aux-base", "directory to find auxiliary test files", "PATH"),
7374
reqopt("", "stage-id", "the target-stage identifier", "stageN-TARGET"),
7475
reqopt("", "mode", "which sort of compile tests to run",
75-
"(compile-fail|run-fail|run-pass|run-pass-valgrind|pretty|debug-info)"),
76+
"(compile-fail|parse-fail|run-fail|run-pass|run-pass-valgrind|pretty|debug-info)"),
7677
optflag("", "ignored", "run tests marked as ignored"),
7778
optopt("", "runtool", "supervisor program to run tests under \
7879
(eg. emulator, valgrind)", "PROGRAM"),

src/compiletest/runtest.rs

+5-4
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
use self::TargetLocation::*;
1212

1313
use common::Config;
14-
use common::{CompileFail, Pretty, RunFail, RunPass, RunPassValgrind, DebugInfoGdb};
14+
use common::{CompileFail, ParseFail, Pretty, RunFail, RunPass, RunPassValgrind, DebugInfoGdb};
1515
use common::{Codegen, DebugInfoLldb};
1616
use errors;
1717
use header::TestProps;
@@ -66,6 +66,7 @@ pub fn run_metrics(config: Config, testfile: String, mm: &mut MetricMap) {
6666
debug!("loaded props");
6767
match config.mode {
6868
CompileFail => run_cfail_test(&config, &props, &testfile),
69+
ParseFail => run_cfail_test(&config, &props, &testfile),
6970
RunFail => run_rfail_test(&config, &props, &testfile),
7071
RunPass => run_rpass_test(&config, &props, &testfile),
7172
RunPassValgrind => run_valgrind_test(&config, &props, &testfile),
@@ -88,7 +89,7 @@ fn run_cfail_test(config: &Config, props: &TestProps, testfile: &Path) {
8889
let proc_res = compile_test(config, props, testfile);
8990

9091
if proc_res.status.success() {
91-
fatal_proc_rec("compile-fail test compiled successfully!",
92+
fatal_proc_rec(&format!("{} test compiled successfully!", config.mode)[],
9293
&proc_res);
9394
}
9495

@@ -688,7 +689,7 @@ fn run_debuginfo_lldb_test(config: &Config, props: &TestProps, testfile: &Path)
688689
.unwrap()
689690
.to_string();
690691

691-
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[..])[]);
692693
script_str.push_str("type summary add --no-value ");
693694
script_str.push_str("--python-function lldb_rust_formatters.print_val ");
694695
script_str.push_str("-x \".*\" --category Rust\n");
@@ -1133,7 +1134,7 @@ fn compile_test_(config: &Config, props: &TestProps,
11331134
// FIXME (#9639): This needs to handle non-utf8 paths
11341135
let mut link_args = vec!("-L".to_string(),
11351136
aux_dir.as_str().unwrap().to_string());
1136-
link_args.extend(extra_args.iter().map(|s| s.clone()));
1137+
link_args.extend(extra_args.iter().cloned());
11371138
let args = make_compile_args(config,
11381139
props,
11391140
link_args,

src/doc/intro.md

+2-2
Original file line numberDiff line numberDiff line change
@@ -480,7 +480,7 @@ use std::sync::{Arc,Mutex};
480480
fn main() {
481481
let numbers = Arc::new(Mutex::new(vec![1, 2, 3]));
482482
483-
for i in 0us..3 {
483+
for i in 0..3 {
484484
let number = numbers.clone();
485485
Thread::spawn(move || {
486486
let mut array = number.lock().unwrap();
@@ -541,7 +541,7 @@ use std::thread::Thread;
541541
fn main() {
542542
let vec = vec![1, 2, 3];
543543
544-
for i in 0us..3 {
544+
for i in 0..3 {
545545
Thread::spawn(move || {
546546
println!("{}", vec[i]);
547547
});

0 commit comments

Comments
 (0)