Skip to content

Commit c00d80e

Browse files
committed
---
yaml --- r: 130777 b: refs/heads/master c: 3ca53d3 h: refs/heads/master i: 130775: 6e90217 v: v3
1 parent 71f3d71 commit c00d80e

File tree

185 files changed

+3025
-3651
lines changed

Some content is hidden

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

185 files changed

+3025
-3651
lines changed

[refs]

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
---
2-
refs/heads/master: 6b487ebbc02d7fdf84087add9d139776aac06326
2+
refs/heads/master: 3ca53d3a100a4466ed91df6d5a696d112db82b68
33
refs/heads/snap-stage1: e33de59e47c5076a89eadeb38f4934f58a3618a6
44
refs/heads/snap-stage3: 6faa4f33a42de32579e02a8d030db920d360e2b5
55
refs/heads/try: a2473a89da106f7dd3be86e9d52fe23f43d5bfa5

trunk/Makefile.in

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,6 @@
6565
#
6666
# * `VERBOSE=1` - Print all commands. Use this to see what's going on.
6767
# * `RUSTFLAGS=...` - Add compiler flags to all `rustc` invocations
68-
# * `JEMALLOC_FLAGS=...` - Pass flags to jemalloc's configure script
6968
#
7069
# * `TESTNAME=...` - Specify the name of tests to run
7170
# * `CHECK_IGNORED=1` - Run normally-ignored tests

trunk/configure

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -707,7 +707,7 @@ then
707707
| cut -d ' ' -f 2)
708708

709709
case $CFG_CLANG_VERSION in
710-
(3.0svn | 3.0 | 3.1* | 3.2* | 3.3* | 3.4* | 3.5* | 3.6*)
710+
(3.0svn | 3.0 | 3.1* | 3.2* | 3.3* | 3.4* | 3.5* )
711711
step_msg "found ok version of CLANG: $CFG_CLANG_VERSION"
712712
if [ -z "$CC" ]
713713
then

trunk/mk/main.mk

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -90,19 +90,15 @@ endif
9090
CFG_RUSTC_FLAGS := $(RUSTFLAGS)
9191
CFG_GCCISH_CFLAGS :=
9292
CFG_GCCISH_LINK_FLAGS :=
93-
CFG_JEMALLOC_FLAGS :=
9493

9594
ifdef CFG_DISABLE_OPTIMIZE
9695
$(info cfg: disabling rustc optimization (CFG_DISABLE_OPTIMIZE))
9796
CFG_RUSTC_FLAGS +=
98-
CFG_JEMALLOC_FLAGS += --enable-debug
9997
else
10098
# The rtopt cfg turns off runtime sanity checks
10199
CFG_RUSTC_FLAGS += -O --cfg rtopt
102100
endif
103101

104-
CFG_JEMALLOC_FLAGS += $(JEMALLOC_FLAGS)
105-
106102
ifdef CFG_DISABLE_DEBUG
107103
CFG_RUSTC_FLAGS += --cfg ndebug
108104
CFG_GCCISH_CFLAGS += -DRUST_NDEBUG

trunk/mk/rt.mk

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -301,7 +301,7 @@ JEMALLOC_LOCAL_$(1) := $$(JEMALLOC_BUILD_DIR_$(1))/lib/$$(JEMALLOC_REAL_NAME_$(1
301301
$$(JEMALLOC_LOCAL_$(1)): $$(JEMALLOC_DEPS) $$(MKFILE_DEPS)
302302
@$$(call E, make: jemalloc)
303303
cd "$$(JEMALLOC_BUILD_DIR_$(1))"; "$(S)src/jemalloc/configure" \
304-
$$(JEMALLOC_ARGS_$(1)) --with-jemalloc-prefix=je_ $(CFG_JEMALLOC_FLAGS) \
304+
$$(JEMALLOC_ARGS_$(1)) --with-jemalloc-prefix=je_ \
305305
--build=$(CFG_BUILD) --host=$(1) \
306306
CC="$$(CC_$(1))" \
307307
AR="$$(AR_$(1))" \

trunk/src/doc/guide.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -116,7 +116,7 @@ but also working properly. And printing information to the screen is a pretty
116116
common thing to do.
117117

118118
The first thing that we need to do is make a file to put our code in. I like
119-
to make a `projects` directory in my home directory, and keep all my projects
119+
to make a projects directory in my home directory, and keep all my projects
120120
there. Rust does not care where your code lives.
121121

122122
This actually leads to one other concern we should address: this tutorial will
@@ -765,7 +765,7 @@ This is a deliberate design decision. While full-program inference is possible,
765765
languages which have it, like Haskell, often suggest that documenting your
766766
types explicitly is a best-practice. We agree that forcing functions to declare
767767
types while allowing for inference inside of function bodies is a wonderful
768-
sweet spot between full inference and no inference.
768+
compromise between full inference and no inference.
769769

770770
What about returning a value? Here's a function that adds one to an integer:
771771

trunk/src/doc/index.md

Lines changed: 63 additions & 73 deletions
Original file line numberDiff line numberDiff line change
@@ -1,55 +1,18 @@
11
% Rust Documentation
22

3-
Welcome to the Rust documentation! You can use the section headings above
4-
to jump to any particular section.
5-
6-
# Getting Started
7-
8-
If you haven't seen Rust at all yet, the first thing you should read is the [30
9-
minute intro](intro.html). It will give you an overview of the basic ideas of Rust
10-
at a high level.
11-
12-
Once you know you really want to learn Rust, the next step is reading [the
13-
guide](guide.html). It is a lengthy explanation of Rust, its syntax, and its
14-
concepts. Upon completing the guide, you'll be an intermediate Rust developer,
15-
and will have a good grasp of the fundamental ideas behind Rust.
16-
17-
# Community & Getting Help
18-
19-
If you need help with something, or just want to talk about Rust with others,
20-
there's a few places you can do that:
21-
22-
The Rust IRC channels on [irc.mozilla.org](http://irc.mozilla.org/) are the
23-
fastest way to get help.
24-
[`#rust`](http://chat.mibbit.com/?server=irc.mozilla.org&channel=%23rust) is
25-
the general discussion channel, and you'll find people willing to help you with
26-
any questions you may have.
27-
28-
There are also three specialty channels:
29-
[`#rust-gamedev`](http://chat.mibbit.com/?server=irc.mozilla.org&channel=%23rust-gamedev)
30-
and
31-
[`#rust-osdev`](http://chat.mibbit.com/?server=irc.mozilla.org&channel=%23rust-osdev)
32-
are for game development and operating system development, respectively.
33-
There's also
34-
[`#rust-internals`](http://chat.mibbit.com/?server=irc.mozilla.org&channel=%23rust-internals), which is for discussion of the development of Rust itself.
35-
36-
You can also get help on [Stack
37-
Overflow](http://stackoverflow.com/questions/tagged/rust). Searching for your
38-
problem might reveal someone who has asked it before!
39-
40-
There is an active [subreddit](http://reddit.com/r/rust) with lots of
41-
discussion about Rust.
42-
43-
There is also a [developer forum](http://discuss.rust-lang.org/), where the
44-
development of Rust itself is discussed.
3+
<!-- Completely hide the TOC and the section numbers -->
4+
<style type="text/css">
5+
#TOC { display: none; }
6+
.header-section-number { display: none; }
7+
li {list-style-type: none; }
8+
</style>
459

10+
* [A 30-minute Intro to Rust](intro.html)
11+
* [The Rust tutorial](tutorial.html) (* [PDF](tutorial.pdf))
12+
* [The Rust reference manual](rust.html) (* [PDF](rust.pdf))
4613

4714
# Guides
4815

49-
Rust Guides are in-depth looks at a particular topic that's relevant to Rust
50-
development. If you're trying to figure out how to do something, there may be
51-
a guide that can help you out:
52-
5316
* [Strings](guide-strings.html)
5417
* [Pointers](guide-pointers.html)
5518
* [References and Lifetimes](guide-lifetimes.html)
@@ -61,43 +24,70 @@ a guide that can help you out:
6124
* [Testing](guide-testing.html)
6225
* [Rust's Runtime](guide-runtime.html)
6326

64-
# Tools
65-
66-
Rust's still a young language, so there isn't a ton of tooling yet, but the
67-
tools we have are really nice.
68-
69-
[Cargo](http://crates.io) is Rust's package manager, and its website contains
70-
lots of good documentation.
71-
72-
[The `rustdoc` manual](rustdoc.html) contains information about Rust's
73-
documentation tool.
74-
7527
# FAQs
7628

77-
There are questions that are asked quite often, and so we've made FAQs for them:
78-
7929
* [Language Design FAQ](complement-design-faq.html)
8030
* [Language FAQ](complement-lang-faq.html)
8131
* [Project FAQ](complement-project-faq.html)
8232
* [How to submit a bug report](complement-bugreport.html)
8333

84-
# The standard library
85-
86-
You can find function-level documentation for the entire standard library
87-
[here](std/index.html). There's a list of crates on the left with more specific
88-
sections, or you can use the search bar at the top to search for something if
89-
you know its name.
34+
# Libraries
35+
36+
* [The standard library, `std`](std/index.html)
37+
38+
<!-- force the two lists to be separate -->
39+
40+
* [The `arena` allocation library](arena/index.html)
41+
* [The `collections` library](collections/index.html)
42+
* [The `flate` compression library](flate/index.html)
43+
* [The `fourcc` four-character code library](fourcc/index.html)
44+
* [The `getopts` argument parsing library](getopts/index.html)
45+
* [The `glob` file path matching library](glob/index.html)
46+
* [The `green` M:N runtime library](green/index.html)
47+
* [The `hexfloat` library for hexadecimal floating-point literals](hexfloat/index.html)
48+
* [The `libc` bindings](libc/index.html)
49+
* [The `native` 1:1 threading runtime](native/index.html)
50+
* [The `num` arbitrary precision numerics library](num/index.html)
51+
* [The `rand` library for random numbers and distributions](rand/index.html)
52+
* [The `regex` library for regular expressions](regex/index.html)
53+
* [The `rustc` compiler](rustc/index.html)
54+
* [The `rustuv` M:N I/O library](rustuv/index.html)
55+
* [The `semver` version collation library](semver/index.html)
56+
* [The `serialize` value encoding/decoding library](serialize/index.html)
57+
* [The `sync` library for concurrency-enabled mechanisms and primitives](sync/index.html)
58+
* [The `syntax` library, the Rust parser](syntax/index.html)
59+
* [The `term` terminal-handling library](term/index.html)
60+
* [The `test` library containing the unit-testing & micro-benchmark framework](test/index.html)
61+
* [The `time` library](time/index.html)
62+
* [The `uuid` 128-bit universally unique identifier library](uuid/index.html)
63+
* [The `url` library](url/index.html)
64+
* [The `log` library](log/index.html)
65+
66+
# Tooling
67+
68+
* [The `rustdoc` manual](rustdoc.html)
9069

9170
# External documentation
9271

93-
*Note: While these are great resources for learning Rust, they may track a
94-
particular version of Rust that is likely not exactly the same as that for
95-
which this documentation was generated.*
72+
*Note: While these are great resources for learning Rust, they may
73+
track a particular version of Rust that is likely not exactly the same
74+
as that for which this documentation was generated.*
9675

97-
* [Rust by Example] - Short examples of common tasks in Rust (tracks the master
98-
branch).
99-
* [Rust for Rubyists] - The first community tutorial for Rust. Tracks the last
100-
stable release. Not just for Ruby programmers.
76+
* [Rust for Rubyists] - An excellent introduction for Rust; not just for Rubyists (tracks the most recent release).
77+
* [Rust by Example] - Short examples of common tasks in Rust (tracks the master branch).
78+
* [The Rust wiki](http://github.com/rust-lang/rust/wiki)
10179

102-
[Rust by Example]: http://rustbyexample.com/
10380
[Rust for Rubyists]: http://www.rustforrubyists.com/
81+
[Rust by Example]: http://rustbyexample.com/
82+
83+
# Community
84+
85+
* [Reddit](http://reddit.com/r/rust)
86+
* [Stack Overflow](http://stackoverflow.com/questions/tagged/rust)
87+
* [Developer Forum](http://discuss.rust-lang.org/)
88+
* The Rust IRC channels on [irc.mozilla.org](http://irc.mozilla.org/):
89+
* [`#rust`](http://chat.mibbit.com/?server=irc.mozilla.org&channel=%23rust) - general discussion
90+
* [`#rust-gamedev`](http://chat.mibbit.com/?server=irc.mozilla.org&channel=%23rust-gamedev) - game development
91+
* [`#rust-internals`](http://chat.mibbit.com/?server=irc.mozilla.org&channel=%23rust-internals) - compiler and libraries
92+
* [`#rust-osdev`](http://chat.mibbit.com/?server=irc.mozilla.org&channel=%23rust-osdev) - operating system development
93+

trunk/src/doc/rust.md

Lines changed: 29 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -3290,19 +3290,17 @@ between `_` and `..` is that the pattern `C(_)` is only type-correct if `C` has
32903290
exactly one argument, while the pattern `C(..)` is type-correct for any enum
32913291
variant `C`, regardless of how many arguments `C` has.
32923292

3293-
Used inside a vector pattern, `..` stands for any number of elements, when the
3294-
`advanced_slice_patterns` feature gate is turned on. This wildcard can be used
3295-
at most once for a given vector, which implies that it cannot be used to
3296-
specifically match elements that are at an unknown distance from both ends of a
3297-
vector, like `[.., 42, ..]`. If followed by a variable name, it will bind the
3298-
corresponding slice to the variable. Example:
3293+
Used inside a vector pattern, `..` stands for any number of elements. This
3294+
wildcard can be used at most once for a given vector, which implies that it
3295+
cannot be used to specifically match elements that are at an unknown distance
3296+
from both ends of a vector, like `[.., 42, ..]`. If followed by a variable name,
3297+
it will bind the corresponding slice to the variable. Example:
32993298

33003299
~~~~
3301-
# #![feature(advanced_slice_patterns)]
33023300
fn is_symmetric(list: &[uint]) -> bool {
33033301
match list {
33043302
[] | [_] => true,
3305-
[x, inside.., y] if x == y => is_symmetric(inside),
3303+
[x, ..inside, y] if x == y => is_symmetric(inside),
33063304
_ => false
33073305
}
33083306
}
@@ -3566,36 +3564,34 @@ let (a, b) = p;
35663564
assert!(b != "world");
35673565
~~~~
35683566

3569-
### Vector, Array, and Slice types
3567+
### Vector types
35703568

3571-
Rust has three different types for a list of items:
3569+
The vector type constructor represents a homogeneous array of values of a given type.
3570+
A vector has a fixed size.
3571+
(Operations like `vec.push` operate solely on owned vectors.)
3572+
A vector type can be annotated with a _definite_ size, such as `[int, ..10]`.
3573+
Such a definite-sized vector type is a first-class type, since its size is known statically.
3574+
A vector without such a size is said to be of _indefinite_ size,
3575+
and is therefore not a _first-class_ type.
3576+
An indefinite-size vector can only be instantiated through a pointer type,
3577+
such as `&[T]` or `Vec<T>`.
3578+
The kind of a vector type depends on the kind of its element type,
3579+
as with other simple structural types.
35723580

3573-
* `Vec<T>`, a 'vector'
3574-
* `[T ..N]`, an 'array'
3575-
* `&[T]`, a 'slice'.
3581+
Expressions producing vectors of definite size cannot be evaluated in a
3582+
context expecting a vector of indefinite size; one must copy the
3583+
definite-sized vector contents into a distinct vector of indefinite size.
35763584

3577-
A vector is a heap-allocated list of `T`. A vector has ownership over the data
3578-
inside of it. It is also able to grow and change in size. It's important to note
3579-
that `Vec<T>` is a library type, it's not actually part of the core language.
3585+
An example of a vector type and its use:
35803586

3581-
An array has a fixed size, and can be allocated on either the stack or the heap.
3582-
3583-
A slice is a 'view' into a vector or array. It doesn't own the data it points
3584-
to, it borrows it.
3585-
3586-
An example of each kind:
3587-
3588-
```{rust}
3589-
let vec: Vec<int> = vec![1, 2, 3];
3590-
let arr: [int, ..3] = [1, 2, 3];
3591-
let s: &[int] = vec.as_slice();
3592-
```
3593-
3594-
As you can see, the `vec!` macro allows you to create a `Vec<T>` easily. The
3595-
`vec!` macro is also part of the standard library, rather than the language.
3587+
~~~~
3588+
let v: &[int] = &[7, 5, 3];
3589+
let i: int = v[2];
3590+
assert!(i == 3);
3591+
~~~~
35963592

3597-
All in-bounds elements of vectors, arrays, and slices are always initialized,
3598-
and access to a vector, array, or slice is always bounds-checked.
3593+
All in-bounds elements of a vector are always initialized,
3594+
and access to a vector is always bounds-checked.
35993595

36003596
### Structure types
36013597

trunk/src/doc/tutorial.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1707,7 +1707,7 @@ let score = match numbers {
17071707
[] => 0,
17081708
[a] => a * 10,
17091709
[a, b] => a * 6 + b * 4,
1710-
[a, b, c, rest..] => a * 5 + b * 3 + c * 2 + rest.len() as int
1710+
[a, b, c, ..rest] => a * 5 + b * 3 + c * 2 + rest.len() as int
17111711
};
17121712
~~~~
17131713

trunk/src/etc/licenseck.py

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -43,15 +43,12 @@
4343
"libsync/mpmc_bounded_queue.rs", # BSD
4444
"libsync/mpsc_intrusive.rs", # BSD
4545
"test/bench/shootout-binarytrees.rs", # BSD
46-
"test/bench/shootout-chameneos-redux.rs", # BSD
4746
"test/bench/shootout-fannkuch-redux.rs", # BSD
4847
"test/bench/shootout-k-nucleotide.rs", # BSD
4948
"test/bench/shootout-mandelbrot.rs", # BSD
5049
"test/bench/shootout-meteor.rs", # BSD
51-
"test/bench/shootout-nbody.rs", # BSD
5250
"test/bench/shootout-pidigits.rs", # BSD
5351
"test/bench/shootout-regex-dna.rs", # BSD
54-
"test/bench/shootout-reverse-complement.rs", # BSD
5552
"test/bench/shootout-threadring.rs", # BSD
5653
]
5754

trunk/src/liballoc/heap.rs

Lines changed: 2 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414

1515
use core::ptr::RawPtr;
1616
#[cfg(not(test))] use core::raw;
17-
#[cfg(stage0, not(test))] use util;
17+
#[cfg(not(test))] use util;
1818

1919
/// Returns a pointer to `size` bytes of memory.
2020
///
@@ -119,7 +119,7 @@ unsafe fn exchange_free(ptr: *mut u8, size: uint, align: uint) {
119119
}
120120

121121
// FIXME: #7496
122-
#[cfg(stage0, not(test))]
122+
#[cfg(not(test))]
123123
#[lang="closure_exchange_malloc"]
124124
#[inline]
125125
#[allow(deprecated)]
@@ -134,21 +134,6 @@ unsafe fn closure_exchange_malloc(drop_glue: fn(*mut u8), size: uint,
134134
alloc as *mut u8
135135
}
136136

137-
// FIXME: #7496
138-
#[cfg(not(stage0), not(test))]
139-
#[lang="closure_exchange_malloc"]
140-
#[inline]
141-
#[allow(deprecated)]
142-
unsafe fn closure_exchange_malloc(drop_glue: fn(*mut u8), size: uint,
143-
align: uint) -> *mut u8 {
144-
let p = allocate(size, align);
145-
146-
let alloc = p as *mut raw::Box<()>;
147-
(*alloc).drop_glue = drop_glue;
148-
149-
alloc as *mut u8
150-
}
151-
152137
#[cfg(jemalloc)]
153138
mod imp {
154139
use core::option::{None, Option};

0 commit comments

Comments
 (0)