Skip to content

Commit 394e114

Browse files
committed
---
yaml --- r: 234434 b: refs/heads/tmp c: 24e54ae h: refs/heads/master v: v3
1 parent 789765e commit 394e114

File tree

120 files changed

+6949
-593
lines changed

Some content is hidden

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

120 files changed

+6949
-593
lines changed

[refs]

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ refs/tags/0.11.0: e1247cb1d0d681be034adb4b558b5a0c0d5720f9
2525
refs/tags/0.12.0: f0c419429ef30723ceaf6b42f9b5a2aeb5d2e2d1
2626
refs/heads/beta: d2e13e822a73e0ea46ae9e21afdd3155fc997f6d
2727
refs/tags/1.0.0-alpha: e42bd6d93a1d3433c486200587f8f9e12590a4d7
28-
refs/heads/tmp: 1fac7f89041a5fbc1d5636dd3546180de2c609ac
28+
refs/heads/tmp: 24e54aebd09de2a75c1c6ef9763ee05c9d281e71
2929
refs/tags/1.0.0-alpha.2: 4c705f6bc559886632d3871b04f58aab093bfa2f
3030
refs/tags/homu-tmp: ab792abf1fcc28afbd315426213f6428da25c085
3131
refs/tags/1.0.0-beta: 8cbb92b53468ee2b0c2d3eeb8567005953d40828

branches/tmp/RELEASES.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
Version 1.2.0 (August 2015)
1+
Version 1.2.0 (2015-08-07)
22
===========================
33

44
* ~1200 changes, numerous bugfixes
@@ -156,7 +156,7 @@ Misc
156156
[ad]: https://github.com/rust-lang/rust/pull/27382
157157
[win]: https://github.com/rust-lang/rust/pull/25350
158158

159-
Version 1.1.0 (June 2015)
159+
Version 1.1.0 (2015-06-25)
160160
=========================
161161

162162
* ~850 changes, numerous bugfixes
@@ -267,7 +267,7 @@ Misc
267267
[`split_off`]: https://doc.rust-lang.org/nightly/collections/linked_list/struct.LinkedList.html#method.split_off
268268
[drop]: https://github.com/rust-lang/rust/pull/24935
269269

270-
Version 1.0.0 (May 2015)
270+
Version 1.0.0 (2015-05-15)
271271
========================
272272

273273
* ~1500 changes, numerous bugfixes

branches/tmp/mk/crates.mk

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ TARGET_CRATES := libc std flate arena term \
5454
log graphviz core rbml alloc \
5555
rustc_unicode rustc_bitflags \
5656
alloc_system
57-
RUSTC_CRATES := rustc rustc_typeck rustc_borrowck rustc_resolve rustc_driver \
57+
RUSTC_CRATES := rustc rustc_typeck rustc_mir rustc_borrowck rustc_resolve rustc_driver \
5858
rustc_trans rustc_back rustc_llvm rustc_privacy rustc_lint \
5959
rustc_data_structures rustc_front rustc_platform_intrinsics
6060
HOST_CRATES := syntax $(RUSTC_CRATES) rustdoc fmt_macros
@@ -70,11 +70,12 @@ DEPS_std := core libc rand alloc collections rustc_unicode \
7070
DEPS_graphviz := std
7171
DEPS_syntax := std term serialize log fmt_macros arena libc rustc_bitflags
7272
DEPS_rustc_driver := arena flate getopts graphviz libc rustc rustc_back rustc_borrowck \
73-
rustc_typeck rustc_resolve log syntax serialize rustc_llvm \
73+
rustc_typeck rustc_mir rustc_resolve log syntax serialize rustc_llvm \
7474
rustc_trans rustc_privacy rustc_lint rustc_front
7575

7676
DEPS_rustc_trans := arena flate getopts graphviz libc rustc rustc_back \
7777
log syntax serialize rustc_llvm rustc_front rustc_platform_intrinsics
78+
DEPS_rustc_mir := rustc rustc_front syntax
7879
DEPS_rustc_typeck := rustc syntax rustc_front rustc_platform_intrinsics
7980
DEPS_rustc_borrowck := rustc rustc_front log graphviz syntax
8081
DEPS_rustc_resolve := rustc rustc_front log syntax

branches/tmp/mk/main.mk

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -172,6 +172,18 @@ RUST_LIB_FLAGS_ST3 += -C prefer-dynamic
172172
# by not emitting them.
173173
RUSTFLAGS_STAGE0 += -Z no-landing-pads
174174

175+
# Enable MIR to "always build" for crates where this works. This is
176+
# just temporary while MIR is being actively built up -- it's just a
177+
# poor man's unit testing infrastructure. Anyway we only want this for
178+
# stage1/stage2.
179+
define ADD_MIR_FLAG
180+
RUSTFLAGS1_$(1) += -Z always-build-mir
181+
RUSTFLAGS2_$(1) += -Z always-build-mir
182+
endef
183+
$(foreach crate,$(TARGET_CRATES),$(eval $(call ADD_MIR_FLAG,$(crate))))
184+
$(foreach crate,$(RUSTC_CRATES),$(eval $(call ADD_MIR_FLAG,$(crate))))
185+
$(foreach crate,$(HOST_CRATES),$(eval $(call ADD_MIR_FLAG,$(crate))))
186+
175187
# platform-specific auto-configuration
176188
include $(CFG_SRC_DIR)mk/platform.mk
177189

branches/tmp/mk/target.mk

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,7 @@ $$(TLIB$(1)_T_$(2)_H_$(3))/stamp.$(4): \
9393
$$(LLVM_LIBDIR_RUSTFLAGS_$(2)) \
9494
$$(LLVM_STDCPP_RUSTFLAGS_$(2)) \
9595
$$(RUSTFLAGS_$(4)) \
96+
$$(RUSTFLAGS$(1)_$(4)) \
9697
$$(RUSTFLAGS$(1)_$(4)_T_$(2)) \
9798
--out-dir $$(@D) \
9899
-C extra-filename=-$$(CFG_FILENAME_EXTRA) \

branches/tmp/src/doc/index.md

Lines changed: 19 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -20,13 +20,30 @@ series of small examples.
2020

2121
[rbe]: http://rustbyexample.com/
2222

23-
# The Standard Library
23+
# Language Reference
24+
25+
Rust does not have an exact specification yet, but an effort to describe as much of
26+
the language in as much detail as possible is in [the reference](reference.html).
27+
28+
# Standard Library Reference
2429

2530
We have [API documentation for the entire standard
2631
library](std/index.html). There's a list of crates on the left with more
2732
specific sections, or you can use the search bar at the top to search for
2833
something if you know its name.
2934

35+
# Tools
36+
37+
[Cargo](https://crates.io) is the Rust's package manager providing access to libraries
38+
beyond the standard one, and its website contains lots of good documentation.
39+
40+
[`rustdoc`](book/documentation.html) is the Rust's documentation generator, a tool converting
41+
annotated source code into HTML docs.
42+
43+
A bunch of non-official tools are available, such as [Racer](https://github.com/phildawes/racer)
44+
(code completion engine), or [rustfmt](https://github.com/nrc/rustfmt) (source code formatter),
45+
or text editor plugins.
46+
3047
# Community & Getting Help
3148

3249
If you need help with something, or just want to talk about Rust with others,
@@ -54,25 +71,10 @@ There is an active [subreddit](https://reddit.com/r/rust) with lots of
5471
discussion and news about Rust.
5572

5673
There is also a [user forum](https://users.rust-lang.org), for all
57-
user-oriented discussion, and a [developer
74+
user-oriented discussion, and a [developer
5875
forum](https://internals.rust-lang.org/), where the development of Rust
5976
itself is discussed.
6077

61-
# Specification
62-
63-
Rust does not have an exact specification, but an effort to describe as much of
64-
the language in as much detail as possible is in [the reference](reference.html).
65-
66-
# Tools
67-
68-
Rust is still a young language, so there isn't a ton of tooling yet, but the
69-
tools we have are really nice.
70-
71-
[Cargo](https://crates.io) is Rust's package manager, and its website contains
72-
lots of good documentation.
73-
74-
[`rustdoc`](book/documentation.html) is used to generate documentation for Rust code.
75-
7678
# FAQs
7779

7880
There are questions that are asked quite often, so we've made FAQs for them:

branches/tmp/src/doc/nomicon/vec-drain.md

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -129,14 +129,16 @@ impl<'a, T> Drop for Drain<'a, T> {
129129
130130
impl<T> Vec<T> {
131131
pub fn drain(&mut self) -> Drain<T> {
132-
// this is a mem::forget safety thing. If Drain is forgotten, we just
133-
// leak the whole Vec's contents. Also we need to do this eventually
134-
// anyway, so why not do it now?
135-
self.len = 0;
136-
137132
unsafe {
133+
let iter = RawValIter::new(&self);
134+
135+
// this is a mem::forget safety thing. If Drain is forgotten, we just
136+
// leak the whole Vec's contents. Also we need to do this *eventually*
137+
// anyway, so why not do it now?
138+
self.len = 0;
139+
138140
Drain {
139-
iter: RawValIter::new(&self),
141+
iter: iter,
140142
vec: PhantomData,
141143
}
142144
}

branches/tmp/src/doc/nomicon/vec-final.md

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -155,13 +155,16 @@ impl<T> Vec<T> {
155155
}
156156

157157
pub fn drain(&mut self) -> Drain<T> {
158-
// this is a mem::forget safety thing. If this is forgotten, we just
159-
// leak the whole Vec's contents. Also we need to do this *eventually*
160-
// anyway, so why not do it now?
161-
self.len = 0;
162158
unsafe {
159+
let iter = RawValIter::new(&self);
160+
161+
// this is a mem::forget safety thing. If Drain is forgotten, we just
162+
// leak the whole Vec's contents. Also we need to do this *eventually*
163+
// anyway, so why not do it now?
164+
self.len = 0;
165+
163166
Drain {
164-
iter: RawValIter::new(&self),
167+
iter: iter,
165168
vec: PhantomData,
166169
}
167170
}

branches/tmp/src/doc/trpl/advanced-linking.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,8 +34,8 @@ formal `#[link(...)]` attribute on `extern` blocks instead.
3434

3535
# Static linking
3636

37-
Static linking refers to the process of creating output that contain all
38-
required libraries and so don't need libraries installed on every system where
37+
Static linking refers to the process of creating output that contains all
38+
required libraries and so doesn't need libraries installed on every system where
3939
you want to use your compiled project. Pure-Rust dependencies are statically
4040
linked by default so you can use created binaries and libraries without
4141
installing Rust everywhere. By contrast, native libraries

branches/tmp/src/doc/trpl/macros.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -313,7 +313,7 @@ fn main() {
313313
}
314314
```
315315

316-
This works because Rust has a [hygienic macro system][]. Each macro expansion
316+
This works because Rust has a [hygienic macro system][https://en.wikipedia.org/wiki/Hygienic_macro]. Each macro expansion
317317
happens in a distinct ‘syntax context’, and each variable is tagged with the
318318
syntax context where it was introduced. It’s as though the variable `state`
319319
inside `main` is painted a different "color" from the variable `state` inside

branches/tmp/src/doc/trpl/method-syntax.md

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ can be awkward. Consider this code:
77
baz(bar(foo));
88
```
99

10-
We would read this left-to right, and so we see ‘baz bar foo’. But this isn’t the
10+
We would read this left-to-right, and so we see ‘baz bar foo’. But this isn’t the
1111
order that the functions would get called in, that’s inside-out: ‘foo bar baz’.
1212
Wouldn’t it be nice if we could do this instead?
1313

@@ -45,17 +45,17 @@ This will print `12.566371`.
4545

4646

4747

48-
We’ve made a struct that represents a circle. We then write an `impl` block,
48+
We’ve made a `struct` that represents a circle. We then write an `impl` block,
4949
and inside it, define a method, `area`.
5050

51-
Methods take a special first parameter, of which there are three variants:
51+
Methods take a special first parameter, of which there are three variants:
5252
`self`, `&self`, and `&mut self`. You can think of this first parameter as
5353
being the `foo` in `foo.bar()`. The three variants correspond to the three
5454
kinds of things `foo` could be: `self` if it’s just a value on the stack,
5555
`&self` if it’s a reference, and `&mut self` if it’s a mutable reference.
5656
Because we took the `&self` parameter to `area`, we can use it just like any
5757
other parameter. Because we know it’s a `Circle`, we can access the `radius`
58-
just like we would with any other struct.
58+
just like we would with any other `struct`.
5959

6060
We should default to using `&self`, as you should prefer borrowing over taking
6161
ownership, as well as taking immutable references over mutable ones. Here’s an
@@ -120,12 +120,12 @@ Check the return type:
120120
```rust
121121
# struct Circle;
122122
# impl Circle {
123-
fn grow(&self) -> Circle {
123+
fn grow(&self, increment: f64) -> Circle {
124124
# Circle } }
125125
```
126126

127127
We just say we’re returning a `Circle`. With this method, we can grow a new
128-
circle to any arbitrary size.
128+
`Circle` to any arbitrary size.
129129

130130
# Associated functions
131131

@@ -161,7 +161,7 @@ methods’.
161161

162162
# Builder Pattern
163163

164-
Let’s say that we want our users to be able to create Circles, but we will
164+
Let’s say that we want our users to be able to create `Circle`s, but we will
165165
allow them to only set the properties they care about. Otherwise, the `x`
166166
and `y` attributes will be `0.0`, and the `radius` will be `1.0`. Rust doesn’t
167167
have method overloading, named arguments, or variable arguments. We employ
@@ -224,7 +224,7 @@ fn main() {
224224
}
225225
```
226226

227-
What we’ve done here is make another struct, `CircleBuilder`. We’ve defined our
227+
What we’ve done here is make another `struct`, `CircleBuilder`. We’ve defined our
228228
builder methods on it. We’ve also defined our `area()` method on `Circle`. We
229229
also made one more method on `CircleBuilder`: `finalize()`. This method creates
230230
our final `Circle` from the builder. Now, we’ve used the type system to enforce

branches/tmp/src/etc/featureck.py

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -47,20 +47,24 @@
4747
is_feature_line = True
4848

4949
if is_feature_line:
50-
line = line.replace("(", "").replace("),", "").replace(")", "")
50+
# turn ` ("foo", "1.0.0", Some(10), Active)` into
51+
# `"foo", "1.0.0", Some(10), Active`
52+
line = line.strip(' ,()')
5153
parts = line.split(",")
52-
if len(parts) != 3:
54+
if len(parts) != 4:
5355
print("error: unexpected number of components in line: " + original_line)
5456
sys.exit(1)
5557
feature_name = parts[0].strip().replace('"', "")
5658
since = parts[1].strip().replace('"', "")
57-
status = parts[2].strip()
59+
issue = parts[2].strip()
60+
status = parts[3].strip()
5861
assert len(feature_name) > 0
5962
assert len(since) > 0
63+
assert len(issue) > 0
6064
assert len(status) > 0
6165

6266
language_feature_names += [feature_name]
63-
language_features += [(feature_name, since, status)]
67+
language_features += [(feature_name, since, issue, status)]
6468

6569
assert len(language_features) > 0
6670

@@ -158,7 +162,7 @@
158162
status = "unstable"
159163
stable_since = None
160164

161-
if f[2] == "Accepted":
165+
if f[3] == "Accepted":
162166
status = "stable"
163167
if status == "stable":
164168
stable_since = f[1]

branches/tmp/src/libarena/lib.rs

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -220,7 +220,7 @@ impl<'longer_than_self> Arena<'longer_than_self> {
220220
*self.copy_head.borrow_mut() =
221221
chunk((new_min_chunk_size + 1).next_power_of_two(), true);
222222

223-
return self.alloc_copy_inner(n_bytes, align);
223+
self.alloc_copy_inner(n_bytes, align)
224224
}
225225

226226
#[inline]
@@ -247,7 +247,7 @@ impl<'longer_than_self> Arena<'longer_than_self> {
247247
mem::align_of::<T>());
248248
let ptr = ptr as *mut T;
249249
ptr::write(&mut (*ptr), op());
250-
return &mut *ptr;
250+
&mut *ptr
251251
}
252252
}
253253

@@ -261,7 +261,7 @@ impl<'longer_than_self> Arena<'longer_than_self> {
261261
*self.head.borrow_mut() =
262262
chunk((new_min_chunk_size + 1).next_power_of_two(), false);
263263

264-
return self.alloc_noncopy_inner(n_bytes, align);
264+
self.alloc_noncopy_inner(n_bytes, align)
265265
}
266266

267267
#[inline]
@@ -290,7 +290,7 @@ impl<'longer_than_self> Arena<'longer_than_self> {
290290

291291
unsafe {
292292
let buf = head.as_ptr();
293-
return (buf.offset(tydesc_start as isize), buf.offset(start as isize));
293+
(buf.offset(tydesc_start as isize), buf.offset(start as isize))
294294
}
295295
}
296296

@@ -312,7 +312,7 @@ impl<'longer_than_self> Arena<'longer_than_self> {
312312
// the object is there.
313313
*ty_ptr = bitpack_tydesc_ptr(tydesc, true);
314314

315-
return &mut *ptr;
315+
&mut *ptr
316316
}
317317
}
318318

@@ -486,14 +486,12 @@ impl<T> TypedArena<T> {
486486
self.grow()
487487
}
488488

489-
let ptr: &mut T = unsafe {
489+
unsafe {
490490
let ptr: &mut T = &mut *(self.ptr.get() as *mut T);
491491
ptr::write(ptr, object);
492492
self.ptr.set(self.ptr.get().offset(1));
493493
ptr
494-
};
495-
496-
ptr
494+
}
497495
}
498496

499497
/// Grows the arena.

branches/tmp/src/libcollections/macros.rs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,12 @@
3232
/// Note that unlike array expressions this syntax supports all elements
3333
/// which implement `Clone` and the number of elements doesn't have to be
3434
/// a constant.
35+
///
36+
/// This will use `clone()` to duplicate an expression, so one should be careful
37+
/// using this with types having a nonstandard `Clone` implementation. For
38+
/// example, `vec![Rc::new(1); 5]` will create a vector of five references
39+
/// to the same boxed integer value, not five references pointing to independently
40+
/// boxed integers.
3541
#[cfg(not(test))]
3642
#[macro_export]
3743
#[stable(feature = "rust1", since = "1.0.0")]

branches/tmp/src/libcore/slice.rs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -303,8 +303,10 @@ impl<T> SliceExt for [T] {
303303
fn split_at_mut(&mut self, mid: usize) -> (&mut [T], &mut [T]) {
304304
let len = self.len();
305305
let ptr = self.as_mut_ptr();
306-
assert!(mid <= len);
306+
307307
unsafe {
308+
assert!(mid <= len);
309+
308310
(from_raw_parts_mut(ptr, mid),
309311
from_raw_parts_mut(ptr.offset(mid as isize), len - mid))
310312
}

0 commit comments

Comments
 (0)