|
| 1 | +Version 1.44.0 (2020-06-04) |
| 2 | +========================== |
| 3 | + |
| 4 | +Language |
| 5 | +-------- |
| 6 | +- [You can now use `async/.await` with `#[no_std]` enabled.][69033] |
| 7 | +- [Added the `unused_braces` lint.][70081] |
| 8 | + |
| 9 | +**Syntax-only changes** |
| 10 | + |
| 11 | +- [Expansion-driven outline module parsing][69838] |
| 12 | +```rust |
| 13 | +#[cfg(FALSE)] |
| 14 | +mod foo { |
| 15 | + mod bar { |
| 16 | + mod baz; // `foo/bar/baz.rs` doesn't exist, but no error! |
| 17 | + } |
| 18 | +} |
| 19 | +``` |
| 20 | + |
| 21 | +These are still rejected semantically, so you will likely receive an error but |
| 22 | +these changes can be seen and parsed by macros and conditional compilation. |
| 23 | + |
| 24 | +Compiler |
| 25 | +-------- |
| 26 | +- [Rustc now respects the `-C codegen-units` flag in incremental mode.][70156] |
| 27 | + Additionally when in incremental mode rustc defaults to 256 codegen units. |
| 28 | +- [Refactored `catch_unwind`, to have zero-cost unless unwinding is enabled and |
| 29 | + a panic is thrown.][67502] |
| 30 | +- [Added tier 3\* support for the `aarch64-unknown-none` and |
| 31 | + `aarch64-unknown-none-softfloat` targets.][68334] |
| 32 | +- [Added tier 3 support for `arm64-apple-tvos` and |
| 33 | + `x86_64-apple-tvos` targets.][68191] |
| 34 | + |
| 35 | + |
| 36 | +Libraries |
| 37 | +--------- |
| 38 | +- [Special cased `vec![]` to map directly to `Vec::new()`.][70632] This allows |
| 39 | + `vec![]` to be able to be used in `const` contexts. |
| 40 | +- [`convert::Infallible` now implements `Hash`.][70281] |
| 41 | +- [`OsString` now implements `DerefMut` and `IndexMut` returning |
| 42 | + a `&mut OsStr`.][70048] |
| 43 | +- [Unicode 13 is now supported.][69929] |
| 44 | +- [`String` now implements `From<&mut str>`.][69661] |
| 45 | +- [`IoSlice` now implements `Copy`.][69403] |
| 46 | +- [`Vec<T>` now implements `From<[T; N]>`.][68692] Where `N` is less than 32. |
| 47 | +- [`proc_macro::LexError` now implements `fmt::Display` and `Error`.][68899] |
| 48 | +- [`from_le_bytes`, `to_le_bytes`, `from_be_bytes`, `to_be_bytes`, |
| 49 | + `from_ne_bytes`, and `to_ne_bytes` methods are now `const` for all |
| 50 | + integer types.][69373] |
| 51 | + |
| 52 | +Stabilized APIs |
| 53 | +--------------- |
| 54 | +- [`PathBuf::with_capacity`] |
| 55 | +- [`PathBuf::capacity`] |
| 56 | +- [`PathBuf::clear`] |
| 57 | +- [`PathBuf::reserve`] |
| 58 | +- [`PathBuf::reserve_exact`] |
| 59 | +- [`PathBuf::shrink_to_fit`] |
| 60 | +- [`f32::to_int_unchecked`] |
| 61 | +- [`f64::to_int_unchecked`] |
| 62 | +- [`Layout::align_to`] |
| 63 | +- [`Layout::pad_to_align`] |
| 64 | +- [`Layout::array`] |
| 65 | +- [`Layout::extend`] |
| 66 | + |
| 67 | +Cargo |
| 68 | +----- |
| 69 | +- [Added the `cargo tree` command which will print a tree graph of |
| 70 | + your dependencies.][cargo/8062] E.g. |
| 71 | + ``` |
| 72 | + mdbook v0.3.2 (/Users/src/rust/mdbook) |
| 73 | + ├── ammonia v3.0.0 |
| 74 | + │ ├── html5ever v0.24.0 |
| 75 | + │ │ ├── log v0.4.8 |
| 76 | + │ │ │ └── cfg-if v0.1.9 |
| 77 | + │ │ ├── mac v0.1.1 |
| 78 | + │ │ └── markup5ever v0.9.0 |
| 79 | + │ │ ├── log v0.4.8 (*) |
| 80 | + │ │ ├── phf v0.7.24 |
| 81 | + │ │ │ └── phf_shared v0.7.24 |
| 82 | + │ │ │ ├── siphasher v0.2.3 |
| 83 | + │ │ │ └── unicase v1.4.2 |
| 84 | + │ │ │ [build-dependencies] |
| 85 | + │ │ │ └── version_check v0.1.5 |
| 86 | + ... |
| 87 | + ``` |
| 88 | + |
| 89 | +Misc |
| 90 | +---- |
| 91 | +- [Rustdoc now allows you to specify `--crate-version` to have rustdoc include |
| 92 | + the version in the sidebar.][69494] |
| 93 | + |
| 94 | +Compatibility Notes |
| 95 | +------------------- |
| 96 | +- [Rustc now correctly generates static libraries on Windows GNU targets with |
| 97 | + the `.a` extension, rather than the previous `.lib`.][70937] |
| 98 | +- [Removed the `-C no_integrated_as` flag from rustc.][70345] |
| 99 | +- [The `file_name` property in JSON output of macro errors now points the actual |
| 100 | + source file rather than the previous format of `<NAME macros>`.][70969] |
| 101 | + **Note:** this may not point a file that actually exists on the user's system. |
| 102 | +- [The minimum required external LLVM version has been bumped to LLVM 8.][71147] |
| 103 | +- [`mem::{zeroed, uninitialised, MaybeUninit}` will now panic when used with types |
| 104 | + that do not allow zero initialization such as `NonZeroU8`.][66059] This was |
| 105 | + previously a warning. |
| 106 | +- [In 1.45.0 (the next release) converting a `f64` to `u32` using the `as` |
| 107 | + operator has been defined as a saturating operation.][71269] This was previously |
| 108 | + undefined behaviour, you can use the `{f64, f32}::to_int_unchecked` methods to |
| 109 | + continue using the current behaviour which may desirable in rare performance |
| 110 | + sensitive situations. |
| 111 | + |
| 112 | +Internal Only |
| 113 | +------------- |
| 114 | +These changes provide no direct user facing benefits, but represent significant |
| 115 | +improvements to the internals and overall performance of rustc and |
| 116 | +related tools. |
| 117 | + |
| 118 | +- [dep_graph Avoid allocating a set on when the number reads are small.][69778] |
| 119 | +- [Replace big JS dict with JSON parsing.][71250] |
| 120 | + |
| 121 | +[69373]: https://github.com/rust-lang/rust/pull/69373/ |
| 122 | +[66059]: https://github.com/rust-lang/rust/pull/66059/ |
| 123 | +[68191]: https://github.com/rust-lang/rust/pull/68191/ |
| 124 | +[68899]: https://github.com/rust-lang/rust/pull/68899/ |
| 125 | +[71147]: https://github.com/rust-lang/rust/pull/71147/ |
| 126 | +[71250]: https://github.com/rust-lang/rust/pull/71250/ |
| 127 | +[70937]: https://github.com/rust-lang/rust/pull/70937/ |
| 128 | +[70969]: https://github.com/rust-lang/rust/pull/70969/ |
| 129 | +[70632]: https://github.com/rust-lang/rust/pull/70632/ |
| 130 | +[70281]: https://github.com/rust-lang/rust/pull/70281/ |
| 131 | +[70345]: https://github.com/rust-lang/rust/pull/70345/ |
| 132 | +[70048]: https://github.com/rust-lang/rust/pull/70048/ |
| 133 | +[70081]: https://github.com/rust-lang/rust/pull/70081/ |
| 134 | +[70156]: https://github.com/rust-lang/rust/pull/70156/ |
| 135 | +[71269]: https://github.com/rust-lang/rust/pull/71269/ |
| 136 | +[69838]: https://github.com/rust-lang/rust/pull/69838/ |
| 137 | +[69929]: https://github.com/rust-lang/rust/pull/69929/ |
| 138 | +[69661]: https://github.com/rust-lang/rust/pull/69661/ |
| 139 | +[69778]: https://github.com/rust-lang/rust/pull/69778/ |
| 140 | +[69494]: https://github.com/rust-lang/rust/pull/69494/ |
| 141 | +[69403]: https://github.com/rust-lang/rust/pull/69403/ |
| 142 | +[69033]: https://github.com/rust-lang/rust/pull/69033/ |
| 143 | +[68692]: https://github.com/rust-lang/rust/pull/68692/ |
| 144 | +[68334]: https://github.com/rust-lang/rust/pull/68334/ |
| 145 | +[67502]: https://github.com/rust-lang/rust/pull/67502/ |
| 146 | +[cargo/8062]: https://github.com/rust-lang/cargo/pull/8062/ |
| 147 | +[`PathBuf::with_capacity`]: https://doc.rust-lang.org/std/path/struct.PathBuf.html#method.with_capacity |
| 148 | +[`PathBuf::capacity`]: https://doc.rust-lang.org/std/path/struct.PathBuf.html#method.capacity |
| 149 | +[`PathBuf::clear`]: https://doc.rust-lang.org/std/path/struct.PathBuf.html#method.clear |
| 150 | +[`PathBuf::reserve`]: https://doc.rust-lang.org/std/path/struct.PathBuf.html#method.reserve |
| 151 | +[`PathBuf::reserve_exact`]: https://doc.rust-lang.org/std/path/struct.PathBuf.html#method.reserve_exact |
| 152 | +[`PathBuf::shrink_to_fit`]: https://doc.rust-lang.org/std/path/struct.PathBuf.html#method.shrink_to_fit |
| 153 | +[`f32::to_int_unchecked`]: https://doc.rust-lang.org/std/primitive.f32.html#method.to_int_unchecked |
| 154 | +[`f64::to_int_unchecked`]: https://doc.rust-lang.org/std/primitive.f64.html#method.to_int_unchecked |
| 155 | +[`Layout::align_to`]: https://doc.rust-lang.org/std/alloc/struct.Layout.html#method.align_to |
| 156 | +[`Layout::pad_to_align`]: https://doc.rust-lang.org/std/alloc/struct.Layout.html#method.pad_to_align |
| 157 | +[`Layout::array`]: https://doc.rust-lang.org/std/alloc/struct.Layout.html#method.array |
| 158 | +[`Layout::extend`]: https://doc.rust-lang.org/std/alloc/struct.Layout.html#method.extend |
| 159 | + |
| 160 | + |
1 | 161 | Version 1.43.1 (2020-05-07)
|
2 | 162 | ===========================
|
3 | 163 |
|
|
0 commit comments