Skip to content

Commit c6a95b5

Browse files
committed
---
yaml --- r: 156230 b: refs/heads/snap-stage3 c: ba24610 h: refs/heads/master v: v3
1 parent 1029b60 commit c6a95b5

File tree

282 files changed

+6131
-4232
lines changed

Some content is hidden

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

282 files changed

+6131
-4232
lines changed

[refs]

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
---
22
refs/heads/master: c29a7520e7fb4a5b4d4eccfc594e05793ef6688d
33
refs/heads/snap-stage1: e33de59e47c5076a89eadeb38f4934f58a3618a6
4-
refs/heads/snap-stage3: 51c5a8eb1b4677a5c862bdfe762af6f1e28ed85f
4+
refs/heads/snap-stage3: ba246100ca3b0c3bd0d68548677d75e6790c4f60
55
refs/heads/try: 6601b0501e31d08d3892a2d5a7d8a57ab120bf75
66
refs/tags/release-0.1: 1f5c5126e96c79d22cb7862f75304136e204f105
77
refs/heads/ndm: f3868061cd7988080c30d6d5bf352a5a5fe2460b

branches/snap-stage3/man/rustc.1

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
.TH RUSTC "1" "March 2014" "rustc 0.12.0" "User Commands"
1+
.TH RUSTC "1" "March 2014" "rustc 0.13.0" "User Commands"
22
.SH NAME
33
rustc \- The Rust compiler
44
.SH SYNOPSIS
@@ -125,8 +125,8 @@ is invoked.
125125
Selects a target processor. If the value is 'help', then a list of available
126126
CPUs is printed.
127127
.TP
128-
\fBtarget-feature\fR='+feature1 -feature2'
129-
A space-separated list of features to enable or disable for the target. A
128+
\fBtarget-feature\fR='+feature1,-feature2'
129+
A comma-separated list of features to enable or disable for the target. A
130130
preceding '+' enables a feature while a preceding '-' disables it. Available
131131
features can be discovered through target-cpu=help.
132132
.TP

branches/snap-stage3/man/rustdoc.1

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
.TH RUSTDOC "1" "March 2014" "rustdoc 0.12.0" "User Commands"
1+
.TH RUSTDOC "1" "March 2014" "rustdoc 0.13.0" "User Commands"
22
.SH NAME
33
rustdoc \- generate documentation from Rust source code
44
.SH SYNOPSIS

branches/snap-stage3/mk/main.mk

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
######################################################################
1414

1515
# The version number
16-
CFG_RELEASE_NUM=0.12.0
16+
CFG_RELEASE_NUM=0.13.0
1717

1818
CFG_FILENAME_EXTRA=4e7c5e5c
1919

branches/snap-stage3/src/doc/reference.md

Lines changed: 65 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1383,44 +1383,87 @@ a = Cat { name: "Spotty".to_string(), weight: 2.7 };
13831383
In this example, `Cat` is a _struct-like enum variant_,
13841384
whereas `Dog` is simply called an enum variant.
13851385

1386-
### Static items
1386+
### Constant items
13871387

13881388
```{.ebnf .gram}
1389-
static_item : "static" ident ':' type '=' expr ';' ;
1389+
const_item : "const" ident ':' type '=' expr ';' ;
13901390
```
13911391

1392-
A *static item* is a named _constant value_ stored in the global data section
1393-
of a crate. Immutable static items are stored in the read-only data section.
1394-
The constant value bound to a static item is, like all constant values,
1395-
evaluated at compile time. Static items have the `static` lifetime, which
1396-
outlives all other lifetimes in a Rust program. Only values stored in the
1397-
global data section (such as string constants and static items) can have the
1398-
`static` lifetime; dynamically constructed values cannot safely be assigned the
1399-
`static` lifetime. Static items are declared with the `static` keyword. A
1400-
static item must have a _constant expression_ giving its definition.
1392+
A *constant item* is a named _constant value_ which is not associated with a
1393+
specific memory location in the program. Constants are essentially inlined
1394+
wherever they are used, meaning that they are copied directly into the relevant
1395+
context when used. References to the same constant are not necessarily
1396+
guaranteed to refer to the same memory address.
1397+
1398+
Constant values must not have destructors, and otherwise permit most forms of
1399+
data. Constants may refer to the address of other constants, in which case the
1400+
address will have the `static` lifetime. The compiler is, however, still at
1401+
liberty to translate the constant many times, so the address referred to may not
1402+
be stable.
14011403

1402-
Static items must be explicitly typed. The type may be `bool`, `char`,
1403-
a number, or a type derived from those primitive types. The derived types are
1404-
references with the `static` lifetime, fixed-size arrays, tuples, and structs.
1404+
Constants must be explicitly typed. The type may be `bool`, `char`, a number, or
1405+
a type derived from those primitive types. The derived types are references with
1406+
the `static` lifetime, fixed-size arrays, tuples, enum variants, and structs.
14051407

14061408
```
1407-
static BIT1: uint = 1 << 0;
1408-
static BIT2: uint = 1 << 1;
1409+
const BIT1: uint = 1 << 0;
1410+
const BIT2: uint = 1 << 1;
14091411
1410-
static BITS: [uint, ..2] = [BIT1, BIT2];
1411-
static STRING: &'static str = "bitstring";
1412+
const BITS: [uint, ..2] = [BIT1, BIT2];
1413+
const STRING: &'static str = "bitstring";
14121414
14131415
struct BitsNStrings<'a> {
14141416
mybits: [uint, ..2],
14151417
mystring: &'a str
14161418
}
14171419
1418-
static BITS_N_STRINGS: BitsNStrings<'static> = BitsNStrings {
1420+
const BITS_N_STRINGS: BitsNStrings<'static> = BitsNStrings {
14191421
mybits: BITS,
14201422
mystring: STRING
14211423
};
14221424
```
14231425

1426+
### Static items
1427+
1428+
```{.ebnf .gram}
1429+
static_item : "static" ident ':' type '=' expr ';' ;
1430+
```
1431+
1432+
A *static item* is similar to a *constant*, except that it represents a precise
1433+
memory location in the program. A static is never "inlined" at the usage site,
1434+
and all references to it refer to the same memory location. Static items have
1435+
the `static` lifetime, which outlives all other lifetimes in a Rust program.
1436+
Static items may be placed in read-only memory if they do not contain any
1437+
interior mutability.
1438+
1439+
Statics may contain interior mutability through the `UnsafeCell` language item.
1440+
All access to a static is safe, but there are a number of restrictions on
1441+
statics:
1442+
1443+
* Statics may not contain any destructors.
1444+
* The types of static values must ascribe to `Sync` to allow threadsafe access.
1445+
* Statics may not refer to other statics by value, only by reference.
1446+
* Constants cannot refer to statics.
1447+
1448+
Constants should in general be preferred over statics, unless large amounts of
1449+
data are being stored, or single-address and mutability properties are required.
1450+
1451+
```
1452+
use std::sync::atomic;
1453+
1454+
// Note that INIT_ATOMIC_UINT is a *const*, but it may be used to initialize a
1455+
// static. This static can be modified, so it is not placed in read-only memory.
1456+
static COUNTER: atomic::AtomicUint = atomic::INIT_ATOMIC_UINT;
1457+
1458+
// This table is a candidate to be placed in read-only memory.
1459+
static TABLE: &'static [uint] = &[1, 2, 3, /* ... */];
1460+
1461+
for slot in TABLE.iter() {
1462+
println!("{}", slot);
1463+
}
1464+
COUNTER.fetch_add(1, atomic::SeqCst);
1465+
```
1466+
14241467
#### Mutable statics
14251468

14261469
If a static item is declared with the `mut` keyword, then it is allowed to
@@ -1455,6 +1498,9 @@ unsafe fn bump_levels_unsafe2() -> uint {
14551498
}
14561499
```
14571500

1501+
Mutable statics have the same restrictions as normal statics, except that the
1502+
type of the value is not required to ascribe to `Sync`.
1503+
14581504
### Traits
14591505

14601506
A _trait_ describes a set of method types.

branches/snap-stage3/src/etc/kate/rust.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
<!ENTITY rustIdent "[a-zA-Z_][a-zA-Z_0-9]*">
88
<!ENTITY rustIntSuf "([iu](8|16|32|64)?)?">
99
]>
10-
<language name="Rust" version="0.12.0" kateversion="2.4" section="Sources" extensions="*.rs" mimetype="text/x-rust" priority="15">
10+
<language name="Rust" version="0.13.0" kateversion="2.4" section="Sources" extensions="*.rs" mimetype="text/x-rust" priority="15">
1111
<highlighting>
1212
<list name="fn">
1313
<item> fn </item>

branches/snap-stage3/src/etc/unicode.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -333,14 +333,14 @@ def emit_property_module(f, mod, tbl, emit_fn):
333333
def emit_regex_module(f, cats, w_data):
334334
f.write("pub mod regex {\n")
335335
regex_class = "&'static [(char, char)]"
336-
class_table = "&'static [(&'static str, %s)]" % regex_class
336+
class_table = "&'static [(&'static str, &'static %s)]" % regex_class
337337

338338
emit_table(f, "UNICODE_CLASSES", cats, class_table,
339-
pfun=lambda x: "(\"%s\",super::%s::%s_table)" % (x[0], x[1], x[0]))
339+
pfun=lambda x: "(\"%s\",&super::%s::%s_table)" % (x[0], x[1], x[0]))
340340

341-
f.write(" pub static PERLD: %s = super::general_category::Nd_table;\n\n"
341+
f.write(" pub static PERLD: &'static %s = &super::general_category::Nd_table;\n\n"
342342
% regex_class)
343-
f.write(" pub static PERLS: %s = super::property::White_Space_table;\n\n"
343+
f.write(" pub static PERLS: &'static %s = &super::property::White_Space_table;\n\n"
344344
% regex_class)
345345

346346
emit_table(f, "PERLW", w_data, regex_class)

branches/snap-stage3/src/liballoc/heap.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@ pub fn stats_print() {
8585
///
8686
/// This preserves the non-null invariant for types like `Box<T>`. The address may overlap with
8787
/// non-zero-size memory allocations.
88-
pub static EMPTY: *mut () = 0x1 as *mut ();
88+
pub const EMPTY: *mut () = 0x1 as *mut ();
8989

9090
/// The allocator for unique pointers.
9191
#[cfg(not(test))]

branches/snap-stage3/src/liballoc/lib.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@
6666
#![crate_type = "rlib"]
6767
#![doc(html_logo_url = "http://www.rust-lang.org/logos/rust-logo-128x128-blk-v2.png",
6868
html_favicon_url = "http://www.rust-lang.org/favicon.ico",
69-
html_root_url = "http://doc.rust-lang.org/")]
69+
html_root_url = "http://doc.rust-lang.org/nightly/")]
7070

7171
#![no_std]
7272
#![feature(lang_items, phase, unsafe_destructor)]

branches/snap-stage3/src/libarena/lib.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@
2626
#![license = "MIT/ASL2"]
2727
#![doc(html_logo_url = "http://www.rust-lang.org/logos/rust-logo-128x128-blk-v2.png",
2828
html_favicon_url = "http://www.rust-lang.org/favicon.ico",
29-
html_root_url = "http://doc.rust-lang.org/0.12.0/")]
29+
html_root_url = "http://doc.rust-lang.org/nightly/")]
3030

3131
#![feature(unsafe_destructor)]
3232
#![allow(missing_doc)]

0 commit comments

Comments
 (0)