Skip to content

Commit 944fb2e

Browse files
committed
---
yaml --- r: 80957 b: refs/heads/snap-stage3 c: 9e3258e h: refs/heads/master i: 80955: 408e89f v: v3
1 parent 41aa3df commit 944fb2e

Some content is hidden

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

53 files changed

+2446
-1247
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: 4c6bf4872012c010f84dc7fa2cdfe87522533f89
33
refs/heads/snap-stage1: e33de59e47c5076a89eadeb38f4934f58a3618a6
4-
refs/heads/snap-stage3: b82e0d32ce6bca2f2fb64ce078d400a1aab0d7c9
4+
refs/heads/snap-stage3: 9e3258e51f14a2442b845949a9a31af22501e5c1
55
refs/heads/try: 70152ff55722878cde684ee6462c14c65f2c4729
66
refs/tags/release-0.1: 1f5c5126e96c79d22cb7862f75304136e204f105
77
refs/heads/ndm: f3868061cd7988080c30d6d5bf352a5a5fe2460b

branches/snap-stage3/.gitattributes

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[attr]rust text eol=lf whitespace=tab-in-indent,trailing-space,tabwidth=4
22

3-
* text eol=lf
3+
* text=auto eol=lf
44
*.cpp rust
55
*.h rust
66
*.rs rust

branches/snap-stage3/RELEASES.txt

Lines changed: 145 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,148 @@
1+
Version 0.8 (October 2013)
2+
--------------------------
3+
4+
* ~2100 changes, numerous bugfixes
5+
6+
* Language
7+
* The `for` loop syntax has changed to work with the `Iterator` trait.
8+
* At long last, unwinding works on Windows.
9+
* Default methods definitely mostly work.
10+
* Many trait inheritance bugs fixed.
11+
* Owned and borrowed trait objects work more reliably.
12+
* `copy` is no longer a keyword. It has been replaced by the `Clone` trait.
13+
* rustc no longer emits code for the `debug!` macro unless it is passed
14+
`--cfg debug`
15+
* mod.rs is now "blessed". When loading `mod foo;`, rustc will now look
16+
for foo.rs, then foo/mod.rs, and will generate an error when both are
17+
present.
18+
* Strings no longer contain trailing nulls. The new `std::c_str` module
19+
provides new mechanisms for converting to C strings.
20+
* The type of foreign functions is now `extern "C" fn` instead of `*u8'.
21+
* The FFI has been overhauled such that foreign functions are called directly,
22+
instead of through a stack-switching wrapper.
23+
* Calling a foreign function must be done through a Rust function with the
24+
`#[fixed_stack_segment]` attribute.
25+
* The `externfn!` macro can be used to declare both a foreign function and
26+
a `#[fixed_stack_segment]` wrapper at once.
27+
* `pub` and `priv` modifiers on `extern` blocks are no longer parsed.
28+
* `unsafe` is no longer allowed on extern fns - they are all unsafe.
29+
* `priv` is disallowed everywhere except for struct fields and enum variants.
30+
* `&T` (besides `&'static T`) is no longer allowed in `@T`.
31+
* `ref` bindings in irrefutable patterns work correctly now.
32+
* `char` is now prevented from containing invalid code points.
33+
* Casting to `bool` is no longer allowed.
34+
* `yield` is a reserved keyword.
35+
* `typeof` is a reserved keyword.
36+
* Crates may be imported by URL with `extern mod foo = "url";`.
37+
* Explicit enum discriminants may be given as uints as in `enum E { V = 0u }`
38+
* Static vectors can be initialized with repeating elements,
39+
e.g. `static foo: [u8, .. 100]: [0, .. 100];`.
40+
* Static structs can be initialized with functional record update,
41+
e.g. `static foo: Foo = Foo { a: 5, .. bar };`.
42+
* `cfg!` can be used to conditionally execute code based on the crate
43+
configuration, similarly to `#[cfg(...)]`.
44+
* The `unnecessary_qualification` lint detects unneeded module
45+
prefixes (default: allow).
46+
* Arithmetic operations have been implemented on the SIMD types in
47+
`std::unstable::simd`.
48+
* Exchange allocation headers were removed, reducing memory usage.
49+
* `format!` implements a completely new, extensible, and higher-performance
50+
string formatting system. It will replace `fmt!`.
51+
* `print!` and `println!` write formatted strings (using the `format!`
52+
extension) to stdout.
53+
* `write!` and `writeln!` write formatted strings (using the `format!`
54+
extension) to the new Writers in `std::rt::io`.
55+
* The library section in which a function or static is placed may
56+
be specified with `#[link_section = "..."]`.
57+
* The `proto!` syntax extension for defining bounded message protocols
58+
was removed.
59+
* `macro_rules!` is hygenic for `let` declarations.
60+
* The `#[export_name]` attribute specifies the name of a symbol.
61+
* `unreachable!` can be used to indicate unreachable code, and fails
62+
if executed.
63+
64+
* Libraries
65+
* std: Transitioned to the new runtime, written in Rust.
66+
* std: Added an experimental I/O library, `rt::io`, based on the new
67+
runtime.
68+
* std: A new generic `range` function was added to the prelude, replacing
69+
`uint::range` and friends.
70+
* std: `range_rev` no longer exists. Since range is an iterator it can be
71+
reversed with `range(lo, hi).invert()`.
72+
* std: The `chain` method on option renamed to `and_then`; `unwrap_or_default`
73+
renamed to `unwrap_or`.
74+
* std: The `iterator` module was renamed to `iter`.
75+
* std: Integral types now support the `checked_add`, `checked_sub`, and
76+
`checked_mul` operations for detecting overflow.
77+
* std: Many methods in `str`, `vec`, `option, `result` were renamed for
78+
consistency.
79+
* std: Methods are standardizing on conventions for casting methods:
80+
`to_foo` for copying, `into_foo` for moving, `as_foo` for temporary
81+
and cheap casts.
82+
* std: The `CString` type in `c_str` provides new ways to convert to and
83+
from C strings.
84+
* std: `DoubleEndedIterator` can yield elements in two directions.
85+
* std: The `mut_split` method on vectors partitions an `&mut [T]` into
86+
two splices.
87+
* std: `str::from_bytes` renamed to `str::from_utf8`.
88+
* std: `pop_opt` and `shift_opt` methods added to vectors.
89+
* std: The task-local data interface no longer uses @, and keys are
90+
no longer function pointers.
91+
* std: The `swap_unwrap` method of `Option` renamed to `take_unwrap`.
92+
* std: Added `SharedPort` to `comm`.
93+
* std: `Eq` has a default method for `ne`; only `eq` is required
94+
in implementations.
95+
* std: `Ord` has default methods for `le`, `gt` and `le`; only `lt`
96+
is required in implementations.
97+
* std: `is_utf8` performance is improved, impacting many string functions.
98+
* std: `os::MemoryMap` provides cross-platform mmap.
99+
* std: `ptr::offset` is now unsafe, but also more optimized. Offsets that
100+
are not 'in-bounds' are considered undefined.
101+
* std: Many freestanding functions in `vec` removed in favor of methods.
102+
* std: Many freestanding functions on scalar types removed in favor of
103+
methods.
104+
* std: Many options to task builders were removed since they don't make
105+
sense in the new scheduler design.
106+
* std: More containers implement `FromIterator` so can be created by the
107+
`collect` method.
108+
* std: More complete atomic types in `unstable::atomics`.
109+
* std: `comm::PortSet` removed.
110+
* std: Mutating methods in the `Set` and `Map` traits have been moved into
111+
the `MutableSet` and `MutableMap` traits. `Container::is_empty`,
112+
`Map::contains_key`, `MutableMap::insert`, and `MutableMap::remove` have
113+
default implementations.
114+
* extra: `dlist`, the doubly-linked list was modernized.
115+
* extra: Added a `hex` module with `ToHex` and `FromHex` traits.
116+
* extra: Added `glob` module, replacing `std::os::glob`.
117+
* extra: `rope` was removed.
118+
* extra: `deque` was renamed to `ringbuf`. `RingBuf` implements `Deque`.
119+
* extra: `net`, and `timer` were removed. The experimental replacements
120+
are `std::rt::io::net` and `std::rt::io::timer`.
121+
* extra: Iterators implemented for `SmallIntMap`.
122+
* extra: Iterators implemented for `Bitv` and `BitvSet`.
123+
* extra: `SmallIntSet` removed. Use `BitvSet`.
124+
* extra: Performance of JSON parsing greatly improved.
125+
* extra: `semver` updated to SemVer 2.0.0.
126+
* extra: `term` handles more terminals correctly.
127+
* extra: `dbg` module removed.
128+
129+
* Other
130+
* rustc's debug info generation (`-Z debug-info`) is greatly improved.
131+
* rustc accepts `--target-cpu` to compile to a specific CPU architecture,
132+
similarly to gcc's `--march` flag.
133+
* rustpkg has received many improvements.
134+
* rustpkg supports git tags as package IDs.
135+
* rustpkg builds into target-specific directories so it can be used for
136+
cross-compiling.
137+
* The number of concurrent test tasks is controlled by the environment
138+
variable RUST_TEST_TASKS.
139+
* The test harness can now report metrics for benchmarks.
140+
* All tools have man pages.
141+
* Programs compiled with `--test` now support the `-h` and `--help` flags.
142+
* The runtime uses jemalloc for allocations.
143+
* Segmented stacks are temporarily disabled as part of the transition to
144+
the new runtime. Stack overflows are possible!
145+
1146
Version 0.7 (July 2013)
2147
-----------------------
3148

branches/snap-stage3/mk/rt.mk

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,6 @@ RUNTIME_CXXS_$(1)_$(2) := \
7171
rt/sync/lock_and_signal.cpp \
7272
rt/sync/rust_thread.cpp \
7373
rt/rust_builtin.cpp \
74-
rt/rust_run_program.cpp \
7574
rt/rust_rng.cpp \
7675
rt/rust_upcall.cpp \
7776
rt/rust_uv.cpp \

branches/snap-stage3/src/compiletest/compiletest.rs

Lines changed: 25 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -91,64 +91,62 @@ pub fn parse_config(args: ~[~str]) -> config {
9191
let matches =
9292
&match getopts::groups::getopts(args_, groups) {
9393
Ok(m) => m,
94-
Err(f) => fail!(getopts::fail_str(f))
94+
Err(f) => fail!(f.to_err_msg())
9595
};
9696

97-
if getopts::opt_present(matches, "h") || getopts::opt_present(matches, "help") {
97+
if matches.opt_present("h") || matches.opt_present("help") {
9898
let message = fmt!("Usage: %s [OPTIONS] [TESTNAME...]", argv0);
9999
println(getopts::groups::usage(message, groups));
100100
println("");
101101
fail!()
102102
}
103103

104104
fn opt_path(m: &getopts::Matches, nm: &str) -> Path {
105-
Path(getopts::opt_str(m, nm))
105+
Path(m.opt_str(nm).unwrap())
106106
}
107107

108108
config {
109-
compile_lib_path: getopts::opt_str(matches, "compile-lib-path"),
110-
run_lib_path: getopts::opt_str(matches, "run-lib-path"),
109+
compile_lib_path: matches.opt_str("compile-lib-path").unwrap(),
110+
run_lib_path: matches.opt_str("run-lib-path").unwrap(),
111111
rustc_path: opt_path(matches, "rustc-path"),
112-
clang_path: getopts::opt_maybe_str(matches, "clang-path").map_move(|s| Path(s)),
113-
llvm_bin_path: getopts::opt_maybe_str(matches, "llvm-bin-path").map_move(|s| Path(s)),
112+
clang_path: matches.opt_str("clang-path").map_move(|s| Path(s)),
113+
llvm_bin_path: matches.opt_str("llvm-bin-path").map_move(|s| Path(s)),
114114
src_base: opt_path(matches, "src-base"),
115115
build_base: opt_path(matches, "build-base"),
116116
aux_base: opt_path(matches, "aux-base"),
117-
stage_id: getopts::opt_str(matches, "stage-id"),
118-
mode: str_mode(getopts::opt_str(matches, "mode")),
119-
run_ignored: getopts::opt_present(matches, "ignored"),
117+
stage_id: matches.opt_str("stage-id").unwrap(),
118+
mode: str_mode(matches.opt_str("mode").unwrap()),
119+
run_ignored: matches.opt_present("ignored"),
120120
filter:
121121
if !matches.free.is_empty() {
122122
Some(matches.free[0].clone())
123123
} else {
124124
None
125125
},
126-
logfile: getopts::opt_maybe_str(matches, "logfile").map_move(|s| Path(s)),
127-
save_metrics: getopts::opt_maybe_str(matches, "save-metrics").map_move(|s| Path(s)),
126+
logfile: matches.opt_str("logfile").map_move(|s| Path(s)),
127+
save_metrics: matches.opt_str("save-metrics").map_move(|s| Path(s)),
128128
ratchet_metrics:
129-
getopts::opt_maybe_str(matches, "ratchet-metrics").map_move(|s| Path(s)),
129+
matches.opt_str("ratchet-metrics").map_move(|s| Path(s)),
130130
ratchet_noise_percent:
131-
getopts::opt_maybe_str(matches,
132-
"ratchet-noise-percent").map_move(|s|
133-
from_str::<f64>(s).unwrap()),
134-
runtool: getopts::opt_maybe_str(matches, "runtool"),
135-
rustcflags: getopts::opt_maybe_str(matches, "rustcflags"),
136-
jit: getopts::opt_present(matches, "jit"),
137-
target: opt_str2(getopts::opt_maybe_str(matches, "target")).to_str(),
138-
adb_path: opt_str2(getopts::opt_maybe_str(matches, "adb-path")).to_str(),
131+
matches.opt_str("ratchet-noise-percent").and_then(|s| from_str::<f64>(s)),
132+
runtool: matches.opt_str("runtool"),
133+
rustcflags: matches.opt_str("rustcflags"),
134+
jit: matches.opt_present("jit"),
135+
target: opt_str2(matches.opt_str("target")).to_str(),
136+
adb_path: opt_str2(matches.opt_str("adb-path")).to_str(),
139137
adb_test_dir:
140-
opt_str2(getopts::opt_maybe_str(matches, "adb-test-dir")).to_str(),
138+
opt_str2(matches.opt_str("adb-test-dir")).to_str(),
141139
adb_device_status:
142-
if (opt_str2(getopts::opt_maybe_str(matches, "target")) ==
140+
if (opt_str2(matches.opt_str("target")) ==
143141
~"arm-linux-androideabi") {
144-
if (opt_str2(getopts::opt_maybe_str(matches, "adb-test-dir")) !=
142+
if (opt_str2(matches.opt_str("adb-test-dir")) !=
145143
~"(none)" &&
146-
opt_str2(getopts::opt_maybe_str(matches, "adb-test-dir")) !=
144+
opt_str2(matches.opt_str("adb-test-dir")) !=
147145
~"") { true }
148146
else { false }
149147
} else { false },
150-
test_shard: test::opt_shard(getopts::opt_maybe_str(matches, "test-shard")),
151-
verbose: getopts::opt_present(matches, "verbose")
148+
test_shard: test::opt_shard(matches.opt_str("test-shard")),
149+
verbose: matches.opt_present("verbose")
152150
}
153151
}
154152

branches/snap-stage3/src/libextra/crypto/cryptoutil.rs

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -353,7 +353,6 @@ mod test {
353353

354354
use cryptoutil::{add_bytes_to_bits, add_bytes_to_bits_tuple};
355355
use digest::Digest;
356-
use hex::FromHex;
357356

358357
/// Feed 1,000,000 'a's into the digest with varying input sizes and check that the result is
359358
/// correct.
@@ -374,10 +373,8 @@ mod test {
374373
}
375374

376375
let result_str = digest.result_str();
377-
let result_bytes = digest.result_bytes();
378376

379-
assert_eq!(expected, result_str.as_slice());
380-
assert_eq!(expected.from_hex().unwrap(), result_bytes);
377+
assert!(expected == result_str);
381378
}
382379

383380
// A normal addition - no overflow occurs

branches/snap-stage3/src/libextra/crypto/digest.rs

Lines changed: 13 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,6 @@
1010

1111
use std::vec;
1212

13-
use hex::ToHex;
14-
1513

1614
/**
1715
* The Digest trait specifies an interface common to digest functions, such as SHA-1 and the SHA-2
@@ -60,20 +58,23 @@ pub trait Digest {
6058

6159
/**
6260
* Convenience function that retrieves the result of a digest as a
63-
* newly allocated vec of bytes.
61+
* ~str in hexadecimal format.
6462
*/
65-
fn result_bytes(&mut self) -> ~[u8] {
63+
fn result_str(&mut self) -> ~str {
6664
let mut buf = vec::from_elem((self.output_bits()+7)/8, 0u8);
6765
self.result(buf);
68-
buf
66+
return to_hex(buf);
6967
}
68+
}
7069

71-
/**
72-
* Convenience function that retrieves the result of a digest as a
73-
* ~str in hexadecimal format.
74-
*/
75-
fn result_str(&mut self) -> ~str {
76-
self.result_bytes().to_hex()
70+
fn to_hex(rr: &[u8]) -> ~str {
71+
let mut s = ~"";
72+
for b in rr.iter() {
73+
let hex = (*b as uint).to_str_radix(16u);
74+
if hex.len() == 1 {
75+
s.push_char('0');
76+
}
77+
s.push_str(hex);
7778
}
79+
return s;
7880
}
79-

0 commit comments

Comments
 (0)