Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Upstream changes: Language * Procedural macros are now available. These kinds of macros allow for more powerful code generation. There is a new chapter available in the Rust Programming Language book that goes further in depth. * You can now use keywords as identifiers using the raw identifiers syntax (r#), e.g. let r#for = true; * Using anonymous parameters in traits is now deprecated with a warning and will be a hard error in the 2018 edition. * You can now use crate in paths. This allows you to refer to the crate root in the path, e.g. use crate::foo; refers to foo in src/lib.rs. * Using a external crate no longer requires being prefixed with ::. Previously, using a external crate in a module without a use statement required let json = ::serde_json::from_str(foo); but can now be written as let json = serde_json::from_str(foo);. * You can now apply the #[used] attribute to static items to prevent the compiler from optimising them away, even if they appear to be unused, e.g. #[used] static FOO: u32 = 1; * You can now import and reexport macros from other crates with the use syntax. Macros exported with #[macro_export] are now placed into the root module of the crate. If your macro relies on calling other local macros, it is recommended to export with the #[macro_export(local_inner_macros)] attribute so users won't have to import those macros. * You can now catch visibility keywords (e.g. pub, pub(crate)) in macros using the vis specifier. * Non-macro attributes now allow all forms of literals, not just strings. Previously, you would write #[attr("true")], and you can now write #[attr(true)]. * You can now specify a function to handle a panic in the Rust runtime with the #[panic_handler] attribute. Compiler * Added the riscv32imc-unknown-none-elf target. * Added the aarch64-unknown-netbsd target Libraries * ManuallyDrop now allows the inner type to be unsized. Stabilized APIs * Ipv4Addr::BROADCAST * Ipv4Addr::LOCALHOST * Ipv4Addr::UNSPECIFIED * Ipv6Addr::LOCALHOST * Ipv6Addr::UNSPECIFIED * Iterator::find_map * The following methods are replacement methods for trim_left, trim_right, trim_left_matches, and trim_right_matches, which will be deprecated in 1.33.0: * str::trim_end_matches * str::trim_end * str::trim_start_matches * str::trim_start Cargo * cargo run doesn't require specifying a package in workspaces. * cargo doc now supports --message-format=json. This is equivalent to calling rustdoc --error-format=json. * Cargo will now provide a progress bar for builds. Misc * rustdoc allows you to specify what edition to treat your code as with the --edition option. * rustdoc now has the --color (specify whether to output color) and --error-format (specify error format, e.g. json) options. * We now distribute a rust-gdbgui script that invokes gdbgui with Rust debug symbols. * Attributes from Rust tools such as rustfmt or clippy are now available, e.g. #[rustfmt::skip] will skip formatting the next item. Pkgsrc changest: * Explicitly list bootstrap kit version number for each kit we carry, so that one entry's version doesn't "bleed into" following kits. * Tweak for handling "earmv7hf" CPU type for NetBSD in the bootstrap.py script * Add two patches from Debian for sparc64; rust would generate code generating unaligned accesses, causing SIGBUS on sparc64 * Update most of the bootstrap kits to version 1.29.2; need minimum 1.29.0 to build 1.30.0. * Rust regrettably doesn't build for powerpc or earmv7hf in this version, most probably due to "char" being "unsigned char" on these platforms. Ref. rust-lang/rust#55465
- Loading branch information