Skip to content

Commit ff31ddf

Browse files
committed
---
yaml --- r: 130778 b: refs/heads/master c: a9d8f29 h: refs/heads/master v: v3
1 parent c00d80e commit ff31ddf

File tree

184 files changed

+3634
-3015
lines changed

Some content is hidden

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

184 files changed

+3634
-3015
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: 3ca53d3a100a4466ed91df6d5a696d112db82b68
2+
refs/heads/master: a9d8f295e0dbbc607ec97339b050cbf9132d3612
33
refs/heads/snap-stage1: e33de59e47c5076a89eadeb38f4934f58a3618a6
44
refs/heads/snap-stage3: 6faa4f33a42de32579e02a8d030db920d360e2b5
55
refs/heads/try: a2473a89da106f7dd3be86e9d52fe23f43d5bfa5

trunk/Makefile.in

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,7 @@
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
6869
#
6970
# * `TESTNAME=...` - Specify the name of tests to run
7071
# * `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* )
710+
(3.0svn | 3.0 | 3.1* | 3.2* | 3.3* | 3.4* | 3.5* | 3.6*)
711711
step_msg "found ok version of CLANG: $CFG_CLANG_VERSION"
712712
if [ -z "$CC" ]
713713
then

trunk/mk/main.mk

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

9495
ifdef CFG_DISABLE_OPTIMIZE
9596
$(info cfg: disabling rustc optimization (CFG_DISABLE_OPTIMIZE))
9697
CFG_RUSTC_FLAGS +=
98+
CFG_JEMALLOC_FLAGS += --enable-debug
9799
else
98100
# The rtopt cfg turns off runtime sanity checks
99101
CFG_RUSTC_FLAGS += -O --cfg rtopt
100102
endif
101103

104+
CFG_JEMALLOC_FLAGS += $(JEMALLOC_FLAGS)
105+
102106
ifdef CFG_DISABLE_DEBUG
103107
CFG_RUSTC_FLAGS += --cfg ndebug
104108
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_ \
304+
$$(JEMALLOC_ARGS_$(1)) --with-jemalloc-prefix=je_ $(CFG_JEMALLOC_FLAGS) \
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-
compromise between full inference and no inference.
768+
sweet spot 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: 73 additions & 63 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,55 @@
11
% Rust Documentation
22

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>
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.
945

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))
1346

1447
# Guides
1548

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+
1653
* [Strings](guide-strings.html)
1754
* [Pointers](guide-pointers.html)
1855
* [References and Lifetimes](guide-lifetimes.html)
@@ -24,70 +61,43 @@ li {list-style-type: none; }
2461
* [Testing](guide-testing.html)
2562
* [Rust's Runtime](guide-runtime.html)
2663

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+
2775
# FAQs
2876

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

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)
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.
6990

7091
# External documentation
7192

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.*
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.*
7596

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)
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.
79101

80-
[Rust for Rubyists]: http://www.rustforrubyists.com/
81102
[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-
103+
[Rust for Rubyists]: http://www.rustforrubyists.com/

trunk/src/doc/rust.md

Lines changed: 33 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -3290,17 +3290,19 @@ 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. 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:
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:
32983299

32993300
~~~~
3301+
# #![feature(advanced_slice_patterns)]
33003302
fn is_symmetric(list: &[uint]) -> bool {
33013303
match list {
33023304
[] | [_] => true,
3303-
[x, ..inside, y] if x == y => is_symmetric(inside),
3305+
[x, inside.., y] if x == y => is_symmetric(inside),
33043306
_ => false
33053307
}
33063308
}
@@ -3564,34 +3566,36 @@ let (a, b) = p;
35643566
assert!(b != "world");
35653567
~~~~
35663568

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

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.
3571+
Rust has three different types for a list of items:
35803572

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.
3573+
* `Vec<T>`, a 'vector'
3574+
* `[T ..N]`, an 'array'
3575+
* `&[T]`, a 'slice'.
35843576

3585-
An example of a vector type and its use:
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.
35863580

3587-
~~~~
3588-
let v: &[int] = &[7, 5, 3];
3589-
let i: int = v[2];
3590-
assert!(i == 3);
3591-
~~~~
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.
35923596

3593-
All in-bounds elements of a vector are always initialized,
3594-
and access to a vector is always bounds-checked.
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.
35953599

35963600
### Structure types
35973601

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: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,12 +43,15 @@
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
4647
"test/bench/shootout-fannkuch-redux.rs", # BSD
4748
"test/bench/shootout-k-nucleotide.rs", # BSD
4849
"test/bench/shootout-mandelbrot.rs", # BSD
4950
"test/bench/shootout-meteor.rs", # BSD
51+
"test/bench/shootout-nbody.rs", # BSD
5052
"test/bench/shootout-pidigits.rs", # BSD
5153
"test/bench/shootout-regex-dna.rs", # BSD
54+
"test/bench/shootout-reverse-complement.rs", # BSD
5255
"test/bench/shootout-threadring.rs", # BSD
5356
]
5457

trunk/src/liballoc/heap.rs

Lines changed: 17 additions & 2 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(not(test))] use util;
17+
#[cfg(stage0, 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(not(test))]
122+
#[cfg(stage0, not(test))]
123123
#[lang="closure_exchange_malloc"]
124124
#[inline]
125125
#[allow(deprecated)]
@@ -134,6 +134,21 @@ 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+
137152
#[cfg(jemalloc)]
138153
mod imp {
139154
use core::option::{None, Option};

0 commit comments

Comments
 (0)