SEARCH
NEW RPMS
DIRECTORIES
ABOUT
FAQ
VARIOUS
BLOG

 
 
Changelog for rust-1.52.1-6.1.i586.rpm :

* Mon May 10 2021 William Brown - Update to version 1.52.1: - This release works around broken builds on 1.52.0, which are caused by newly added verification. The bugs this verification detects are present in all Rust versions, and can trigger miscompilations in incremental builds, so downgrading to a prior stable version is not a fix. - What should a Rust programmer do in response? - upgrade to 1.52.1 - deleting your incremental compilation cache (e.g. by running cargo clean) - forcing incremental compilation to be disabled, by setting CARGO_INCREMENTAL=0 in your environment or build.incremental to false in the config.toml. - For more: https://blog.rust-lang.org/2021/05/10/Rust-1.52.1.html
* Fri May 07 2021 William Brown - Update to version 1.52: + Language - [Added the `unsafe_op_in_unsafe_fn` lint, which checks whether the unsafe code in an `unsafe fn` is wrapped in a `unsafe` block.][79208] This lint is allowed by default, and may become a warning or hard error in a future edition. - [You can now cast mutable references to arrays to a pointer of the same type as the element.][81479] + Compiler - [Upgraded the default LLVM to LLVM 12.][81451] - Added tier 3\\
* support for the following targets. - [`s390x-unknown-linux-musl`][82166] - [`riscv32gc-unknown-linux-musl` & `riscv64gc-unknown-linux-musl`][82202] - [`powerpc-unknown-openbsd`][82733] + Libraries - [`OsString` now implements `Extend` and `FromIterator`.][82121] - [`cmp::Reverse` now has `#[repr(transparent)]` representation.][81879] - [`Arc` now implements `error::Error`.][80553] - [All integer division and remainder operations are now `const`.][80962] + Stabilised APIs - [`Arguments::as_str`] - [`char::MAX`] - [`char::REPLACEMENT_CHARACTER`] - [`char::UNICODE_VERSION`] - [`char::decode_utf16`] - [`char::from_digit`] - [`char::from_u32_unchecked`] - [`char::from_u32`] - [`slice::partition_point`] - [`str::rsplit_once`] - [`str::split_once`] The following previously stable APIs are now `const`. - [`char::len_utf8`] - [`char::len_utf16`] - [`char::to_ascii_uppercase`] - [`char::to_ascii_lowercase`] - [`char::eq_ignore_ascii_case`] - [`u8::to_ascii_uppercase`] - [`u8::to_ascii_lowercase`] - [`u8::eq_ignore_ascii_case`] + Rustdoc - [Rustdoc lints are now treated as a tool lint, meaning that lints are now prefixed with `rustdoc::` (e.g. `#[warn(rustdoc::non_autolinks)]`).][80527] Using the old style is still allowed, and will become a warning in a future release. - [Rustdoc now supports argument files.][82261] - [Rustdoc now generates smart punctuation for documentation.][79423] - [You can now use \"task lists\" in Rustdoc Markdown.][81766] E.g. ```markdown - [x] Complete - [ ] Todo ``` + Misc - [You can now pass multiple filters to tests.][81356] E.g. `cargo test -- foo bar` will run all tests that match `foo` and `bar`. - [Rustup now distributes PDB symbols for the `std` library on Windows, allowing you to see `std` symbols when debugging.][82218] + Internal Only These changes provide no direct user facing benefits, but represent significant improvements to the internals and overall performance of rustc and related tools. - [Check the result cache before the DepGraph when ensuring queries][81855] - [Try fast_reject::simplify_type in coherence before doing full check][81744] - [Only store a LocalDefId in some HIR nodes][81611] - [Store HIR attributes in a side table][79519] + Compatibility Notes - ------------------ - [Cargo build scripts are now forbidden from setting `RUSTC_BOOTSTRAP`.][cargo/9181] - [Removed support for the `x86_64-rumprun-netbsd` target.][82594] - [Deprecated the `x86_64-sun-solaris` target in favor of `x86_64-pc-solaris`.][82216] - [Rustdoc now only accepts `,`, ` `, and `\\t` as delimiters for specifying languages in code blocks.][78429] - [Rustc now catches more cases of `pub_use_of_private_extern_crate`][80763] - [Changes in how proc macros handle whitespace may lead to panics when used with older `proc-macro-hack` versions. A `cargo update` should be sufficient to fix this in all cases.][84136]- Remove support-llvm12.patch - feature of 1.52
* Sat Apr 17 2021 Aaron Puchert - Add support-llvm12.patch to support building with LLVM 12.
* Tue Apr 06 2021 William Brown - Update to version 1.51: + Language - [You can now parameterize items such as functions, traits, and `struct`s by constant values in addition to by types and lifetimes.][79135] Also known as \"const generics\" E.g. you can now write the following. Note: Only values of primitive integers, `bool`, or `char` types are currently permitted. + Compiler - [Added the `-Csplit-debuginfo` codegen option for macOS platforms.][79570] This option controls whether debug information is split across multiple files or packed into a single file.
*
*Note
*
* This option is unstable on other platforms. - [Added tier 3\\
* support for `aarch64_be-unknown-linux-gnu`, `aarch64-unknown-linux-gnu_ilp32`, and `aarch64_be-unknown-linux-gnu_ilp32` targets.][81455] - [Added tier 3 support for `i386-unknown-linux-gnu` and `i486-unknown-linux-gnu` targets.][80662] - [The `target-cpu=native` option will now detect individual features of CPUs.][80749] \\
* Refer to Rust\'s [platform support page][platform-support-doc] for more information on Rust\'s tiered platform support. + Libraries - [`Box::downcast` is now also implemented for any `dyn Any + Send + Sync` object.][80945] - [`str` now implements `AsMut`.][80279] - [`u64` and `u128` now implement `From`.][79502] - [`Error` is now implemented for `&T` where `T` implements `Error`.][75180] - [`Poll::{map_ok, map_err}` are now implemented for `Poll>>`.][80968] - [`unsigned_abs` is now implemented for all signed integer types.][80959] - [`io::Empty` now implements `io::Seek`.][78044] - [`rc::Weak` and `sync::Weak`\'s methods such as `as_ptr` are now implemented for `T: ?Sized` types.][80764] + Stabilized APIs - [`Arc::decrement_strong_count`] - [`Arc::increment_strong_count`] - [`Once::call_once_force`] - [`Peekable::next_if_eq`] - [`Peekable::next_if`] - [`Seek::stream_position`] - [`array::IntoIter`] - [`panic::panic_any`] - [`ptr::addr_of!`] - [`ptr::addr_of_mut!`] - [`slice::fill_with`] - [`slice::split_inclusive_mut`] - [`slice::split_inclusive`] - [`slice::strip_prefix`] - [`slice::strip_suffix`] - [`str::split_inclusive`] - [`sync::OnceState`] - [`task::Wake`] + Cargo - [Added the `split-debuginfo` profile option to control the -Csplit-debuginfo codegen option.][cargo/9112] - [Added the `resolver` field to `Cargo.toml` to enable the new feature resolver and CLI option behavior.][cargo/8997] Version 2 of the feature resolver will try to avoid unifying features of dependencies where that unification could be unwanted. Such as using the same dependency with a `std` feature in a build scripts and proc-macros, while using the `no-std` feature in the final binary. See the [Cargo book documentation][feature-resolverAATT2.0] for more information on the feature. + Rustdoc - [Rustdoc will now include documentation for methods available from _nested_ `Deref` traits.][80653] - [You can now provide a `--default-theme` flag which sets the default theme to use for documentation.][79642] Various improvements to intra-doc links: - [You can link to non-path primitives such as `slice`.][80181] - [You can link to associated items.][74489] - [You can now include generic parameters when linking to items, like `Vec`.][76934] + Misc - [You can now pass `--include-ignored` to tests (e.g. with `cargo test -- --include-ignored`) to include testing tests marked `#[ignore]`.][80053] + Compatibility Notes - [WASI platforms no longer use the `wasm-bindgen` ABI, and instead use the wasm32 ABI.][79998] - [`rustc` no longer promotes division, modulo and indexing operations to `const` that could fail.][80579] - [The minimum version of glibc for the following platforms has been bumped to version 2.31 for the distributed artifacts.][81521] - `armv5te-unknown-linux-gnueabi` - `sparc64-unknown-linux-gnu` - `thumbv7neon-unknown-linux-gnueabihf` - `armv7-unknown-linux-gnueabi` - `x86_64-unknown-linux-gnux32`
* Mon Mar 29 2021 opensuse-packagingAATTopensuse.org- Rebased patches: + ignore-Wstring-conversion.patch (offset / fuzz)
* Sun Mar 28 2021 Manfred Hollstein - rust.spec: Fix typo. Add work-around for cargo not respecting _libexecdir on Leap.
* Thu Mar 11 2021 Guillaume GARDET - Add bootstrap for armv6
* Wed Feb 24 2021 Guillaume GARDET - Update to version 1.50:
* This fixes build on armv7 - boo#1181643 + Language - You can now use const values for x in [x; N] array expressions. This has been technically possible since 1.38.0, as it was unintentionally stabilized. - Assignments to ManuallyDrop union fields are now considered safe. + Compiler - Added tier 3
* support for the armv5te-unknown-linux-uclibceabi target. - Added tier 3 support for the aarch64-apple-ios-macabi target. - The x86_64-unknown-freebsd is now built with the full toolset. - Dropped support for all cloudabi targets.
* Refer to Rust\'s platform support page for more information on Rust\'s tiered platform support. + Libraries - proc_macro::Punct now implements PartialEq. - ops::{Index, IndexMut} are now implemented for fixed sized arrays of any length. - On Unix platforms, the std::fs::File type now has a \"niche\" of -1. This value cannot be a valid file descriptor, and now means Option takes up the same amount of space as File. + Stabilized APIs bool::then btree_map::Entry::or_insert_with_key f32::clamp f64::clamp hash_map::Entry::or_insert_with_key Ord::clamp RefCell::take slice::fill UnsafeCell::get_mut - The following previously stable methods are now const. IpAddr::is_ipv4 IpAddr::is_ipv6 IpAddr::is_unspecified IpAddr::is_loopback IpAddr::is_multicast Ipv4Addr::octets Ipv4Addr::is_loopback Ipv4Addr::is_private Ipv4Addr::is_link_local Ipv4Addr::is_multicast Ipv4Addr::is_broadcast Ipv4Addr::is_documentation Ipv4Addr::to_ipv6_compatible Ipv4Addr::to_ipv6_mapped Ipv6Addr::segments Ipv6Addr::is_unspecified Ipv6Addr::is_loopback Ipv6Addr::is_multicast Ipv6Addr::to_ipv4 Layout::size Layout::align Layout::from_size_align pow for all integer types. checked_pow for all integer types. saturating_pow for all integer types. wrapping_pow for all integer types. next_power_of_two for all unsigned integer types. checked_next_power_of_two for all unsigned integer types. + Cargo - Added the [build.rustc-workspace-wrapper] option. This option sets a wrapper to execute instead of rustc, for workspace members only. - cargo:rerun-if-changed will now, if provided a directory, scan the entire contents of that directory for changes. - Added the --workspace flag to the cargo update command. + Misc - The search results tab and the help button are focusable with keyboard in rustdoc. - Running tests will now print the total time taken to execute. + Compatibility Notes - The compare_and_swap method on atomics has been deprecated. It\'s recommended to use the compare_exchange and compare_exchange_weak methods instead. - Changes in how TokenStreams are checked have fixed some cases where you could write unhygenic macro_rules! macros. - #![test] as an inner attribute is now considered unstable like other inner macro attributes, and reports an error by default through the soft_unstable lint. - Overriding a forbid lint at the same level that it was set is now a hard error. - You can no longer intercept panic! calls by supplying your own macro. It\'s recommended to use the #[panic_handler] attribute to provide your own implementation. - Semi-colons after item statements (e.g. struct Foo {};) now produce a warning.
* Sun Jan 10 2021 Neal Gompa - Add riscv64 build
* Sat Jan 09 2021 Manfred Hollstein - : Add \"--stage 1\" to the \"./x.py doc\" call to ensure the newly built compiler gets used.
* Sat Jan 09 2021 Manfred Hollstein - Leap 15.3 does not provide a suitable llvm-devel package, hence explicitly require llvm9-devel. Details can be seen in the following e-mail thread
* Sun Jan 03 2021 Manfred Hollstein - Update to version 1.49.0 + Language - Unions can now implement Drop, and you can now have a field in a union with ManuallyDrop. - You can now cast uninhabited enums to integers. - You can now bind by reference and by move in patterns. This allows you to selectively borrow individual components of a type. E.g. [#][derive(Debug)] struct Person { name: String, age: u8, } let person = Person { name: String::from(\"Alice\"), age: 20, }; // `name` is moved out of person, but `age` is referenced. let Person { name, ref age } = person; println!(\"{} {}\", name, age); + Compiler - Added tier 1
* support for aarch64-unknown-linux-gnu. - Added tier 2 support for aarch64-apple-darwin. - Added tier 2 support for aarch64-pc-windows-msvc. - Added tier 3 support for mipsel-unknown-none. - Raised the minimum supported LLVM version to LLVM 9. - Output from threads spawned in tests is now captured. - Change os and vendor values to \"none\" and \"unknown\" for some targets
* Refer to Rust\'s platform support page for more information on Rust\'s tiered platform support. + Libraries - RangeInclusive now checks for exhaustion when calling contains and indexing. - ToString::to_string now no longer shrinks the internal buffer in the default implementation. - ops::{Index, IndexMut} are now implemented for fixed sized arrays of any length. + Stabilized APIs - slice::select_nth_unstable - slice::select_nth_unstable_by - slice::select_nth_unstable_by_key The following previously stable methods are now const. - Poll::is_ready - Poll::is_pending + Cargo - Building a crate with cargo-package should now be independently reproducible. - cargo-tree now marks proc-macro crates. - Added CARGO_PRIMARY_PACKAGE build-time environment variable. This variable will be set if the crate being built is one the user selected to build, either with -p or through defaults. - You can now use glob patterns when specifying packages & targets. + Compatibility Notes - Demoted i686-unknown-freebsd from host tier 2 to target tier 2 support. - Macros that end with a semi-colon are now treated as statements even if they expand to nothing. - Rustc will now check for the validity of some built-in attributes on enum variants. Previously such invalid or unused attributes could be ignored. - Leading whitespace is stripped more uniformly in documentation comments, which may change behavior. You read this post about the changes for more details. - Trait bounds are no longer inferred for associated types. + Internal Only These changes provide no direct user facing benefits, but represent significant improvements to the internals and overall performance of rustc and related tools. - rustc\'s internal crates are now compiled using the initial-exec Thread Local Storage model. - Calculate visibilities once in resolve. - Added system to the llvm-libunwind bootstrap config option. - Added --color for configuring terminal color support to bootstrap.- Rebased patches: + ignore-Wstring-conversion.patch (location)
* Sun Jan 03 2021 Manfred Hollstein - LLVM >= 9.0 is needed nowadays.- Disable usage of \"ninja\" for all distributions older than Leap 15.2
* Sat Jan 02 2021 Manfred Hollstein - Update to version 1.48.0 + Language - The `unsafe` keyword is now syntactically permitted on modules. This is still rejected semantically, but can now be parsed by procedural macros. + Compiler - Stabilised the `-C link-self-contained=` compiler flag. This tells `rustc` whether to link its own C runtime and libraries or to rely on a external linker to find them. (Supported only on `windows-gnu`, `linux-musl`, and `wasi` platforms.) - You can now use `-C target-feature=+crt-static` on `linux-gnu` targets. Note: If you\'re using cargo you must explicitly pass the `--target` flag. - Added tier 2
* support for aarch64-unknown-linux-musl.
* Refer to Rust\'s platform support page for more information on Rust\'s tiered platform support. + Libraries - io::Write is now implemented for &ChildStdin &Sink, &Stdout, and &Stderr. - All arrays of any length now implement TryFrom>. - The matches! macro now supports having a trailing comma. - Vec now implements PartialEq<[B]> where A: PartialEq. - The RefCell::{replace, replace_with, clone} methods now all use #[track_caller]. + Stabilized APIs - slice::as_ptr_range - slice::as_mut_ptr_range - VecDeque::make_contiguous - future::pending - future::ready The following previously stable methods are now `const fn\'s`: - Option::is_some - Option::is_none - Option::as_ref - Result::is_ok - Result::is_err - Result::as_ref - Ordering::reverse - Ordering::then + Cargo + Rustdoc - You can now link to items in rustdoc using the intra-doc link syntax. E.g. /// Uses [`std::future`] will automatically generate a link to std::future\'s documentation. See \"Linking to items by name\" for more information. - You can now specify #[doc(alias = \"\")] on items to add search aliases when searching through rustdoc\'s UI. + Compatibility Notes - Promotion of references to \'static lifetime inside const fn now follows the same rules as inside a fn body. In particular, &foo() will not be promoted to \'static lifetime any more inside const fns. - Associated type bindings on trait objects are now verified to meet the bounds declared on the trait when checking that they implement the trait. - When trait bounds on associated types or opaque types are ambiguous, the compiler no longer makes an arbitrary choice on which bound to use. - Fixed recursive nonterminals not being expanded in macros during pretty-print/reparse check. This may cause errors if your macro wasn\'t correctly handling recursive nonterminal tokens. - &mut references to non zero-sized types are no longer promoted. - rustc will now warn if you use attributes like #[link_name] or [#][cold] in places where they have no effect. - Updated _mm256_extract_epi8 and _mm256_extract_epi16 signatures in arch::{x86, x86_64} to return i32 to match the vendor signatures. - mem::uninitialized will now panic if any inner types inside a struct or enum disallow zero-initialization. - #[target_feature] will now error if used in a place where it has no effect. - Foreign exceptions are now caught by catch_unwind and will cause an abort. Note: This behaviour is not guaranteed and is still considered undefined behaviour, see the catch_unwind documentation for further information. + Internal Only These changes provide no direct user facing benefits, but represent significant improvements to the internals and overall performance of rustc and related tools. - Building rustc from source now uses ninja by default over make. You can continue building with make by setting ninja=false in your config.toml. - cg_llvm: fewer_names in uncached_llvm_type - Made ensure_sufficient_stack() non-generic- Rebased patches: + ignore-Wstring-conversion.patch (location)
* Sat Nov 28 2020 Bernhard Wiedemann - Check upstream signatures for binaries- Add rust.keyring
* Fri Nov 20 2020 Manfred Hollstein - Make all shared libraries in %{common_libdir} executable; otherwise fdupes will not find any duplicates in %{rustlibdir}.
* Thu Nov 05 2020 Manfred Hollstein - rust-rpmlintrc: Reflect updated LLVM name in the filter.
* Sun Oct 11 2020 William Brown - Update to version 1.47.0 + Language - [Closures will now warn when not used.][74869] + Compiler - [Stabilized the `-C control-flow-guard` codegen option][73893], which enables [Control Flow Guard][1.47.0-cfg] for Windows platforms, and is ignored on other platforms. - [Upgraded to LLVM 11.][73526] - [Added tier 3\\
* support for the `thumbv4t-none-eabi` target.][74419] - [Upgrade the FreeBSD toolchain to version 11.4][75204] - [`RUST_BACKTRACE`\'s output is now more compact.][75048] \\
* Refer to Rust\'s [platform support page][forge-platform-support] for more information on Rust\'s tiered platform support. + Libraries - [`CStr` now implements `Index>`.][74021] - [Traits in `std`/`core` are now implemented for arrays of any length, not just those of length less than 33.][74060] - [`ops::RangeFull` and `ops::Range` now implement Default.][73197] - [`panic::Location` now implements `Copy`, `Clone`, `Eq`, `Hash`, `Ord`, `PartialEq`, and `PartialOrd`.][73583] + Stabilized APIs - [`Ident::new_raw`] - [`Range::is_empty`] - [`RangeInclusive::is_empty`] - [`Result::as_deref`] - [`Result::as_deref_mut`] - [`Vec::leak`] - [`pointer::offset_from`] - [`f32::TAU`] - [`f64::TAU`] The following previously stable APIs have now been made const. - [The `new` method for all `NonZero` integers.][73858] - [The `checked_add`,`checked_sub`,`checked_mul`,`checked_neg`, `checked_shl`, `checked_shr`, `saturating_add`, `saturating_sub`, and `saturating_mul` methods for all integers.][73858] - [The `checked_abs`, `saturating_abs`, `saturating_neg`, and `signum` for all signed integers.][73858] - [The `is_ascii_alphabetic`, `is_ascii_uppercase`, `is_ascii_lowercase`, `is_ascii_alphanumeric`, `is_ascii_digit`, `is_ascii_hexdigit`, `is_ascii_punctuation`, `is_ascii_graphic`, `is_ascii_whitespace`, and `is_ascii_control` methods for `char` and `u8`.][73858] + Cargo - [`build-dependencies` are now built with opt-level 0 by default.][cargo/8500] You can override this by setting the following in your `Cargo.toml`. ```toml [profile.release.build-override] opt-level = 3 ``` - [`cargo-help` will now display man pages for commands rather just the `--help` text.][cargo/8456] - [`cargo-metadata` now emits a `test` field indicating if a target has tests enabled.][cargo/8478] - [`workspace.default-members` now respects `workspace.exclude`.][cargo/8485] - [`cargo-publish` will now use an alternative registry by default if it\'s the only registry specified in `package.publish`.][cargo/8571] + Misc - [Added a help button beside Rustdoc\'s searchbar that explains rustdoc\'s type based search.][75366] - [Added the Ayu theme to rustdoc.][71237]- Rebased patches: + ignore-Wstring-conversion.patch (offset / fuzz)
* Sat Oct 10 2020 William Brown - Update to version 1.46.0 + Language - [`if`, `match`, and `loop` expressions can now be used in const functions.][72437] - [Additionally you are now also able to coerce and cast to slices (`&[T]`) in const functions.][73862] - [The `#[track_caller]` attribute can now be added to functions to use the function\'s caller\'s location information for panic messages.][72445] - [Recursively indexing into tuples no longer needs parentheses.][71322] E.g. `x.0.0` over `(x.0).0`. - [`mem::transmute` can now be used in statics and constants.][72920]
*
*Note
*
* You currently can\'t use `mem::transmute` in constant functions. + Compiler - [You can now use the `cdylib` target on Apple iOS and tvOS platforms.][73516] - [Enabled static \"Position Independent Executables\" by default for `x86_64-unknown-linux-musl`.][70740] + Libraries - [`mem::forget` is now a `const fn`.][73887] - [`String` now implements `From`.][73466] - [The `leading_ones`, and `trailing_ones` methods have been stabilised for all integer types.][73032] - [`vec::IntoIter` now implements `AsRef<[T]>`.][72583] - [All non-zero integer types (`NonZeroU8`) now implement `TryFrom` for their zero-able equivalent (e.g. `TryFrom`).][72717] - [`&[T]` and `&mut [T]` now implement `PartialEq>`.][71660] - [`(String, u16)` now implements `ToSocketAddrs`.][73007] - [`vec::Drain<\'_, T>` now implements `AsRef<[T]>`.][72584] + Stabilized APIs - [`Option::zip`] - [`vec::Drain::as_slice`] + Cargo Added a number of new environment variables that are now available when compiling your crate. - [`CARGO_BIN_NAME` and `CARGO_CRATE_NAME`][cargo/8270] Providing the name of the specific binary being compiled and the name of the crate. - [`CARGO_PKG_LICENSE`][cargo/8325] The license from the manifest of the package. - [`CARGO_PKG_LICENSE_FILE`][cargo/8387] The path to the license file.
* Thu Oct 08 2020 opensuse-packagingAATTopensuse.org- Rebased patches: + ignore-Wstring-conversion.patch (offset / fuzz)
* Thu Sep 03 2020 William Brown - Update to version 1.45.2
* Fri Aug 14 2020 Martin Sirringhaus - Set codeunits=1 for all archs to avoid OOM-kills and produce the fastest possible compiler-binaries (at the cost of build-times for this package)
* Thu Aug 13 2020 Andreas Schwab - Pacify source validator
* Thu Aug 13 2020 Andreas Schwab - Add support for riscv64
* Fri Aug 07 2020 Manfred Hollstein - Minimum version needed for LLVM is >= 8.0
* Thu Aug 06 2020 Michał Rostecki - Update to version 1.44.1
* rustfmt accepts rustfmt_skip in cfg_attr again.
* Don\'t hash executable filenames on apple platforms, fixing backtraces.
* Fix crashes when finding backtrace on macOS.
* Clippy applies lint levels into different files.- Update to version 1.44.0 + Language - You can now use `async/.await` with `#[no_std]` enabled. - Added the `unused_braces` lint. - Expansion-driven outline module parsing + Compiler - Rustc now respects the `-C codegen-units` flag in incremental mode. Additionally when in incremental mode rustc defaults to 256 codegen units. - Refactored `catch_unwind` to have zero-cost, unless unwinding is enabled and a panic is thrown. - Added tier 3\\
* support for the `aarch64-unknown-none` and `aarch64-unknown-none-softfloat` targets. - Added tier 3 support for `arm64-apple-tvos` and `x86_64-apple-tvos` targets. + Libraries - Special cased `vec![]` to map directly to `Vec::new()`. This allows `vec![]` to be able to be used in `const` contexts. - `convert::Infallible` now implements `Hash`. - `OsString` now implements `DerefMut` and `IndexMut` returning a `&mut OsStr`. - Unicode 13 is now supported. - `String` now implements `From<&mut str>`. - `IoSlice` now implements `Copy`. - `Vec` now implements `From<[T; N]>`. Where `N` is at most 32. - `proc_macro::LexError` now implements `fmt::Display` and `Error`. - `from_le_bytes`, `to_le_bytes`, `from_be_bytes`, `to_be_bytes`, `from_ne_bytes`, and `to_ne_bytes` methods are now `const` for all integer types. + Stabilizd APIs - [`PathBuf::with_capacity`] - [`PathBuf::capacity`] - [`PathBuf::clear`] - [`PathBuf::reserve`] - [`PathBuf::reserve_exact`] - [`PathBuf::shrink_to_fit`] - [`f32::to_int_unchecked`] - [`f64::to_int_unchecked`] - [`Layout::align_to`] - [`Layout::pad_to_align`] - [`Layout::array`] - [`Layout::extend`] + Cargo - Added the `cargo tree` command which will print a tree graph of your dependencies + Misc - Rustdoc now allows you to specify `--crate-version` to have rustdoc include the version in the sidebar. + Compatibility Notes - Rustc now correctly generates static libraries on Windows GNU targets with the `.a` extension, rather than the previous `.lib`. - Removed the `-C no_integrated_as` flag from rustc. - The `file_name` property in JSON output of macro errors now points the actual source file rather than the previous format of ``.
*
*Note:
*
* this may not point to a file that actually exists on the user\'s system. - The minimum required external LLVM version has been bumped to LLVM 8. - `mem::{zeroed, uninitialised}` will now panic when used with types that do not allow zero initialization such as `NonZeroU8`. This was previously a warning. - In 1.45.0 (the next release) converting a `f64` to `u32` using the `as` operator has been defined as a saturating operation. This was previously undefined behaviour, but you can use the `{f64, f32}::to_int_unchecked` methods to continue using the current behaviour, which may be desirable in rare performance sensitive situations.- Rebased patches: + ignore-Wstring-conversion.patch (offset / fuzz) + rust-pr70163-prepare-for-llvm-10-upgrade.patch dropped (merged upstream)
* Wed May 20 2020 Martin Sirringhaus - Update to version 1.43.1 - Updated openssl-src to 1.1.1g for CVE-2020-1967. - Fixed the stabilization of AVX-512 features. - Fixed `cargo package --list` not working with unpublished dependencies.
* Mon May 04 2020 Ismail Dönmez - Add rust-pr70163-prepare-for-llvm-10-upgrade.patch to fix compilation with llvm10
* Mon May 04 2020 Andreas Schwab - Update rustfmt_version
* Wed Apr 29 2020 Martin Sirringhaus - Update to version 1.43.0 + Language - Fixed using binary operations with `&{number}` (e.g. `&1.0`) not having the type inferred correctly. - Attributes such as `#[cfg()]` can now be used on `if` expressions. - Syntax only changes:
* Allow `type Foo: Ord` syntactically.
* Fuse associated and extern items up to defaultness.
* Syntactically allow `self` in all `fn` contexts.
* Merge `fn` syntax + cleanup item parsing.
* `item` macro fragments can be interpolated into `trait`s, `impl`s, and `extern` blocks. For example, you may now write: ```rust macro_rules! mac_trait { ($i:item) => { trait T { $i } } } mac_trait! { fn foo() {} } ```
* These are still rejected
*semantically
*, so you will likely receive an error but these changes can be seen and parsed by macros and conditional compilation. + Compiler - You can now pass multiple lint flags to rustc to override the previous flags. For example; `rustc -D unused -A unused-variables` denies everything in the `unused` lint group except `unused-variables` which is explicitly allowed. However, passing `rustc -A unused-variables -D unused` denies everything in the `unused` lint group
*
*including
*
* `unused-variables` since the allow flag is specified before the deny flag (and therefore overridden). - rustc will now prefer your system MinGW libraries over its bundled libraries if they are available on `windows-gnu`. - rustc now buffers errors/warnings printed in JSON. + Libraries - `Arc<[T; N]>`, `Box<[T; N]>`, and `Rc<[T; N]>`, now implement `TryFrom>`,`TryFrom>`, and `TryFrom>` respectively.
*
*Note
*
* These conversions are only available when `N` is `0..=32`. - You can now use associated constants on floats and integers directly, rather than having to import the module. e.g. You can now write `u32::MAX` or `f32::NAN` with no imports. - `u8::is_ascii` is now `const`. - `String` now implements `AsMut`. - Added the `primitive` module to `std` and `core`. This module reexports Rust\'s primitive types. This is mainly useful in macros where you want avoid these types being shadowed. - Relaxed some of the trait bounds on `HashMap` and `HashSet`. - `string::FromUtf8Error` now implements `Clone + Eq`. + Stabilized APIs - `Once::is_completed` - `f32::LOG10_2` - `f32::LOG2_10` - `f64::LOG10_2` - `f64::LOG2_10` - `iter::once_with` + Cargo - You can now set config `[profile]`s in your `.cargo/config`, or through your environment. - Cargo will now set `CARGO_BIN_EXE_` pointing to a binary\'s executable path when running integration tests or benchmarks. `` is the name of your binary as-is e.g. If you wanted the executable path for a binary named `my-program`you would use `env!(\"CARGO_BIN_EXE_my-program\")`. + Misc - Certain checks in the `const_err` lint were deemed unrelated to const evaluation, and have been moved to the `unconditional_panic` and `arithmetic_overflow` lints. + Compatibility Notes - Having trailing syntax in the `assert!` macro is now a hard error. This has been a warning since 1.36.0. - Fixed `Self` not having the correctly inferred type. This incorrectly led to some instances being accepted, and now correctly emits a hard error.
* Tue Apr 07 2020 Andreas Schwab - Avoid duplication of environment settings
* Tue Mar 31 2020 Antonio Larrosa - Update to version 1.42.0: + Language - You can now use the slice pattern syntax with subslices. - You can now use #[repr(transparent)] on univariant enums. Meaning that you can create an enum that has the exact layout and ABI of the type it contains. - There are some syntax-only changes:
* default is syntactically allowed before items in trait definitions.
* Items in impls (i.e. consts, types, and fns) may syntactically leave out their bodies in favor of ;.
* Bounds on associated types in impls are now syntactically allowed (e.g. type Foo: Ord;).
* ... (the C-variadic type) may occur syntactically directly as the type of any function parameter. These are still rejected semantically, so you will likely receive an error but these changes can be seen and parsed by procedural macros and conditional compilation. + Compiler - Added tier 2 support for armv7a-none-eabi. - Added tier 2 support for riscv64gc-unknown-linux-gnu. - Option::{expect,unwrap} and Result::{expect, expect_err, unwrap, unwrap_err} now produce panic messages pointing to the location where they were called, rather than core\'s internals. Refer to Rust\'s platform support page for more information on Rust\'s tiered platform support. + Libraries - iter::Empty now implements Send and Sync for any T. - Pin::{map_unchecked, map_unchecked_mut} no longer require the return type to implement Sized. - io::Cursor now derives PartialEq and Eq. - Layout::new is now const. - Added Standard Library support for riscv64gc-unknown-linux-gnu. + Stabilized APIs - CondVar::wait_while - CondVar::wait_timeout_while - DebugMap::key - DebugMap::value - ManuallyDrop::take - matches! - ptr::slice_from_raw_parts_mut - ptr::slice_from_raw_parts + Cargo - You no longer need to include extern crate proc_macro; to be able to use proc_macro; in the 2018 edition. + Compatibility Notes - Error::description has been deprecated, and its use will now produce a warning. It\'s recommended to use Display/to_string instead.
* Tue Mar 31 2020 alarrosaAATTsuse.com- Rebased patches: + ignore-Wstring-conversion.patch (offset / fuzz)
* Mon Mar 23 2020 Federico Mena Quintero - Update to version 1.41.1: - Always check types of static items - Always check lifetime bounds of `Copy` impls - Fix miscompilation in callers of `Layout::repeat`- Update to version 1.41.0: + Language - You can now pass type parameters to foreign items when implementing traits. E.g. You can now write `impl From for Vec {}`. - You can now arbitrarily nest receiver types in the `self` position. E.g. you can now write `fn foo(self: Box>) {}`. Previously only `Self`, `&Self`, `&mut Self`, `Arc`, `Rc`, and `Box` were allowed. - You can now use any valid identifier in a `format_args` macro. Previously identifiers starting with an underscore were not allowed. - Visibility modifiers (e.g. `pub`) are now syntactically allowed on trait items and enum variants. These are still rejected semantically, but can be seen and parsed by procedural macros and conditional compilation. + Compiler - Rustc will now warn if you have unused loop `\'label`s. - Removed support for the `i686-unknown-dragonfly` target. - Added tier 3 support\\
* for the `riscv64gc-unknown-linux-gnu` target. - You can now pass an arguments file passing the `AATTpath` syntax to rustc. Note that the format differs somewhat from what is found in other tooling; please see the documentation for more information. - You can now provide `--extern` flag without a path, indicating that it is available from the search path or specified with an `-L` flag. Refer to Rust\'s [platform support page][forge-platform-support] for more information on Rust\'s tiered platform support. + Libraries - The `core::panic` module is now stable. It was already stable through `std`. - `NonZero
*` numerics now implement `From*>` if it\'s a smaller integer width. E.g. `NonZeroU16` now implements `From`. - `MaybeUninit` now implements `fmt::Debug`. + Stabilized APIs - `Result::map_or` - `Result::map_or_else` - `std::rc::Weak::weak_count` - `std::rc::Weak::strong_count` - `std::sync::Weak::weak_count` - `std::sync::Weak::strong_count` + Cargo - Cargo will now document all the private items for binary crates by default. - `cargo-install` will now reinstall the package if it detects that it is out of date. - Cargo.lock now uses a more git friendly format that should help to reduce merge conflicts. - You can now override specific dependencies\'s build settings. E.g. `[profile.dev.package.image] opt-level = 2` sets the `image` crate\'s optimisation level to `2` for debug builds. You can also use `[profile..build-override]` to override build scripts and their dependencies. + Misc - You can now specify `edition` in documentation code blocks to compile the block for that edition. E.g. `edition2018` tells rustdoc that the code sample should be compiled the 2018 edition of Rust. - You can now provide custom themes to rustdoc with `--theme`, and check the current theme with `--check-theme`. - You can use `#[cfg(doc)]` to compile an item when building documentation. + Compatibility Notes - As previously announced 1.41.0 will be the last tier 1 release for 32-bit Apple targets. This means that the source code is still available to build, but the targets are no longer being tested and release binaries for those platforms will no longer be distributed by the Rust project. Please refer to the linked blog post for more information.
* Fri Jan 17 2020 Dominique Leuenberger - Adjust constraints: Request 20GB HDD for all archs. Simplify the file by removing the overrides for various disk sizes. All archs are curretnly at roughly 17GB storage in use.
* Wed Jan 08 2020 Federico Mena Quintero - Bump version of libssh2 for SLE15; we now need a version with libssh2_userauth_publickey_frommemory(), which appeared in libssh2 1.6.0.- Use the bundled libssh2 prior to SLE15. SLE12 has 1.4.3, which is too old for the ssh crate now.
* Mon Dec 30 2019 Luke Jones - Update to version 1.40.0 + Language - You can now use tuple `struct`s and tuple `enum` variant\'s constructors in `const` contexts. e.g. pub struct Point(i32, i32); const ORIGIN: Point = { let constructor = Point; constructor(0, 0) }; - You can now mark `struct`s, `enum`s, and `enum` variants with the `#[non_exhaustive]` attribute to indicate that there may be variants or fields added in the future. For example this requires adding a wild-card branch (`_ => {}`) to any match statements on a non-exhaustive `enum`. - You can now use function-like procedural macros in `extern` blocks and in type positions. e.g. `type Generated = macro!();` - Function-like and attribute procedural macros can now emit `macro_rules!` items, so you can now have your macros generate macros. - The `meta` pattern matcher in `macro_rules!` now correctly matches the modern attribute syntax. For example `(#[$m:meta])` now matches `#[attr]`, `#[attr{tokens}]`, `#[attr[tokens]]`, and `#[attr(tokens)]`. + Compiler - Added tier 3 support\\
* for the `thumbv7neon-unknown-linux-musleabihf` target. - Added tier 3 support for the `aarch64-unknown-none-softfloat` target. - Added tier 3 support for the `mips64-unknown-linux-muslabi64`, and `mips64el-unknown-linux-muslabi64` targets. + Libraries - The `is_power_of_two` method on unsigned numeric types is now a `const` function. + Stabilized APIs - BTreeMap::get_key_value - HashMap::get_key_value - Option::as_deref_mut - Option::as_deref - Option::flatten - UdpSocket::peer_addr - f32::to_be_bytes - f32::to_le_bytes - f32::to_ne_bytes - f64::to_be_bytes - f64::to_le_bytes - f64::to_ne_bytes - f32::from_be_bytes - f32::from_le_bytes - f32::from_ne_bytes - f64::from_be_bytes - f64::from_le_bytes - f64::from_ne_bytes - mem::take - slice::repeat - todo! + Cargo - Cargo will now always display warnings, rather than only on fresh builds. - Feature flags (except `--all-features`) passed to a virtual workspace will now produce an error. Previously these flags were ignored. - You can now publish `dev-dependencies` without including a `version`. + Misc - You can now specify the `#[cfg(doctest)]` attribute to include an item only when running documentation tests with `rustdoc`. + Compatibility Notes - As previously announced, any previous NLL warnings in the 2015 edition are now hard errors. - The `include!` macro will now warn if it failed to include the entire file. The `include!` macro unintentionally only includes the first _expression_ in a file, and this can be unintuitive. This will become either a hard error in a future release, or the behavior may be fixed to include all expressions as expected. - Using `#[inline]` on function prototypes and consts now emits a warning under `unused_attribute` lint. Using `#[inline]` anywhere else inside traits or `extern` blocks now correctly emits a hard error.
* Mon Dec 30 2019 opensuse-packagingAATTopensuse.org- Rebased patches: + hopefully-fix-rustdoc-build.patch dropped (merged upstream)
* Fri Nov 29 2019 Neal Gompa - Rename README to README.suse-maint and add it as a source to stop factory-auto from declining submissions automatically
* Mon Nov 25 2019 Alberto Planas Dominguez - Re-format the spec file- Add a README to explain the update process- Add _service file for download the assets and re-base the patches
* Fri Nov 08 2019 Alberto Planas Dominguez - Add hopefully-fix-rustdoc-build.patch to fix rustdoc compilation
* Thu Nov 07 2019 Alberto Planas Dominguez - Update to version 1.39.0 + Language - You can now create async functions and blocks with async fn, async move {}, and async {} respectively, and you can now call .await on async expressions. - You can now use certain attributes on function, closure, and function pointer parameters. - You can now take shared references to bind-by-move patterns in the if guards of match arms. + Compiler - Added tier 3 support for the i686-unknown-uefi target. - Added tier 3 support for the sparc64-unknown-openbsd target. - rustc will now trim code snippets in diagnostics to fit in your terminal. - You can now pass --show-output argument to test binaries to print the output of successful tests. + For more details: https://github.com/rust-lang/rust/blob/stable/RELEASES.md#version-1390-2019-11-07- Drop patches already merged in upstream: + rust-61206-assume-tarball-llvm-is-fresh.patch + add-option-to-allow-warnings.patch
* Wed Oct 23 2019 Ralf Haferkamp - Switch to bundled version of libgit2 for now. libgit2-sys seems to expect using the bundled variant, which just seems to point to a snapshot of the master branch and doesn\'t match any released libgit2 (bsc#1154817). See: https://github.com/rust-lang/rust/issues/63476 and https://github.com/rust-lang/git2-rs/issues/458 for details.
* Mon Sep 30 2019 Luke Jones - Add patch add-option-to-allow-warnings.patch to add a config option which allows warnings and so enables v1.38 to bootstrap itself.
* Mon Sep 30 2019 Luke Jones - Update to version 1.38.0 + Language - The `#[global_allocator]` attribute can now be used in submodules. - The `#[deprecated]` attribute can now be used on macros. + Compiler - Added pipelined compilation support to `rustc`. This will improve compilation times in some cases. + Libraries - `ascii::EscapeDefault` now implements `Clone` and `Display`. - Derive macros for prelude traits (e.g. `Clone`, `Debug`, `Hash`) are now available at the same path as the trait. (e.g. The `Clone` derive macro is available at `std::clone::Clone`). This also makes all built-in macros available in `std`/`core` root. e.g. `std::include_bytes!`. - `str::Chars` now implements `Debug`. - `slice::{concat, connect, join}` now accepts `&[T]` in addition to `&T`. - `
*const T` and `
*mut T` now implement `marker::Unpin`. - `Arc<[T]>` and `Rc<[T]>` now implement `FromIterator`. - Added euclidean remainder and division operations (`div_euclid`, `rem_euclid`) to all numeric primitives. Additionally `checked`, `overflowing`, and `wrapping` versions are available for all integer primitives. - `thread::AccessError` now implements `Clone`, `Copy`, `Eq`, `Error`, and `PartialEq`. - `iter::{StepBy, Peekable, Take}` now implement `DoubleEndedIterator`. + Stabilized APIs - `<
*const T>::cast` - `<
*mut T>::cast` - `Duration::as_secs_f32` - `Duration::as_secs_f64` - `Duration::div_f32` - `Duration::div_f64` - `Duration::from_secs_f32` - `Duration::from_secs_f64` - `Duration::mul_f32` - `Duration::mul_f64` - `any::type_name` + Cargo - Added pipelined compilation support to `cargo`. - You can now pass the `--features` option multiple times to enable multiple features. + Misc - `rustc` will now warn about some incorrect uses of `mem::{uninitialized, zeroed}` that are known to cause undefined behaviour.
* Tue Sep 10 2019 federicoAATTsuse.com- Use gcc7 on all of SLE12, since the embedded LLVM wants at least gcc 5.1.- Add rust-61206-assume-tarball-llvm-is-fresh.patch - Upstream fix to make LLVM not be rebuilt during the installation phase.
* Wed Aug 28 2019 Luke Jones - Update to version 1.37.0 + Language - #[must_use] will now warn if the type is contained in a tuple, Box, or an array and unused. - You can now use the `cfg` and `cfg_attr` attributes on generic parameters. - You can now use enum variants through type alias. e.g. You can write the following: ``` type MyOption = Option; fn increment_or_zero(x: MyOption) -> u8 { match x { MyOption::Some(y) => y + 1, MyOption::None => 0, } } ``` - You can now use `_` as an identifier for consts. e.g. You can write `const _: u32 = 5;`. - You can now use `#[repr(align(X)]` on enums. - The `?` Kleene macro operator is now available in the 2015 edition. + Compiler - You can now enable Profile-Guided Optimization with the `-C profile-generate` and `-C profile-use` flags. For more information on how to use profile guided optimization, please refer to the rustc book. - The `rust-lldb` wrapper script should now work again. + Libraries - `mem::MaybeUninit` is now ABI-compatible with `T`. + Stabilized APIs - BufReader::buffer - BufWriter::buffer - Cell::from_mut - Cell<[T]>::as_slice_of_cells - Cell::as_slice_of_cells - DoubleEndedIterator::nth_back - Option::xor - Wrapping::reverse_bits - i128::reverse_bits - i16::reverse_bits - i32::reverse_bits - i64::reverse_bits - i8::reverse_bits - isize::reverse_bits - slice::copy_within - u128::reverse_bits - u16::reverse_bits - u32::reverse_bits - u64::reverse_bits - u8::reverse_bits - usize::reverse_bits + Cargo - Cargo.lock files are now included by default when publishing executable crates with executables. - You can now specify `default-run=\"foo\"` in `[package]` to specify the default executable to use for `cargo run`. - cargo-vendor is now provided as a sub-command of cargo + Compatibility Notes - Using `...` for inclusive range patterns will now warn by default. Please transition your code to using the `..=` syntax for inclusive ranges instead. - Using a trait object without the `dyn` will now warn by default. Please transition your code to use `dyn Trait` for trait objects instead.
* Tue Jul 09 2019 Luke Jones - Remove fix-llvm8-build.patch, fixed upstream
* Mon Jul 08 2019 Luke Jones - Update to version 1.36.0 + Language - Non-Lexical Lifetimes are now enabled on the 2015 edition - The order of traits in trait objects no longer affects the semantics of that object. e.g. `dyn Send + fmt::Debug` is now equivalent to `dyn fmt::Debug + Send`, where this was previously not the case. + Libraries - `HashMap`\'s implementation has been replaced with `hashbrown::HashMap` implementation - `TryFromSliceError` now implements `From` - `mem::needs_drop` is now available as a const fn - `alloc::Layout::from_size_align_unchecked` is now available as a const fn - `String` now implements `BorrowMut` - `io::Cursor` now implements `Default` - Both `NonNull::{dangling, cast}` are now const fns - The `alloc` crate is now stable. `alloc` allows you to use a subset of `std` (e.g. `Vec`, `Box`, `Arc`) in `#![no_std]` environments if the environment has access to heap memory allocation. - String` now implements `From<&String>` - You can now pass multiple arguments to the `dbg!` macro. `dbg!` will return a tuple of each argument when there is multiple arguments. - `Result::{is_err, is_ok}` are now `#[must_use]` and will produce a warning if not used. + Stabilized APIs - VecDeque::rotate_left - VecDeque::rotate_right - Iterator::copied - io::IoSlice - io::IoSliceMut - Read::read_vectored - Write::write_vectored - str::as_mut_ptr - mem::MaybeUninit - pointer::align_offset - future::Future - task::Context - task::RawWaker - task::RawWakerVTable - task::Waker - task::Poll + Cargo - Cargo will now produce an error if you attempt to use the name of a required dependency as a feature - You can now pass the `--offline` flag to run cargo without accessing the network + Clippy - New lints: `find_map`, `filter_map_next` - New lint: `path_buf_push_overwrite` - Move `path_buf_push_overwrite` to the nursery - Split `redundant_closure` into `redundant_closure` and `redundant_closure_for_method_calls` - Allow allowing of `toplevel_ref_arg` lint - Fix false negative in `or_fun_call` pertaining to nested constructors - Fixed false positive in `or_fn_call` pertaining to enum variant constructors - Fix false positive in `useless_let_if_seq` pertaining to interior mutability - Fix false positive in `redundant_closure` pertaining to non-function types - Fix false positive in `let_and_return` pertaining to attributes on `let`s - Fix false positive in `module_name_repetitions` lint pertaining to attributes - Fix false positive on `assertions_on_constants` pertaining to `debug_assert!` - Improve suggestion in `map_clone` to suggest `.copied()` where applicable - Improve suggestion for `search_is_some` - Improve suggestion applicability for `naive_bytecount` - Improve suggestion applicability for `while_let_loop` - Improve diagnostics for `too_many_arguments` - Improve diagnostics for `cast_lossless` - Deal with macro checks in desugarings better - Add macro check for `unnecessary_cast` - Remove `approx_constant`\'s documentation\'s \"Known problems\" section - Fix ICE in `suspicious_else_formatting` - Fix ICE in `decimal_literal_representation` + Compatibility Notes - With the stabilisation of `mem::MaybeUninit`, `mem::uninitialized` use is no longer recommended, and will be deprecated in 1.38.0.
* Tue Jul 02 2019 Andreas Schwab - Add support for ppc
* Wed May 29 2019 Luke Jones - Update to version 1.35.0 + Language - `FnOnce`, `FnMut`, and the `Fn` traits are now implemented for `Box`, `Box`, and `Box` respectively. - You can now coerce closures into unsafe function pointers. e.g. unsafe fn call_unsafe(func: unsafe fn()) { func() } pub fn main() { unsafe { call_unsafe(|| {}); } } + Compiler - Added the `armv6-unknown-freebsd-gnueabihf` and `armv7-unknown-freebsd-gnueabihf` targets. - Added the `wasm32-unknown-wasi` target. + Libraries - `Thread` will now show its ID in `Debug` output. - `StdinLock`, `StdoutLock`, and `StderrLock` now implement `AsRawFd`. - `alloc::System` now implements `Default`. - Expanded `Debug` output (`{:#?}`) for structs now has a trailing comma on the last field. - `char::{ToLowercase, ToUppercase}` now implement `ExactSizeIterator`. - All `NonZero` numeric types now implement `FromStr`. - Removed the `Read` trait bounds on the `BufReader::{get_ref, get_mut, into_inner}` methods. - You can now call the `dbg!` macro without any parameters to print the file and line where it is called. - In place ASCII case conversions are now up to 4× faster. e.g. `str::make_ascii_lowercase` - `hash_map::{OccupiedEntry, VacantEntry}` now implement `Sync` and `Send`. + Stabilized APIs - `f32::copysign` - `f64::copysign` - `RefCell::replace_with` - `RefCell::map_split` - `ptr::hash` - `Range::contains` - `RangeFrom::contains` - `RangeTo::contains` - `RangeInclusive::contains` - `RangeToInclusive::contains` - `Option::copied` + Cargo - You can now set `cargo:rustc-cdylib-link-arg` at build time to pass custom linker arguments when building a `cdylib`. Its usage is highly platform specific.- version 1.34.2 + Destabilize the `Error::type_id` function due to a security vulnerability (CVE-2019-12083)- version 1.34.1 + Fix false positives for the `redundant_closure` Clippy lint + Fix false positives for the `missing_const_for_fn` Clippy lint + Fix Clippy panic when checking some macros
* Sat May 25 2019 Aaron Puchert - Add fix-llvm8-build.patch: Fix linker errors with llvm8 by limiting internalization in ThinLTO.
* Fri May 17 2019 federicoAATTsuse.com- Fix regexp for .rlib files in rust-rpmlintrc.
* Wed Apr 24 2019 Martin Liška - Disable LTO (boo#1133283).
* Thu Apr 11 2019 Luke Jones - Update to version 1.34.0 + Language - You can now use `#[deprecated = \"reason\"]` as a shorthand for `#[deprecated(note = \"reason\")]`. This was previously allowed by mistake but had no effect. - You can now accept token streams in `#[attr()]`,`#[attr[]]`, and `#[attr{}]` procedural macros. - You can now write `extern crate self as foo;` to import your crate\'s root into the extern prelude. + Compiler - You can now target `riscv64imac-unknown-none-elf` and `riscv64gc-unknown-none-elf`. - You can now enable linker plugin LTO optimisations with `-C linker-plugin-lto`. This allows rustc to compile your Rust code into LLVM bitcode allowing LLVM to perform LTO optimisations across C/C++ FFI boundaries. - You can now target `powerpc64-unknown-freebsd`. + Libraries - The trait bounds have been removed on some of `HashMap`\'s and `HashSet`\'s basic methods. Most notably you no longer require the `Hash` trait to create an iterator. - The `Ord` trait bounds have been removed on some of `BinaryHeap`\'s basic methods. Most notably you no longer require the `Ord` trait to create an iterator. - The methods `overflowing_neg` and `wrapping_neg` are now `const` functions for all numeric types. - Indexing a `str` is now generic over all types that implement `SliceIndex`. - `str::trim`, `str::trim_matches`, `str::trim_{start, end}`, and `str::trim_{start, end}_matches` are now `#[must_use]` and will produce a warning if their returning type is unused. - The methods `checked_pow`, `saturating_pow`, `wrapping_pow`, and `overflowing_pow` are now available for all numeric types. These are equivalvent to methods such as `wrapping_add` for the `pow` operation. + Stabilized APIs - std & core + Any::type_id + Error::type_id + atomic::AtomicI16 + atomic::AtomicI32 + atomic::AtomicI64 + atomic::AtomicI8 + atomic::AtomicU16 + atomic::AtomicU32 + atomic::AtomicU64 + atomic::AtomicU8 + convert::Infallible + convert::TryFrom + convert::TryInto + iter::from_fn + iter::successors + num::NonZeroI128 + num::NonZeroI16 + num::NonZeroI32 + num::NonZeroI64 + num::NonZeroI8 + num::NonZeroIsize + slice::sort_by_cached_key + str::escape_debug + str::escape_default + str::escape_unicode + str::split_ascii_whitespace - std + Instant::checked_add + Instant::checked_sub + SystemTime::checked_add + SystemTime::checked_sub + Cargo - You can now use alternative registries to crates.io. + Misc - You can now use the `?` operator in your documentation tests without manually adding `fn main() -> Result<(), _> {}`. + Compatibility Notes - `Command::before_exec` is now deprecated in favor of the unsafe method `Command::pre_exec`. - Use of `ATOMIC_{BOOL, ISIZE, USIZE}_INIT` is now deprecated. As you can now use `const` functions in `static` variables.- Remove depreciated-trim_left_matches.patch.- Rustfmt version bumped to 1.0.3 + Change description not provided.- rls version now in sync with rustc.- Misc fixes to rust.spec
* Mon Mar 25 2019 Federico Mena Quintero - Use the system\'s LLVM in SLE15-SP1. That distribution has LLVM7, and we need to use it there, instead of any other version.- Prevent auto-provides from being created for things under rustlibdir, so the RPM does not inadvertently have a Provides for a bundled LLVM and the Rust library files.- Sync changes files between SLE and openSUSE, for ease of maintenance.
* Fri Mar 22 2019 Luke Jones - Explicitly build only a subset of tools
* Sat Mar 16 2019 Luke Jones - Remove miri complete instead of excluding. This is experimental and so should not be included.- BuildRequires ccache in attempt to reduce compile times.- Remove more extraneous directories from src that will never be used.- Extra patterns in rpmlintrc to catch more false positives: + Rust has no stable API, ignore SONAME warnings + Tool versions don\'t update in step with rust, ignore warnings
* Wed Mar 06 2019 Luke Jones - Separate the bootstrap version from the minimum required system version for package builds.
* Mon Mar 04 2019 Luke Jones - add depreciated-trim_left_matches.patch: replaces depreciated function call in src/tools/tidy with trim_start_matches to fix error when bootstrapping with system 1.33.0
* Sat Mar 02 2019 Luke Jones - Update to version 1.33.0 + Language - You can now use the `cfg(target_vendor)` attribute. E.g. `#[cfg(target_vendor=\"linux\")] fn main() { println!(\"Hello Linux!\"); }` - Integer patterns such as in a match expression can now be exhaustive. E.g. You can have match statement on a `u8` that covers `0..=255` and you would no longer be required to have a `_ => unreachable!()` case. - You can now have multiple patterns in `if let` and `while let` expressions. You can do this with the same syntax as a `match` expression. E.g. ``` enum Creature { Crab(String), Lobster(String), Person(String), } fn main() { let state = Creature::Crab(\"Ferris\"); if let Creature::Crab(name) | Creature::Person(name) = state { println!(\"This creature\'s name is: {}\", name); } } ``` - You can now have irrefutable `if let` and `while let` patterns. Using this feature will by default produce a warning as this behaviour can be unintuitive. E.g. `if let _ = 5 {}` - You can now use `let` bindings, assignments, expression statements, and irrefutable pattern destructuring in const functions. - You can now call unsafe const functions. E.g. ``` const unsafe fn foo() -> i32 { 5 } const fn bar() -> i32 { unsafe { foo() } } ``` - You can now specify multiple attributes in a `cfg_attr` attribute. E.g. `#[cfg_attr(all(), must_use, optimize)]` - You can now specify a specific alignment with the `#[repr(packed)]` attribute. E.g. `#[repr(packed(2))] struct Foo(i16, i32);` is a struct with an alignment of 2 bytes and a size of 6 bytes. - You can now import an item from a module as an `_`. This allows you to import a trait\'s impls, and not have the name in the namespace. E.g. ``` use std::io::Read as _; // Allowed as there is only one `Read` in the module. pub trait Read {} ``` - extern` functions will now abort by default when panicking. This was previously undefined behaviour. + Compiler - You can now set a linker flavor for `rustc` with the `-Clinker-flavor` command line argument. - The mininum required LLVM version has been bumped to 6.0. - Added support for the PowerPC64 architecture on FreeBSD. - The `x86_64-fortanix-unknown-sgx` target support has been upgraded to tier 2 support. Visit the [platform support][platform-support] page for information on Rust\'s platform support. - Added support for the `thumbv7neon-linux-androideabi` and `thumbv7neon-unknown-linux-gnueabihf` targets. - Added support for the `x86_64-unknown-uefi` target. + Libraries - The methods `overflowing_{add, sub, mul, shl, shr}` are now `const` functions for all numeric types. - The methods `rotate_left`, `rotate_right`, and `wrapping_{add, sub, mul, shl, shr}` are now `const` functions for all numeric types. - The methods `is_positive` and `is_negative` are now `const` functions for all signed numeric types. - The `get` method for all `NonZero` types is now `const`. - The methods `count_ones`, `count_zeros`, `leading_zeros`, `trailing_zeros`, `swap_bytes`, `from_be`, `from_le`, `to_be`, `to_le` are now `const` for all numeric types. - Ipv4Addr::new` is now a `const` function + Stabilized APIs - unix::FileExt::read_exact_at - unix::FileExt::write_all_at - Option::transpose - Result::transpose - convert::identity - pin::Pin - marker::Unpin - marker::PhantomPinned - Vec::resize_with - VecDeque::resize_with - Duration::as_millis - Duration::as_micros - Duration::as_nanos + Cargo - Cargo should now rebuild a crate if a file was modified during the initial build.][cargo/6484] + Compatibility Notes - The methods `str::{trim_left, trim_right, trim_left_matches, trim_right_matches}` are now deprecated in the standard library, and their usage will now produce a warning. Please use the `str::{trim_start, trim_end, trim_start_matches, trim_end_matches}` methods instead.
* Fri Mar 01 2019 Luke Jones - Bump minimum LLVM to 7.0- Add conditions to build SLE versions with bundled libgit2 and libssh2
* Thu Feb 28 2019 Federico Mena Quintero - Use cmake3, not cmake, in SLE-12 SP2 and earlier. The stock cmake package there was 2.x, and building llvm requires cmake 3.5.
* Wed Feb 27 2019 jones_ldAATTprotonmail.com- Use same version bootstrap as package source- Fixes to build with correct LLVM for SLE and Leap releases
* Wed Feb 27 2019 Luke Jones - Move export vars directly to where used.- Change codegen units to 2 for Arm and x86 builds in attempt to reduce memory use by LLVM.
* Wed Feb 27 2019 Federico Mena Quintero - Put each exported environment variable in a separate line so the specfile will work on SLE SP0/SP1/SP2.
* Sun Feb 24 2019 Jan Engelhardt - Avoid bash-specific syntax in \"test\" call.
* Sun Feb 24 2019 Luke Jones - Fix bootstrap conditionals- Fix bundled_llvm conditionals- Don\'t build stage0 if compiler used to build package is the same version as package
* Sat Feb 23 2019 Luke Jones - Ensure install environment is the same as build environment to prevent building everything twice (second time without correct flags).
* Tue Jan 22 2019 federicoAATTsuse.com- Remove CVE-2018-1000622-prevent-rustdoc-loads-uncontrolled-plugins-path.patch, since rustdoc plugins are fixed since version 1.27.1 (bsc#1100691, CVE-2018-1000622).
* Thu Jan 17 2019 Luke Jones - Update to version 1.32.0- Language + 2018 edition - You can now use the `?` operator in macro definitions. The `?` operator allows you to specify zero or one repetitions similar to the `
*` and `+` operators. - Module paths with no leading keyword like `super`, `self`, or `crate`, will now always resolve to the item (`enum`, `struct`, etc.) available in the module if present, before resolving to a external crate or an item the prelude. E.g. enum Color { Red, Green, Blue } use Color::
*; + All editions - You can now match against `PhantomData` types. - You can now match against literals in macros with the `literal` specifier. This will match against a literal of any type. E.g. `1`, `\'A\'`, `\"Hello World\"` - Self can now be used as a constructor and pattern for unit and tuple structs. E.g. struct Point(i32, i32); impl Point { pub fn new(x: i32, y: i32) -> Self { Self(x, y) } pub fn is_origin(&self) -> bool { match self { Self(0, 0) => true, _ => false, } } } - Self can also now be used in type definitions. E.g. enum List where Self: PartialOrd // can write `Self` instead of `List` { Nil, Cons(T, Box) // likewise here } - You can now mark traits with `#[must_use]`. This provides a warning if a `impl Trait` or `dyn Trait` is returned and unused in the program.- Compiler + The default allocator has changed from jemalloc to the default allocator on your system. The compiler itself on Linux & macOS will still use jemalloc, but programs compiled with it will use the system allocator. + Added the `aarch64-pc-windows-msvc` target.- Libraries + `PathBuf` now implements `FromStr`. - `Box<[T]>` now implements `FromIterator`. - The `dbg!` macro has been stabilized. This macro enables you to easily debug expressions in your rust program. E.g. let a = 2; let b = dbg!(a
* 2) + 1; // ^-- prints: [src/main.rs:4] a
* 2 = 4 assert_eq!(b, 5); + The following APIs are now `const` functions and can be used in a `const` context. - `Cell::as_ptr` - `UnsafeCell::get` - `char::is_ascii` - `iter::empty` - `ManuallyDrop::new` - `ManuallyDrop::into_inner` - `RangeInclusive::start` - `RangeInclusive::end` - `NonNull::as_ptr` - `slice::as_ptr` - `str::as_ptr` - `Duration::as_secs` - `Duration::subsec_millis` - `Duration::subsec_micros` - `Duration::subsec_nanos` - `CStr::as_ptr` - `Ipv4Addr::is_unspecified` - `Ipv6Addr::new` - `Ipv6Addr::octets`- Stabilized APIs + `i8::to_be_bytes` + `i8::to_le_bytes` + `i8::to_ne_bytes` + `i8::from_be_bytes` + `i8::from_le_bytes` + `i8::from_ne_bytes` + `i16::to_be_bytes` + `i16::to_le_bytes` + `i16::to_ne_bytes` + `i16::from_be_bytes` + `i16::from_le_bytes` + `i16::from_ne_bytes` + `i32::to_be_bytes` + `i32::to_le_bytes` + `i32::to_ne_bytes` + `i32::from_be_bytes` + `i32::from_le_bytes` + `i32::from_ne_bytes` + `i64::to_be_bytes` + `i64::to_le_bytes` + `i64::to_ne_bytes` + `i64::from_be_bytes` + `i64::from_le_bytes` + `i64::from_ne_bytes` + `i128::to_be_bytes` + `i128::to_le_bytes` + `i128::to_ne_bytes` + `i128::from_be_bytes` + `i128::from_le_bytes` + `i128::from_ne_bytes` + `isize::to_be_bytes` + `isize::to_le_bytes` + `isize::to_ne_bytes` + `isize::from_be_bytes` + `isize::from_le_bytes` + `isize::from_ne_bytes` + `u8::to_be_bytes` + `u8::to_le_bytes` + `u8::to_ne_bytes` + `u8::from_be_bytes` + `u8::from_le_bytes` + `u8::from_ne_bytes` + `u16::to_be_bytes` + `u16::to_le_bytes` + `u16::to_ne_bytes` + `u16::from_be_bytes` + `u16::from_le_bytes` + `u16::from_ne_bytes` + `u32::to_be_bytes` + `u32::to_le_bytes` + `u32::to_ne_bytes` + `u32::from_be_bytes` + `u32::from_le_bytes` + `u32::from_ne_bytes` + `u64::to_be_bytes` + `u64::to_le_bytes` + `u64::to_ne_bytes` + `u64::from_be_bytes` + `u64::from_le_bytes` + `u64::from_ne_bytes` + `u128::to_be_bytes` + `u128::to_le_bytes` + `u128::to_ne_bytes` + `u128::from_be_bytes` + `u128::from_le_bytes` + `u128::from_ne_bytes` + `usize::to_be_bytes` + `usize::to_le_bytes` + `usize::to_ne_bytes` + `usize::from_be_bytes` + `usize::from_le_bytes` + `usize::from_ne_bytes`- Cargo + You can now run `cargo c` as an alias for `cargo check`.][cargo/6218] + Usernames are now allowed in alt registry URLs.][cargo/6242]- Misc + `libproc_macro` has been added to the `rust-src` distribution.- Compatibility Notes + The argument types for AVX\'s `_mm256_stream_si256`, `_mm256_stream_pd`, `_mm256_stream_ps` have been changed from `
*const` to `
*mut` as the previous implementation was unsound.
* Sat Jan 05 2019 Luke Jones - Update to version 1.31.1 + Fix Rust failing to build on `powerpc-unknown-netbsd` + Fix broken go-to-definition in RLS + Fix infinite loop on hover in RLS
* Thu Dec 06 2018 Luke Jones - Update to version 1.31.0 + Language - This version marks the release of the 2018 edition of Rust. - New lifetime elision rules now allow for eliding lifetimes in functions and impl headers. E.g. `impl<\'a> Reader for BufReader<\'a> {}` can now be `impl Reader for BufReader<\'_> {}`. Lifetimes are still required to be defined in structs. - You can now define and use `const` functions. These are currently a strict minimal subset of the const fn RFC. Refer to the [language reference][const-reference] for what exactly is available. - You can now use tool lints, which allow you to scope lints from external tools using attributes. E.g. `#[allow(clippy::filter_map)]`. - `#[no_mangle]` and `#[export_name]` attributes can now be located anywhere in a crate, not just in exported functions. - You can now use parentheses in pattern matches. + Compiler - Updated musl to 1.1.20 + Libraries - You can now convert `num::NonZero
*` types to their raw equivalvents using the `From` trait. E.g. `u8` now implements `From`. - You can now convert a `&Option` into `Option<&T>` and `&mut Option` into `Option<&mut T>` using the `From` trait. - You can now multiply (`
*`) a `time::Duration` by a `u32`. + Stabilized APIs - `slice::align_to` - `slice::align_to_mut` - `slice::chunks_exact` - `slice::chunks_exact_mut` - `slice::rchunks` - `slice::rchunks_mut` - `slice::rchunks_exact` - `slice::rchunks_exact_mut` - `Option::replace` + Cargo - Cargo will now download crates in parallel using HTTP/2. - You can now rename packages in your Cargo.toml We have a guide on how to use the `package` key in your dependencies.
* Tue Nov 13 2018 Luke Jones - Add additional Requires to rls: + Requires rust-src + Requires rust-analysis- Add additional Requires to rustfmt: + Requires cargo- Fix rust-src requiring /usr/bin/bash; a script was incorrectly edited at build time.
* Sun Nov 11 2018 Luke Jones - Set the bootstrap flag in the spec file temporarily so that rings will build rust without intervention. Must be reverted once all releases are successful.
* Fri Nov 09 2018 Luke Jones - Add Provides/Obsoletes/Conflicts to rust-std-static and cargo
* Thu Nov 08 2018 Neal Gompa - Strengthen the dependency on rust-std-static to Requires to fix crate package builds in OBS- Use standard form rich dependencies for SUSE Linux 15 and newer
* Tue Nov 06 2018 Jan Engelhardt - Fix second-person language and spellos.
* Sun Nov 04 2018 Luke Jones - Add ignore-Wstring-conversion.patch: we require patching of src/librustc_llvm/build.rs to ignore a flag that llvm-config --cxxflags outputs which GCC doesn\'t recognise.- Default to building using the distro LLVM where the version is >= 5.0, instead of the Rust bundled LLVM which requires compilation. This should decrease build times. SLE LLVM is too old.
* Sat Nov 03 2018 Luke Jones - Fixing various rpmlint warnings and errors: + ExclusiveArch instead of BuildArch for i686 + Remove conflicts with same package name + Remove a few hidden files during prep, does not touch \'.clang-format\' + Remove old patch macro in comment + Fix lint warning about bash and zsh completition files + Fix various script shebang warnings (incorrect or missing) + Adjust rpmlintrc to mask some \'invalid\' warnings- Move Rust and its tools in to their own category under: + Development/Languages/Rust
* Sat Nov 03 2018 Luke Jones - Jump from version 1.26.2 to 1.30.0 due to a build issue with using 1.26.x to compile 1.27.x. This package release requires %{rust_bootstrap} to be set.- Enable extra rust tools to be built (cargo, rls, rustfmt, analysis) + cargo is now packaged with the same version number as the rust release, this may break any packages that relied on a cargo version number.- Remove ccache and ninja from BuildRequires.- Switch build configuration to use configure script, remove config.toml.- Include all bootstraps in source rpm to make bootstrapping easier to manage within OBS.- Remove unused patch: update-config-guess.patch Update to version 1.30.0 (2018-10-25) + 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/5877] - `cargo doc` now supports `--message-format=json`.][cargo/5878] This is equivalent to calling `rustdoc --error-format=json`. - Cargo will now provide a progress bar for builds.][cargo/5995] + 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.- Update to version 1.29.2 (2018-10-11) + Workaround for an aliasing-related LLVM bug, which caused miscompilation. + The `rls-preview` component on the windows-gnu targets has been restored.- Update to version 1.29.1 (2018-09-25) + Security Notes - The standard library\'s `str::repeat` function contained an out of bounds write caused by an integer overflow. This has been fixed by deterministically panicking when an overflow happens.- Update to version 1.29.0 (2018-09-13) + Compiler - Bumped minimum LLVM version to 5.0. - Added `powerpc64le-unknown-linux-musl` target. - Added `aarch64-unknown-hermit` and `x86_64-unknown-hermit` targets. + Libraries - `Once::call_once` no longer requires `Once` to be `\'static`. - `BuildHasherDefault` now implements `PartialEq` and `Eq`. - `Box`, `Box`, and `Box` now implement `Clone`. - Implemented `PartialEq<&str>` for `OsString` and `PartialEq` for `&str`. - `Cell` now allows `T` to be unsized. - `SocketAddr` is now stable on Redox. + 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. 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. - A preview of clippy has been made available through rustup. You can install the preview with `rustup component add clippy-preview`. + Compatibility Notes - `str::{slice_unchecked, slice_unchecked_mut}` are now deprecated. Use `str::get_unchecked(begin..end)` instead. - `std::env::home_dir` is now deprecated for its unintuitive behavior. Consider using the `home_dir` function from https://crates.io/crates/dirs instead. - `rustc` will no longer silently ignore invalid data in target spec. - `cfg` attributes and `--cfg` command line flags are now more strictly validated.- Update to version 1.28.0 + Language - The `#[repr(transparent)]` attribute is now stable.- This attribute allows a Rust newtype wrapper (`struct NewType(T);`) to be represented as the inner type across Foreign Function Interface (FFI) boundaries. - The keywords `pure`, `sizeof`, `alignof`, and `offsetof` have been unreserved and can now be used as identifiers.- - The `GlobalAlloc` trait and `#[global_allocator]` attribute are now stable.- This will allow users to specify a global allocator for their program. - Unit test functions marked with the `#[test]` attribute can now return `Result<(), E: Debug>` in addition to `()`.- - The `lifetime` specifier for `macro_rules!` is now stable.- This allows macros to easily target lifetimes. + Compiler - The `s` and `z` optimisation levels are now stable.- These optimisations prioritise making smaller binary sizes. `z` is the same as `s` with the exception that it does not vectorise loops, which typically results in an even smaller binary. - The short error format is now stable.- Specified with `--error-format=short` this option will provide a more compressed output of rust error messages. - Added a lint warning when you have duplicated `macro_export`s.- - Reduced the number of allocations in the macro parser.- This can improve compile times of macro heavy crates on average by 5%. + Libraries - Implemented `Default` for `&mut str`.- - Implemented `From` for all integer and unsigned number types.- - Implemented `Extend` for `()`.- - The `Debug` implementation of `time::Duration` should now be more easily human readable.- Previously a `Duration` of one second would printed as `Duration { secs: 1, nanos: 0 }` and will now be printed as `1s`. - Implemented `From<&String>` for `Cow`, `From<&Vec>` for `Cow<[T]>`, `From>` for `CString`, `From, From, From<&CString>` for `Cow`, `From, From, From<&OsString>` for `Cow`, `From<&PathBuf>` for `Cow`, and `From>` for `PathBuf`.- - Implemented `Shl` and `Shr` for `Wrapping` and `Wrapping`.- - `DirEntry::metadata` now uses `fstatat` instead of `lstat` when possible.- This can provide up to a 40% speed increase. - Improved error messages when using `format!`.- + Stabilized APIs - `Iterator::step_by` - `Path::ancestors` - `SystemTime::UNIX_EPOCH` - `alloc::GlobalAlloc` - `alloc::Layout` - `alloc::LayoutErr` - `alloc::System` - `alloc::alloc` - `alloc::alloc_zeroed` - `alloc::dealloc` - `alloc::realloc` - `alloc::handle_alloc_error` - `btree_map::Entry::or_default` - `fmt::Alignment` - `hash_map::Entry::or_default` - `iter::repeat_with` - `num::NonZeroUsize` - `num::NonZeroU128` - `num::NonZeroU16` - `num::NonZeroU32` - `num::NonZeroU64` - `num::NonZeroU8` - `ops::RangeBounds` - `slice::SliceIndex` - `slice::from_mut` - `slice::from_ref` - `{Any + Send + Sync}::downcast_mut` - `{Any + Send + Sync}::downcast_ref` - `{Any + Send + Sync}::is` + Cargo - Cargo will now no longer allow you to publish crates with build scripts that modify the `src` directory.][cargo/5584] The `src` directory in a crate should be considered to be immutable. + Misc - The `suggestion_applicability` field in `rustc`\'s json output is now stable.- This will allow dev tools to check whether a code suggestion would apply to them. + Compatibility Notes - Rust will consider trait objects with duplicated constraints to be the same type as without the duplicated constraint.- For example the below code will now fail to compile. ```rust trait Trait {} impl Trait + Send { fn test(&self) { println!(\"one\"); } //~ ERROR duplicate definitions with name `test` } impl Trait + Send + Send { fn test(&self) { println!(\"two\"); } }- Update to version 1.27.2: + Compatibility Notes - The borrow checker was fixed to avoid an additional potential unsoundness when using match ergonomics- Update to version 1.27.1: + Security Notes - rustdoc would execute plugins in the /tmp/rustdoc/plugins directory when running, which enabled executing code as some other user on a given machine. This release fixes that vulnerability; you can read more about this on the blog. The associated CVE is [CVE-2018-1000622]. Thank you to Red Hat for responsibily disclosing this vulnerability to us. + Compatibility Notes - The borrow checker was fixed to avoid an additional potential unsoundness when using match ergonomics- Update to version 1.27.0: + Language - Removed \'proc\' from the reserved keywords list. This allows `proc` to be used as an identifier. - The dyn syntax is now available. This syntax is equivalent to the bare `Trait` syntax, and should make it clearer when being used in tandem with `impl Trait` because it is equivalent to the following syntax: `&Trait == &dyn Trait`, `&mut Trait == &mut dyn Trait`, and `Box == Box`. - Attributes on generic parameters such as types and lifetimes are now stable. e.g. `fn foo<#[lifetime_attr] \'a, #[type_attr] T: \'a>() {}` - The `#[must_use]` attribute can now also be used on functions as well as types. It provides a lint that by default warns users when the value returned by a function has not been used. + Compiler - Added the `armvte-unknown-linux-musleabi` target. + Libraries - SIMD (Single Instruction Multiple Data) on x/x_ is now stable. This includes arch::x & arch::x_ modules which contain SIMD intrinsics, a new macro called `is_x_feature_detected!`, the `#[target_feature(enable=\"\")]` attribute, and adding `target_feature = \"\"` to the `cfg` attribute. - A lot of methods for `[u]`, `f`, and `f` previously only available in std are now available in core. - The generic `Rhs` type parameter on `ops::{Shl, ShlAssign, Shr}` now defaults to `Self`. - std::str::replace` now has the `#[must_use]` attribute to clarify that the operation isn\'t done in place. - Clone::clone`, `Iterator::collect`, and `ToOwned::to_owned` now have the `#[must_use]` attribute] to warn about unused potentially expensive allocations. + Stabilized APIs - DoubleEndedIterator::rfind - DoubleEndedIterator::rfold - DoubleEndedIterator::try_rfold - Duration::from_micros - Duration::from_nanos - Duration::subsec_micros - Duration::subsec_millis - HashMap::remove_entry - Iterator::try_fold - Iterator::try_for_each - NonNull::cast - Option::filter - String::replace_range - Take::set_limit - hint::unreachable_unchecked - os::unix::process::parent_id - ptr::swap_nonoverlapping - slice::rsplit_mut - slice::rsplit - slice::swap_with_slice + Cargo - `cargo-metadata` now includes `authors`, `categories`, `keywords`, `readme`, and `repository` fields. - `cargo-metadata` now includes a package\'s `metadata` table. - Added the `--target-dir` optional argument. This allows you to specify a different directory than `target` for placing compilation artifacts. - Cargo will be adding automatic target inference for binaries, benchmarks, examples, and tests in the Rust 2018 edition. If your project specifies specific targets, e.g. using `[[bin]]`, and have other binaries in locations where cargo would infer a binary, Cargo will produce a warning. You can disable this feature ahead of time by setting any of the following to false: `autobins`, `autobenches`, `autoexamples`, `autotests`. - Cargo will now cache compiler information. This can be disabled by setting `CARGO_CACHE_RUSTC_INFO=0` in your environment. + Compatibility Notes - Calling a `CharExt` or `StrExt` method directly on core will no longer work. e.g. `::core::prelude::v1::StrExt::is_empty(\"\")` will not compile, `\"\".is_empty()` will still compile. - `Debug` output on `atomic::{AtomicBool, AtomicIsize, AtomicPtr, AtomicUsize}` will only print the inner type. E.g. `print!(\"{:?}\", AtomicBool::new(true))` will print `true`, not `AtomicBool(true)`. - The maximum number for `repr(align(N))` is now 2²⁹. Previously you could enter higher numbers but they were not supported by LLVM. Up to 512MB alignment should cover all use cases. - The `.description()` method on the `std::error::Error` trait has been soft-deprecated. It is no longer required to implement it. + Misc - Added “The Rustc book” into the official documentation.
* Thu Oct 11 2018 qkzhuAATTsuse.com- Add CVE-2018-1000622-prevent-rustdoc-loads-uncontrolled-plugins-path.patch: + This patch consists of requiring `--plugin-path` to be passed whenever `--plugin` is passed + rustdoc plugins will be removed entirely on 1.28.0, we should drop this patch after 1.28.0(bsc#1100691, CVE-2018-1000622).
* Thu Aug 09 2018 mschnitzerAATTsuse.com- Ship rust-std on SLE-15 (bsc#1096945) No new changes came with this update of rust.
* Wed Jun 06 2018 mmanu84AATToutlook.de- Update to version 1.26.2: + Compatibility Notes - The borrow checker was fixed to avoid unsoundness when using match ergonomics- Update to version 1.26.1: + Tools - RLS now works on Windows - Rustfmt stopped badly formatting text in some cases + Compatibility Notes - `fn main() -> impl Trait` no longer works for non-Termination trait This reverts an accidental stabilization - `NaN > NaN` no longer returns true in const-fn contexts - Prohibit using turbofish for `impl Trait` in method arguments
* Sat May 12 2018 luc14n0AATTlinuxmail.org- Update to version 1.26.0: + Language: - Closures now implement `Copy` and/or `Clone` if all captured variables implement either or both traits. - The inclusive range syntax is now stable. - Stablise `\'_`. The underscore lifetime can be used anywhere where a lifetime can be elided. - `impl Trait` is now stable allowing you to have abstract types in returns or in function parameters. - Pattern matching will now automatically apply dereferences. - 128-bit integers in the form of `u128` and `i128` are now stable. - `main` can now return `Result<(), E: Debug>` in addition to `()`. - A lot of operations are now available in a const context. - Fixed entry slice patterns are now stable. e.g. + Compiler: - LLD is now used as the default linker for `wasm32-unknown-\\ unknown`. - Fixed exponential projection complexity on nested types. This can provide up to a ~12% reduction in compile times for certain crates. - Added the `--remap-path-prefix` option to rustc. Allowing you to remap path prefixes outputted by the compiler. + Libraries: - Implemented `From for usize & From<{u8, i16}> for isize`. - Added hexadecimal formatting for integers with fmt::Debug. - Implemented `Default, Hash` for `cmp::Reverse`. - Optimized `str::repeat` being 8x faster in large cases. - `ascii::escape_default` is now available in libcore. - Trailing commas are now supported in std and core macros. - Implemented `Copy, Clone` for `cmp::Reverse`. - Implemented `Clone` for `char::{ToLowercase, ToUppercase}`. + Stabilized APIs:
*const T::add,
* const T::copy_to_nonoverlapping,
*const T::copy_to,
* const T::read_unaligned,
*const T::read_volatile,
* const T::read,
*const T::sub,
*const T::wrapping_add,
* const T::wrapping_sub,
*mut T::add,
*mut T::copy_to,
* mut T::copy_to_nonoverlapping,
*mut T::read_unaligned,
* mut T::read_volatile,
*mut T::read, mut T::replace,
* mut T::sub,
*mut T::swap,
*mut T::wrapping_add,
* mut T::wrapping_sub,
*mut T::write_bytes,
* mut T::write_unaligned,
*mut T::write_volatile,
* mut T::write, Box::leak, FromUtf8Error::as_bytes, LocalKey::try_with, Option::cloned, iter::FusedIterator, btree_map::Entry::and_modify, s::read_to_string, fs::read, fs::write, hash_map::Entry::and_modify, String::retain, ops::RangeInclusive, ops::RangeToInclusive, process::id, slice::rotate_left, slice::rotate_right. + Compatibility Notes: - Aliasing a `Fn` trait as `dyn` no longer works. - The result of dereferences are no longer promoted to `\'static`. - Deprecate `AsciiExt` trait in favor of inherent methods. - `\".e0\"` will now no longer parse as `0.0` and will instead cause an error. - Removed hoedown from rustdoc. - Bounds on higher-kinded lifetimes a hard error.- Update cargo_version to 0.26.0.
* Thu May 03 2018 mmanu84AATToutlook.de- Patch disabled
* update-config-guess.patch- Update to 1.25.0- Language changes: + Stabilised `#[repr(align(x))]`.[47006] [RFC 1358] + You can now use nested groups of imports.[47948] e.g. `use std::{fs::File, io::Read, path::{Path, PathBuf}};` + You can now have `|` at the start of a match arm.[47947] e.g.- Compiler changes: + Upgraded to LLVM 6.[47828] + Added `-C lto=val` option.[47521] + Added `i586-unknown-linux-musl` target[47282]- Library changes: + Impl Send for `process::Command` on Unix.[47760] + Impl PartialEq and Eq for `ParseCharError`.[47790] + `UnsafeCell::into_inner` is now safe.[47204] + Implement libstd for CloudABI.[47268] + `Float::{from_bits, to_bits}` is now available in libcore.[46931] + Implement `AsRef` for Component[46985] + Implemented `Write` for `Cursor<&mut Vec>`[46830] + Moved `Duration` to libcore.[46666]- Stabilized APIs + `Location::column` + `ptr::NonNull`- Misc + Rust by example is now shipped with new releases[46196]- Compatibility Notes: + Deprecated `net::lookup_host`.[47510] + `rustdoc` has switched to pulldown as the default markdown renderer.[47398] + The borrow checker was sometimes incorrectly permitting overlapping borrows around indexing operations (see [#47349][47349]). This has been fixed (which also enabled some correct code that used to cause errors (e.g. [#33903][33903] and [#46095][46095]). + Removed deprecated unstable attribute `#[simd]`.[47251]
* Thu Mar 22 2018 mmanu84AATToutlook.de- Update to 1.24.1 + Do not abort when unwinding through FFI + Make the error index generator work again- Update Cargo to v0.25.0
* Sat Feb 24 2018 mmanu84AATToutlook.de- Update to 1.24.0- Language changes: + External `sysv64` ffi is now available. eg. `extern \"sysv64\" fn foo () {}`- Compiler changes: + rustc now uses 16 codegen units by default for release builds. For the fastest builds, utilize `codegen-units=1`.- Libraries: + `str::find::` now uses memchr. This should lead to a 10x improvement in performance in the majority of cases. + `time::{SystemTime, Instant}` now implement `Hash`. + impl `From` for `AtomicBool` + impl `From<{CString, &CStr}>` for `{Arc, Rc}` + impl `From<{OsString, &OsStr}>` for `{Arc, Rc}` + impl `From<{PathBuf, &Path}>` for `{Arc, Rc}` + float::from_bits now just uses transmute. This provides some optimisations from LLVM. + Copied `AsciiExt` methods onto `char` + Remove `T: Sized` requirement on `ptr::is_null()` + impl `From` for `{TryRecvError, RecvTimeoutError}` + Optimised `f32::{min, max}` to generate more efficient x86 assembly + `[u8]::contains` now uses memchr which provides a 3x speed improvement- Compatibility Notes: + Floating point types `Debug` impl now always prints a decimal point. + `Ipv6Addr` now rejects superfluous `::`\'s in IPv6 addresses This is in accordance with IETF RFC 4291 §2.2. + Unwinding will no longer go past FFI boundaries, and will instead abort. + `Formatter::flags` method is now deprecated. The `sign_plus`, `sign_minus`, `alternate`, and `sign_aware_zero_pad` should be used instead. + Leading zeros in tuple struct members is now an error + `column!()` macro is one-based instead of zero-based + `fmt::Arguments` can no longer be shared across threads + Access to `#[repr(packed)]` struct fields is now unsafe + Cargo sets a different working directory for the compiler
* Mon Feb 19 2018 cooloAATTsuse.com- add update-config-guess.patch to update config.
* from GNU to support riscv64 without rpm patching it - as the patch also updates the checksums while rpm does not
* Tue Jan 23 2018 tchvatalAATTsuse.com- Format with spec-cleaner- Use python3 to run the install/build script as python2 is being phased out- State exclusivearch for all of ix86 and then specify we build as i686 which is bit more obvious
* Mon Jan 22 2018 mmanu84AATToutlook.de- Update Cargo to v0.24.0
* Mon Jan 22 2018 jones_ldAATTprotonmail.com- Add \"Requires: %{name} to derived packages to fix derived packages not being updated with rust (boo#1075883)
* Thu Jan 04 2018 jones_ldAATTprotonmail.com- Update to 1.23.0- Language changes: + Arbitrary `auto` traits are now permitted in trait objects.[45772] + rustc now uses subtyping on the left hand side of binary operations.[45435] Which should fix some confusing errors in some operations.- Compiler changes: + Enabled `TrapUnreachable` in LLVM which should mitigate the impact of undefined behaviour.[45920] + rustc now suggests renaming import if names clash.[45660] + Display errors/warnings correctly when there are zero-width or wide characters.[45711] + rustc now avoids unnecessary copies of arguments that are simple bindings[45380] This should improve memory usage on average by 5-10%. + Updated musl used to build musl rustc to 1.1.17[45393]- Library changes: + Allow a trailing comma in `assert_eq/ne` macro[45887] + Implement Hash for raw pointers to unsized types[45483] + impl `From<
*mut T>` for `AtomicPtr`[45610] + impl `From` for `AtomicUsize/AtomicIsize`.[45610] + Removed the `T: Sync` requirement for `RwLock: Send`[45267] + Removed `T: Sized` requirement for `{<
*const T>, <
*mut T>}::as_ref` an `<
*mut T>::as_mut`[44932] + Optimized `Thread::{park, unpark}` implementation[45524] + Improved `SliceExt::binary_search` performance.[45333] + impl `FromIterator<()>` for `()`[45379] + Copied `AsciiExt` trait methods to primitive types.[44042] Use of `AsciiExt` is now deprecated.- Misc changes: + Releases now ship with the Cargo book documentation.[45692] + rustdoc now prints rendering warnings on every run.[45324] + Release tarballs now come with rustfmt[45903]- Compatibility Notes: + Changes have been made to type equality to make it more correct, in rare cases this could break some code.[45853] [Tracking issue for further information[45852] + `char::escape_debug` now uses Unicode 10 over 9.[45571] + Upgraded Android SDK to 27, and NDK to r15c.[45580] This drops support for Android 9, the minimum supported version is Android 14. + Bumped the minimum LLVM to 3.9[45326]
 
ICM