← Back to all releases

Rust 1.29.0

Released on September 13, 2018

What's Changed

  • [Bumped minimum LLVM version to 5.0.][51899]
  • [Added powerpc64le-unknown-linux-musl target.][51619]
  • [Added aarch64-unknown-hermit and x86_64-unknown-hermit targets.][52861]
  • [Upgraded to LLVM 7.][51966]

  • [Once::call_once no longer requires Once to be 'static.][52239]
  • [BuildHasherDefault now implements PartialEq and Eq.][52402]
  • [Box, Box, and Box now implement Clone.][51912]
  • [Implemented PartialEq<&str> for OsString and PartialEq
  • [Cell now allows T to be unsized.][50494]
  • [SocketAddr is now stable on Redox.][52656]
  • [Arc::downcast]
  • [Iterator::flatten]
  • [Rc::downcast]

  • [Cargo can silently fix some bad lockfiles.][cargo/5831] You can use
  • [cargo-install will now allow you to cross compile an install
  • [Added the cargo-fix subcommand to automatically move project code from
  • [cargo doc can now optionally document private types using the

  • [str::{slice_unchecked, slice_unchecked_mut} are now deprecated.][51807]
  • [std::env::home_dir is now deprecated for its unintuitive behavior.][51656]
  • [rustc will no longer silently ignore invalid data in target spec.][52330]
  • [cfg attributes and --cfg command line flags are now more

  • [rustdoc now has the --cap-lints option which demotes all lints above
  • [rustc and rustdoc will now have the exit code of 1 if compilation
  • [A preview of clippy has been made available through rustup.][51122]
Full Changelog

Compiler

--------

- [Bumped minimum LLVM version to 5.0.][51899]

- [Added powerpc64le-unknown-linux-musl target.][51619]

- [Added aarch64-unknown-hermit and x86_64-unknown-hermit targets.][52861]

- [Upgraded to LLVM 7.][51966]

Libraries

---------

- [Once::call_once no longer requires Once to be 'static.][52239]

- [BuildHasherDefault now implements PartialEq and Eq.][52402]

- [Box, Box, and Box now implement Clone.][51912]

- [Implemented PartialEq<&str> for OsString and PartialEq

for &str.][51178]

- [Cell now allows T to be unsized.][50494]

- [SocketAddr is now stable on Redox.][52656]

Stabilized APIs

---------------

- [Arc::downcast]

- [Iterator::flatten]

- [Rc::downcast]

Cargo

-----

- [Cargo can silently fix some bad lockfiles.][cargo/5831] You can use

--locked to disable this behavior.

- [cargo-install will now allow you to cross compile an install

using --target.][cargo/5614]

- [Added the cargo-fix subcommand to automatically move project code from

2015 edition to 2018.][cargo/5723]

- [cargo doc can now optionally document private types using the

--document-private-items flag.][cargo/5543]

Misc

----

- [rustdoc now has the --cap-lints option which demotes all lints above

the specified level to that level.][52354] For example --cap-lints warn

will demote deny and forbid lints to warn.

- [rustc and rustdoc will now have the exit code of 1 if compilation

fails and 101 if there is a panic.][52197]

- [A preview of clippy has been made available through rustup.][51122]

You can install the preview with rustup component add clippy-preview.

Compatibility Notes

-------------------

- [str::{slice_unchecked, slice_unchecked_mut} are now deprecated.][51807]

Use str::get_unchecked(begin..end) instead.

- [std::env::home_dir is now deprecated for its unintuitive behavior.][51656]

Consider using the home_dir function from

https://crates.io/crates/dirs instead.

- [rustc will no longer silently ignore invalid data in target spec.][52330]

- [cfg attributes and --cfg command line flags are now more

strictly validated.][53893]

[53893]: https://github.com/rust-lang/rust/pull/53893/

[52861]: https://github.com/rust-lang/rust/pull/52861/

[51966]: https://github.com/rust-lang/rust/pull/51966/

[52656]: https://github.com/rust-lang/rust/pull/52656/

[52239]: https://github.com/rust-lang/rust/pull/52239/

[52330]: https://github.com/rust-lang/rust/pull/52330/

[52354]: https://github.com/rust-lang/rust/pull/52354/

[52402]: https://github.com/rust-lang/rust/pull/52402/

[52197]: https://github.com/rust-lang/rust/pull/52197/

[51807]: https://github.com/rust-lang/rust/pull/51807/

[51899]: https://github.com/rust-lang/rust/pull/51899/

[51912]: https://github.com/rust-lang/rust/pull/51912/

[51619]: https://github.com/rust-lang/rust/pull/51619/

[51656]: https://github.com/rust-lang/rust/pull/51656/

[51178]: https://github.com/rust-lang/rust/pull/51178/

[51122]: https://github.com/rust-lang/rust/pull/51122

[50494]: https://github.com/rust-lang/rust/pull/50494/

[cargo/5543]: https://github.com/rust-lang/cargo/pull/5543

[cargo/5614]: https://github.com/rust-lang/cargo/pull/5614/

[cargo/5723]: https://github.com/rust-lang/cargo/pull/5723/

[cargo/5831]: https://github.com/rust-lang/cargo/pull/5831/

[Arc::downcast]: https://doc.rust-lang.org/std/sync/struct.Arc.html#method.downcast

[Iterator::flatten]: https://doc.rust-lang.org/std/iter/trait.Iterator.html#method.flatten

[Rc::downcast]: https://doc.rust-lang.org/std/rc/struct.Rc.html#method.downcast