|
1 |
| -Version 0.9 (January 2014) |
| 1 | +Version 0.9 (XXX 2013) |
2 | 2 | --------------------------
|
3 | 3 |
|
4 |
| - * ~1600 changes, numerous bugfixes |
5 |
| - |
6 |
| - * Language |
7 |
| - * The `float` type has been removed. Use `f32` or `f64` instead. |
8 |
| - * A new facility for enabling experimental features (feature gating) has |
9 |
| - been added, using the crate-level `#[feature(foo)]` attribute. |
10 |
| - * Managed boxes (@) are now behind a feature gate |
11 |
| - (`#[feature(managed_boxes)]`) in preperation for future removal. Use the |
12 |
| - standard library's `Gc` or `Rc` types instead. |
13 |
| - * `@mut` has been removed. Use `std::cell::{Cell, RefCell}` instead. |
14 |
| - * Jumping back to the top of a loop is now done with `continue` instead of |
15 |
| - `loop`. |
16 |
| - * Strings can no longer be mutated through index assignment. |
17 |
| - * Raw strings can be created via the basic `r"foo"` syntax or with matched |
18 |
| - hash delimiters, as in `r###"foo"###`. |
19 |
| - * `~fn` is now written `proc (args) -> retval { ... }` and may only be |
20 |
| - called once. |
21 |
| - * The `&fn` type is now written `|args| -> ret` to match the literal form. |
22 |
| - * `@fn`s have been removed. |
23 |
| - * `do` only works with procs in order to make it obvious what the cost |
24 |
| - of `do` is. |
25 |
| - * The `#[link(...)]` attribute has been replaced with |
26 |
| - `#[crate_id = "name#vers"]`. |
27 |
| - * Empty `impl`s must be terminated with empty braces and may not be |
28 |
| - terminated with a semicolon. |
29 |
| - * Keywords are no longer allowed as lifetime names; the `self` lifetime |
30 |
| - no longer has any special meaning. |
31 |
| - * The old `fmt!` string formatting macro has been removed. |
32 |
| - * `printf!` and `printfln!` (old-style formatting) removed in favor of |
33 |
| - `print!` and `println!`. |
34 |
| - * `mut` works in patterns now, as in `let (mut x, y) = (1, 2);`. |
35 |
| - * New reserved keywords: `alignof`, `offsetof`, `sizeof`. |
36 |
| - * Macros can have attributes. |
37 |
| - * Macros can expand to items with attributes. |
38 |
| - * Macros can expand to multiple items. |
39 |
| - * The `asm!` macro is feature-gated (`#[feature(asm)]`). |
40 |
| - * Comments may be nested. |
41 |
| - * Values automatically coerce to trait objects they implement, without |
42 |
| - an explicit `as`. |
43 |
| - * Enum discriminants are no longer an entire word but as small as needed to |
44 |
| - contain all the variants. The `repr` attribute can be used to override |
45 |
| - the discriminant size, as in `#[repr(int)]` for integer-sized, and |
46 |
| - `#[repr(C)]` to match C enums. |
47 |
| - * Non-string literals are not allowed in attributes (they never worked). |
48 |
| - * The FFI now supports variadic functions. |
49 |
| - * Octal numeric literals, as in `0o7777`. |
50 |
| - * The `concat!` syntax extension performs compile-time string concatenation. |
51 |
| - * The `#[fixed_stack_segment]` and `#[rust_stack]` attributes have been |
52 |
| - removed as Rust no longer uses segmented stacks. |
53 |
| - * Non-ascii identifiers are feature-gated (`#[feature(non_ascii_idents)]`). |
54 |
| - * Ignoring all fields of an enum variant or tuple-struct is done with `..`, |
55 |
| - not `*`; ignoring remaining fields of a struct is also done with `..`, |
56 |
| - not `_`; ignoring a slice of a vector is done with `..`, not `.._`. |
57 |
| - * `rustc` supports the "win64" calling convention via `extern "win64"`. |
58 |
| - * `rustc` supports the "system" calling convention, which defaults to the |
59 |
| - preferred convention for the target platform, "stdcall" on 32-bit Windows, |
60 |
| - "C" elsewhere. |
61 |
| - * The `type_overflow` lint (default: warn) checks literals for overflow. |
62 |
| - * The `unsafe_block` lint (default: allow) checks for usage of `unsafe`. |
63 |
| - * The `attribute_usage` lint (default: warn) warns about unknown |
64 |
| - attributes. |
65 |
| - * The `unknown_features` lint (default: warn) warns about unknown |
66 |
| - feature gates. |
67 |
| - * The `dead_code` lint (default: warn) checks for dead code. |
68 |
| - * Rust libraries can be linked statically to one another |
69 |
| - * `#[link_args]` is behind the `link_args` feature gate. |
70 |
| - * Native libraries are now linked with `#[link(name = "foo")]` |
71 |
| - * Native libraries can be statically linked to a rust crate |
72 |
| - (`#[link(name = "foo", kind = "static")]`). |
73 |
| - * Native OS X frameworks are now officially supported |
74 |
| - (`#[link(name = "foo", kind = "framework")]`). |
75 |
| - * The `#[thread_local]` attribute creates thread-local (not task-local) |
76 |
| - variables. Currently behind the `thread_local` feature gate. |
77 |
| - * The `return` keyword may be used in closures. |
78 |
| - * Types that can be copied via a memcpy implement the `Pod` kind. |
79 |
| - |
80 |
| - * Libraries |
81 |
| - * std: The `option` and `result` API's have been overhauled to make them |
82 |
| - simpler, more consistent, and more composable. |
83 |
| - * std: The entire `std::io` module has been replaced with one that is |
84 |
| - more comprehensive and that properly interfaces with the underlying |
85 |
| - scheduler. File, TCP, UDP, Unix sockets, pipes, and timers are all |
86 |
| - implemented. |
87 |
| - * std: `io::util` contains a number of useful implementations of |
88 |
| - `Reader` and `Writer`, including `NullReader`, `NullWriter`, |
89 |
| - `ZeroReader`, `TeeReader`. |
90 |
| - * std: The reference counted pointer type `extra::rc` moved into std. |
91 |
| - * std: The `Gc` type in the `gc` module will replace `@` (it is currently |
92 |
| - just a wrapper around it). |
93 |
| - * std: `fmt::Default` can be implemented for any type to provide default |
94 |
| - formatting to the `format!` macro, as in `format!("{}", myfoo)`. |
95 |
| - * std: The `rand` API continues to be tweaked. |
96 |
| - * std: Functions dealing with type size and alignment have moved from the |
97 |
| - `sys` module to the `mem` module. |
98 |
| - * std: The `path` module was written and API changed. |
99 |
| - * std: `str::from_utf8` has been changed to cast instead of allocate. |
100 |
| - * std: `starts_with` and `ends_with` methods added to vectors via the |
101 |
| - `ImmutableEqVector` trait, which is in the prelude. |
102 |
| - * std: Vectors can be indexed with the `get_opt` method, which returns `None` |
103 |
| - if the index is out of bounds. |
104 |
| - * std: Task failure no longer propagates between tasks, as the model was |
105 |
| - complex, expensive, and incompatible with thread-based tasks. |
106 |
| - * std: The `Any` type can be used for dynamic typing. |
107 |
| - * std: `~Any` can be passed to the `fail!` macro and retrieved via |
108 |
| - `task::try`. |
109 |
| - * std: Methods that produce iterators generally do not have an `_iter` |
110 |
| - suffix now. |
111 |
| - * std: `cell::Cell` and `cell::RefCell` can be used to introduce mutability |
112 |
| - roots (mutable fields, etc.). Use instead of e.g. `@mut`. |
113 |
| - * std: `util::ignore` renamed to `prelude::drop`. |
114 |
| - * std: Slices have `sort` and `sort_by` methods via the `MutableVector` |
115 |
| - trait. |
116 |
| - * std: `vec::raw` has seen a lot of cleanup and API changes. |
117 |
| - * std: The standard library no longer includes any C++ code, and very |
118 |
| - minimal C, eliminating the dependency on libstdc++. |
119 |
| - * std: Runtime scheduling and I/O functionality has been factored out into |
120 |
| - extensible interfaces and is now implemented by two different crates: |
121 |
| - libnative, for native threading and I/O; and libgreen, for green threading |
122 |
| - and I/O. This paves the way for using the standard library in more limited |
123 |
| - embeded environments. |
124 |
| - * std: The `comm` module has been rewritten to be much faster, have a |
125 |
| - simpler, more consistent API, and to work for both native and green |
126 |
| - threading. |
127 |
| - * std: All libuv dependencies have been moved into the rustuv crate. |
128 |
| - * native: New implementations of runtime scheduling on top of OS threads. |
129 |
| - * native: New native implementations of TCP, UDP, file I/O, process spawning, |
130 |
| - and other I/O. |
131 |
| - * green: The green thread scheduler and message passing types are almost |
132 |
| - entirely lock-free. |
133 |
| - * extra: The `flatpipes` module had bitrotted and was removed. |
134 |
| - * extra: All crypto functions have been removed and Rust now has a policy of |
135 |
| - not reimplementing crypto in the standard library. In the future crypto |
136 |
| - will be provided by external crates with bindings to established libraries. |
137 |
| - * extra: `c_vec` has been modernized. |
138 |
| - * extra: The `sort` module has been removed. Use the `sort` method on |
139 |
| - mutable slices. |
| 4 | + * ~XXX changes, numerous bugfixes |
140 | 5 |
|
141 | 6 | * Tooling
|
142 |
| - * The `rust` and `rusti` commands have been removed, due to lack of |
143 |
| - maintenance. |
144 |
| - * `rustdoc` was completely rewritten. |
145 |
| - * `rustdoc` can test code examples in documentation. |
146 |
| - * `rustpkg` can test packages with the argument, 'test'. |
147 |
| - * `rustpkg` supports arbitrary dependencies, including C libraries. |
148 |
| - * `rustc`'s support for generating debug info is improved again. |
149 |
| - * `rustc` has better error reporting for unbalanced delimiters. |
150 |
| - * `rustc`'s JIT support was removed due to bitrot. |
151 |
| - * Executables and static libraries can be built with LTO (-Z lto) |
152 |
| - * `rustc` adds a `--dep-info` flag for communicating dependencies to |
153 |
| - build tools. |
| 7 | + * The `rust` and `rusti` commands have been removed, due to lack of maintenance. |
154 | 8 |
|
155 | 9 | Version 0.8 (September 2013)
|
156 | 10 | --------------------------
|
|
0 commit comments