Skip to content

Commit 0876628

Browse files
committed
---
yaml --- r: 131046 b: refs/heads/try c: a0b3701 h: refs/heads/master v: v3
1 parent 65a0a76 commit 0876628

File tree

188 files changed

+9898
-7045
lines changed

Some content is hidden

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

188 files changed

+9898
-7045
lines changed

[refs]

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
refs/heads/master: 9c68679f2ebd5b165694e9346e4ad96a3e32aceb
33
refs/heads/snap-stage1: e33de59e47c5076a89eadeb38f4934f58a3618a6
44
refs/heads/snap-stage3: 6faa4f33a42de32579e02a8d030db920d360e2b5
5-
refs/heads/try: 5eea93af39df1b9b64cace3c3afc78671a71ff8c
5+
refs/heads/try: a0b3701a21fcb9c63c8f3d4d13ff09b7ba089341
66
refs/tags/release-0.1: 1f5c5126e96c79d22cb7862f75304136e204f105
77
refs/heads/ndm: f3868061cd7988080c30d6d5bf352a5a5fe2460b
88
refs/heads/try2: 147ecfdd8221e4a4d4e090486829a06da1e0ca3c

branches/try/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

branches/try/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

branches/try/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))" \

branches/try/src/compiletest/runtest.rs

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1577,10 +1577,6 @@ fn _arm_push_aux_shared_library(config: &Config, testfile: &Path) {
15771577

15781578
// codegen tests (vs. clang)
15791579

1580-
fn make_o_name(config: &Config, testfile: &Path) -> Path {
1581-
output_base_name(config, testfile).with_extension("o")
1582-
}
1583-
15841580
fn append_suffix_to_stem(p: &Path, suffix: &str) -> Path {
15851581
if suffix.len() == 0 {
15861582
(*p).clone()
@@ -1596,14 +1592,13 @@ fn compile_test_and_save_bitcode(config: &Config, props: &TestProps,
15961592
// FIXME (#9639): This needs to handle non-utf8 paths
15971593
let link_args = vec!("-L".to_string(),
15981594
aux_dir.as_str().unwrap().to_string());
1599-
let llvm_args = vec!("--emit=obj".to_string(),
1600-
"--crate-type=lib".to_string(),
1601-
"-C".to_string(),
1602-
"save-temps".to_string());
1595+
let llvm_args = vec!("--emit=bc,obj".to_string(),
1596+
"--crate-type=lib".to_string());
16031597
let args = make_compile_args(config,
16041598
props,
16051599
link_args.append(llvm_args.as_slice()),
1606-
|a, b| ThisFile(make_o_name(a, b)), testfile);
1600+
|a, b| ThisDirectory(output_base_name(a, b).dir_path()),
1601+
testfile);
16071602
compose_and_run_compiler(config, props, testfile, args, None)
16081603
}
16091604

branches/try/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

branches/try/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/

branches/try/src/doc/rust.md

Lines changed: 27 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -2221,8 +2221,8 @@ These types help drive the compiler's analysis
22212221
: This type does not implement "copy", even if eligible
22222222
* `no_send_bound`
22232223
: This type does not implement "send", even if eligible
2224-
* `no_share_bound`
2225-
: This type does not implement "share", even if eligible
2224+
* `no_sync_bound`
2225+
: This type does not implement "sync", even if eligible
22262226
* `eh_personality`
22272227
: ___Needs filling in___
22282228
* `exchange_free`
@@ -3564,34 +3564,36 @@ let (a, b) = p;
35643564
assert!(b != "world");
35653565
~~~~
35663566

3567-
### Vector types
3567+
### Vector, Array, and Slice types
35683568

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

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

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

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

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

35963598
### Structure types
35973599

branches/try/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)