Skip to content

Commit 6d840aa

Browse files
committed
---
yaml --- r: 138936 b: refs/heads/try2 c: a21b43c h: refs/heads/master v: v3
1 parent da0d66a commit 6d840aa

38 files changed

+462
-3156
lines changed

[refs]

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ refs/heads/snap-stage3: 78a7676898d9f80ab540c6df5d4c9ce35bb50463
55
refs/heads/try: 519addf6277dbafccbb4159db4b710c37eaa2ec5
66
refs/tags/release-0.1: 1f5c5126e96c79d22cb7862f75304136e204f105
77
refs/heads/ndm: f3868061cd7988080c30d6d5bf352a5a5fe2460b
8-
refs/heads/try2: 4e350c7ce7574259dd0aad9f981e615b2b917d20
8+
refs/heads/try2: a21b43c6bbb0edcf4dfe9913a084f28eb950b364
99
refs/heads/dist-snap: ba4081a5a8573875fed17545846f6f6902c8ba8d
1010
refs/tags/release-0.2: c870d2dffb391e14efb05aa27898f1f6333a9596
1111
refs/tags/release-0.3: b5f0d0f648d9a6153664837026ba1be43d3e2503

branches/try2/RELEASES.txt

Lines changed: 2 additions & 79 deletions
Original file line numberDiff line numberDiff line change
@@ -1,85 +1,8 @@
1-
Version 0.6 (March 2013)
1+
Version 0.6 (?)
22
---------------------------
33

4-
* ~??? changes, numerous bugfixes
5-
6-
* TODO:
7-
* Ord/Cmp
8-
* Lifetime changes
9-
* Implicit self
10-
* Remove `static` keyword
11-
* Static method syntax
12-
* `as Trait`
13-
* `copy` removed?
14-
15-
* Syntax changes
16-
* The self type parameter in traits is now spelled `Self`
17-
* Replaced the `Durable` trait with the `'static` lifetime
18-
* The old closure type syntax with the trailing sigil has been
19-
removed in favor of the more consistent leading sigil
20-
* `super` is a keyword, and may be prefixed to paths
21-
* Trait bounds are separated with `+` instead of whitespace
22-
* Traits are implemented with `impl Trait for Type`
23-
instead of `impl Type: Trait`
24-
* The `export` keyword has finally been removed
25-
* The `move` keyword has been removed (linear types move by default)
26-
* The interior mutability qualifier on vectors, `[mut T]`, has been
27-
removed. Use `&mut [T]`, etc.
28-
* `mut` is no longer valid in `~mut T`. Use inherited mutability
29-
* `fail` is no longer a keyword. Use `fail!()`
30-
* `assert` is no longer a keyword. Use `assert!()`
31-
* `log` is no longer a keyword. use `debug!`, etc.
32-
* 1-tuples may be represented as `(T,)`
33-
* Struct fields may no longer be `mut`. Use inherited mutability,
34-
`@mut T`, `core::mut` or `core::cell`
35-
* `extern mod { ... }` is no longer valid syntax for foreign
36-
function modules. Use extern blocks: `extern { ... }`
37-
* Newtype enums removed. Used tuple-structs.
38-
* Trait implementations no longer support visibility modifiers
39-
40-
* Semantic changes
41-
* Linear types move by default, eliminating the `move` keyword
42-
* All foreign functions are considered unsafe
43-
* &mut is now unaliasable
44-
* Writes to borrowed @mut pointers are prevented dynamically
45-
* () has size 0
46-
* The name of the main function can be customized using #[main]
47-
* The default type of an inferred closure is &fn instead of @fn
48-
* Name resolution continues to be tweaked
49-
* Method visibility is inherited from the implementation declaration
50-
51-
* Other language changes
52-
* Structural records have been removed
53-
* Many more types can be used in constants, including enums
54-
`static lifetime pointers and vectors
55-
* Pattern matching over vectors improved and expanded
56-
* Typechecking of closure types has been overhauled to
57-
improve inference and eliminate unsoundness
58-
594
* Libraries
60-
* Lots of effort to organize the container API's around `core::container`
61-
* `core::send_map` renamed to `core::hashmap`
62-
* Added big integers to `std::bigint`
63-
* Removed `core::oldcomm` module
64-
* Added pipe-based `core::comm` module
65-
* Reimplemented `std::treemap`
66-
* Numeric traits have been reorganized under `core::num`
67-
* `core::dvec` removed. Use `@mut ~[T]` or other language types
68-
* `vec::slice` finally returns a slice
69-
* `debug!` and friends don't require a format string, e.g. `debug!(Foo)`
70-
71-
* Tools
72-
* Replaced the 'cargo' package manager with 'rustpkg'
73-
* Added all-purpose 'rust' tool
74-
* `rustc --test` now supports a benchmarks with the `#[bench]` attribute
75-
* rustc now attempts to offer spelling suggestions
76-
77-
* Misc
78-
* Improved support for ARM and Android
79-
* Preliminary MIPS backend
80-
* Improved foreign function ABI implementation for x86, x86_64
81-
* Various and memory usage improvements
82-
* Rust code may be embedded in foreign code under limited circumstances
5+
* `core::send_map` renamed to `core::hashmap`
836

847
Version 0.5 (December 2012)
858
---------------------------

branches/try2/src/libcore/core.rc

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -243,8 +243,7 @@ pub mod unicode;
243243
#[path = "num/cmath.rs"]
244244
pub mod cmath;
245245
pub mod stackwalk;
246-
#[path = "rt/mod.rs"]
247-
pub mod rt;
246+
248247

249248
// A curious inner-module that's not exported that contains the binding
250249
// 'core' so that macro-expanded references to core::error and such

branches/try2/src/libcore/option.rs

Lines changed: 13 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ let unwrapped_msg = match msg {
4242
*/
4343

4444
use cmp::{Eq,Ord};
45+
use ops::Add;
4546
use kinds::Copy;
4647
use util;
4748
use num::Zero;
@@ -85,6 +86,18 @@ impl<T:Ord> Ord for Option<T> {
8586
}
8687
}
8788

89+
impl<T: Copy + Add<T,T>> Add<Option<T>, Option<T>> for Option<T> {
90+
#[inline(always)]
91+
pure fn add(&self, other: &Option<T>) -> Option<T> {
92+
match (*self, *other) {
93+
(None, None) => None,
94+
(_, None) => *self,
95+
(None, _) => *other,
96+
(Some(ref lhs), Some(ref rhs)) => Some(*lhs + *rhs)
97+
}
98+
}
99+
}
100+
88101
#[inline(always)]
89102
pub pure fn get<T:Copy>(opt: Option<T>) -> T {
90103
/*!
@@ -130,27 +143,6 @@ pub pure fn get_ref<T>(opt: &r/Option<T>) -> &r/T {
130143
}
131144
}
132145
133-
pub pure fn get_mut_ref<T>(opt: &r/mut Option<T>) -> &r/mut T {
134-
/*!
135-
Gets a mutable reference to the value inside an option.
136-
137-
# Failure
138-
139-
Fails if the value equals `None`
140-
141-
# Safety note
142-
143-
In general, because this function may fail, its use is discouraged
144-
(calling `get` on `None` is akin to dereferencing a null pointer).
145-
Instead, prefer to use pattern matching and handle the `None`
146-
case explicitly.
147-
*/
148-
match *opt {
149-
Some(ref mut x) => x,
150-
None => fail!(~"option::get_mut_ref none")
151-
}
152-
}
153-
154146
#[inline(always)]
155147
pub pure fn map<T, U>(opt: &r/Option<T>, f: &fn(x: &r/T) -> U) -> Option<U> {
156148
//! Maps a `some` value by reference from one type to another
@@ -385,23 +377,6 @@ pub impl<T> Option<T> {
385377
#[inline(always)]
386378
pure fn get_ref(&self) -> &self/T { get_ref(self) }
387379
388-
/**
389-
Gets a mutable reference to the value inside an option.
390-
391-
# Failure
392-
393-
Fails if the value equals `None`
394-
395-
# Safety note
396-
397-
In general, because this function may fail, its use is discouraged
398-
(calling `get` on `None` is akin to dereferencing a null pointer).
399-
Instead, prefer to use pattern matching and handle the `None`
400-
case explicitly.
401-
*/
402-
#[inline(always)]
403-
pure fn get_mut_ref(&mut self) -> &self/mut T { get_mut_ref(self) }
404-
405380
/**
406381
* Gets the value out of an option without copying.
407382
*

branches/try2/src/libcore/rt/context.rs

Lines changed: 0 additions & 156 deletions
This file was deleted.

branches/try2/src/libcore/rt/io.rs

Lines changed: 0 additions & 45 deletions
This file was deleted.

0 commit comments

Comments
 (0)