Skip to content
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

Rollup some PRs in the queue #22367

Merged
merged 96 commits into from
Feb 16, 2015
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
96 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
e4a9eb9
Remove `_VALUE` from the float extremes constants.
huonw Feb 13, 2015
be440bc
Upgrade rust-installer
brson Feb 11, 2015
b2f70a4
Update uninstall instructions
brson Feb 13, 2015
8dcc886
Change README quick start instructions to defer entirely to the book.
brson Feb 13, 2015
9df38bf
Remove some irrelevant text from README
brson 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
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
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
be97aab
Update version number for 1.0.0-alpha.2
brson Feb 13, 2015
6647d83
Mention type placeholders in the book.
steveklabnik Feb 13, 2015
ece19bf
Enhance static mut example in FFI chapter.
steveklabnik Feb 13, 2015
5284c4e
Remove a few uses of deprecated getenv
nagisa Feb 13, 2015
220bf41
Cleanup getenv from tests and benchmarks
nagisa Feb 13, 2015
b19fda0
Remove ExactSizeIterator from 64-bit ranges.
Feb 13, 2015
228603d
Parse `pub` in the expansion of a method macro
kmcallister Feb 13, 2015
dcd4cef
Forbid `pub mymacro!();`
kmcallister 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
1c49404
allow DList to split_at . fixes #22244
Gankra Feb 12, 2015
1e01f7f
Rename std::failure to std::panicking
iKevinY Feb 14, 2015
10dd8e7
we forgot to make `Path` implement `Hash`
blaenk 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
09f53fd
Audit integer types in libunicode, libcore/(char, str) and libstd/ascii
petrochenkov Feb 14, 2015
b1cd769
Fix the fallout
petrochenkov Feb 14, 2015
8f5d698
core::raw: uint -> usize
brson Feb 14, 2015
438e527
core: Use int/isize in Clone boilerplate
brson Feb 14, 2015
1a99315
Fix issue with generation
steveklabnik Feb 15, 2015
e72fb35
core::slice: uint -> usize, int -> isize
brson Feb 15, 2015
b13fddd
Rollup merge of #22132 - steveklabnik:gh16645, r=alexcrichton
Manishearth Feb 15, 2015
63091ef
Rollup merge of #22201 - brson:version, r=nick29581
Manishearth Feb 15, 2015
8cc3fbd
Rollup merge of #22218 - huonw:raw-docs, r=steveklabnik,huonw
Manishearth Feb 15, 2015
132b56c
Rollup merge of #22224 - sanxiyn:must-use, r=cmr
Manishearth Feb 15, 2015
8623fe7
Rollup merge of #22229 - vhbit:ios-default-cpus, r=alexcrichton
Manishearth Feb 15, 2015
e6ad384
Rollup merge of #22238 - dotdash:llvmup_20150212, r=alexcrichton
Manishearth Feb 15, 2015
d014548
Rollup merge of #22248 - duaneedwards:patch-1, r=Gankro
Manishearth Feb 15, 2015
da1a1f5
Rollup merge of #22254 - huonw:float-value--, r=aturon
Manishearth Feb 15, 2015
8ebbf58
Rollup merge of #22262 - lfairy:unsafe-cell-lang-item, r=alexcrichton
Manishearth Feb 15, 2015
f6fa27a
Rollup merge of #22263 - iKevinY:no-mailing-list, r=nikomatsakis
Manishearth Feb 15, 2015
cff0b78
Rollup merge of #22264 - fhahn:tiny-doc-fix2, r=Gankro
Manishearth Feb 15, 2015
a2bc3a2
Rollup merge of #22268 - steveklabnik:improve_wait, r=nikomatsakis
Manishearth Feb 15, 2015
3fe2715
Rollup merge of #22269 - steveklabnik:gh22136, r=alexcrichton
Manishearth Feb 15, 2015
ed9ffce
Rollup merge of #22271 - steveklabnik:gh22035, r=nikomatsakis
Manishearth Feb 15, 2015
828a864
Rollup merge of #22272 - steveklabnik:gh22064, r=alexcrichton
Manishearth Feb 15, 2015
33371bf
Rollup merge of #22274 - pnkfelix:retag-slicing-syntax-as-accepted, r…
Manishearth Feb 15, 2015
f96fb8e
Rollup merge of #22275 - steveklabnik:gh7538, r=huonw
Manishearth Feb 15, 2015
2935d67
Rollup merge of #22277 - pnkfelix:reference-update-feature-gate-list,…
Manishearth Feb 15, 2015
a2840f3
Rollup merge of #22278 - nikomatsakis:rustc-error, r=nikomatsakis
Manishearth Feb 15, 2015
1ee09f9
Rollup merge of #22280 - Unode:patch-1, r=steveklabnik
Manishearth Feb 15, 2015
1718e6b
Rollup merge of #22284 - steveklabnik:fix_another_lie, r=nikomatsakis
Manishearth Feb 15, 2015
db4a167
Rollup merge of #22288 - steveklabnik:add_option_link, r=nikomatsakis
Manishearth Feb 15, 2015
0f66e31
Rollup merge of #22295 - steveklabnik:gh9980, r=alexcrichton
Manishearth Feb 15, 2015
1b86ebe
Rollup merge of #22299 - bluss:range-64-is-not-exact-size, r=alexcric…
Manishearth Feb 15, 2015
1da4e53
Rollup merge of #22302 - japaric:gh21909, r=brson
Manishearth Feb 15, 2015
70647ec
Rollup merge of #22305 - steveklabnik:gh20948, r=alexcrichton
Manishearth Feb 15, 2015
cb09001
Rollup merge of #22307 - steveklabnik:gh14849, r=huonw
Manishearth Feb 15, 2015
6ce265e
Rollup merge of #22308 - steveklabnik:gh19278, r=brson
Manishearth Feb 15, 2015
a001998
Rollup merge of #22324 - Manishearth:patch-1, r=steveklabnik
Manishearth Feb 15, 2015
c6ced0f
Rollup merge of #22328 - shepmaster:os_str_typo, r=steveklabnik
Manishearth Feb 15, 2015
a5bdb08
Rollup merge of #22329 - thiagooak:book, r=steveklabnik
Manishearth Feb 15, 2015
e5659ea
Rollup merge of #22347 - iKevinY:std-lib-panicking, r=brson
Manishearth Feb 15, 2015
c59f62b
Rollup merge of #22350 - brson:usize, r=Gankro
Manishearth Feb 15, 2015
8acaaa9
Rollup merge of #22351 - blaenk:path-hash, r=huonw
Manishearth Feb 15, 2015
f7870b6
Rollup merge of #22339 - petrochenkov:int, r=huonw
Manishearth Feb 15, 2015
bc1900f
Rollup merge of #22300 - kmcallister:pub-method-macro, r=sfackler
Manishearth Feb 15, 2015
ed58399
Rollup merge of #22297 - nagisa:spring-cleanup, r=alexcrichton
Manishearth Feb 15, 2015
8111d65
Rollup merge of #22293 - steveklabnik:gh12891, r=brson
Manishearth Feb 15, 2015
ed728ec
Rollup merge of #22292 - brson:alpha2, r=alexcrichton
Manishearth Feb 15, 2015
16b24f1
Rollup merge of #22285 - kmcallister:pub-macro, r=nick29581
Manishearth Feb 15, 2015
97503e1
Rollup merge of #22256 - brson:installer-next, r=alexcrichton
Manishearth Feb 15, 2015
b1a46db
Rollup merge of #22247 - Gankro:dlist_split, r=alexcrichton
Manishearth Feb 15, 2015
f0f8be2
Fix rollup (remove slicing_syntax)
Manishearth Feb 15, 2015
cea2bbf
Fix grammar
Manishearth 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
13 changes: 2 additions & 11 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,16 +5,10 @@ documentation.

## Quick Start

1. Download a [binary installer][installer] for your platform.
2. Read [The Rust Programming Language][trpl].
3. Enjoy!
Read ["Installing Rust"][install] from [The Book][trpl].

> ***Note:*** Windows users can read the detailed
> [using Rust on Windows][win-wiki] notes on the wiki.

[installer]: http://www.rust-lang.org/install.html
[install]: http://doc.rust-lang.org/book/installing-rust.html
[trpl]: http://doc.rust-lang.org/book/index.html
[win-wiki]: https://github.com/rust-lang/rust/wiki/Using-Rust-on-Windows

## Building from Source

Expand Down Expand Up @@ -52,8 +46,6 @@ documentation.
When complete, `make install` will place several programs into
`/usr/local/bin`: `rustc`, the Rust compiler, and `rustdoc`, the
API-documentation tool.
3. Read [The Rust Programming Language][trpl].
4. Enjoy!

### Building on Windows

Expand Down Expand Up @@ -81,7 +73,6 @@ $ pacman -S base-devel

[repo]: https://github.com/rust-lang/rust
[tarball]: https://static.rust-lang.org/dist/rustc-nightly-src.tar.gz
[trpl]: http://doc.rust-lang.org/book/index.html

## Notes

Expand Down
21 changes: 11 additions & 10 deletions mk/dist.mk
Original file line number Diff line number Diff line change
Expand Up @@ -109,8 +109,6 @@ distcheck-tar-src: dist-tar-src
# Unix binary installer tarballs
######################################################################

NON_INSTALLED_PREFIXES=COPYRIGHT,LICENSE-APACHE,LICENSE-MIT,README.md,version

define DEF_INSTALLER

$$(eval $$(call DEF_PREPARE,dir-$(1)))
Expand All @@ -124,19 +122,23 @@ dist-install-dir-$(1): PREPARE_LIB_CMD=$(DEFAULT_PREPARE_LIB_CMD)
dist-install-dir-$(1): PREPARE_MAN_CMD=$(DEFAULT_PREPARE_MAN_CMD)
dist-install-dir-$(1): PREPARE_CLEAN=true
dist-install-dir-$(1): prepare-base-dir-$(1) docs compiler-docs
$$(Q)$$(PREPARE_MAN_CMD) $$(S)COPYRIGHT $$(PREPARE_DEST_DIR)
$$(Q)$$(PREPARE_MAN_CMD) $$(S)LICENSE-APACHE $$(PREPARE_DEST_DIR)
$$(Q)$$(PREPARE_MAN_CMD) $$(S)LICENSE-MIT $$(PREPARE_DEST_DIR)
$$(Q)$$(PREPARE_MAN_CMD) $$(S)README.md $$(PREPARE_DEST_DIR)
$$(Q)mkdir -p $$(PREPARE_DEST_DIR)/share/doc/rust
$$(Q)$$(PREPARE_MAN_CMD) $$(S)COPYRIGHT $$(PREPARE_DEST_DIR)/share/doc/rust
$$(Q)$$(PREPARE_MAN_CMD) $$(S)LICENSE-APACHE $$(PREPARE_DEST_DIR)/share/doc/rust
$$(Q)$$(PREPARE_MAN_CMD) $$(S)LICENSE-MIT $$(PREPARE_DEST_DIR)/share/doc/rust
$$(Q)$$(PREPARE_MAN_CMD) $$(S)README.md $$(PREPARE_DEST_DIR)/share/doc/rust

prepare-overlay-$(1):
$$(Q)rm -Rf tmp/dist/$$(PKG_NAME)-$(1)-overlay
$$(Q)mkdir -p tmp/dist/$$(PKG_NAME)-$(1)-overlay
$$(Q)cp $$(S)COPYRIGHT tmp/dist/$$(PKG_NAME)-$(1)-overlay/
$$(Q)cp $$(S)LICENSE-APACHE tmp/dist/$$(PKG_NAME)-$(1)-overlay/
$$(Q)cp $$(S)LICENSE-MIT tmp/dist/$$(PKG_NAME)-$(1)-overlay/
$$(Q)cp $$(S)README.md tmp/dist/$$(PKG_NAME)-$(1)-overlay/
# This tiny morsel of metadata is used by rust-packaging
$$(Q)echo "$(CFG_VERSION)" > $$(PREPARE_DEST_DIR)/version
$$(Q)echo "$(CFG_VERSION)" > tmp/dist/$$(PKG_NAME)-$(1)-overlay/version

dist/$$(PKG_NAME)-$(1).tar.gz: dist-install-dir-$(1)
dist/$$(PKG_NAME)-$(1).tar.gz: dist-install-dir-$(1) prepare-overlay-$(1)
@$(call E, build: $$@)
# Copy essential gcc components into installer
ifdef CFG_WINDOWSY_$(1)
Expand All @@ -146,13 +148,12 @@ ifdef CFG_WINDOWSY_$(1)
endif
$$(Q)$$(S)src/rust-installer/gen-installer.sh \
--product-name=Rust \
--verify-bin=rustc \
--rel-manifest-dir=rustlib \
--success-message=Rust-is-ready-to-roll. \
--image-dir=tmp/dist/$$(PKG_NAME)-$(1)-image \
--work-dir=tmp/dist \
--output-dir=dist \
--non-installed-prefixes=$$(NON_INSTALLED_PREFIXES) \
--non-installed-overlay=tmp/dist/$$(PKG_NAME)-$(1)-overlay \
--package-name=$$(PKG_NAME)-$(1) \
--component-name=rustc \
--legacy-manifest-dirs=rustlib,cargo
Expand Down
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
12 changes: 8 additions & 4 deletions mk/main.mk
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ CFG_RELEASE_NUM=1.0.0
# An optional number to put after the label, e.g. '.2' -> '-beta.2'
# NB Make sure it starts with a dot to conform to semver pre-release
# versions (section 9)
CFG_PRERELEASE_VERSION=.1
CFG_PRERELEASE_VERSION=.2

CFG_FILENAME_EXTRA=4e7c5e5c

Expand All @@ -30,8 +30,8 @@ CFG_PACKAGE_VERS=$(CFG_RELEASE_NUM)
CFG_DISABLE_UNSTABLE_FEATURES=1
endif
ifeq ($(CFG_RELEASE_CHANNEL),beta)
CFG_RELEASE=$(CFG_RELEASE_NUM)-beta$(CFG_PRERELEASE_VERSION)
CFG_PACKAGE_VERS=$(CFG_RELEASE_NUM)-beta$(CFG_PRERELEASE_VERSION)
CFG_RELEASE=$(CFG_RELEASE_NUM)-alpha$(CFG_PRERELEASE_VERSION)
CFG_PACKAGE_VERS=$(CFG_RELEASE_NUM)-alpha$(CFG_PRERELEASE_VERSION)
CFG_DISABLE_UNSTABLE_FEATURES=1
endif
ifeq ($(CFG_RELEASE_CHANNEL),nightly)
Expand Down 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.
6 changes: 2 additions & 4 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 Expand Up @@ -570,7 +568,7 @@ binop_expr : expr binop expr ;
The precedence of Rust binary operators is ordered as follows, going from
strong to weak:

```
```text
* / %
as
+ -
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
Loading