Skip to content

Rollup of 34 pull requests #22352

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
wants to merge 75 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
75 commits
Select commit Hold shift + click to select a range
995b159
rustdoc: Show must_use attribute
sanxiyn Feb 12, 2015
00a6ff9
Adjusting default CPUs for iOS
vhbit Feb 12, 2015
3df5c4a
Update LLVM to disable asserts in the PassInfo cache
dotdash Feb 12, 2015
9c686dc
Correct typo for 'underyling'
duaneedwards Feb 12, 2015
3d9528a
Unstabilise `words` for now.
huonw Feb 13, 2015
e4a9eb9
Remove `_VALUE` from the float extremes constants.
huonw Feb 13, 2015
b4a2861
Rename the "unsafe" lang item to "unsafe_cell"
lambda-fairy Feb 13, 2015
aef5551
Rename `unsafe_lang_item` to `unsafe_cell_lang_item`
lambda-fairy Feb 13, 2015
c5dba72
Remove reference to mailing list
iKevinY Feb 13, 2015
f28a333
Make if after colon lowercase
fhahn Feb 13, 2015
c6a647a
Replace map(|x| *x) with cloned().
ruuda Feb 13, 2015
1c7cb8b
Relpace map(|x| x.clone()) with cloned().
ruuda Feb 13, 2015
539866b
Replace map(|x| (*x).clone()) with cloned().
ruuda Feb 13, 2015
ce22f30
Make note of doc duplication with reexports
steveklabnik Feb 10, 2015
805a31f
Improve documentation for `Select::new()`.
steveklabnik Feb 13, 2015
4b25d75
Remove outdated information about copy/move from the reference
steveklabnik Feb 13, 2015
58a7d58
Re-word paragraph about enums and equality
steveklabnik Feb 13, 2015
114301f
Refer to LLVM rather than GCC wiki for atomic orderings
steveklabnik Feb 13, 2015
d414a39
Re-tag `slicing_syntax` as `Accepted`.
pnkfelix Feb 13, 2015
65eab6e
Add diverging functions to the book.
steveklabnik Feb 13, 2015
c9ad0d1
Revert incorrect map(|x| *x) -> cloned() substitutions.
ruuda Feb 13, 2015
a7d5c3f
Added all active features to the list in reference.md.
pnkfelix Feb 13, 2015
fb05f28
Add `#[rustc_error]` annotation, which causes trans to signal an error
nikomatsakis Feb 12, 2015
f48eda8
Fix small copy-paste typo
unode Feb 13, 2015
e478f66
Don't specify tuple layout.
steveklabnik Feb 13, 2015
9eb4436
Add link to module-level Option documentation.
steveklabnik Feb 13, 2015
ece19bf
Enhance static mut example in FFI chapter.
steveklabnik Feb 13, 2015
b19fda0
Remove ExactSizeIterator from 64-bit ranges.
Feb 13, 2015
effad62
Add the build date to the reported version. #21957
brson Feb 12, 2015
3df8245
add test for #21909
Feb 13, 2015
148d90b
clarfiy reference with regards to the value of block expressions
steveklabnik Feb 13, 2015
f64d912
Generate grammar.html and link to it from the reference.
steveklabnik Feb 13, 2015
6d2e3d4
Note that Vec<T> is heap allocated.
steveklabnik Feb 13, 2015
5e3ae10
Dramatically expand the docs of std::raw.
huonw Feb 12, 2015
7a52932
Make std::raw::Repr an unsafe trait
Feb 13, 2015
1e01f7f
Rename std::failure to std::panicking
iKevinY Feb 14, 2015
657081b
Normalize range syntax used in concurrency.md
Manishearth Feb 14, 2015
af7b891
Correct typo
shepmaster Feb 14, 2015
f658efe
Documentation Fixes
Feb 14, 2015
1a99315
Fix issue with generation
steveklabnik Feb 15, 2015
36ff7b9
Rollup merge of #22132 - steveklabnik:gh16645, r=alexcrichton
steveklabnik Feb 15, 2015
c4f6468
Rollup merge of #22201 - brson:version, r=nick29581
steveklabnik Feb 15, 2015
ee7dea9
Rollup merge of #22218 - huonw:raw-docs, r=steveklabnik,huonw
steveklabnik Feb 15, 2015
f5a2dff
Rollup merge of #22224 - sanxiyn:must-use, r=cmr
steveklabnik Feb 15, 2015
5957a16
Rollup merge of #22229 - vhbit:ios-default-cpus, r=alexcrichton
steveklabnik Feb 15, 2015
168736a
Rollup merge of #22238 - dotdash:llvmup_20150212, r=alexcrichton
steveklabnik Feb 15, 2015
fc104ff
Rollup merge of #22248 - duaneedwards:patch-1, r=Gankro
steveklabnik Feb 15, 2015
a03ff79
Rollup merge of #22253 - huonw:unstable-words, r=aturon
steveklabnik Feb 15, 2015
24cb751
Rollup merge of #22254 - huonw:float-value--, r=aturon
steveklabnik Feb 15, 2015
1eca6fb
Rollup merge of #22262 - lfairy:unsafe-cell-lang-item, r=alexcrichton
steveklabnik Feb 15, 2015
91ea661
Rollup merge of #22263 - iKevinY:no-mailing-list, r=nikomatsakis
steveklabnik Feb 15, 2015
8d4dd8b
Rollup merge of #22264 - fhahn:tiny-doc-fix2, r=Gankro
steveklabnik Feb 15, 2015
9c9a914
Rollup merge of #22268 - steveklabnik:improve_wait, r=nikomatsakis
steveklabnik Feb 15, 2015
79da52e
Rollup merge of #22269 - steveklabnik:gh22136, r=alexcrichton
steveklabnik Feb 15, 2015
48f1e58
Rollup merge of #22271 - steveklabnik:gh22035, r=nikomatsakis
steveklabnik Feb 15, 2015
c242922
Rollup merge of #22272 - steveklabnik:gh22064, r=alexcrichton
steveklabnik Feb 15, 2015
86920c5
Rollup merge of #22274 - pnkfelix:retag-slicing-syntax-as-accepted, r…
steveklabnik Feb 15, 2015
013769e
Rollup merge of #22275 - steveklabnik:gh7538, r=huonw
steveklabnik Feb 15, 2015
91e373a
Rollup merge of #22276 - ruud-v-a:map-clone, r=nikomatsakis
steveklabnik Feb 15, 2015
24ffd5b
Rollup merge of #22277 - pnkfelix:reference-update-feature-gate-list,…
steveklabnik Feb 15, 2015
c34f8fb
Rollup merge of #22278 - nikomatsakis:rustc-error, r=nikomatsakis
steveklabnik Feb 15, 2015
5a3aa4a
Rollup merge of #22280 - Unode:patch-1, r=steveklabnik
steveklabnik Feb 15, 2015
82e42a0
Rollup merge of #22284 - steveklabnik:fix_another_lie, r=nikomatsakis
steveklabnik Feb 15, 2015
51abc97
Rollup merge of #22288 - steveklabnik:add_option_link, r=nikomatsakis
steveklabnik Feb 15, 2015
a3a1f86
Rollup merge of #22295 - steveklabnik:gh9980, r=alexcrichton
steveklabnik Feb 15, 2015
f89168e
Rollup merge of #22299 - bluss:range-64-is-not-exact-size, r=alexcric…
steveklabnik Feb 15, 2015
59feb6f
Rollup merge of #22302 - japaric:gh21909, r=brson
steveklabnik Feb 15, 2015
4587f64
Rollup merge of #22305 - steveklabnik:gh20948, r=alexcrichton
steveklabnik Feb 15, 2015
6aaf535
Rollup merge of #22307 - steveklabnik:gh14849, r=huonw
steveklabnik Feb 15, 2015
5ee9d9e
Rollup merge of #22308 - steveklabnik:gh19278, r=brson
steveklabnik Feb 15, 2015
bf25753
Rollup merge of #22324 - Manishearth:patch-1, r=steveklabnik
steveklabnik Feb 15, 2015
d80e5c7
Rollup merge of #22328 - shepmaster:os_str_typo, r=steveklabnik
steveklabnik Feb 15, 2015
f43546f
Rollup merge of #22329 - thiagooak:book, r=steveklabnik
steveklabnik Feb 15, 2015
3ce2e0d
Rollup merge of #22347 - iKevinY:std-lib-panicking, r=brson
steveklabnik Feb 15, 2015
3ae8b02
remove unneeded slicing_syntax feature gate
steveklabnik Feb 15, 2015
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion mk/docs.mk
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@
######################################################################
DOCS := index intro tutorial complement-bugreport \
complement-lang-faq complement-design-faq complement-project-faq \
rustdoc reference
rustdoc reference grammar

# Legacy guides, preserved for a while to reduce the number of 404s
DOCS += guide-crates guide-error-handling guide-ffi guide-macros guide \
Expand Down
6 changes: 5 additions & 1 deletion mk/main.mk
Original file line number Diff line number Diff line change
Expand Up @@ -61,13 +61,16 @@ SPACE :=
SPACE +=
ifneq ($(CFG_GIT),)
ifneq ($(wildcard $(subst $(SPACE),\$(SPACE),$(CFG_GIT_DIR))),)
CFG_VER_DATE = $(shell git --git-dir='$(CFG_GIT_DIR)' log -1 --pretty=format:'%ci')
CFG_VER_DATE = $(shell git --git-dir='$(CFG_GIT_DIR)' log -1 --date=short --pretty=format:'%cd')
CFG_VER_HASH = $(shell git --git-dir='$(CFG_GIT_DIR)' rev-parse HEAD)
CFG_SHORT_VER_HASH = $(shell git --git-dir='$(CFG_GIT_DIR)' rev-parse --short=9 HEAD)
CFG_VERSION += ($(CFG_SHORT_VER_HASH) $(CFG_VER_DATE))
endif
endif

CFG_BUILD_DATE = $(shell date +%F)
CFG_VERSION += (built $(CFG_BUILD_DATE))

# Windows exe's need numeric versions - don't use anything but
# numbers and dots here
CFG_VERSION_WIN = $(CFG_RELEASE_NUM)
Expand Down Expand Up @@ -317,6 +320,7 @@ endif
ifdef CFG_VER_HASH
export CFG_VER_HASH
endif
export CFG_BUILD_DATE
export CFG_VERSION
export CFG_VERSION_WIN
export CFG_RELEASE
Expand Down
2 changes: 1 addition & 1 deletion src/compiletest/compiletest.rs
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@
#![feature(io)]
#![feature(path)]
#![feature(rustc_private)]
#![feature(slicing_syntax, unboxed_closures)]
#![feature(unboxed_closures)]
#![feature(std_misc)]
#![feature(test)]
#![feature(unicode)]
Expand Down
8 changes: 3 additions & 5 deletions src/doc/complement-bugreport.md
Original file line number Diff line number Diff line change
Expand Up @@ -56,8 +56,6 @@ $ RUST_BACKTRACE=1 rustc ...

# I submitted a bug, but nobody has commented on it!

This is sad, but does happen sometimes, since we're short-staffed. If you
submit a bug and you haven't received a comment on it within 3 business days,
it's entirely reasonable to either ask on the #rust IRC channel,
or post on the [rust-dev mailing list](https://mail.mozilla.org/listinfo/rust-dev)
to ask what the status of the bug is.
This is sad, but does happen sometimes, since we're short-staffed. If you submit a
bug and you haven't received a comment on it within 3 business days, it's entirely
reasonable to ask about the status of the bug in #rust on irc.mozilla.org.
4 changes: 1 addition & 3 deletions src/doc/grammar.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,4 @@
# **This is a work in progress**

% The Rust Grammar
% Grammar

# Introduction

Expand Down
2 changes: 1 addition & 1 deletion src/doc/intro.md
Original file line number Diff line number Diff line change
Expand Up @@ -224,7 +224,7 @@ segfault when we allocate more memory?

The answer is that in the C++ version, `x` is a *reference* to the memory
location where the first element of the array is stored. But in Ruby, `x` is a
standalone value, not connected to the underyling array at all. Let's dig into
standalone value, not connected to the underlying array at all. Let's dig into
the details for a moment. Your program has access to memory, provided to it by
the operating system. Each location in memory has an address. So when we make
our vector, `v`, it's stored in a memory location somewhere:
Expand Down
93 changes: 71 additions & 22 deletions src/doc/reference.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,7 @@
This document is the primary reference for the Rust programming language. It
provides three kinds of material:

- Chapters that formally define the language grammar and, for each
construct, informally describe its semantics and give examples of its
use.
- Chapters that informally describe each language construct and their use.
- Chapters that informally describe the memory model, concurrency model,
runtime services, linkage model and debugging facilities.
- Appendix chapters providing rationale and references to languages that
Expand All @@ -23,8 +21,11 @@ separately by extracting documentation attributes from their source code. Many
of the features that one might expect to be language features are library
features in Rust, so what you're looking for may be there, not here.

You may also be interested in the [grammar].

[book]: book/index.html
[standard]: std/index.html
[grammar]: grammar.html

# Notation

Expand Down Expand Up @@ -2377,21 +2378,33 @@ considered off, and using the features will result in a compiler error.

The currently implemented features of the reference compiler are:

* `advanced_slice_patterns` - see the [match expressions](#match-expressions)
section for discussion; the exact semantics of
slice patterns are subject to change.

* `asm` - The `asm!` macro provides a means for inline assembly. This is often
useful, but the exact syntax for this feature along with its
semantics are likely to change, so this macro usage must be opted
into.

* `associated_types` - Allows type aliases in traits. Experimental.

* `box_patterns` - Allows `box` patterns, the exact semantics of which
is subject to change.

* `box_syntax` - Allows use of `box` expressions, the exact semantics of which
is subject to change.

* `concat_idents` - Allows use of the `concat_idents` macro, which is in many
ways insufficient for concatenating identifiers, and may be
removed entirely for something more wholesome.

* `default_type_params` - Allows use of default type parameters. The future of
this feature is uncertain.

* `intrinsics` - Allows use of the "rust-intrinsics" ABI. Compiler intrinsics
are inherently unstable and no promise about them is made.

* `int_uint` - Allows the use of the `int` and `uint` types, which are deprecated.
Use `isize` and `usize` instead.

* `lang_items` - Allows use of the `#[lang]` attribute. Like `intrinsics`,
lang items are inherently unstable and no promise about them
is made.
Expand All @@ -2410,12 +2423,33 @@ The currently implemented features of the reference compiler are:
* `log_syntax` - Allows use of the `log_syntax` macro attribute, which is a
nasty hack that will certainly be removed.

* `main` - Allows use of the `#[main]` attribute, which changes the entry point
into a Rust program. This capabiilty is subject to change.

* `macro_reexport` - Allows macros to be re-exported from one crate after being imported
from another. This feature was originally designed with the sole
use case of the Rust standard library in mind, and is subject to
change.

* `non_ascii_idents` - The compiler supports the use of non-ascii identifiers,
but the implementation is a little rough around the
edges, so this can be seen as an experimental feature
for now until the specification of identifiers is fully
fleshed out.

* `no_std` - Allows the `#![no_std]` crate attribute, which disables the implicit
`extern crate std`. This typically requires use of the unstable APIs
behind the libstd "facade", such as libcore and libcollections. It
may also cause problems when using syntax extensions, including
`#[derive]`.

* `on_unimplemented` - Allows the `#[rustc_on_unimplemented]` attribute, which allows
trait definitions to add specialized notes to error messages
when an implementation was expected but not found.

* `optin_builtin_traits` - Allows the definition of default and negative trait
implementations. Experimental.

* `plugin` - Usage of [compiler plugins][plugin] for custom lints or syntax extensions.
These depend on compiler internals and are subject to change.

Expand All @@ -2431,8 +2465,15 @@ The currently implemented features of the reference compiler are:
* `simd` - Allows use of the `#[simd]` attribute, which is overly simple and
not the SIMD interface we want to expose in the long term.

* `simd_ffi` - Allows use of SIMD vectors in signatures for foreign functions.
The SIMD interface is subject to change.

* `staged_api` - Allows usage of stability markers and `#![staged_api]` in a crate

* `start` - Allows use of the `#[start]` attribute, which changes the entry point
into a Rust program. This capabiilty, especially the signature for the
annotated function, is subject to change.

* `struct_inherit` - Allows using struct inheritance, which is barely
implemented and will probably be removed. Don't use this.

Expand Down Expand Up @@ -2460,18 +2501,20 @@ The currently implemented features of the reference compiler are:
which is considered wildly unsafe and will be
obsoleted by language improvements.

* `unsafe_no_drop_flag` - Allows use of the `#[unsafe_no_drop_flag]` attribute,
which removes hidden flag added to a type that
implements the `Drop` trait. The design for the
`Drop` flag is subject to change, and this feature
may be removed in the future.

* `unmarked_api` - Allows use of items within a `#![staged_api]` crate
which have not been marked with a stability marker.
Such items should not be allowed by the compiler to exist,
so if you need this there probably is a compiler bug.

* `associated_types` - Allows type aliases in traits. Experimental.

* `no_std` - Allows the `#![no_std]` crate attribute, which disables the implicit
`extern crate std`. This typically requires use of the unstable APIs
behind the libstd "facade", such as libcore and libcollections. It
may also cause problems when using syntax extensions, including
`#[derive]`.
* `visible_private_types` - Allows public APIs to expose otherwise private
types, e.g. as the return type of a public function.
This capability may be removed in the future.

If a feature is promoted to a language feature, then all existing programs will
start to receive compilation warnings about #[feature] directives which enabled
Expand Down Expand Up @@ -2591,9 +2634,8 @@ of any reference that points to it.

When a [local variable](#memory-slots) is used as an
[rvalue](#lvalues,-rvalues-and-temporaries) the variable will either be moved
or copied, depending on its type. For types that contain [owning
pointers](#pointer-types) or values that implement the special trait `Drop`,
the variable is moved. All other types are copied.
or copied, depending on its type. All values whose type implements `Copy` are
copied, all others are moved.

### Literal expressions

Expand Down Expand Up @@ -2701,9 +2743,19 @@ items can bring new names into scopes and declared items are in scope for only
the block itself.

A block will execute each statement sequentially, and then execute the
expression (if given). If the final expression is omitted, the type and return
value of the block are `()`, but if it is provided, the type and return value
of the block are that of the expression itself.
expression (if given). If the block ends in a statement, its value is `()`:

```
let x: () = { println!("Hello."); };
```

If it ends in an expression, its value and type are that of the expression:

```
let x: i32 = { println!("Hello."); 5 };

assert_eq!(5, x);
```

### Method-call expressions

Expand Down Expand Up @@ -3502,9 +3554,6 @@ elements, respectively, in a parenthesized, comma-separated list.
Because tuple elements don't have a name, they can only be accessed by
pattern-matching.

The members of a tuple are laid out in memory contiguously, in order specified
by the tuple type.

An example of a tuple type and its use:

```
Expand Down
4 changes: 2 additions & 2 deletions src/doc/trpl/arrays-vectors-and-slices.md
Original file line number Diff line number Diff line change
Expand Up @@ -49,8 +49,8 @@ languages.

A *vector* is a dynamic or "growable" array, implemented as the standard
library type [`Vec<T>`](../std/vec/) (we'll talk about what the `<T>` means
later). Vectors are to arrays what `String` is to `&str`. You can create them
with the `vec!` macro:
later). Vectors always allocate their data on the heap. Vectors are to slices
what `String` is to `&str`. You can create them with the `vec!` macro:

```{rust}
let v = vec![1, 2, 3]; // v: Vec<i32>
Expand Down
13 changes: 5 additions & 8 deletions src/doc/trpl/compound-data-types.md
Original file line number Diff line number Diff line change
Expand Up @@ -263,15 +263,12 @@ let four_is_smaller = four <= ten;
let four_equals_ten = four == ten;
```

This may seem rather limiting, particularly equality being invalid; in
many cases however, it's unnecessary. Rust provides the [`match`][match]
keyword, which will be examined in more detail in the next section, which
often allows better and easier branch control than a series of `if`/`else`
statements would. However, for our [game][game] we need the comparisons
to work so we will utilize the `Ordering` `enum` provided by the standard
library which supports such comparisons. It has this form:
This may seem rather limiting, but it's a limitation which we can overcome.
There are two ways: by implementing equality ourselves, or by using the
[`match`][match] keyword. We don't know enough about Rust to implement equality
yet, but we can use the `Ordering` enum from the standard library, which does:

```{rust}
```
enum Ordering {
Less,
Equal,
Expand Down
12 changes: 6 additions & 6 deletions src/doc/trpl/concurrency.md
Original file line number Diff line number Diff line change
Expand Up @@ -171,7 +171,7 @@ use std::time::Duration;
fn main() {
let mut data = vec![1u32, 2, 3];

for i in 0 .. 2 {
for i in 0..2 {
Thread::spawn(move || {
data[i] += 1;
});
Expand Down Expand Up @@ -211,7 +211,7 @@ use std::sync::Mutex;
fn main() {
let mut data = Mutex::new(vec![1u32, 2, 3]);

for i in 0 .. 2 {
for i in 0..2 {
let data = data.lock().unwrap();
Thread::spawn(move || {
data[i] += 1;
Expand Down Expand Up @@ -262,7 +262,7 @@ use std::time::Duration;
fn main() {
let data = Arc::new(Mutex::new(vec![1u32, 2, 3]));

for i in (0us..2) {
for i in 0us..2 {
let data = data.clone();
Thread::spawn(move || {
let mut data = data.lock().unwrap();
Expand All @@ -285,7 +285,7 @@ thread more closely:
# use std::time::Duration;
# fn main() {
# let data = Arc::new(Mutex::new(vec![1u32, 2, 3]));
# for i in (0us..2) {
# for i in 0us..2 {
# let data = data.clone();
Thread::spawn(move || {
let mut data = data.lock().unwrap();
Expand Down Expand Up @@ -323,7 +323,7 @@ fn main() {

let (tx, rx) = mpsc::channel();

for _ in (0..10) {
for _ in 0..10 {
let (data, tx) = (data.clone(), tx.clone());

Thread::spawn(move || {
Expand All @@ -334,7 +334,7 @@ fn main() {
});
}

for _ in 0 .. 10 {
for _ in 0..10 {
rx.recv();
}
}
Expand Down
2 changes: 1 addition & 1 deletion src/doc/trpl/crates-and-modules.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ you to partition your code within the crate itself.

As an example, let's make a *phrases* crate, which will give us various phrases
in different languages. To keep things simple, we'll stick to "greetings" and
"farewells" as two kinds of phrases, and use English and Japanese (日本語 as
"farewells" as two kinds of phrases, and use English and Japanese (日本語) as
two languages for those phrases to be in. We'll use this module layout:

```text
Expand Down
25 changes: 24 additions & 1 deletion src/doc/trpl/documentation.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
% Rust Documentation
% Documentation

`rustdoc` is the built-in tool for generating documentation. It integrates
with the compiler to provide accurate hyperlinking between usage of types and
Expand Down Expand Up @@ -294,3 +294,26 @@ Documentation` on the first line).
Like with a Rust crate, the `--test` argument will run the code
examples to check they compile, and obeys any `--test-args` flags. The
tests are named after the last `#` heading.

# Re-exports

Rustdoc will show the documentation for a publc re-export in both places:

```{rust,ignore}
extern crate foo;

pub use foo::bar;
```

This will create documentation for `bar` both inside the documentation for
the crate `foo`, as well as the documentation for your crate. It will use
the same documentation in both places.

This behavior can be supressed with `no_inline`:

```{rust,ignore}
extern crate foo;

#[doc(no_inline)]
pub use foo::bar;
```
Loading