PageRenderTime 68ms CodeModel.GetById 25ms RepoModel.GetById 0ms app.codeStats 1ms

/RELEASES.md

http://github.com/eholk/rust
Markdown | 5076 lines | 4654 code | 422 blank | 0 comment | 0 complexity | 8e10bc4b852562d05a5c5673b4fa9304 MD5 | raw file
Possible License(s): AGPL-1.0, BSD-2-Clause, 0BSD, Apache-2.0, MIT, LGPL-2.0

Large files files are truncated, but you can click here to view the full file

  1. Version 1.17.0 (2017-04-27)
  2. ===========================
  3. Language
  4. --------
  5. * [The lifetime of statics and consts defaults to `'static`][39265]. [RFC 1623]
  6. * [Fields of structs may be initialized without duplicating the field/variable
  7. names][39761]. [RFC 1682]
  8. * [`Self` may be included in the `where` clause of `impls`][38864]. [RFC 1647]
  9. * [When coercing to an unsized type lifetimes must be equal][40319]. That is,
  10. there is no subtyping between `T` and `U` when `T: Unsize<U>`. For example,
  11. coercing `&mut [&'a X; N]` to `&mut [&'b X]` requires `'a` be equal to
  12. `'b`. Soundness fix.
  13. * [Values passed to the indexing operator, `[]`, automatically coerce][40166]
  14. * [Static variables may contain references to other statics][40027]
  15. Compiler
  16. --------
  17. * [Exit quickly on only `--emit dep-info`][40336]
  18. * [Make `-C relocation-model` more correctly determine whether the linker
  19. creates a position-independent executable][40245]
  20. * [Add `-C overflow-checks` to directly control whether integer overflow
  21. panics][40037]
  22. * [The rustc type checker now checks items on demand instead of in a single
  23. in-order pass][40008]. This is mostly an internal refactoring in support of
  24. future work, including incremental type checking, but also resolves [RFC
  25. 1647], allowing `Self` to appear in `impl` `where` clauses.
  26. * [Optimize vtable loads][39995]
  27. * [Turn off vectorization for Emscripten targets][39990]
  28. * [Provide suggestions for unknown macros imported with `use`][39953]
  29. * [Fix ICEs in path resolution][39939]
  30. * [Strip exception handling code on Emscripten when `panic=abort`][39193]
  31. * [Add clearer error message using `&str + &str`][39116]
  32. Stabilized APIs
  33. ---------------
  34. * [`Arc::into_raw`]
  35. * [`Arc::from_raw`]
  36. * [`Arc::ptr_eq`]
  37. * [`Rc::into_raw`]
  38. * [`Rc::from_raw`]
  39. * [`Rc::ptr_eq`]
  40. * [`Ordering::then`]
  41. * [`Ordering::then_with`]
  42. * [`BTreeMap::range`]
  43. * [`BTreeMap::range_mut`]
  44. * [`collections::Bound`]
  45. * [`process::abort`]
  46. * [`ptr::read_unaligned`]
  47. * [`ptr::write_unaligned`]
  48. * [`Result::expect_err`]
  49. * [`Cell::swap`]
  50. * [`Cell::replace`]
  51. * [`Cell::into_inner`]
  52. * [`Cell::take`]
  53. Libraries
  54. ---------
  55. * [`BTreeMap` and `BTreeSet` can iterate over ranges][27787]
  56. * [`Cell` can store non-`Copy` types][39793]. [RFC 1651]
  57. * [`String` implements `FromIterator<&char>`][40028]
  58. * `Box` [implements][40009] a number of new conversions:
  59. `From<Box<str>> for String`,
  60. `From<Box<[T]>> for Vec<T>`,
  61. `From<Box<CStr>> for CString`,
  62. `From<Box<OsStr>> for OsString`,
  63. `From<Box<Path>> for PathBuf`,
  64. `Into<Box<str>> for String`,
  65. `Into<Box<[T]>> for Vec<T>`,
  66. `Into<Box<CStr>> for CString`,
  67. `Into<Box<OsStr>> for OsString`,
  68. `Into<Box<Path>> for PathBuf`,
  69. `Default for Box<str>`,
  70. `Default for Box<CStr>`,
  71. `Default for Box<OsStr>`,
  72. `From<&CStr> for Box<CStr>`,
  73. `From<&OsStr> for Box<OsStr>`,
  74. `From<&Path> for Box<Path>`
  75. * [`ffi::FromBytesWithNulError` implements `Error` and `Display`][39960]
  76. * [Specialize `PartialOrd<A> for [A] where A: Ord`][39642]
  77. * [Slightly optimize `slice::sort`][39538]
  78. * [Add `ToString` trait specialization for `Cow<'a, str>` and `String`][39440]
  79. * [`Box<[T]>` implements `From<&[T]> where T: Copy`,
  80. `Box<str>` implements `From<&str>`][39438]
  81. * [`IpAddr` implements `From` for various arrays. `SocketAddr` implements
  82. `From<(I, u16)> where I: Into<IpAddr>`][39372]
  83. * [`format!` estimates the needed capacity before writing a string][39356]
  84. * [Support unprivileged symlink creation in Windows][38921]
  85. * [`PathBuf` implements `Default`][38764]
  86. * [Implement `PartialEq<[A]>` for `VecDeque<A>`][38661]
  87. * [`HashMap` resizes adaptively][38368] to guard against DOS attacks
  88. and poor hash functions.
  89. Cargo
  90. -----
  91. * [Add `cargo check --all`][cargo/3731]
  92. * [Add an option to ignore SSL revocation checking][cargo/3699]
  93. * [Add `cargo run --package`][cargo/3691]
  94. * [Add `required_features`][cargo/3667]
  95. * [Assume `build.rs` is a build script][cargo/3664]
  96. * [Find workspace via `workspace_root` link in containing member][cargo/3562]
  97. Misc
  98. ----
  99. * [Documentation is rendered with mdbook instead of the obsolete, in-tree
  100. `rustbook`][39633]
  101. * [The "Unstable Book" documents nightly-only features][ubook]
  102. * [Improve the style of the sidebar in rustdoc output][40265]
  103. * [Configure build correctly on 64-bit CPU's with the armhf ABI][40261]
  104. * [Fix MSP430 breakage due to `i128`][40257]
  105. * [Preliminary Solaris/SPARCv9 support][39903]
  106. * [`rustc` is linked statically on Windows MSVC targets][39837], allowing it to
  107. run without installing the MSVC runtime.
  108. * [`rustdoc --test` includes file names in test names][39788]
  109. * This release includes builds of `std` for `sparc64-unknown-linux-gnu`,
  110. `aarch64-unknown-linux-fuchsia`, and `x86_64-unknown-linux-fuchsia`.
  111. * [Initial support for `aarch64-unknown-freebsd`][39491]
  112. * [Initial support for `i686-unknown-netbsd`][39426]
  113. * [This release no longer includes the old makefile build system][39431]. Rust
  114. is built with a custom build system, written in Rust, and with Cargo.
  115. * [Add Debug implementations for libcollection structs][39002]
  116. * [`TypeId` implements `PartialOrd` and `Ord`][38981]
  117. * [`--test-threads=0` produces an error][38945]
  118. * [`rustup` installs documentation by default][40526]
  119. * [The Rust source includes NatVis visualizations][39843]. These can be used by
  120. WinDbg and Visual Studio to improve the debugging experience.
  121. Compatibility Notes
  122. -------------------
  123. * [Rust 1.17 does not correctly detect the MSVC 2017 linker][38584]. As a
  124. workaround, either use MSVC 2015 or run vcvars.bat.
  125. * [When coercing to an unsized type lifetimes must be equal][40319]. That is,
  126. disallow subtyping between `T` and `U` when `T: Unsize<U>`, e.g. coercing
  127. `&mut [&'a X; N]` to `&mut [&'b X]` requires `'a` be equal to `'b`. Soundness
  128. fix.
  129. * [`format!` and `Display::to_string` panic if an underlying formatting
  130. implementation returns an error][40117]. Previously the error was silently
  131. ignored. It is incorrect for `write_fmt` to return an error when writing
  132. to a string.
  133. * [In-tree crates are verified to be unstable][39851]. Previously, some minor
  134. crates were marked stable and could be accessed from the stable toolchain.
  135. * [Rust git source no longer includes vendored crates][39728]. Those that need
  136. to build with vendored crates should build from release tarballs.
  137. * [Fix inert attributes from `proc_macro_derives`][39572]
  138. * [During crate resolution, rustc prefers a crate in the sysroot if two crates
  139. are otherwise identical][39518]. Unlikely to be encountered outside the Rust
  140. build system.
  141. * [Fixed bugs around how type inference interacts with dead-code][39485]. The
  142. existing code generally ignores the type of dead-code unless a type-hint is
  143. provided; this can cause surprising inference interactions particularly around
  144. defaulting. The new code uniformly ignores the result type of dead-code.
  145. * [Tuple-struct constructors with private fields are no longer visible][38932]
  146. * [Lifetime parameters that do not appear in the arguments are now considered
  147. early-bound][38897], resolving a soundness bug (#[32330]). The
  148. `hr_lifetime_in_assoc_type` future-compatibility lint has been in effect since
  149. April of 2016.
  150. * [rustdoc: fix doctests with non-feature crate attributes][38161]
  151. * [Make transmuting from fn item types to pointer-sized types a hard
  152. error][34198]
  153. [27787]: https://github.com/rust-lang/rust/issues/27787
  154. [32330]: https://github.com/rust-lang/rust/issues/32330
  155. [34198]: https://github.com/rust-lang/rust/pull/34198
  156. [38161]: https://github.com/rust-lang/rust/pull/38161
  157. [38368]: https://github.com/rust-lang/rust/pull/38368
  158. [38584]: https://github.com/rust-lang/rust/issues/38584
  159. [38661]: https://github.com/rust-lang/rust/pull/38661
  160. [38764]: https://github.com/rust-lang/rust/pull/38764
  161. [38864]: https://github.com/rust-lang/rust/issues/38864
  162. [38897]: https://github.com/rust-lang/rust/pull/38897
  163. [38921]: https://github.com/rust-lang/rust/pull/38921
  164. [38932]: https://github.com/rust-lang/rust/pull/38932
  165. [38945]: https://github.com/rust-lang/rust/pull/38945
  166. [38981]: https://github.com/rust-lang/rust/pull/38981
  167. [39002]: https://github.com/rust-lang/rust/pull/39002
  168. [39116]: https://github.com/rust-lang/rust/pull/39116
  169. [39193]: https://github.com/rust-lang/rust/pull/39193
  170. [39265]: https://github.com/rust-lang/rust/pull/39265
  171. [39356]: https://github.com/rust-lang/rust/pull/39356
  172. [39372]: https://github.com/rust-lang/rust/pull/39372
  173. [39426]: https://github.com/rust-lang/rust/pull/39426
  174. [39431]: https://github.com/rust-lang/rust/pull/39431
  175. [39438]: https://github.com/rust-lang/rust/pull/39438
  176. [39440]: https://github.com/rust-lang/rust/pull/39440
  177. [39485]: https://github.com/rust-lang/rust/pull/39485
  178. [39491]: https://github.com/rust-lang/rust/pull/39491
  179. [39518]: https://github.com/rust-lang/rust/pull/39518
  180. [39538]: https://github.com/rust-lang/rust/pull/39538
  181. [39572]: https://github.com/rust-lang/rust/pull/39572
  182. [39633]: https://github.com/rust-lang/rust/pull/39633
  183. [39642]: https://github.com/rust-lang/rust/pull/39642
  184. [39728]: https://github.com/rust-lang/rust/pull/39728
  185. [39761]: https://github.com/rust-lang/rust/pull/39761
  186. [39788]: https://github.com/rust-lang/rust/pull/39788
  187. [39793]: https://github.com/rust-lang/rust/pull/39793
  188. [39837]: https://github.com/rust-lang/rust/pull/39837
  189. [39843]: https://github.com/rust-lang/rust/pull/39843
  190. [39851]: https://github.com/rust-lang/rust/pull/39851
  191. [39903]: https://github.com/rust-lang/rust/pull/39903
  192. [39939]: https://github.com/rust-lang/rust/pull/39939
  193. [39953]: https://github.com/rust-lang/rust/pull/39953
  194. [39960]: https://github.com/rust-lang/rust/pull/39960
  195. [39990]: https://github.com/rust-lang/rust/pull/39990
  196. [39995]: https://github.com/rust-lang/rust/pull/39995
  197. [40008]: https://github.com/rust-lang/rust/pull/40008
  198. [40009]: https://github.com/rust-lang/rust/pull/40009
  199. [40027]: https://github.com/rust-lang/rust/pull/40027
  200. [40028]: https://github.com/rust-lang/rust/pull/40028
  201. [40037]: https://github.com/rust-lang/rust/pull/40037
  202. [40117]: https://github.com/rust-lang/rust/pull/40117
  203. [40166]: https://github.com/rust-lang/rust/pull/40166
  204. [40245]: https://github.com/rust-lang/rust/pull/40245
  205. [40257]: https://github.com/rust-lang/rust/pull/40257
  206. [40261]: https://github.com/rust-lang/rust/pull/40261
  207. [40265]: https://github.com/rust-lang/rust/pull/40265
  208. [40319]: https://github.com/rust-lang/rust/pull/40319
  209. [40336]: https://github.com/rust-lang/rust/pull/40336
  210. [40526]: https://github.com/rust-lang/rust/pull/40526
  211. [RFC 1623]: https://github.com/rust-lang/rfcs/blob/master/text/1623-static.md
  212. [RFC 1647]: https://github.com/rust-lang/rfcs/blob/master/text/1647-allow-self-in-where-clauses.md
  213. [RFC 1651]: https://github.com/rust-lang/rfcs/blob/master/text/1651-movecell.md
  214. [RFC 1682]: https://github.com/rust-lang/rfcs/blob/master/text/1682-field-init-shorthand.md
  215. [`Arc::from_raw`]: https://doc.rust-lang.org/std/sync/struct.Arc.html#method.from_raw
  216. [`Arc::into_raw`]: https://doc.rust-lang.org/std/sync/struct.Arc.html#method.into_raw
  217. [`Arc::ptr_eq`]: https://doc.rust-lang.org/std/sync/struct.Arc.html#method.ptr_eq
  218. [`BTreeMap::range_mut`]: https://doc.rust-lang.org/std/collections/btree_map/struct.BTreeMap.html#method.range_mut
  219. [`BTreeMap::range`]: https://doc.rust-lang.org/std/collections/btree_map/struct.BTreeMap.html#method.range
  220. [`Cell::into_inner`]: https://doc.rust-lang.org/std/cell/struct.Cell.html#method.into_inner
  221. [`Cell::replace`]: https://doc.rust-lang.org/std/cell/struct.Cell.html#method.replace
  222. [`Cell::swap`]: https://doc.rust-lang.org/std/cell/struct.Cell.html#method.swap
  223. [`Cell::take`]: https://doc.rust-lang.org/std/cell/struct.Cell.html#method.take
  224. [`Ordering::then_with`]: https://doc.rust-lang.org/std/cmp/enum.Ordering.html#method.then_with
  225. [`Ordering::then`]: https://doc.rust-lang.org/std/cmp/enum.Ordering.html#method.then
  226. [`Rc::from_raw`]: https://doc.rust-lang.org/std/rc/struct.Rc.html#method.from_raw
  227. [`Rc::into_raw`]: https://doc.rust-lang.org/std/rc/struct.Rc.html#method.into_raw
  228. [`Rc::ptr_eq`]: https://doc.rust-lang.org/std/rc/struct.Rc.html#method.ptr_eq
  229. [`Result::expect_err`]: https://doc.rust-lang.org/std/result/enum.Result.html#method.expect_err
  230. [`collections::Bound`]: https://doc.rust-lang.org/std/collections/enum.Bound.html
  231. [`process::abort`]: https://doc.rust-lang.org/std/process/fn.abort.html
  232. [`ptr::read_unaligned`]: https://doc.rust-lang.org/std/ptr/fn.read_unaligned.html
  233. [`ptr::write_unaligned`]: https://doc.rust-lang.org/std/ptr/fn.write_unaligned.html
  234. [cargo/3562]: https://github.com/rust-lang/cargo/pull/3562
  235. [cargo/3664]: https://github.com/rust-lang/cargo/pull/3664
  236. [cargo/3667]: https://github.com/rust-lang/cargo/pull/3667
  237. [cargo/3691]: https://github.com/rust-lang/cargo/pull/3691
  238. [cargo/3699]: https://github.com/rust-lang/cargo/pull/3699
  239. [cargo/3731]: https://github.com/rust-lang/cargo/pull/3731
  240. [mdbook]: https://crates.io/crates/mdbook
  241. [ubook]: https://doc.rust-lang.org/unstable-book/
  242. Version 1.16.0 (2017-03-16)
  243. ===========================
  244. Language
  245. --------
  246. * [The compiler's `dead_code` lint now accounts for type aliases][38051].
  247. * [Uninhabitable enums (those without any variants) no longer permit wildcard
  248. match patterns][38069]
  249. * [Clean up semantics of `self` in an import list][38313]
  250. * [`Self` may appear in `impl` headers][38920]
  251. * [`Self` may appear in struct expressions][39282]
  252. Compiler
  253. --------
  254. * [`rustc` now supports `--emit=metadata`, which causes rustc to emit
  255. a `.rmeta` file containing only crate metadata][38571]. This can be
  256. used by tools like the Rust Language Service to perform
  257. metadata-only builds.
  258. * [Levenshtein based typo suggestions now work in most places, while
  259. previously they worked only for fields and sometimes for local
  260. variables][38927]. Together with the overhaul of "no
  261. resolution"/"unexpected resolution" errors (#[38154]) they result in
  262. large and systematic improvement in resolution diagnostics.
  263. * [Fix `transmute::<T, U>` where `T` requires a bigger alignment than
  264. `U`][38670]
  265. * [rustc: use -Xlinker when specifying an rpath with ',' in it][38798]
  266. * [`rustc` no longer attempts to provide "consider using an explicit
  267. lifetime" suggestions][37057]. They were inaccurate.
  268. Stabilized APIs
  269. ---------------
  270. * [`VecDeque::truncate`]
  271. * [`VecDeque::resize`]
  272. * [`String::insert_str`]
  273. * [`Duration::checked_add`]
  274. * [`Duration::checked_sub`]
  275. * [`Duration::checked_div`]
  276. * [`Duration::checked_mul`]
  277. * [`str::replacen`]
  278. * [`str::repeat`]
  279. * [`SocketAddr::is_ipv4`]
  280. * [`SocketAddr::is_ipv6`]
  281. * [`IpAddr::is_ipv4`]
  282. * [`IpAddr::is_ipv6`]
  283. * [`Vec::dedup_by`]
  284. * [`Vec::dedup_by_key`]
  285. * [`Result::unwrap_or_default`]
  286. * [`<*const T>::wrapping_offset`]
  287. * [`<*mut T>::wrapping_offset`]
  288. * `CommandExt::creation_flags`
  289. * [`File::set_permissions`]
  290. * [`String::split_off`]
  291. Libraries
  292. ---------
  293. * [`[T]::binary_search` and `[T]::binary_search_by_key` now take
  294. their argument by `Borrow` parameter][37761]
  295. * [All public types in std implement `Debug`][38006]
  296. * [`IpAddr` implements `From<Ipv4Addr>` and `From<Ipv6Addr>`][38327]
  297. * [`Ipv6Addr` implements `From<[u16; 8]>`][38131]
  298. * [Ctrl-Z returns from `Stdin.read()` when reading from the console on
  299. Windows][38274]
  300. * [std: Fix partial writes in `LineWriter`][38062]
  301. * [std: Clamp max read/write sizes on Unix][38062]
  302. * [Use more specific panic message for `&str` slicing errors][38066]
  303. * [`TcpListener::set_only_v6` is deprecated][38304]. This
  304. functionality cannot be achieved in std currently.
  305. * [`writeln!`, like `println!`, now accepts a form with no string
  306. or formatting arguments, to just print a newline][38469]
  307. * [Implement `iter::Sum` and `iter::Product` for `Result`][38580]
  308. * [Reduce the size of static data in `std_unicode::tables`][38781]
  309. * [`char::EscapeDebug`, `EscapeDefault`, `EscapeUnicode`,
  310. `CaseMappingIter`, `ToLowercase`, `ToUppercase`, implement
  311. `Display`][38909]
  312. * [`Duration` implements `Sum`][38712]
  313. * [`String` implements `ToSocketAddrs`][39048]
  314. Cargo
  315. -----
  316. * [The `cargo check` command does a type check of a project without
  317. building it][cargo/3296]
  318. * [crates.io will display CI badges from Travis and AppVeyor, if
  319. specified in Cargo.toml][cargo/3546]
  320. * [crates.io will display categories listed in Cargo.toml][cargo/3301]
  321. * [Compilation profiles accept integer values for `debug`, in addition
  322. to `true` and `false`. These are passed to `rustc` as the value to
  323. `-C debuginfo`][cargo/3534]
  324. * [Implement `cargo --version --verbose`][cargo/3604]
  325. * [All builds now output 'dep-info' build dependencies compatible with
  326. make and ninja][cargo/3557]
  327. * [Build all workspace members with `build --all`][cargo/3511]
  328. * [Document all workspace members with `doc --all`][cargo/3515]
  329. * [Path deps outside workspace are not members][cargo/3443]
  330. Misc
  331. ----
  332. * [`rustdoc` has a `--sysroot` argument that, like `rustc`, specifies
  333. the path to the Rust implementation][38589]
  334. * [The `armv7-linux-androideabi` target no longer enables NEON
  335. extensions, per Google's ABI guide][38413]
  336. * [The stock standard library can be compiled for Redox OS][38401]
  337. * [Rust has initial SPARC support][38726]. Tier 3. No builds
  338. available.
  339. * [Rust has experimental support for Nvidia PTX][38559]. Tier 3. No
  340. builds available.
  341. * [Fix backtraces on i686-pc-windows-gnu by disabling FPO][39379]
  342. Compatibility Notes
  343. -------------------
  344. * [Uninhabitable enums (those without any variants) no longer permit wildcard
  345. match patterns][38069]
  346. * In this release, references to uninhabited types can not be
  347. pattern-matched. This was accidentally allowed in 1.15.
  348. * [The compiler's `dead_code` lint now accounts for type aliases][38051].
  349. * [Ctrl-Z returns from `Stdin.read()` when reading from the console on
  350. Windows][38274]
  351. * [Clean up semantics of `self` in an import list][38313]
  352. [37057]: https://github.com/rust-lang/rust/pull/37057
  353. [37761]: https://github.com/rust-lang/rust/pull/37761
  354. [38006]: https://github.com/rust-lang/rust/pull/38006
  355. [38051]: https://github.com/rust-lang/rust/pull/38051
  356. [38062]: https://github.com/rust-lang/rust/pull/38062
  357. [38062]: https://github.com/rust-lang/rust/pull/38622
  358. [38066]: https://github.com/rust-lang/rust/pull/38066
  359. [38069]: https://github.com/rust-lang/rust/pull/38069
  360. [38131]: https://github.com/rust-lang/rust/pull/38131
  361. [38154]: https://github.com/rust-lang/rust/pull/38154
  362. [38274]: https://github.com/rust-lang/rust/pull/38274
  363. [38304]: https://github.com/rust-lang/rust/pull/38304
  364. [38313]: https://github.com/rust-lang/rust/pull/38313
  365. [38314]: https://github.com/rust-lang/rust/pull/38314
  366. [38327]: https://github.com/rust-lang/rust/pull/38327
  367. [38401]: https://github.com/rust-lang/rust/pull/38401
  368. [38413]: https://github.com/rust-lang/rust/pull/38413
  369. [38469]: https://github.com/rust-lang/rust/pull/38469
  370. [38559]: https://github.com/rust-lang/rust/pull/38559
  371. [38571]: https://github.com/rust-lang/rust/pull/38571
  372. [38580]: https://github.com/rust-lang/rust/pull/38580
  373. [38589]: https://github.com/rust-lang/rust/pull/38589
  374. [38670]: https://github.com/rust-lang/rust/pull/38670
  375. [38712]: https://github.com/rust-lang/rust/pull/38712
  376. [38726]: https://github.com/rust-lang/rust/pull/38726
  377. [38781]: https://github.com/rust-lang/rust/pull/38781
  378. [38798]: https://github.com/rust-lang/rust/pull/38798
  379. [38909]: https://github.com/rust-lang/rust/pull/38909
  380. [38920]: https://github.com/rust-lang/rust/pull/38920
  381. [38927]: https://github.com/rust-lang/rust/pull/38927
  382. [39048]: https://github.com/rust-lang/rust/pull/39048
  383. [39282]: https://github.com/rust-lang/rust/pull/39282
  384. [39379]: https://github.com/rust-lang/rust/pull/39379
  385. [`<*const T>::wrapping_offset`]: https://doc.rust-lang.org/std/primitive.pointer.html#method.wrapping_offset
  386. [`<*mut T>::wrapping_offset`]: https://doc.rust-lang.org/std/primitive.pointer.html#method.wrapping_offset
  387. [`Duration::checked_add`]: https://doc.rust-lang.org/std/time/struct.Duration.html#method.checked_add
  388. [`Duration::checked_div`]: https://doc.rust-lang.org/std/time/struct.Duration.html#method.checked_div
  389. [`Duration::checked_mul`]: https://doc.rust-lang.org/std/time/struct.Duration.html#method.checked_mul
  390. [`Duration::checked_sub`]: https://doc.rust-lang.org/std/time/struct.Duration.html#method.checked_sub
  391. [`File::set_permissions`]: https://doc.rust-lang.org/std/fs/struct.File.html#method.set_permissions
  392. [`IpAddr::is_ipv4`]: https://doc.rust-lang.org/std/net/enum.IpAddr.html#method.is_ipv4
  393. [`IpAddr::is_ipv6`]: https://doc.rust-lang.org/std/net/enum.IpAddr.html#method.is_ipv6
  394. [`Result::unwrap_or_default`]: https://doc.rust-lang.org/std/result/enum.Result.html#method.unwrap_or_default
  395. [`SocketAddr::is_ipv4`]: https://doc.rust-lang.org/std/net/enum.SocketAddr.html#method.is_ipv4
  396. [`SocketAddr::is_ipv6`]: https://doc.rust-lang.org/std/net/enum.SocketAddr.html#method.is_ipv6
  397. [`String::insert_str`]: https://doc.rust-lang.org/std/string/struct.String.html#method.insert_str
  398. [`String::split_off`]: https://doc.rust-lang.org/std/string/struct.String.html#method.split_off
  399. [`Vec::dedup_by_key`]: https://doc.rust-lang.org/std/vec/struct.Vec.html#method.dedup_by_key
  400. [`Vec::dedup_by`]: https://doc.rust-lang.org/std/vec/struct.Vec.html#method.dedup_by
  401. [`VecDeque::resize`]: https://doc.rust-lang.org/std/collections/vec_deque/struct.VecDeque.html#method.resize
  402. [`VecDeque::truncate`]: https://doc.rust-lang.org/std/collections/vec_deque/struct.VecDeque.html#method.truncate
  403. [`str::repeat`]: https://doc.rust-lang.org/std/primitive.str.html#method.repeat
  404. [`str::replacen`]: https://doc.rust-lang.org/std/primitive.str.html#method.replacen
  405. [cargo/3296]: https://github.com/rust-lang/cargo/pull/3296
  406. [cargo/3301]: https://github.com/rust-lang/cargo/pull/3301
  407. [cargo/3443]: https://github.com/rust-lang/cargo/pull/3443
  408. [cargo/3511]: https://github.com/rust-lang/cargo/pull/3511
  409. [cargo/3515]: https://github.com/rust-lang/cargo/pull/3515
  410. [cargo/3534]: https://github.com/rust-lang/cargo/pull/3534
  411. [cargo/3546]: https://github.com/rust-lang/cargo/pull/3546
  412. [cargo/3557]: https://github.com/rust-lang/cargo/pull/3557
  413. [cargo/3604]: https://github.com/rust-lang/cargo/pull/3604
  414. [RFC 1623]: https://github.com/rust-lang/rfcs/blob/master/text/1623-static.md
  415. Version 1.15.1 (2017-02-09)
  416. ===========================
  417. * [Fix IntoIter::as_mut_slice's signature][39466]
  418. * [Compile compiler builtins with `-fPIC` on 32-bit platforms][39523]
  419. [39466]: https://github.com/rust-lang/rust/pull/39466
  420. [39523]: https://github.com/rust-lang/rust/pull/39523
  421. Version 1.15.0 (2017-02-02)
  422. ===========================
  423. Language
  424. --------
  425. * Basic procedural macros allowing custom `#[derive]`, aka "macros 1.1", are
  426. stable. This allows popular code-generating crates like Serde and Diesel to
  427. work ergonomically. [RFC 1681].
  428. * [Tuple structs may be empty. Unary and empty tuple structs may be instantiated
  429. with curly braces][36868]. Part of [RFC 1506].
  430. * [A number of minor changes to name resolution have been activated][37127].
  431. They add up to more consistent semantics, allowing for future evolution of
  432. Rust macros. Specified in [RFC 1560], see its section on ["changes"] for
  433. details of what is different. The breaking changes here have been transitioned
  434. through the [`legacy_imports`] lint since 1.14, with no known regressions.
  435. * [In `macro_rules`, `path` fragments can now be parsed as type parameter
  436. bounds][38279]
  437. * [`?Sized` can be used in `where` clauses][37791]
  438. * [There is now a limit on the size of monomorphized types and it can be
  439. modified with the `#![type_size_limit]` crate attribute, similarly to
  440. the `#![recursion_limit]` attribute][37789]
  441. Compiler
  442. --------
  443. * [On Windows, the compiler will apply dllimport attributes when linking to
  444. extern functions][37973]. Additional attributes and flags can control which
  445. library kind is linked and its name. [RFC 1717].
  446. * [Rust-ABI symbols are no longer exported from cdylibs][38117]
  447. * [The `--test` flag works with procedural macro crates][38107]
  448. * [Fix `extern "aapcs" fn` ABI][37814]
  449. * [The `-C no-stack-check` flag is deprecated][37636]. It does nothing.
  450. * [The `format!` expander recognizes incorrect `printf` and shell-style
  451. formatting directives and suggests the correct format][37613].
  452. * [Only report one error for all unused imports in an import list][37456]
  453. Compiler Performance
  454. --------------------
  455. * [Avoid unnecessary `mk_ty` calls in `Ty::super_fold_with`][37705]
  456. * [Avoid more unnecessary `mk_ty` calls in `Ty::super_fold_with`][37979]
  457. * [Don't clone in `UnificationTable::probe`][37848]
  458. * [Remove `scope_auxiliary` to cut RSS by 10%][37764]
  459. * [Use small vectors in type walker][37760]
  460. * [Macro expansion performance was improved][37701]
  461. * [Change `HirVec<P<T>>` to `HirVec<T>` in `hir::Expr`][37642]
  462. * [Replace FNV with a faster hash function][37229]
  463. Stabilized APIs
  464. ---------------
  465. * [`std::iter::Iterator::min_by`]
  466. * [`std::iter::Iterator::max_by`]
  467. * [`std::os::*::fs::FileExt`]
  468. * [`std::sync::atomic::Atomic*::get_mut`]
  469. * [`std::sync::atomic::Atomic*::into_inner`]
  470. * [`std::vec::IntoIter::as_slice`]
  471. * [`std::vec::IntoIter::as_mut_slice`]
  472. * [`std::sync::mpsc::Receiver::try_iter`]
  473. * [`std::os::unix::process::CommandExt::before_exec`]
  474. * [`std::rc::Rc::strong_count`]
  475. * [`std::rc::Rc::weak_count`]
  476. * [`std::sync::Arc::strong_count`]
  477. * [`std::sync::Arc::weak_count`]
  478. * [`std::char::encode_utf8`]
  479. * [`std::char::encode_utf16`]
  480. * [`std::cell::Ref::clone`]
  481. * [`std::io::Take::into_inner`]
  482. Libraries
  483. ---------
  484. * [The standard sorting algorithm has been rewritten for dramatic performance
  485. improvements][38192]. It is a hybrid merge sort, drawing influences from
  486. Timsort. Previously it was a naive merge sort.
  487. * [`Iterator::nth` no longer has a `Sized` bound][38134]
  488. * [`Extend<&T>` is specialized for `Vec` where `T: Copy`][38182] to improve
  489. performance.
  490. * [`chars().count()` is much faster][37888] and so are [`chars().last()`
  491. and `char_indices().last()`][37882]
  492. * [Fix ARM Objective-C ABI in `std::env::args`][38146]
  493. * [Chinese characters display correctly in `fmt::Debug`][37855]
  494. * [Derive `Default` for `Duration`][37699]
  495. * [Support creation of anonymous pipes on WinXP/2k][37677]
  496. * [`mpsc::RecvTimeoutError` implements `Error`][37527]
  497. * [Don't pass overlapped handles to processes][38835]
  498. Cargo
  499. -----
  500. * [In this release, Cargo build scripts no longer have access to the `OUT_DIR`
  501. environment variable at build time via `env!("OUT_DIR")`][cargo/3368]. They
  502. should instead check the variable at runtime with `std::env`. That the value
  503. was set at build time was a bug, and incorrect when cross-compiling. This
  504. change is known to cause breakage.
  505. * [Add `--all` flag to `cargo test`][cargo/3221]
  506. * [Compile statically against the MSVC CRT][cargo/3363]
  507. * [Mix feature flags into fingerprint/metadata shorthash][cargo/3102]
  508. * [Link OpenSSL statically on OSX][cargo/3311]
  509. * [Apply new fingerprinting to build dir outputs][cargo/3310]
  510. * [Test for bad path overrides with summaries][cargo/3336]
  511. * [Require `cargo install --vers` to take a semver version][cargo/3338]
  512. * [Fix retrying crate downloads for network errors][cargo/3348]
  513. * [Implement string lookup for `build.rustflags` config key][cargo/3356]
  514. * [Emit more info on --message-format=json][cargo/3319]
  515. * [Assume `build.rs` in the same directory as `Cargo.toml` is a build script][cargo/3361]
  516. * [Don't ignore errors in workspace manifest][cargo/3409]
  517. * [Fix `--message-format JSON` when rustc emits non-JSON warnings][cargo/3410]
  518. Tooling
  519. -------
  520. * [Test runners (binaries built with `--test`) now support a `--list` argument
  521. that lists the tests it contains][38185]
  522. * [Test runners now support a `--exact` argument that makes the test filter
  523. match exactly, instead of matching only a substring of the test name][38181]
  524. * [rustdoc supports a `--playground-url` flag][37763]
  525. * [rustdoc provides more details about `#[should_panic]` errors][37749]
  526. Misc
  527. ----
  528. * [The Rust build system is now written in Rust][37817]. The Makefiles may
  529. continue to be used in this release by passing `--disable-rustbuild` to the
  530. configure script, but they will be deleted soon. Note that the new build
  531. system uses a different on-disk layout that will likely affect any scripts
  532. building Rust.
  533. * [Rust supports i686-unknown-openbsd][38086]. Tier 3 support. No testing or
  534. releases.
  535. * [Rust supports the MSP430][37627]. Tier 3 support. No testing or releases.
  536. * [Rust supports the ARMv5TE architecture][37615]. Tier 3 support. No testing or
  537. releases.
  538. Compatibility Notes
  539. -------------------
  540. * [A number of minor changes to name resolution have been activated][37127].
  541. They add up to more consistent semantics, allowing for future evolution of
  542. Rust macros. Specified in [RFC 1560], see its section on ["changes"] for
  543. details of what is different. The breaking changes here have been transitioned
  544. through the [`legacy_imports`] lint since 1.14, with no known regressions.
  545. * [In this release, Cargo build scripts no longer have access to the `OUT_DIR`
  546. environment variable at build time via `env!("OUT_DIR")`][cargo/3368]. They
  547. should instead check the variable at runtime with `std::env`. That the value
  548. was set at build time was a bug, and incorrect when cross-compiling. This
  549. change is known to cause breakage.
  550. * [Higher-ranked lifetimes are no longer allowed to appear _only_ in associated
  551. types][33685]. The [`hr_lifetime_in_assoc_type` lint] has been a warning since
  552. 1.10 and is now an error by default. It will become a hard error in the near
  553. future.
  554. * [The semantics relating modules to file system directories are changing in
  555. minor ways][37602]. This is captured in the new `legacy_directory_ownership`
  556. lint, which is a warning in this release, and will become a hard error in the
  557. future.
  558. * [Rust-ABI symbols are no longer exported from cdylibs][38117]
  559. * [Once `Peekable` peeks a `None` it will return that `None` without re-querying
  560. the underlying iterator][37834]
  561. ["changes"]: https://github.com/rust-lang/rfcs/blob/master/text/1560-name-resolution.md#changes-to-name-resolution-rules
  562. [33685]: https://github.com/rust-lang/rust/issues/33685
  563. [36868]: https://github.com/rust-lang/rust/pull/36868
  564. [37127]: https://github.com/rust-lang/rust/pull/37127
  565. [37229]: https://github.com/rust-lang/rust/pull/37229
  566. [37456]: https://github.com/rust-lang/rust/pull/37456
  567. [37527]: https://github.com/rust-lang/rust/pull/37527
  568. [37602]: https://github.com/rust-lang/rust/pull/37602
  569. [37613]: https://github.com/rust-lang/rust/pull/37613
  570. [37615]: https://github.com/rust-lang/rust/pull/37615
  571. [37636]: https://github.com/rust-lang/rust/pull/37636
  572. [37627]: https://github.com/rust-lang/rust/pull/37627
  573. [37642]: https://github.com/rust-lang/rust/pull/37642
  574. [37677]: https://github.com/rust-lang/rust/pull/37677
  575. [37699]: https://github.com/rust-lang/rust/pull/37699
  576. [37701]: https://github.com/rust-lang/rust/pull/37701
  577. [37705]: https://github.com/rust-lang/rust/pull/37705
  578. [37749]: https://github.com/rust-lang/rust/pull/37749
  579. [37760]: https://github.com/rust-lang/rust/pull/37760
  580. [37763]: https://github.com/rust-lang/rust/pull/37763
  581. [37764]: https://github.com/rust-lang/rust/pull/37764
  582. [37789]: https://github.com/rust-lang/rust/pull/37789
  583. [37791]: https://github.com/rust-lang/rust/pull/37791
  584. [37814]: https://github.com/rust-lang/rust/pull/37814
  585. [37817]: https://github.com/rust-lang/rust/pull/37817
  586. [37834]: https://github.com/rust-lang/rust/pull/37834
  587. [37848]: https://github.com/rust-lang/rust/pull/37848
  588. [37855]: https://github.com/rust-lang/rust/pull/37855
  589. [37882]: https://github.com/rust-lang/rust/pull/37882
  590. [37888]: https://github.com/rust-lang/rust/pull/37888
  591. [37973]: https://github.com/rust-lang/rust/pull/37973
  592. [37979]: https://github.com/rust-lang/rust/pull/37979
  593. [38086]: https://github.com/rust-lang/rust/pull/38086
  594. [38107]: https://github.com/rust-lang/rust/pull/38107
  595. [38117]: https://github.com/rust-lang/rust/pull/38117
  596. [38134]: https://github.com/rust-lang/rust/pull/38134
  597. [38146]: https://github.com/rust-lang/rust/pull/38146
  598. [38181]: https://github.com/rust-lang/rust/pull/38181
  599. [38182]: https://github.com/rust-lang/rust/pull/38182
  600. [38185]: https://github.com/rust-lang/rust/pull/38185
  601. [38192]: https://github.com/rust-lang/rust/pull/38192
  602. [38279]: https://github.com/rust-lang/rust/pull/38279
  603. [38835]: https://github.com/rust-lang/rust/pull/38835
  604. [RFC 1492]: https://github.com/rust-lang/rfcs/blob/master/text/1492-dotdot-in-patterns.md
  605. [RFC 1506]: https://github.com/rust-lang/rfcs/blob/master/text/1506-adt-kinds.md
  606. [RFC 1560]: https://github.com/rust-lang/rfcs/blob/master/text/1560-name-resolution.md
  607. [RFC 1681]: https://github.com/rust-lang/rfcs/blob/master/text/1681-macros-1.1.md
  608. [RFC 1717]: https://github.com/rust-lang/rfcs/blob/master/text/1717-dllimport.md
  609. [`hr_lifetime_in_assoc_type` lint]: https://github.com/rust-lang/rust/issues/33685
  610. [`legacy_imports`]: https://github.com/rust-lang/rust/pull/38271
  611. [cargo/3102]: https://github.com/rust-lang/cargo/pull/3102
  612. [cargo/3221]: https://github.com/rust-lang/cargo/pull/3221
  613. [cargo/3310]: https://github.com/rust-lang/cargo/pull/3310
  614. [cargo/3311]: https://github.com/rust-lang/cargo/pull/3311
  615. [cargo/3319]: https://github.com/rust-lang/cargo/pull/3319
  616. [cargo/3336]: https://github.com/rust-lang/cargo/pull/3336
  617. [cargo/3338]: https://github.com/rust-lang/cargo/pull/3338
  618. [cargo/3348]: https://github.com/rust-lang/cargo/pull/3348
  619. [cargo/3356]: https://github.com/rust-lang/cargo/pull/3356
  620. [cargo/3361]: https://github.com/rust-lang/cargo/pull/3361
  621. [cargo/3363]: https://github.com/rust-lang/cargo/pull/3363
  622. [cargo/3368]: https://github.com/rust-lang/cargo/issues/3368
  623. [cargo/3409]: https://github.com/rust-lang/cargo/pull/3409
  624. [cargo/3410]: https://github.com/rust-lang/cargo/pull/3410
  625. [`std::iter::Iterator::min_by`]: https://doc.rust-lang.org/std/iter/trait.Iterator.html#method.min_by
  626. [`std::iter::Iterator::max_by`]: https://doc.rust-lang.org/std/iter/trait.Iterator.html#method.max_by
  627. [`std::os::*::fs::FileExt`]: https://doc.rust-lang.org/std/os/unix/fs/trait.FileExt.html
  628. [`std::sync::atomic::Atomic*::get_mut`]: https://doc.rust-lang.org/std/sync/atomic/struct.AtomicU8.html#method.get_mut
  629. [`std::sync::atomic::Atomic*::into_inner`]: https://doc.rust-lang.org/std/sync/atomic/struct.AtomicU8.html#method.into_inner
  630. [`std::vec::IntoIter::as_slice`]: https://doc.rust-lang.org/std/vec/struct.IntoIter.html#method.as_slice
  631. [`std::vec::IntoIter::as_mut_slice`]: https://doc.rust-lang.org/std/vec/struct.IntoIter.html#method.as_mut_slice
  632. [`std::sync::mpsc::Receiver::try_iter`]: https://doc.rust-lang.org/std/sync/mpsc/struct.Receiver.html#method.try_iter
  633. [`std::os::unix::process::CommandExt::before_exec`]: https://doc.rust-lang.org/std/os/unix/process/trait.CommandExt.html#tymethod.before_exec
  634. [`std::rc::Rc::strong_count`]: https://doc.rust-lang.org/std/rc/struct.Rc.html#method.strong_count
  635. [`std::rc::Rc::weak_count`]: https://doc.rust-lang.org/std/rc/struct.Rc.html#method.weak_count
  636. [`std::sync::Arc::strong_count`]: https://doc.rust-lang.org/std/sync/struct.Arc.html#method.strong_count
  637. [`std::sync::Arc::weak_count`]: https://doc.rust-lang.org/std/sync/struct.Arc.html#method.weak_count
  638. [`std::char::encode_utf8`]: https://doc.rust-lang.org/std/primitive.char.html#method.encode_utf8
  639. [`std::char::encode_utf16`]: https://doc.rust-lang.org/std/primitive.char.html#method.encode_utf16
  640. [`std::cell::Ref::clone`]: https://doc.rust-lang.org/std/cell/struct.Ref.html#method.clone
  641. [`std::io::Take::into_inner`]: https://doc.rust-lang.org/std/io/struct.Take.html#method.into_inner
  642. Version 1.14.0 (2016-12-22)
  643. ===========================
  644. Language
  645. --------
  646. * [`..` matches multiple tuple fields in enum variants, structs
  647. and tuples][36843]. [RFC 1492].
  648. * [Safe `fn` items can be coerced to `unsafe fn` pointers][37389]
  649. * [`use *` and `use ::*` both glob-import from the crate root][37367]
  650. * [It's now possible to call a `Vec<Box<Fn()>>` without explicit
  651. dereferencing][36822]
  652. Compiler
  653. --------
  654. * [Mark enums with non-zero discriminant as non-zero][37224]
  655. * [Lower-case `static mut` names are linted like other
  656. statics and consts][37162]
  657. * [Fix ICE on some macros in const integer positions
  658. (e.g. `[u8; m!()]`)][36819]
  659. * [Improve error message and snippet for "did you mean `x`"][36798]
  660. * [Add a panic-strategy field to the target specification][36794]
  661. * [Include LLVM version in `--version --verbose`][37200]
  662. Compile-time Optimizations
  663. --------------------------
  664. * [Improve macro expansion performance][37569]
  665. * [Shrink `Expr_::ExprInlineAsm`][37445]
  666. * [Replace all uses of SHA-256 with BLAKE2b][37439]
  667. * [Reduce the number of bytes hashed by `IchHasher`][37427]
  668. * [Avoid more allocations when compiling html5ever][37373]
  669. * [Use `SmallVector` in `CombineFields::instantiate`][37322]
  670. * [Avoid some allocations in the macro parser][37318]
  671. * [Use a faster deflate setting][37298]
  672. * [Add `ArrayVec` and `AccumulateVec` to reduce heap allocations
  673. during interning of slices][37270]
  674. * [Optimize `write_metadata`][37267]
  675. * [Don't process obligation forest cycles when stalled][37231]
  676. * [Avoid many `CrateConfig` clones][37161]
  677. * [Optimize `Substs::super_fold_with`][37108]
  678. * [Optimize `ObligationForest`'s `NodeState` handling][36993]
  679. * [Speed up `plug_leaks`][36917]
  680. Libraries
  681. ---------
  682. * [`println!()`, with no arguments, prints newline][36825].
  683. Previously, an empty string was required to achieve the same.
  684. * [`Wrapping` impls standard binary and unary operators, as well as
  685. the `Sum` and `Product` iterators][37356]
  686. * [Implement `From<Cow<str>> for String` and `From<Cow<[T]>> for
  687. Vec<T>`][37326]
  688. * [Improve `fold` performance for `chain`, `cloned`, `map`, and
  689. `VecDeque` iterators][37315]
  690. * [Improve `SipHasher` performance on small values][37312]
  691. * [Add Iterator trait TrustedLen to enable better FromIterator /
  692. Extend][37306]
  693. * [Expand `.zip()` specialization to `.map()` and `.cloned()`][37230]
  694. * [`ReadDir` implements `Debug`][37221]
  695. * [Implement `RefUnwindSafe` for atomic types][37178]
  696. * [Specialize `Vec::extend` to `Vec::extend_from_slice`][37094]
  697. * [Avoid allocations in `Decoder::read_str`][37064]
  698. * [`io::Error` implements `From<io::ErrorKind>`][37037]
  699. * [Impl `Debug` for raw pointers to unsized data][36880]
  700. * [Don't reuse `HashMap` random seeds][37470]
  701. * [The internal memory layout of `HashMap` is more cache-friendly, for
  702. significant improvements in some operations][36692]
  703. * [`HashMap` uses less memory on 32-bit architectures][36595]
  704. * [Impl `Add<{str, Cow<str>}>` for `Cow<str>`][36430]
  705. Cargo
  706. -----
  707. * [Expose rustc cfg values to build scripts][cargo/3243]
  708. * [Allow cargo to work with read-only `CARGO_HOME`][cargo/3259]
  709. * [Fix passing --features when testing multiple packages][cargo/3280]
  710. * [Use a single profile set per workspace][cargo/3249]
  711. * [Load `replace` sections from lock files][cargo/3220]
  712. * [Ignore `panic` configuration for test/bench profiles][cargo/3175]
  713. Tooling
  714. -------
  715. * [rustup is the recommended Rust installation method][1.14rustup]
  716. * This release includes host (rustc) builds for Linux on MIPS, PowerPC, and
  717. S390x. These are [tier 2] platforms and may have major defects. Follow the
  718. instructions on the website to install, or add the targets to an existing
  719. installation with `rustup target add`. The new target triples are:
  720. - `mips-unknown-linux-gnu`
  721. - `mipsel-unknown-linux-gnu`
  722. - `mips64-unknown-linux-gnuabi64`
  723. - `mips64el-unknown-linux-gnuabi64 `
  724. - `powerpc-unknown-linux-gnu`
  725. - `powerpc64-unknown-linux-gnu`
  726. - `powerpc64le-unknown-linux-gnu`
  727. - `s390x-unknown-linux-gnu `
  728. * This release includes target (std) builds for ARM Linux running MUSL
  729. libc. These are [tier 2] platforms and may have major defects. Add the
  730. following triples to an existing rustup installation with `rustup target add`:
  731. - `arm-unknown-linux-musleabi`
  732. - `arm-unknown-linux-musleabihf`
  733. - `armv7-unknown-linux-musleabihf`
  734. * This release includes [experimental support for WebAssembly][1.14wasm], via
  735. the `wasm32-unknown-emscripten` target. This target is known to have major
  736. defects. Please test, report, and fix.
  737. * rustup no longer installs documentation by default. Run `rustup
  738. component add rust-docs` to install.
  739. * [Fix line stepping in debugger][37310]
  740. * [Enable line number debuginfo in releases][37280]
  741. Misc
  742. ----
  743. * [Disable jemalloc on aarch64/powerpc/mips][37392]
  744. * [Add support for Fuchsia OS][37313]
  745. * [Detect local-rebuild by only MAJOR.MINOR version][37273]
  746. Compatibility Notes
  747. -------------------
  748. * [A number of forward-compatibility lints used by the compiler
  749. to gradually introduce language changes have been converted
  750. to deny by default][36894]:
  751. - ["use of inaccessible extern crate erroneously allowed"][36886]
  752. - ["type parameter default erroneously allowed in invalid location"][36887]
  753. - ["detects super or self keywords at the beginning of global path"][36888]
  754. - ["two overlapping inherent impls define an item with the same name
  755. were erroneously allowed"][36889]
  756. - ["floating-point constants cannot be used in patterns"][36890]
  757. - ["constants of struct or enum type can only be used in a pattern if
  758. the struct or enum has `#[derive(PartialEq, Eq)]`"][36891]
  759. - ["lifetimes or labels named `'_` were erroneously allowed"][36892]
  760. * [Prohibit patterns in trait methods without bodies][37378]
  761. * [The atomic `Ordering` enum may not be matched exhaustively][37351]
  762. * [Future-proofing `#[no_link]` breaks some obscure cases][37247]
  763. * [The `$crate` macro variable is accepted in fewer locations][37213]
  764. * [Impls specifying extra region requirements beyond the trait
  765. they implement are rejected][37167]
  766. * [Enums may not be unsized][37111]. Unsized enums are intended to
  767. work but never have. For now they are forbidden.
  768. * [Enforce the shadowing restrictions from RFC 1560 for today's macros][36767]
  769. [tier 2]: https://forge.rust-lang.org/platform-support.html
  770. [1.14rustup]: https://internals.rust-lang.org/t/beta-testing-rustup-rs/3316/204
  771. [1.14wasm]: https://users.rust-lang.org/t/compiling-to-the-web-with-rust-and-emscripten/7627
  772. [36430]: https://github.com/rust-lang/rust/pull/36430
  773. [36595]: https://github.com/rust-lang/rust/pull/36595
  774. [36595]: https://github.com/rust-lang/rust/pull/36595
  775. [36692]: https://github.com/rust-lang/rust/pull/36692
  776. [36767]: https://github.com/rust-lang/rust/pull/36767
  777. [36794]: https://github.com/rust-lang/rust/pull/36794
  778. [36798]: https://github.com/rust-lang/rust/pull/36798
  779. [36819]: https://github.com/rust-lang/rust/pull/36819
  780. [36822]: https://github.com/rust-lang/rust/pull/36822
  781. [36825]: https://github.com/rust-lang/rust/pull/36825
  782. [36843]: https://github.com/rust-lang/rust/pull/36843
  783. [36880]: https://github.com/rust-lang/rust/pull/36880
  784. [36886]: https://github.com/rust-lang/rust/issues/36886
  785. [36887]: https://github.com/rust-lang/rust/issues/36887
  786. [36888]: https://github.com/rust-lang/rust/issues/36888
  787. [36889]: https://github.com/rust-lang/rust/issues/36889
  788. [36890]: https://github.com/rust-lang/rust/issues/36890
  789. [36891]: https://github.com/rust-lang/rust/issues/36891
  790. [36892]: https://github.com/rust-lang/rust/issues/36892
  791. [36894]: https://github.com/rust-lang/rust/pull/36894
  792. [36917]: https://github.com/rust-lang/rust/pull/36917
  793. [36993]: https://github.com/rust-lang/rust/pull/36993
  794. [37037]: https://github.com/rust-lang/rust/pull/37037
  795. [37064]: https://github.com/rust-lang/rust/pull/37064
  796. [37094]: https://github.com/rust-lang/rust/pull/37094
  797. [37108]: https://github.com/rust-lang/rust/pull/37108
  798. [37111]: https://github.com/rust-lang/rust/pull/37111
  799. [37161]: https://github.com/rust-lang/rust/pull/37161
  800. [37162]: https://github.com/rust-lang/rust/pull/37162
  801. [37167]: https://github.com/rust-lang/rust/pull/37167
  802. [37178]: https://github.com/rust-lang/rust/pull/37178
  803. [37200]: https://github.com/rust-lang/rust/pull/37200
  804. [37213]: https://github.com/rust-lang/rust/pull/37213
  805. [37221]: https://github.com/rust-lang/rust/pull/37221
  806. [37224]: https://github.com/rust-lang/rust/pull/37224
  807. [37230]: https://github.com/rust-lang/rust/pull/37230
  808. [37231]: https://github.com/rust-lang/rust/pull/37231
  809. [37247]: https://github.com/rust-lang/rust/pull/37247
  810. [37267]: https://github.com/rust-lang/rust/pull/37267
  811. [37270]: https://github.com/rust-lang/rust/pull/37270
  812. [37273]: https://github.com/rust-lang/rust/pull/37273
  813. [37280]: https://github.com/rust-lang/rust/pull/37280
  814. [37298]: https://github.com/rust-lang/rust/pull/37298
  815. [37306]: https://github.com/rust-lang/rust/pull/37306
  816. [37310]: https://github.com/rust-lang/rust/pull/37310
  817. [37312]: https://github.com/rust-lang/rust/pull/37312
  818. [37313]: https://github.com/rust-lang/rust/pull/37313
  819. [37315]: https://github.com/rust-lang/rust/pull/37315
  820. [37318]: https://github.com/rust-lang/rust/pull/37318
  821. [37322]: https://github.com/rust-lang/rust/pull/37322
  822. [37326]: https://github.com/rust-lang/rust/pull/37326
  823. [37351]: https://github.com/rust-lang/rust/pull/37351
  824. [37356]: https://github.com/rust-lang/rust/pull/37356
  825. [37367]: https://github.com/rust-lang/rust/pull/37367
  826. [37373]: https://github.com/rust-lang/rust/pull/37373
  827. [37378]: https://github.com/rust-lang/rust/pull/37378
  828. [37389]: https://github.com/rust-lang/rust/pull/37389
  829. [37392]: https://github.com/rust-lang/rust/pull/37392
  830. [37427]: https://github.com/rust-lang/rust/pull/37427
  831. [37439]: https://github.com/rust-lang/rust/pull/37439
  832. [37445]: https://github.com/rust-lang/rust/pull/37445
  833. [37470]: https://github.com/rust-lang/rust/pull/37470
  834. [37569]: https://github.com/rust-lang/rust/pull/37569
  835. [RFC 1492]: https://github.com/rust-lang/rfcs/blob/master/text/1492-dotdot-in-patterns.md
  836. [cargo/3175]: https://github.com/rust-lang/cargo/pull/3175
  837. [cargo/3220]: https://github.com/rust-lang/cargo/pull/3220
  838. [cargo/3243]: https://github.com/rust-lang/cargo/pull/3243
  839. [cargo/3249]: https://github.com/rust-lang/cargo/pull/3249
  840. [cargo/3259]: https://github.com/rust-lang/cargo/pull/3259
  841. [cargo/3280]: https://github.com/rust-lang/cargo/pull/3280
  842. Version 1.13.0 (2016-11-10)
  843. ===========================
  844. Language
  845. --------
  846. * [Stabilize the `?` operator][36995]. `?` is a simple way to propagate
  847. errors, like the `try!` macro, described in [RFC 0243].
  848. * [Stabilize macros in type position][36014]. Described in [RFC 873].
  849. * [Stabilize attributes on statements][36995]. Described in [RFC 0016].
  850. * [Fix `#[derive]` for empty tuple structs/variants][35728]
  851. * [Fix lifetime rules for 'if' conditions][36029]
  852. * [Avoid loading and parsing unconfigured non-inline modules][36482]
  853. Compiler
  854. --------
  855. * [Add the `-C link-arg` argument][36574]
  856. * [Remove the old AST-based backend from rustc_trans][35764]
  857. * [Don't enable NEON by default on armv7 Linux][35814]
  858. * [Fix debug line number info for macro expansions][35238]
  859. * [Do not emit "class method" debuginfo for types that are not
  860. DICompositeType][36008]
  861. * [Warn about multiple conflicting #[repr] hints][34623]
  862. * [When sizing DST, don't double-count nested struct prefixes][36351]
  863. * [Default RUST_MIN_STACK to 16MiB for now][36505]
  864. * [Improve rlib metadata format][36551]. Reduces rlib size significantly.
  865. * [Reject macros with empty repetitions to avoid infinite loop][36721]
  866. * [Expand macros without recursing to avoid stack overflows][36214]
  867. Diagnostics
  868. -----------
  869. * [Replace macro backtraces with labeled local uses][35702]
  870. * [Improve error message for missplaced doc comments][33922]
  871. * [Buffer unix and lock windows to prevent message interleaving][35975]
  872. * [Update lifetime errors to specifically note temporaries][36171]
  873. * [Special case a few colors for Windows][36178]
  874. * [Suggest `use self` when such an import resolves][36289]
  875. * [Be more specific when type parameter shadows primitive type][36338]
  876. * Many minor improvements
  877. Compile-time Optimizations
  878. --------------------------
  879. * [Compute and cache HIR hashes at beginning][35854]
  880. * [Don't hash types in loan paths][36004]
  881. * [Cache projections in trans][35761]
  882. * [Optimize the parser's last token handling][36527]
  883. * [Only instantiate #[inline] functions in codegen units referencing
  884. them][36524]. This leads to big improvements in cases where crates export
  885. define many inline functions without using them directly.
  886. * [Lazily allocate TypedArena's first chunk][36592]
  887. * [Don't allocate during default HashSet creation][36734]
  888. Stabilized APIs
  889. ---------------
  890. * [`checked_abs`]
  891. * [`wrapping_abs`]
  892. * [`overflowing_abs`]
  893. * [`RefCell::try_borrow`]
  894. * [`RefCell::try_borrow_mut`]
  895. Libraries
  896. ---------
  897. * [Add `assert_ne!` and `debug_assert_ne!`][35074]
  898. * [Make `vec_deque::Drain`, `hash_map::Drain`, and `hash_set::Drain`
  899. covariant][35354]
  900. * [Implement `AsRef<[T]>` for `std::slice::Iter`][35559]
  901. * [Implement `Debug` for `std::vec::IntoIter`][35707]
  902. * [`CString`: avoid excessive growth just to 0-terminate][35871]
  903. * [Implement `CoerceUnsized` for `{Cell, RefCell, UnsafeCell}`][35627]
  904. * [Use arc4rand on FreeBSD][35884]
  905. * [memrchr: Correct aligned offset computation][35969]
  906. * [Improve Demangling of Rust Symbols][36059]
  907. * [Use monotonic time in condition variables][35048]
  908. * [Implement `Debug` for `std::path::{Components,Iter}`][36101]
  909. * [Implement conversion traits for `char`][35755]
  910. * [Fix illegal instruction caused by overflow in channel cloning][36104]
  911. * [Zero first byte of CString on drop][36264]
  912. * [Inherit overflow checks for sum and product][36372]
  913. * [Add missing Eq implementations][36423]
  914. * [Implement `Debug` for `DirEntry`][36631]
  915. * [When `getaddrinfo` returns `EAI_SYSTEM` retrieve actual error from
  916. `errno`][36754]
  917. * [`SipHasher`] is deprecated. Use [`DefaultHasher`].
  918. * [Implement more traits for `std::io::ErrorKind`][35911]
  919. * [Optimize BinaryHeap bounds checking][36072]
  920. * [Work around pointer aliasing issue in `Vec::extend_from_slice`,
  921. `extend_with_element`][36355]
  922. * [Fix overflow checking in unsigned pow()][34942]
  923. Cargo
  924. -----
  925. * This release includes security fixes to both curl and OpenSSL.
  926. * [Fix transitive doctests when panic=abort][cargo/3021]
  927. * [Add --all-features flag to cargo][cargo/3038]
  928. * [Reject path-based dependencies in `cargo package`][cargo/3060]
  929. * [Don't parse the home directory more than once][cargo/3078]
  930. * [Don't try to generate Cargo.lock on empty workspaces][cargo/3092]
  931. * [Update OpenSSL to 1.0.2j][cargo/3121]
  932. * [Add license and license_file to cargo metadata output][cargo/3110]
  933. * [Make crates-io registry URL op

Large files files are truncated, but you can click here to view the full file