|
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 |
| - * `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 hygienic 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 `ge`; 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 |
| - * rustc's performance compiling small crates is much better. |
134 |
| - * rustpkg has received many improvements. |
135 |
| - * rustpkg supports git tags as package IDs. |
136 |
| - * rustpkg builds into target-specific directories so it can be used for |
137 |
| - cross-compiling. |
138 |
| - * The number of concurrent test tasks is controlled by the environment |
139 |
| - variable RUST_TEST_TASKS. |
140 |
| - * The test harness can now report metrics for benchmarks. |
141 |
| - * All tools have man pages. |
142 |
| - * Programs compiled with `--test` now support the `-h` and `--help` flags. |
143 |
| - * The runtime uses jemalloc for allocations. |
144 |
| - * Segmented stacks are temporarily disabled as part of the transition to |
145 |
| - the new runtime. Stack overflows are possible! |
146 |
| - * A new documentation backend, rustdoc_ng, is available for use |
147 |
| - |
148 | 1 | Version 0.7 (July 2013)
|
149 | 2 | -----------------------
|
150 | 3 |
|
|
0 commit comments