|
| 1 | +Version 0.10 (April 2014) |
| 2 | +------------------------- |
| 3 | + |
| 4 | + * ~1500 changes, numerous bugfixes |
| 5 | + |
| 6 | + * Language |
| 7 | + * A new RFC process is now in place for modifying the language. |
| 8 | + * Patterns with `@`-pointers have been removed from the language. |
| 9 | + * Patterns with unique vectors have been removed from the language. |
| 10 | + * `@str` has been removed from the language. |
| 11 | + * `@[T]` has been removed from the language. |
| 12 | + * `@self` has been removed from the language. |
| 13 | + * `@Trait` has been removed from the language. |
| 14 | + * Headers on `~` allocations which contain `@` boxes inside the type for |
| 15 | + reference counting have been removed. |
| 16 | + * The semantics around the lifetimes of temporary expressions have changed, |
| 17 | + see #3511 and #11585 for more information. |
| 18 | + * Cross-crate syntax extensions are now possible, but feature gated. See |
| 19 | + #11151 for more information. This includes both `macro_rules!` macros as |
| 20 | + well as syntax extensions such as `format!`. |
| 21 | + * New lint modes have been added, and older ones have been turned on to be |
| 22 | + warn-by-default. |
| 23 | + * Unnecessary parentheses |
| 24 | + * Uppercase statics |
| 25 | + * Camel Case types |
| 26 | + * Uppercase variables |
| 27 | + * Publicly visible private types |
| 28 | + * Unsafe functions can no longer be coerced to closures. |
| 29 | + * Various obscure macros such as `log_syntax!` are now behind feature gates. |
| 30 | + * The #[simd] attribute is now behind a feature gate. |
| 31 | + * Visibility is no longer allowed on `extern crate` statements, and |
| 32 | + unnecessary visibility (`priv`) is no longer allowed on `use` statements. |
| 33 | + * Trailing commas are now allowed in argument lists and tuple patterns. |
| 34 | + * The `do` keyword has been removed, it is now a reserved keyword. |
| 35 | + * Default type parameters have been implemented, but are feature gated. |
| 36 | + * Borrowed variables through captures in closures are now considered soundly. |
| 37 | + * `extern mod` is now `extern crate` |
| 38 | + * The `Freeze` trait has been removed. |
| 39 | + * The `Share` trait has been added for types that can be shared among |
| 40 | + threads. |
| 41 | + * Labels in macros are now hygienic. |
| 42 | + * Expresson/statement macro invocations can be delimited with `{}` now. |
| 43 | + * Treatment of types allowed in `static mut` locations has been tweaked. |
| 44 | + * The `*` and `.` operators are now overloadable through the `Deref` and |
| 45 | + `DerefMut` traits. |
| 46 | + * `~Trait` and `proc` no longer have `Send` bounds by default. |
| 47 | + * Partial type hints are now supported with the `_` type marker. |
| 48 | + * An `Unsafe` type was introduced for interior mutability. It is now |
| 49 | + considered undefined to transmute from `&T` to `&mut T` without using the |
| 50 | + `Unsafe` type. |
| 51 | + * The #[linkage] attribute was implemented for extern statics/functions. |
| 52 | + * The inner attribute syntax has changed from `#[foo];` to `#![foo]`. |
| 53 | + * `Pod` was renamed to `Copy`. |
| 54 | + |
| 55 | + * Libraries |
| 56 | + * The `libextra` library has been removed. It has now been decomposed into |
| 57 | + component libraries with smaller and more focused nuggets of |
| 58 | + functionality. The full list of libraries can be found on the |
| 59 | + documentation index page. |
| 60 | + * std: `std::condition` has been removed. All I/O errors are now propagated |
| 61 | + through the `Result` type. In order to assist with error handling, a |
| 62 | + `try!` macro for unwrapping errors with an early return and an lint for |
| 63 | + unused results has been added. See #12039 for more information. |
| 64 | + * std: The `vec` module has been renamed to `slice`. |
| 65 | + * std: A new vector type, `Vec<T>`, has been added in preparation for DST. |
| 66 | + This will become the only growable vector in the future. |
| 67 | + * std: `std::io` now has more public-reexports. Types such as `BufferedReader` |
| 68 | + are now found at `std::io::BufferedReader` instead of |
| 69 | + `std::io::buffered::BufferedReader`. |
| 70 | + * std: `print` and `println` are no longer in the prelude, the `print!` and |
| 71 | + `println!` macros are intended to be used instead. |
| 72 | + * std: `Rc` now has a `Weak` pointer for breaking cycles, and it no longer |
| 73 | + attempts to statically prevent cycles. |
| 74 | + * std: The standard distribution is adopting the policy of pushing failure |
| 75 | + to the user rather than failing in libraries. Many functions (such as |
| 76 | + `slice::last()`) now return `Option<T>` instead of `T` + failing. |
| 77 | + * std: `fmt::Default` has been renamed to `fmt::Show`, and it now has a new |
| 78 | + deriving mode: `#[deriving(Show)]`. |
| 79 | + * std: `ToStr` is now implemented for all types implementing `Show`. |
| 80 | + * std: The formatting trait methods now take `&self` instead of `&T` |
| 81 | + * std: The `invert()` method on iterators has been renamed to `rev()` |
| 82 | + * std: `std::num` has seen a reduction in the genericity of its traits, |
| 83 | + consolidating functionality into a few core traits. |
| 84 | + * std: Backtraces are now printed on task failure if the environment |
| 85 | + variable `RUST_BACKTRACE` is present. |
| 86 | + * std: Naming conventions for iterators have been standardized. More details |
| 87 | + can be found on the wiki's style guide. |
| 88 | + * std: `eof()` has been removed from the `Reader` trait. Specific types may |
| 89 | + still implement the function. |
| 90 | + * std: Networking types are now cloneable to allow simultaneous reads/writes. |
| 91 | + * std: `assert_approx_eq!` has been removed |
| 92 | + * std: The `e` and `E` formatting specifiers for floats have been added to |
| 93 | + print them in exponential notation. |
| 94 | + * std: The `Times` trait has been removed |
| 95 | + * std: Indications of variance and opting out of builtin bounds is done |
| 96 | + through marker types in `std::kinds::marker` now |
| 97 | + * std: `hash` has been rewritten, `IterBytes` has been removed, and |
| 98 | + `#[deriving(Hash)]` is now possible. |
| 99 | + * std: `SharedChan` has been removed, `Sender` is now cloneable. |
| 100 | + * std: `Chan` and `Port` were renamed to `Sender` and `Receiver`. |
| 101 | + * std: `Chan::new` is now `channel()`. |
| 102 | + * std: A new synchronous channel type has been implemented. |
| 103 | + * std: A `select!` macro is now provided for selecting over `Receiver`s. |
| 104 | + * std: `hashmap` and `trie` have been moved to `libcollections` |
| 105 | + * std: `run` has been rolled into `io::process` |
| 106 | + * std: `assert_eq!` now uses `{}` instead of `{:?}` |
| 107 | + * std: The equality and comparison traits have seen some reorganization. |
| 108 | + * std: `rand` has moved to `librand`. |
| 109 | + * std: `to_{lower,upper}case` has been implemented for `char`. |
| 110 | + * std: Logging has been moved to `liblog`. |
| 111 | + * collections: `HashMap` has been rewritten for higher performance and less |
| 112 | + memory usage. |
| 113 | + * native: The default runtime is now `libnative`. If `libgreen` is desired, |
| 114 | + it can be booted manually. The runtime guide has more information and |
| 115 | + examples. |
| 116 | + * native: All I/O functionality except signals has been implemented. |
| 117 | + * green: Task spawning with `libgreen` has been optimized with stack caching |
| 118 | + and various trimming of code. |
| 119 | + * green: Tasks spawned by `libgreen` now have an unmapped guard page. |
| 120 | + * sync: The `extra::sync` module has been updated to modern rust (and moved |
| 121 | + to the `sync` library), tweaking and improving various interfaces while |
| 122 | + dropping redundant functionality. |
| 123 | + * sync: A new `Barrier` type has been added to the `sync` library. |
| 124 | + * sync: An efficient mutex for native and green tasks has been implemented. |
| 125 | + * serialize: The `base64` module has seen some improvement. It treats |
| 126 | + newlines better, has non-string error values, and has seen general |
| 127 | + cleanup. |
| 128 | + * fourcc: A `fourcc!` macro was introduced |
| 129 | + * hexfloat: A `hexfloat!` macro was implemented for specifying floats via a |
| 130 | + hexadecimal literal. |
| 131 | + |
| 132 | + * Tooling |
| 133 | + * `rustpkg` has been deprecated and removed from the main repository. Its |
| 134 | + replacement, `cargo`, is under development. |
| 135 | + * Nightly builds of rust are now available (INSERT URL HERE) |
| 136 | + * The memory usage of rustc has been improved many times throughout this |
| 137 | + release cycle. |
| 138 | + * The build process supports disabling rpath support for the rustc binary |
| 139 | + itself. |
| 140 | + * Code generation has improved in some cases, giving more information to the |
| 141 | + LLVM optimization passes to enable more extensive optimizations. |
| 142 | + * Debuginfo compatibility with lldb on OSX has been restored. |
| 143 | + * The master branch is now gated on an android bot, making building for |
| 144 | + android much more reliable. |
| 145 | + * Output flags have been centralized into one `--emit` flag. |
| 146 | + * Crate type flags have been centralized into one `--crate-type` flag. |
| 147 | + * Codegen flags have been consolidated behind a `-C` flag. |
| 148 | + * `rustdoc` now implements syntax highlighting and rendering markdown files. |
| 149 | + * `rustdoc --test` now tests all code blocks by default. |
| 150 | + * `rustdoc` now shows documented macros. |
| 151 | + * `rustdoc` inlines documentation for reexported types. |
| 152 | + * `rustdoc` search works across crates now. |
| 153 | + * Linking against outdated crates now has improved error messages. |
| 154 | + * Error messages with lifetimes will often suggest how to annotate the |
| 155 | + function to fix the error. |
| 156 | + * Many more types are documented in the standard library, and new guides |
| 157 | + were written. |
| 158 | + |
1 | 159 | Version 0.9 (January 2014)
|
2 | 160 | --------------------------
|
3 | 161 |
|
|
0 commit comments