|
| 1 | +Version 1.0.0-beta (April 2015) |
| 2 | +------------------------------------- |
| 3 | + |
| 4 | +* ~1100 changes, numerous bugfixes |
| 5 | + |
| 6 | +* Highlights |
| 7 | + |
| 8 | + * The big news is that the vast majority of the standard library |
| 9 | + is now `#[stable]` -- 75% of the non-deprecated API surface at |
| 10 | + last count. Numerous crates are now running on stable |
| 11 | + Rust. Starting with this release, it is not possible to use |
| 12 | + unstable features on a stable build. |
| 13 | + * Arithmetic on basic integer types now |
| 14 | + [checks for overflow in debug builds][overflow]. |
| 15 | + |
| 16 | +* Language |
| 17 | + |
| 18 | + * [`Send` no longer implies `'static`][send-rfc], which made |
| 19 | + possible the [`thread::scoped` API][scoped]. Scoped threads can |
| 20 | + borrow data from their parent's stack frame -- safely! |
| 21 | + * [UFCS now supports trait-less associated paths][moar-ufcs] like |
| 22 | + `MyType::default()`. |
| 23 | + * Primitive types [now have inherent methods][prim-inherent], |
| 24 | + obviating the need for extension traits like `SliceExt`. |
| 25 | + * Methods with `Self: Sized` in their `where` clause are |
| 26 | + [considered object-safe][self-sized], allowing many extension |
| 27 | + traits like `IteratorExt` to be merged into the traits they |
| 28 | + extended. |
| 29 | + * You can now [refer to associated types][assoc-where] whose |
| 30 | + corresponding trait bounds appear only in a `where` clause. |
| 31 | + * The final bits of [OIBIT landed][oibit-final], meaning that |
| 32 | + traits like `Send` and `Sync` are now library-defined. |
| 33 | + * A [Reflect trait][reflect] was introduced, which means that |
| 34 | + downcasting via the `Any` trait is effectively limited to |
| 35 | + concrete types. This helps retain the potentially-important |
| 36 | + "parametricity" property: generic code cannot behave differently |
| 37 | + for different type arguments. |
| 38 | + * The `unsafe_destructor` feature is now deprecated in favor of |
| 39 | + the [new `dropck`][dropck]. This change is a major reduction in |
| 40 | + unsafe code. |
| 41 | + * Trait coherence was [revised again][fundamental], this time with |
| 42 | + an eye toward API evolution over time. |
| 43 | + |
| 44 | +* Libraries |
| 45 | + |
| 46 | + * The new path and IO modules are complete and `#[stable]`. This |
| 47 | + was the major library focus for this cycle. |
| 48 | + * The path API was [revised][path-normalize] to normalize `.`, |
| 49 | + adjusting the tradeoffs in favor of the most common usage. |
| 50 | + * A large number of remaining APIs in `std` were also stabilized |
| 51 | + during this cycle; about 75% of the non-deprecated API surface |
| 52 | + is now stable. |
| 53 | + * The new [string pattern API][string-pattern] landed, which makes |
| 54 | + the string slice API much more internally consistent and flexible. |
| 55 | + * A shiny [framework for Debug implementations][debug-builder] landed. |
| 56 | + This makes it possible to opt in to "pretty-printed" debugging output. |
| 57 | + * A new set of [generic conversion traits][conversion] replaced |
| 58 | + many existing ad hoc traits. |
| 59 | + * Generic numeric traits were |
| 60 | + [completely removed][num-traits]. This was made possible thanks |
| 61 | + to inherent methods for primitive types, and the removal gives |
| 62 | + maximal flexibility for designing a numeric hierarchy in the future. |
| 63 | + * The `Fn` traits are now related via [inheritance][fn-inherit] |
| 64 | + and provide ergonomic [blanket implementations][fn-blanket]. |
| 65 | + * The `Index` and `IndexMut` traits were changed to |
| 66 | + [take the index by value][index-value], enabling code like |
| 67 | + `hash_map["string"]` to work. |
| 68 | + * `Copy` now [inherits][copy-clone] from `Clone`, meaning that all |
| 69 | + `Copy` data is known to be `Clone` as well. |
| 70 | + |
| 71 | +* Infrastructure |
| 72 | + |
| 73 | + * Metadata was tuned, shrinking binaries [by 27%][metadata-shrink]. |
| 74 | + * Much headway was made on ecosystem-wide CI, making it possible |
| 75 | + to [compare builds for breakage][ci-compare]. |
| 76 | + |
| 77 | +[send-rfc]: https://github.com/rust-lang/rfcs/blob/master/text/0458-send-improvements.md |
| 78 | +[scoped]: http://static.rust-lang.org/doc/master/std/thread/fn.scoped.html |
| 79 | +[moar-ufcs]: https://github.com/rust-lang/rust/pull/22172 |
| 80 | +[prim-inherent]: https://github.com/rust-lang/rust/pull/23104 |
| 81 | +[overflow]: https://github.com/rust-lang/rust/pull/22532 |
| 82 | +[metadata-shrink]: https://github.com/rust-lang/rust/pull/22971 |
| 83 | +[self-sized]: https://github.com/rust-lang/rust/pull/22301 |
| 84 | +[assoc-where]: https://github.com/rust-lang/rust/pull/22512 |
| 85 | +[string-pattern]: https://github.com/rust-lang/rust/pull/22466 |
| 86 | +[oibit-final]: https://github.com/rust-lang/rust/pull/21689 |
| 87 | +[reflect]: https://github.com/rust-lang/rust/pull/23712 |
| 88 | +[debug-builder]: https://github.com/rust-lang/rfcs/blob/master/text/0640-debug-improvements.md |
| 89 | +[conversion]: https://github.com/rust-lang/rfcs/pull/529 |
| 90 | +[num-traits]: https://github.com/rust-lang/rust/pull/23549 |
| 91 | +[index-value]: https://github.com/rust-lang/rust/pull/23601 |
| 92 | +[dropck]: https://github.com/rust-lang/rfcs/pull/769 |
| 93 | +[fundamental]: https://github.com/rust-lang/rfcs/pull/1023 |
| 94 | +[ci-compare]: https://gist.github.com/brson/a30a77836fbec057cbee |
| 95 | +[fn-inherit]: https://github.com/rust-lang/rust/pull/23282 |
| 96 | +[fn-blanket]: https://github.com/rust-lang/rust/pull/23895 |
| 97 | +[copy-clone]: https://github.com/rust-lang/rust/pull/23860 |
| 98 | +[path-normalize]: https://github.com/rust-lang/rust/pull/23229 |
| 99 | + |
1 | 100 | Version 1.0.0-alpha.2 (February 2015)
|
2 | 101 | -------------------------------------
|
3 | 102 |
|
|
0 commit comments