|
| 1 | +Version 0.12.0 (October 2014) |
| 2 | +----------------------------- |
| 3 | + |
| 4 | + * ~1700 changes, numerous bugfixes |
| 5 | + |
| 6 | + * Highlights |
| 7 | + |
| 8 | + * The introductory documentation (now called The Rust Guide) has |
| 9 | + been completely rewritten, as have a number of supplementary |
| 10 | + guides. |
| 11 | + * Rust's package manager, Cargo, is awesome. |
| 12 | + * Many API's in `std` have been reviewed and updated for |
| 13 | + consistency with the in-development Rust coding |
| 14 | + guidelines. The standard library documentation tracks |
| 15 | + stabilization progress. |
| 16 | + * Minor libraries have been moved out-of-tree to the rust-lang org |
| 17 | + on GitHub: uuid, semver, glob, num, hexfloat, fourcc. They can |
| 18 | + be installed with Cargo. |
| 19 | + * Lifetime elision allows lifetime annotations to be left off of |
| 20 | + function declarations in many common scenarios. |
| 21 | + * Rust now works on 64-bit Windows. |
| 22 | + |
| 23 | + * Language |
| 24 | + * A new slicing syntax (e.g. `[0..4]`) has been introduced behind |
| 25 | + the 'slicing_syntax' feature gate, and can be overloaded with |
| 26 | + the `Slice` or `SliceMut` traits. |
| 27 | + * Indexing can be overloaded with the `Index` and `IndexMut` |
| 28 | + traits. |
| 29 | + * The `if let` construct takes a branch only if the `let` pattern |
| 30 | + matches, currently behind the 'if_let' feature gate. |
| 31 | + * `let` and `match` bindings and argument names in macros are now |
| 32 | + hygienic. |
| 33 | + * The `#[crate_id]` attribute is no longer supported; versioning |
| 34 | + is handled by the package manager. |
| 35 | + * Mutation and assignment is no longer allowed in pattern guards. |
| 36 | + * Generic structs and enums can now have trait bounds. |
| 37 | + * `use foo = bar` is now written `use bar as foo`. |
| 38 | + * The new, more efficient, closure types ('unboxed closures') have |
| 39 | + been added under a feature gate, 'unboxed_closures'. These will |
| 40 | + soon replace the existing closure types, once higher-ranked |
| 41 | + trait lifetimes are added to the language. |
| 42 | + * The `Share` trait is now called `Sync` to free up the term |
| 43 | + 'shared' to refer to 'shared reference' (the default reference |
| 44 | + type. |
| 45 | + * Dynamically-sized types have been mostly implemented, |
| 46 | + unifying the behavior of fat-pointer types with the rest of the |
| 47 | + type system. |
| 48 | + * As part of dynamically-sized types, the `Sized` trait has been |
| 49 | + introduced, which qualifying types implement by default, and |
| 50 | + which type parameters expect by default. To specify that a type |
| 51 | + parametr does not need to be sized, write `<Sized? T>`. Most |
| 52 | + types are `Sized`, notable exceptions being unsized arrays |
| 53 | + (`[T]`) and trait types. |
| 54 | + * Closures can return `!`, as in `|| -> !` or `proc() ->`. |
| 55 | + * The syntax for matching of sub-slices has been changed to use a |
| 56 | + postfix `..` instead of prefix (.e.g. `[a, b, c..]`), for |
| 57 | + consistency with other uses of `..` and to future-proof |
| 58 | + potential additional uses of the syntax. |
| 59 | + * Matching of sub-slices in non-tail positions (e.g. `[a.., b, |
| 60 | + c]`) has been put behind the 'advanced_slice_patterns' feature |
| 61 | + gate and may be removed in the future. |
| 62 | + |
| 63 | + * Libraries |
| 64 | + * Library documentation has been improved for a number of modules. |
| 65 | + * Bit-vectors, collections::bitv has been modernized. |
| 66 | + * The url crate is deprecated in favor of |
| 67 | + http://github.com/servo/rust-url, which can be installed with |
| 68 | + Cargo. |
| 69 | + * Most I/O stream types can be cloned and subsequently closed |
| 70 | + from a different thread. |
| 71 | + * A `std::time::Duration` type has been added for use in I/O |
| 72 | + methods that rely on timers, as well as in the 'time' crate's |
| 73 | + `Timespec` arithmetic. |
| 74 | + * The green-thread scheduler, libgreen, has been removed, as |
| 75 | + has the associated runtime I/O abstraction layer. |
| 76 | + |
| 77 | + * Tooling |
| 78 | + * rustdoc output now indicates the stability levels of API's. |
| 79 | + * The `--crate-name` flag can specify the name of the crate |
| 80 | + being compiled, like `#[crate_name]`. |
| 81 | + * The `-C metadata` specifies additional metada to hash into |
| 82 | + symbol names, and `-C extra-filename` specifies additional |
| 83 | + information to put into the output filename, for use by |
| 84 | + the package manager for versioning. |
| 85 | + * debug info generation has continued to improve and should be |
| 86 | + more reliable under both gdb and lldb. |
| 87 | + * rustc has experimental support for compiling in parallel |
| 88 | + using the `-C codegen-units` flag. |
| 89 | + * rustc no longer encodes rpath information into binaries by |
| 90 | + default. |
| 91 | + |
| 92 | + * Misc |
| 93 | + * Stack usage has been optimized with LLVM lifetime annotations. |
| 94 | + * Official Rust binaries on Linux are more compatible with older |
| 95 | + kernels and distributions, built on CentOS 5.10. |
| 96 | + |
1 | 97 | Version 0.11.0 (July 2014)
|
2 | 98 | -------------------------
|
3 | 99 |
|
|
0 commit comments