|
1 |
| -Version 1.8.0 (2016-04-14) |
2 |
| -========================== |
3 |
| - |
4 |
| -Language |
5 |
| --------- |
6 |
| - |
7 |
| -* Rust supports overloading of compound assignment statements like |
8 |
| - `+=` by implementing the [`AddAssign`], [`SubAssign`], |
9 |
| - [`MulAssign`], [`DivAssign`], [`RemAssign`], [`BitAndAssign`], |
10 |
| - [`BitOrAssign`], [`BitXorAssign`], [`ShlAssign`], or [`ShrAssign`] |
11 |
| - traits. [RFC 953]. |
12 |
| -* Empty structs can be defined with braces, as in `struct Foo { }`, in |
13 |
| - addition to the non-braced form, `struct Foo;`. [RFC 218]. |
14 |
| - |
15 |
| -Libraries |
16 |
| ---------- |
17 |
| - |
18 |
| -* Stabilized APIs: |
19 |
| - * [`str::encode_utf16`][] (renamed from `utf16_units`) |
20 |
| - * [`str::EncodeUtf16`][] (renamed from `Utf16Units`) |
21 |
| - * [`Ref::map`] |
22 |
| - * [`RefMut::map`] |
23 |
| - * [`ptr::drop_in_place`] |
24 |
| - * [`time::Instant`] |
25 |
| - * [`time::SystemTime`] |
26 |
| - * [`Instant::now`] |
27 |
| - * [`Instant::duration_since`][] (renamed from `duration_from_earlier`) |
28 |
| - * [`Instant::elapsed`] |
29 |
| - * [`SystemTime::now`] |
30 |
| - * [`SystemTime::duration_since`][] (renamed from `duration_from_earlier`) |
31 |
| - * [`SystemTime::elapsed`] |
32 |
| - * Various `Add`/`Sub` impls for `Time` and `SystemTime` |
33 |
| - * [`SystemTimeError`] |
34 |
| - * [`SystemTimeError::duration`] |
35 |
| - * Various impls for `SystemTimeError` |
36 |
| - * [`UNIX_EPOCH`] |
37 |
| - * [`AddAssign`], [`SubAssign`], [`MulAssign`], [`DivAssign`], |
38 |
| - [`RemAssign`], [`BitAndAssign`], [`BitOrAssign`], |
39 |
| - [`BitXorAssign`], [`ShlAssign`], [`ShrAssign`]. |
40 |
| -* [The `write!` and `writeln!` macros correctly emit errors if any of |
41 |
| - their arguments can't be formatted][1.8w]. |
42 |
| -* [Various I/O functions support large files on 32-bit Linux][1.8l]. |
43 |
| -* [The Unix-specific `raw` modules, which contain a number of |
44 |
| - redefined C types are deprecated][1.8r], including `os::raw::unix`, |
45 |
| - `os::raw::macos`, and `os::raw::linux`. These modules defined types |
46 |
| - such as `ino_t` and `dev_t`. The inconsistency of these definitions |
47 |
| - across platforms was making it difficult to implement `std` |
48 |
| - correctly. Those that need these definitions should use the `libc` |
49 |
| - crate. [RFC 1415]. |
50 |
| -* The Unix-specific `MetadataExt` traits, including |
51 |
| - `os::unix::fs::MetadataExt`, which expose values such as inode |
52 |
| - numbers [no longer return platform-specific types][1.8r], but |
53 |
| - instead return widened integers. [RFC 1415]. |
54 |
| -* [`btree_set::{IntoIter, Iter, Range}` are covariant][1.8cv]. |
55 |
| -* [Atomic loads and stores are not volatile][1.8a]. |
56 |
| -* [All types in `sync::mpsc` implement `fmt::Debug`][1.8mp]. |
57 |
| - |
58 |
| -Performance |
59 |
| ------------ |
60 |
| - |
61 |
| -* [Inlining hash functions lead to a 3% compile-time improvement in |
62 |
| - some workloads][1.8h]. |
63 |
| -* When using jemalloc, its symbols are [unprefixed so that it |
64 |
| - overrides the libc malloc implementation][1.8h]. This means that for |
65 |
| - rustc, LLVM is now using jemalloc, which results in a 6% |
66 |
| - compile-time improvement on a specific workload. |
67 |
| -* [Avoid quadratic growth in function size due to cleanups][1.8cu]. |
68 |
| - |
69 |
| -Misc |
70 |
| ----- |
71 |
| - |
72 |
| -* [32-bit MSVC builds finally implement unwinding][1.8ms]. |
73 |
| - i686-pc-windows-msvc is now considered a tier-1 platform. |
74 |
| -* [The `--print targets` flag prints a list of supported targets][1.8t]. |
75 |
| -* [The `--print cfg` flag prints the `cfg`s defined for the current |
76 |
| - target][1.8cf]. |
77 |
| -* [`rustc` can be built with an new Cargo-based build system, written |
78 |
| - in Rust][1.8b]. It will eventually replace Rust's Makefile-based |
79 |
| - build system. To enable it configure with `configure --rustbuild`. |
80 |
| -* [Errors for non-exhaustive `match` patterns now list up to 3 missing |
81 |
| - variants while also indicating the total number of missing variants |
82 |
| - if more than 3][1.8m]. |
83 |
| -* [Executable stacks are disabled on Linux and BSD][1.8nx]. |
84 |
| -* The Rust Project now publishes binary releases of the standard |
85 |
| - library for a number of tier-2 targets: |
86 |
| - `armv7-unknown-linux-gnueabihf`, `powerpc-unknown-linux-gnu`, |
87 |
| - `powerpc64-unknown-linux-gnu`, `powerpc64le-unknown-linux-gnu` |
88 |
| - `x86_64-rumprun-netbsd`. These can be installed with |
89 |
| - tools such as [multirust][1.8mr]. |
90 |
| - |
91 |
| -Cargo |
92 |
| ------ |
93 |
| - |
94 |
| -* [`cargo init` creates a new Cargo project in the current |
95 |
| - directory][1.8ci]. It is otherwise like `cargo new`. |
96 |
| -* [Cargo has configuration keys for `-v` and |
97 |
| - `--color`][1.8cc]. `verbose` and `color`, respectively, go in the |
98 |
| - `[term]` section of `.cargo/config`. |
99 |
| -* [Configuration keys that evaluate to strings or integers can be set |
100 |
| - via environment variables][1.8ce]. For example the `build.jobs` key |
101 |
| - can be set via `CARGO_BUILD_JOBS`. Environment variables take |
102 |
| - precedence over config files. |
103 |
| -* [Target-specific dependencies support Rust `cfg` syntax for |
104 |
| - describing targets][1.8cfg] so that dependencies for multiple |
105 |
| - targets can be specified together. [RFC 1361]. |
106 |
| -* [The environment variables `CARGO_TARGET_ROOT`, `RUSTC`, and |
107 |
| - `RUSTDOC` take precedence over the `build.target-dir`, |
108 |
| - `build.rustc`, and `build.rustdoc` configuration values][1.8cv]. |
109 |
| -* [The child process tree is killed on Windows when Cargo is |
110 |
| - killed][1.8ck]. |
111 |
| -* [The `build.target` configuration value sets the target platform, |
112 |
| - like `--target`][1.8ct]. |
113 |
| - |
114 |
| -Compatibility Notes |
115 |
| -------------------- |
116 |
| - |
117 |
| -* [Unstable compiler flags have been further restricted][1.8u]. Since |
118 |
| - 1.0 `-Z` flags have been considered unstable, and other flags that |
119 |
| - were considered unstable additionally required passing `-Z |
120 |
| - unstable-options` to access. Unlike unstable language and library |
121 |
| - features though, these options have been accessible on the stable |
122 |
| - release channel. Going forward, *new unstable flags will not be |
123 |
| - available on the stable release channel*, and old unstable flags |
124 |
| - will warn about their usage. In the future, all unstable flags will |
125 |
| - be unavailable on the stable release channel. |
126 |
| -* [It is no longer possible to `match` on empty enum variants using |
127 |
| - the `Variant(..)` syntax][1.8v]. This has been a warning since 1.6. |
128 |
| -* The Unix-specific `MetadataExt` traits, including |
129 |
| - `os::unix::fs::MetadataExt`, which expose values such as inode |
130 |
| - numbers [no longer return platform-specific types][1.8r], but |
131 |
| - instead return widened integers. [RFC 1415]. |
132 |
| -* [Modules sourced from the filesystem cannot appear within arbitrary |
133 |
| - blocks, but only within other modules][1.8m]. |
134 |
| -* [`--cfg` compiler flags are parsed strictly as identifiers][1.8c]. |
135 |
| -* On Unix, [stack overflow triggers a runtime abort instead of a |
136 |
| - SIGSEGV][1.8so]. |
137 |
| -* [`Command::spawn` and its equivalents return an error if any of |
138 |
| - its command-line arguments contain interior `NUL`s][1.8n]. |
139 |
| -* [Tuple and unit enum variants from other crates are in the type |
140 |
| - namespace][1.8tn]. |
141 |
| -* [On Windows `rustc` emits `.lib` files for the `staticlib` library |
142 |
| - type instead of `.a` files][1.8st]. Additionally, for the MSVC |
143 |
| - toolchain, `rustc` emits import libraries named `foo.dll.lib` |
144 |
| - instead of `foo.lib`. |
145 |
| - |
146 |
| - |
147 |
| -[1.8a]: https://github.com/rust-lang/rust/pull/30962 |
148 |
| -[1.8b]: https://github.com/rust-lang/rust/pull/31123 |
149 |
| -[1.8c]: https://github.com/rust-lang/rust/pull/31530 |
150 |
| -[1.8cc]: https://github.com/rust-lang/cargo/pull/2397 |
151 |
| -[1.8ce]: https://github.com/rust-lang/cargo/pull/2398 |
152 |
| -[1.8cf]: https://github.com/rust-lang/rust/pull/31278 |
153 |
| -[1.8cfg]: https://github.com/rust-lang/cargo/pull/2328 |
154 |
| -[1.8ci]: https://github.com/rust-lang/cargo/pull/2081 |
155 |
| -[1.8ck]: https://github.com/rust-lang/cargo/pull/2370 |
156 |
| -[1.8ct]: https://github.com/rust-lang/cargo/pull/2335 |
157 |
| -[1.8cu]: https://github.com/rust-lang/rust/pull/31390 |
158 |
| -[1.8cv]: https://github.com/rust-lang/cargo/issues/2365 |
159 |
| -[1.8cv]: https://github.com/rust-lang/rust/pull/30998 |
160 |
| -[1.8h]: https://github.com/rust-lang/rust/pull/31460 |
161 |
| -[1.8l]: https://github.com/rust-lang/rust/pull/31668 |
162 |
| -[1.8m]: https://github.com/rust-lang/rust/pull/31020 |
163 |
| -[1.8m]: https://github.com/rust-lang/rust/pull/31534 |
164 |
| -[1.8mp]: https://github.com/rust-lang/rust/pull/30894 |
165 |
| -[1.8mr]: https://users.rust-lang.org/t/multirust-0-8-with-cross-std-installation/4901 |
166 |
| -[1.8ms]: https://github.com/rust-lang/rust/pull/30448 |
167 |
| -[1.8n]: https://github.com/rust-lang/rust/pull/31056 |
168 |
| -[1.8nx]: https://github.com/rust-lang/rust/pull/30859 |
169 |
| -[1.8r]: https://github.com/rust-lang/rust/pull/31551 |
170 |
| -[1.8so]: https://github.com/rust-lang/rust/pull/31333 |
171 |
| -[1.8st]: https://github.com/rust-lang/rust/pull/29520 |
172 |
| -[1.8t]: https://github.com/rust-lang/rust/pull/31358 |
173 |
| -[1.8tn]: https://github.com/rust-lang/rust/pull/30882 |
174 |
| -[1.8u]: https://github.com/rust-lang/rust/pull/31793 |
175 |
| -[1.8v]: https://github.com/rust-lang/rust/pull/31757 |
176 |
| -[1.8w]: https://github.com/rust-lang/rust/pull/31904 |
177 |
| -[RFC 1361]: https://github.com/rust-lang/rfcs/blob/master/text/1361-cargo-cfg-dependencies.md |
178 |
| -[RFC 1415]: https://github.com/rust-lang/rfcs/blob/master/text/1415-trim-std-os.md |
179 |
| -[RFC 218]: https://github.com/rust-lang/rfcs/blob/master/text/0218-empty-struct-with-braces.md |
180 |
| -[RFC 953]: https://github.com/rust-lang/rfcs/blob/master/text/0953-op-assign.md |
181 |
| -[`AddAssign`]: http://doc.rust-lang.org/nightly/std/ops/trait.AddAssign.html |
182 |
| -[`BitAndAssign`]: http://doc.rust-lang.org/nightly/std/ops/trait.BitAndAssign.html |
183 |
| -[`BitOrAssign`]: http://doc.rust-lang.org/nightly/std/ops/trait.BitOrAssign.html |
184 |
| -[`BitXorAssign`]: http://doc.rust-lang.org/nightly/std/ops/trait.BitXorAssign.html |
185 |
| -[`DivAssign`]: http://doc.rust-lang.org/nightly/std/ops/trait.DivAssign.html |
186 |
| -[`Instant::duration_since`]: http://doc.rust-lang.org/nightly/std/time/struct.Instant.html#method.duration_since |
187 |
| -[`Instant::elapsed`]: http://doc.rust-lang.org/nightly/std/time/struct.Instant.html#method.elapsed |
188 |
| -[`Instant::now`]: http://doc.rust-lang.org/nightly/std/time/struct.Instant.html#method.now |
189 |
| -[`MulAssign`]: http://doc.rust-lang.org/nightly/std/ops/trait.MulAssign.html |
190 |
| -[`Ref::map`]: http://doc.rust-lang.org/nightly/std/cell/struct.Ref.html#method.map |
191 |
| -[`RefMut::map`]: http://doc.rust-lang.org/nightly/std/cell/struct.RefMut.html#method.map |
192 |
| -[`RemAssign`]: http://doc.rust-lang.org/nightly/std/ops/trait.RemAssign.html |
193 |
| -[`ShlAssign`]: http://doc.rust-lang.org/nightly/std/ops/trait.ShlAssign.html |
194 |
| -[`ShrAssign`]: http://doc.rust-lang.org/nightly/std/ops/trait.ShrAssign.html |
195 |
| -[`SubAssign`]: http://doc.rust-lang.org/nightly/std/ops/trait.SubAssign.html |
196 |
| -[`SystemTime::duration_since`]: http://doc.rust-lang.org/nightly/std/time/struct.SystemTime.html#method.duration_since |
197 |
| -[`SystemTime::elapsed`]: http://doc.rust-lang.org/nightly/std/time/struct.SystemTime.html#method.elapsed |
198 |
| -[`SystemTime::now`]: http://doc.rust-lang.org/nightly/std/time/struct.SystemTime.html#method.now |
199 |
| -[`SystemTimeError::duration`]: http://doc.rust-lang.org/nightly/std/time/struct.SystemTimeError.html#method.duration |
200 |
| -[`SystemTimeError`]: http://doc.rust-lang.org/nightly/std/time/struct.SystemTimeError.html |
201 |
| -[`UNIX_EPOCH`]: http://doc.rust-lang.org/nightly/std/time/constant.UNIX_EPOCH.html |
202 |
| -[`ptr::drop_in_place`]: http://doc.rust-lang.org/nightly/std/ptr/fn.drop_in_place.html |
203 |
| -[`str::EncodeUtf16`]: http://doc.rust-lang.org/nightly/std/str/struct.EncodeUtf16.html |
204 |
| -[`str::encode_utf16`]: http://doc.rust-lang.org/nightly/std/primitive.str.html#method.encode_utf16 |
205 |
| -[`time::Instant`]: http://doc.rust-lang.org/nightly/std/time/struct.Instant.html |
206 |
| -[`time::SystemTime`]: http://doc.rust-lang.org/nightly/std/time/struct.SystemTime.html |
207 |
| - |
208 |
| - |
209 | 1 | Version 1.7.0 (2016-03-03)
|
210 | 2 | ==========================
|
211 | 3 |
|
|
0 commit comments