|
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 are ready for use. |
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 can omit emission of code for the `debug!` macro if it is passed |
14 |
| - `--cfg ndebug` |
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 |
| - * `\0` is now accepted as an escape in chars and strings. |
35 |
| - * `yield` is a reserved keyword. |
36 |
| - * `typeof` is a reserved keyword. |
37 |
| - * Crates may be imported by URL with `extern mod foo = "url";`. |
38 |
| - * Explicit enum discriminants may be given as uints as in `enum E { V = 0u }` |
39 |
| - * Static vectors can be initialized with repeating elements, |
40 |
| - e.g. `static foo: [u8, .. 100]: [0, .. 100];`. |
41 |
| - * Static structs can be initialized with functional record update, |
42 |
| - e.g. `static foo: Foo = Foo { a: 5, .. bar };`. |
43 |
| - * `cfg!` can be used to conditionally execute code based on the crate |
44 |
| - configuration, similarly to `#[cfg(...)]`. |
45 |
| - * The `unnecessary_qualification` lint detects unneeded module |
46 |
| - prefixes (default: allow). |
47 |
| - * Arithmetic operations have been implemented on the SIMD types in |
48 |
| - `std::unstable::simd`. |
49 |
| - * Exchange allocation headers were removed, reducing memory usage. |
50 |
| - * `format!` implements a completely new, extensible, and higher-performance |
51 |
| - string formatting system. It will replace `fmt!`. |
52 |
| - * `print!` and `println!` write formatted strings (using the `format!` |
53 |
| - extension) to stdout. |
54 |
| - * `write!` and `writeln!` write formatted strings (using the `format!` |
55 |
| - extension) to the new Writers in `std::rt::io`. |
56 |
| - * The library section in which a function or static is placed may |
57 |
| - be specified with `#[link_section = "..."]`. |
58 |
| - * The `proto!` syntax extension for defining bounded message protocols |
59 |
| - was removed. |
60 |
| - * `macro_rules!` is hygienic for `let` declarations. |
61 |
| - * The `#[export_name]` attribute specifies the name of a symbol. |
62 |
| - * `unreachable!` can be used to indicate unreachable code, and fails |
63 |
| - if executed. |
64 |
| - |
65 |
| - * Libraries |
66 |
| - * std: Transitioned to the new runtime, written in Rust. |
67 |
| - * std: Added an experimental I/O library, `rt::io`, based on the new |
68 |
| - runtime. |
69 |
| - * std: A new generic `range` function was added to the prelude, replacing |
70 |
| - `uint::range` and friends. |
71 |
| - * std: `range_rev` no longer exists. Since range is an iterator it can be |
72 |
| - reversed with `range(lo, hi).invert()`. |
73 |
| - * std: The `chain` method on option renamed to `and_then`; `unwrap_or_default` |
74 |
| - renamed to `unwrap_or`. |
75 |
| - * std: The `iterator` module was renamed to `iter`. |
76 |
| - * std: Integral types now support the `checked_add`, `checked_sub`, and |
77 |
| - `checked_mul` operations for detecting overflow. |
78 |
| - * std: Many methods in `str`, `vec`, `option, `result` were renamed for |
79 |
| - consistency. |
80 |
| - * std: Methods are standardizing on conventions for casting methods: |
81 |
| - `to_foo` for copying, `into_foo` for moving, `as_foo` for temporary |
82 |
| - and cheap casts. |
83 |
| - * std: The `CString` type in `c_str` provides new ways to convert to and |
84 |
| - from C strings. |
85 |
| - * std: `DoubleEndedIterator` can yield elements in two directions. |
86 |
| - * std: The `mut_split` method on vectors partitions an `&mut [T]` into |
87 |
| - two splices. |
88 |
| - * std: `str::from_bytes` renamed to `str::from_utf8`. |
89 |
| - * std: `pop_opt` and `shift_opt` methods added to vectors. |
90 |
| - * std: The task-local data interface no longer uses @, and keys are |
91 |
| - no longer function pointers. |
92 |
| - * std: The `swap_unwrap` method of `Option` renamed to `take_unwrap`. |
93 |
| - * std: Added `SharedPort` to `comm`. |
94 |
| - * std: `Eq` has a default method for `ne`; only `eq` is required |
95 |
| - in implementations. |
96 |
| - * std: `Ord` has default methods for `le`, `gt` and `ge`; only `lt` |
97 |
| - is required in implementations. |
98 |
| - * std: `is_utf8` performance is improved, impacting many string functions. |
99 |
| - * std: `os::MemoryMap` provides cross-platform mmap. |
100 |
| - * std: `ptr::offset` is now unsafe, but also more optimized. Offsets that |
101 |
| - are not 'in-bounds' are considered undefined. |
102 |
| - * std: Many freestanding functions in `vec` removed in favor of methods. |
103 |
| - * std: Many freestanding functions on scalar types removed in favor of |
104 |
| - methods. |
105 |
| - * std: Many options to task builders were removed since they don't make |
106 |
| - sense in the new scheduler design. |
107 |
| - * std: More containers implement `FromIterator` so can be created by the |
108 |
| - `collect` method. |
109 |
| - * std: More complete atomic types in `unstable::atomics`. |
110 |
| - * std: `comm::PortSet` removed. |
111 |
| - * std: Mutating methods in the `Set` and `Map` traits have been moved into |
112 |
| - the `MutableSet` and `MutableMap` traits. `Container::is_empty`, |
113 |
| - `Map::contains_key`, `MutableMap::insert`, and `MutableMap::remove` have |
114 |
| - default implementations. |
115 |
| - * std: Various `from_str` functions were removed in favor of a generic |
116 |
| - `from_str` which is available in the prelude. |
117 |
| - * std: `util::unreachable` removed in favor of the `unreachable!` macro. |
118 |
| - * extra: `dlist`, the doubly-linked list was modernized. |
119 |
| - * extra: Added a `hex` module with `ToHex` and `FromHex` traits. |
120 |
| - * extra: Added `glob` module, replacing `std::os::glob`. |
121 |
| - * extra: `rope` was removed. |
122 |
| - * extra: `deque` was renamed to `ringbuf`. `RingBuf` implements `Deque`. |
123 |
| - * extra: `net`, and `timer` were removed. The experimental replacements |
124 |
| - are `std::rt::io::net` and `std::rt::io::timer`. |
125 |
| - * extra: Iterators implemented for `SmallIntMap`. |
126 |
| - * extra: Iterators implemented for `Bitv` and `BitvSet`. |
127 |
| - * extra: `SmallIntSet` removed. Use `BitvSet`. |
128 |
| - * extra: Performance of JSON parsing greatly improved. |
129 |
| - * extra: `semver` updated to SemVer 2.0.0. |
130 |
| - * extra: `term` handles more terminals correctly. |
131 |
| - * extra: `dbg` module removed. |
132 |
| - * extra: `par` module removed. |
133 |
| - * extra: `future` was cleaned up, with some method renames. |
134 |
| - * extra: Most free functions in `getopts` were converted to methods. |
135 |
| - |
136 |
| - * Other |
137 |
| - * rustc's debug info generation (`-Z debug-info`) is greatly improved. |
138 |
| - * rustc accepts `--target-cpu` to compile to a specific CPU architecture, |
139 |
| - similarly to gcc's `--march` flag. |
140 |
| - * rustc's performance compiling small crates is much better. |
141 |
| - * rustpkg has received many improvements. |
142 |
| - * rustpkg supports git tags as package IDs. |
143 |
| - * rustpkg builds into target-specific directories so it can be used for |
144 |
| - cross-compiling. |
145 |
| - * The number of concurrent test tasks is controlled by the environment |
146 |
| - variable RUST_TEST_TASKS. |
147 |
| - * The test harness can now report metrics for benchmarks. |
148 |
| - * All tools have man pages. |
149 |
| - * Programs compiled with `--test` now support the `-h` and `--help` flags. |
150 |
| - * The runtime uses jemalloc for allocations. |
151 |
| - * Segmented stacks are temporarily disabled as part of the transition to |
152 |
| - the new runtime. Stack overflows are possible! |
153 |
| - * A new documentation backend, rustdoc_ng, is available for use. It is |
154 |
| - still invoked through the normal `rustdoc` command. |
155 |
| - |
156 | 1 | Version 0.7 (July 2013)
|
157 | 2 | -----------------------
|
158 | 3 |
|
@@ -212,7 +57,6 @@ Version 0.7 (July 2013)
|
212 | 57 | * std: Many old internal vector and string iterators,
|
213 | 58 | incl. `any`, `all`. removed.
|
214 | 59 | * std: The `finalize` method of `Drop` renamed to `drop`.
|
215 |
| - * std: The `drop` method now takes `&mut self` instead of `&self`. |
216 | 60 | * std: The prelude no longer reexports any modules, only types and traits.
|
217 | 61 | * std: Prelude additions: `print`, `println`, `FromStr`, `ApproxEq`, `Equiv`,
|
218 | 62 | `Iterator`, `IteratorUtil`, many numeric traits, many tuple traits.
|
|
0 commit comments